Search in sources :

Example 26 with Stop

use of javafx.scene.paint.Stop in project fxexperience2 by EricCanull.

the class ColorEncoder method encodeLinearToCSS.

public static String encodeLinearToCSS(Object paint) {
    assert paint instanceof LinearGradient;
    LinearGradient linearGradient = (LinearGradient) paint;
    List<Stop> stops = linearGradient.getStops();
    boolean linear_proportional = linearGradient.isProportional();
    final CycleMethod linear_cycleMethod = linearGradient.getCycleMethod();
    double startX = round(linearGradient.getStartX());
    double startY = round(linearGradient.getStartY());
    double endX = round(linearGradient.getEndX());
    double endY = round(linearGradient.getEndY());
    String fromUnit = linear_proportional ? FROMPERCENTUNIT : FROMPIXELUNIT;
    String toUnit = linear_proportional ? TOPERCENTUNIT : TOPIXELUNIT;
    StringBuilder sb = new StringBuilder(BGLINEAR);
    sb.append(FROM);
    sb.append(startX).append(fromUnit).append(SPACER);
    sb.append(startY).append(fromUnit).append(SPACER);
    sb.append(TO);
    sb.append(endX).append(toUnit).append(SPACER);
    sb.append(endY).append(toUnit).append(SEPARATOR);
    if (linear_cycleMethod.toString().equalsIgnoreCase("reflect") || linear_cycleMethod.toString().equalsIgnoreCase("repeat")) {
        sb.append(linear_cycleMethod);
        sb.append(SEPARATOR);
    }
    sb.append(getColorStops(stops));
    return sb.append(BGGRADEND).toString();
}
Also used : CycleMethod(javafx.scene.paint.CycleMethod) LinearGradient(javafx.scene.paint.LinearGradient) Stop(javafx.scene.paint.Stop)

Example 27 with Stop

use of javafx.scene.paint.Stop in project constellation by constellation-app.

the class HeadingPane method makeSquare.

private Shape makeSquare(final Color colour, final Color border) {
    final Stop[] stops = new Stop[] { new Stop(0, colour), new Stop(0.95, colour.deriveColor(1, 1, .75, 1)), new Stop(1.0, colour.deriveColor(1, 1, 0.5, 1)) };
    final LinearGradient gradient = new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, stops);
    final Rectangle square = new Rectangle(SQUARE_SIZE, SQUARE_SIZE);
    square.setStroke(border);
    square.setFill(gradient);
    return square;
}
Also used : LinearGradient(javafx.scene.paint.LinearGradient) Stop(javafx.scene.paint.Stop) Rectangle(javafx.scene.shape.Rectangle)

Example 28 with Stop

use of javafx.scene.paint.Stop in project tilesfx by HanSolo.

the class Demo method init.

@Override
public void init() {
    long start = System.currentTimeMillis();
    value = new SimpleDoubleProperty(0);
    // AreaChart Data
    XYChart.Series<String, Number> series1 = new XYChart.Series();
    series1.setName("Whatever");
    series1.getData().add(new XYChart.Data("MO", 23));
    series1.getData().add(new XYChart.Data("TU", 21));
    series1.getData().add(new XYChart.Data("WE", 20));
    series1.getData().add(new XYChart.Data("TH", 22));
    series1.getData().add(new XYChart.Data("FR", 24));
    series1.getData().add(new XYChart.Data("SA", 22));
    series1.getData().add(new XYChart.Data("SU", 20));
    // LineChart Data
    XYChart.Series<String, Number> series2 = new XYChart.Series();
    series2.setName("Inside");
    series2.getData().add(new XYChart.Data("MO", 8));
    series2.getData().add(new XYChart.Data("TU", 5));
    series2.getData().add(new XYChart.Data("WE", 0));
    series2.getData().add(new XYChart.Data("TH", 2));
    series2.getData().add(new XYChart.Data("FR", 4));
    series2.getData().add(new XYChart.Data("SA", 3));
    series2.getData().add(new XYChart.Data("SU", 5));
    XYChart.Series<String, Number> series3 = new XYChart.Series();
    series3.setName("Outside");
    series3.getData().add(new XYChart.Data("MO", 8));
    series3.getData().add(new XYChart.Data("TU", 5));
    series3.getData().add(new XYChart.Data("WE", 0));
    series3.getData().add(new XYChart.Data("TH", 2));
    series3.getData().add(new XYChart.Data("FR", 4));
    series3.getData().add(new XYChart.Data("SA", 3));
    series3.getData().add(new XYChart.Data("SU", 5));
    // WorldMap Data
    for (int i = 0; i < Country.values().length; i++) {
        double value = RND.nextInt(10);
        Color color;
        if (value > 8) {
            color = Tile.RED;
        } else if (value > 6) {
            color = Tile.ORANGE;
        } else if (value > 4) {
            color = Tile.YELLOW_ORANGE;
        } else if (value > 2) {
            color = Tile.GREEN;
        } else {
            color = Tile.BLUE;
        }
        Country.values()[i].setColor(color);
    }
    // TimeControl Data
    TimeSection timeSection = TimeSectionBuilder.create().start(LocalTime.now().plusSeconds(20)).stop(LocalTime.now().plusHours(1)).color(Tile.GRAY).highlightColor(Tile.RED).build();
    timeSection.setOnTimeSectionEntered(e -> System.out.println("Section ACTIVE"));
    timeSection.setOnTimeSectionLeft(e -> System.out.println("Section INACTIVE"));
    // BarChart Items
    barChartItem1 = new BarChartItem("Gerrit", 47, Tile.BLUE);
    barChartItem2 = new BarChartItem("Sandra", 43, Tile.RED);
    barChartItem3 = new BarChartItem("Lilli", 12, Tile.GREEN);
    barChartItem4 = new BarChartItem("Anton", 8, Tile.ORANGE);
    barChartItem1.setFormatString("%.1f kWh");
    // LeaderBoard Items
    leaderBoardItem1 = new LeaderBoardItem("Gerrit", 47);
    leaderBoardItem2 = new LeaderBoardItem("Sandra", 43);
    leaderBoardItem3 = new LeaderBoardItem("Lilli", 12);
    leaderBoardItem4 = new LeaderBoardItem("Anton", 8);
    // Chart Data
    chartData1 = new ChartData("Item 1", 24.0, Tile.GREEN);
    chartData2 = new ChartData("Item 2", 10.0, Tile.BLUE);
    chartData3 = new ChartData("Item 3", 12.0, Tile.RED);
    chartData4 = new ChartData("Item 4", 13.0, Tile.YELLOW_ORANGE);
    chartData5 = new ChartData("Item 5", 13.0, Tile.BLUE);
    chartData6 = new ChartData("Item 6", 13.0, Tile.BLUE);
    chartData7 = new ChartData("Item 7", 13.0, Tile.BLUE);
    chartData8 = new ChartData("Item 8", 13.0, Tile.BLUE);
    smoothChartData1 = new ChartData("Item 1", RND.nextDouble() * 25, Tile.BLUE);
    smoothChartData2 = new ChartData("Item 2", RND.nextDouble() * 25, Tile.BLUE);
    smoothChartData3 = new ChartData("Item 3", RND.nextDouble() * 25, Tile.BLUE);
    smoothChartData4 = new ChartData("Item 4", RND.nextDouble() * 25, Tile.BLUE);
    // Creating Tiles
    percentageTile = TileBuilder.create().skinType(SkinType.PERCENTAGE).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Percentage Tile").unit(Helper.PERCENTAGE).description("Test").maxValue(60).build();
    clockTile = TileBuilder.create().skinType(SkinType.CLOCK).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Clock Tile").text("Whatever text").dateVisible(true).locale(Locale.US).running(true).build();
    gaugeTile = TileBuilder.create().skinType(SkinType.GAUGE).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Gauge Tile").unit("V").threshold(75).build();
    sparkLineTile = TileBuilder.create().skinType(SkinType.SPARK_LINE).prefSize(TILE_WIDTH, TILE_HEIGHT).title("SparkLine Tile").unit("mb").gradientStops(new Stop(0, Tile.GREEN), new Stop(0.5, Tile.YELLOW), new Stop(1.0, Tile.RED)).strokeWithGradient(true).build();
    // sparkLineTile.valueProperty().bind(value);
    areaChartTile = TileBuilder.create().skinType(SkinType.SMOOTHED_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).title("SmoothedChart Tile").chartType(ChartType.AREA).smoothing(true).tooltipTimeout(1000).tilesFxSeries(new TilesFXSeries<>(series1, Tile.BLUE, new LinearGradient(0, 0, 0, 1, true, CycleMethod.NO_CYCLE, new Stop(0, Tile.BLUE), new Stop(1, Color.TRANSPARENT)))).build();
    lineChartTile = TileBuilder.create().skinType(SkinType.SMOOTHED_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).title("SmoothedChart Tile").smoothing(false).series(series2, series3).build();
    highLowTile = TileBuilder.create().skinType(SkinType.HIGH_LOW).prefSize(TILE_WIDTH, TILE_HEIGHT).title("HighLow Tile").unit("\u20AC").description("Test").text("Whatever text").referenceValue(6.7).value(8.2).build();
    timerControlTile = TileBuilder.create().skinType(SkinType.TIMER_CONTROL).prefSize(TILE_WIDTH, TILE_HEIGHT).title("TimerControl Tile").text("Whatever text").secondsVisible(true).dateVisible(true).timeSections(timeSection).running(true).build();
    numberTile = TileBuilder.create().skinType(SkinType.NUMBER).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Number Tile").text("Whatever text").value(13).unit("mb").description("Test").textVisible(true).build();
    textTile = TileBuilder.create().skinType(SkinType.TEXT).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Text Tile").text("Whatever text").description("May the force be with you\n...always").descriptionAlignment(Pos.TOP_LEFT).textVisible(true).build();
    plusMinusTile = TileBuilder.create().skinType(SkinType.PLUS_MINUS).prefSize(TILE_WIDTH, TILE_HEIGHT).maxValue(30).minValue(0).title("PlusMinus Tile").text("Whatever text").description("Test").unit("\u00B0C").build();
    sliderTile = TileBuilder.create().skinType(SkinType.SLIDER).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Slider Tile").text("Whatever text").description("Test").unit("\u00B0C").barBackgroundColor(Tile.FOREGROUND).build();
    switchTile = TileBuilder.create().skinType(SkinType.SWITCH).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Switch Tile").text("Whatever text").build();
    switchTile.setOnSwitchPressed(e -> System.out.println("Switch pressed"));
    switchTile.setOnSwitchReleased(e -> System.out.println("Switch released"));
    worldTile = TileBuilder.create().prefSize(300, TILE_HEIGHT).skinType(SkinType.WORLDMAP).title("WorldMap Tile").text("Whatever text").textVisible(false).build();
    timeTile = TileBuilder.create().skinType(SkinType.TIME).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Time Tile").text("Whatever text").duration(LocalTime.of(1, 22)).description("Average reply time").textVisible(true).build();
    barChartTile = TileBuilder.create().skinType(SkinType.BAR_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).title("BarChart Tile").text("Whatever text").barChartItems(barChartItem1, barChartItem2, barChartItem3, barChartItem4).decimals(0).build();
    customTile = TileBuilder.create().skinType(SkinType.CUSTOM).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Custom Tile").text("Whatever text").graphic(new Button("Click Me")).roundedCorners(false).build();
    leaderBoardTile = TileBuilder.create().skinType(SkinType.LEADER_BOARD).prefSize(TILE_WIDTH, TILE_HEIGHT).title("LeaderBoard Tile").text("Whatever text").leaderBoardItems(leaderBoardItem1, leaderBoardItem2, leaderBoardItem3, leaderBoardItem4).build();
    mapTile = TileBuilder.create().skinType(SkinType.MAP).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Map Tile").text("Some text").description("Description").currentLocation(new Location(51.91178, 7.63379, "Home", TileColor.MAGENTA.color)).pointsOfInterest(new Location(51.914405, 7.635732, "POI 1", TileColor.RED.color), new Location(51.912529, 7.631752, "POI 2", TileColor.BLUE.color), new Location(51.923993, 7.628906, "POI 3", TileColor.YELLOW_ORANGE.color)).mapProvider(MapProvider.TOPO).build();
    radialChartTile = TileBuilder.create().skinType(SkinType.RADIAL_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).title("RadialChart Tile").text("Some text").textVisible(false).chartData(chartData1, chartData2, chartData3, chartData4).build();
    donutChartTile = TileBuilder.create().skinType(SkinType.DONUT_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).title("DonutChart Tile").text("Some text").textVisible(false).chartData(chartData1, chartData2, chartData3, chartData4).build();
    circularProgressTile = TileBuilder.create().skinType(SkinType.CIRCULAR_PROGRESS).prefSize(TILE_WIDTH, TILE_HEIGHT).title("CircularProgress Tile").text("Some text").unit(Helper.PERCENTAGE).build();
    stockTile = TileBuilder.create().skinType(SkinType.STOCK).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Stock Tile").minValue(0).maxValue(1000).averagingPeriod(100).build();
    gaugeSparkLineTile = TileBuilder.create().skinType(SkinType.GAUGE_SPARK_LINE).prefSize(TILE_WIDTH, TILE_HEIGHT).title("GaugeSparkLine Tile").animated(true).textVisible(false).averagingPeriod(25).autoReferenceValue(true).barColor(Tile.YELLOW_ORANGE).barBackgroundColor(Color.rgb(255, 255, 255, 0.1)).sections(new eu.hansolo.tilesfx.Section(0, 33, Tile.LIGHT_GREEN), new eu.hansolo.tilesfx.Section(33, 67, Tile.YELLOW), new eu.hansolo.tilesfx.Section(67, 100, Tile.LIGHT_RED)).sectionsVisible(true).highlightSections(true).strokeWithGradient(true).fixedYScale(true).gradientStops(new Stop(0.0, Tile.LIGHT_GREEN), new Stop(0.33, Tile.LIGHT_GREEN), new Stop(0.33, Tile.YELLOW), new Stop(0.67, Tile.YELLOW), new Stop(0.67, Tile.LIGHT_RED), new Stop(1.0, Tile.LIGHT_RED)).build();
    radarChartTile1 = TileBuilder.create().skinType(SkinType.RADAR_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).minValue(0).maxValue(50).title("RadarChartTileSkin Sector").unit("Unit").radarChartMode(RadarChartMode.SECTOR).gradientStops(new Stop(0.00000, Color.TRANSPARENT), new Stop(0.00001, Color.web("#3552a0")), new Stop(0.09090, Color.web("#456acf")), new Stop(0.27272, Color.web("#45a1cf")), new Stop(0.36363, Color.web("#30c8c9")), new Stop(0.45454, Color.web("#30c9af")), new Stop(0.50909, Color.web("#56d483")), new Stop(0.72727, Color.web("#9adb49")), new Stop(0.81818, Color.web("#efd750")), new Stop(0.90909, Color.web("#ef9850")), new Stop(1.00000, Color.web("#ef6050"))).text("Test").chartData(chartData1, chartData2, chartData3, chartData4, chartData5, chartData6, chartData7, chartData8).tooltipText("").animated(true).build();
    radarChartTile2 = TileBuilder.create().skinType(SkinType.RADAR_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).minValue(0).maxValue(50).title("RadarChartTileSkin Polygon").unit("Unit").radarChartMode(RadarChartMode.POLYGON).gradientStops(new Stop(0.00000, Color.TRANSPARENT), new Stop(0.00001, Color.web("#3552a0")), new Stop(0.09090, Color.web("#456acf")), new Stop(0.27272, Color.web("#45a1cf")), new Stop(0.36363, Color.web("#30c8c9")), new Stop(0.45454, Color.web("#30c9af")), new Stop(0.50909, Color.web("#56d483")), new Stop(0.72727, Color.web("#9adb49")), new Stop(0.81818, Color.web("#efd750")), new Stop(0.90909, Color.web("#ef9850")), new Stop(1.00000, Color.web("#ef6050"))).text("Test").chartData(chartData1, chartData2, chartData3, chartData4, chartData5, chartData6, chartData7, chartData8).tooltipText("").animated(true).build();
    smoothAreaChartTile = TileBuilder.create().skinType(SkinType.SMOOTH_AREA_CHART).prefSize(TILE_WIDTH, TILE_HEIGHT).minValue(0).maxValue(40).title("SmoothAreaChart Tile").unit("Unit").text("Test").chartData(smoothChartData1, smoothChartData2, smoothChartData3, smoothChartData4).tooltipText("").animated(true).build();
    firstRank = new Rank(Ranking.FIRST, Tile.YELLOW_ORANGE);
    countryTile = TileBuilder.create().skinType(SkinType.COUNTRY).prefSize(TILE_WIDTH, TILE_HEIGHT).minValue(0).maxValue(40).title("Country Tile").unit("Unit").country(Country.DE).tooltipText("").animated(true).build();
    characterTile = TileBuilder.create().skinType(SkinType.CHARACTER).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Character Tile").titleAlignment(TextAlignment.CENTER).description("G").build();
    flipTile = TileBuilder.create().skinType(SkinType.FLIP).prefSize(TILE_WIDTH, TILE_HEIGHT).characters(Helper.TIME_0_TO_5).flipTimeInMS(500).flipText(" ").build();
    switchSliderTile = TileBuilder.create().skinType(SkinType.SWITCH_SLIDER).prefSize(TILE_WIDTH, TILE_HEIGHT).title("SwitchSlider Tile").text("Test").build();
    dateTile = TileBuilder.create().skinType(SkinType.DATE).prefSize(TILE_WIDTH, TILE_HEIGHT).build();
    ZonedDateTime now = ZonedDateTime.now();
    List<ChartData> calendarData = new ArrayList<>(10);
    calendarData.add(new ChartData("Item 1", now.minusDays(1).toInstant()));
    calendarData.add(new ChartData("Item 2", now.plusDays(2).toInstant()));
    calendarData.add(new ChartData("Item 3", now.plusDays(10).toInstant()));
    calendarData.add(new ChartData("Item 4", now.plusDays(15).toInstant()));
    calendarData.add(new ChartData("Item 5", now.plusDays(15).toInstant()));
    calendarData.add(new ChartData("Item 6", now.plusDays(20).toInstant()));
    calendarData.add(new ChartData("Item 7", now.plusDays(7).toInstant()));
    calendarData.add(new ChartData("Item 8", now.minusDays(1).toInstant()));
    calendarData.add(new ChartData("Item 9", now.toInstant()));
    calendarData.add(new ChartData("Item 10", now.toInstant()));
    calendarTile = TileBuilder.create().skinType(SkinType.CALENDAR).prefSize(TILE_WIDTH, TILE_HEIGHT).chartData(calendarData).build();
    TreeNode tree = new TreeNode(new ChartData("ROOT"));
    TreeNode first = new TreeNode(new ChartData("1st", 8.3, Tile.BLUE), tree);
    TreeNode second = new TreeNode(new ChartData("2nd", 2.2, Tile.ORANGE), tree);
    TreeNode third = new TreeNode(new ChartData("3rd", 1.4, Tile.PINK), tree);
    TreeNode fourth = new TreeNode(new ChartData("4th", 1.2, Tile.LIGHT_GREEN), tree);
    TreeNode jan = new TreeNode(new ChartData("Jan", 3.5), first);
    TreeNode feb = new TreeNode(new ChartData("Feb", 3.1), first);
    TreeNode mar = new TreeNode(new ChartData("Mar", 1.7), first);
    TreeNode apr = new TreeNode(new ChartData("Apr", 1.1), second);
    TreeNode may = new TreeNode(new ChartData("May", 0.8), second);
    TreeNode jun = new TreeNode(new ChartData("Jun", 0.3), second);
    TreeNode jul = new TreeNode(new ChartData("Jul", 0.7), third);
    TreeNode aug = new TreeNode(new ChartData("Aug", 0.6), third);
    TreeNode sep = new TreeNode(new ChartData("Sep", 0.1), third);
    TreeNode oct = new TreeNode(new ChartData("Oct", 0.5), fourth);
    TreeNode nov = new TreeNode(new ChartData("Nov", 0.4), fourth);
    TreeNode dec = new TreeNode(new ChartData("Dec", 0.3), fourth);
    sunburstTile = TileBuilder.create().skinType(SkinType.SUNBURST).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Sunburst Tile").textVisible(false).sunburstTree(tree).sunburstBackgroundColor(Tile.BACKGROUND).sunburstTextColor(Tile.BACKGROUND).sunburstUseColorFromParent(true).sunburstTextOrientation(TextOrientation.TANGENT).sunburstAutoTextColor(true).sunburstUseChartDataTextColor(true).sunburstInteractive(true).build();
    matrixTile = TileBuilder.create().skinType(SkinType.MATRIX).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Matrix Tile").text("Any Text").textVisible(false).animated(true).matrixSize(8, 50).chartData(chartData1, chartData2, chartData3, chartData4, chartData5, chartData6, chartData7, chartData8).build();
    radialPercentageTile = TileBuilder.create().skinType(SkinType.RADIAL_PERCENTAGE).prefSize(TILE_WIDTH, TILE_HEIGHT).maxValue(1000).title("RadialPercentage Tile").description("Product 1").textVisible(false).chartData(chartData1, chartData2, chartData3).animated(true).referenceValue(100).value(chartData1.getValue()).descriptionColor(Tile.GRAY).barColor(Tile.BLUE).decimals(0).build();
    Indicator leftGraphics = new Indicator(Tile.RED);
    leftGraphics.setOn(true);
    Indicator middleGraphics = new Indicator(Tile.YELLOW);
    middleGraphics.setOn(true);
    Indicator rightGraphics = new Indicator(Tile.GREEN);
    rightGraphics.setOn(true);
    statusTile = TileBuilder.create().skinType(SkinType.STATUS).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Status Tile").description("Notifications").leftText("CRITICAL").middleText("WARNING").rightText("INFORMATION").leftGraphics(leftGraphics).middleGraphics(middleGraphics).rightGraphics(rightGraphics).text("Text").build();
    barGaugeTile = TileBuilder.create().skinType(SkinType.BAR_GAUGE).prefSize(TILE_WIDTH, TILE_HEIGHT).minValue(0).maxValue(100).startFromZero(true).threshold(80).thresholdVisible(true).title("BarGauge Tile").unit("F").text("Whatever text").gradientStops(new Stop(0, Bright.BLUE), new Stop(0.1, Bright.BLUE_GREEN), new Stop(0.2, Bright.GREEN), new Stop(0.3, Bright.GREEN_YELLOW), new Stop(0.4, Bright.YELLOW), new Stop(0.5, Bright.YELLOW_ORANGE), new Stop(0.6, Bright.ORANGE), new Stop(0.7, Bright.ORANGE_RED), new Stop(0.8, Bright.RED), new Stop(1.0, Dark.RED)).strokeWithGradient(true).animated(true).build();
    imageTile = TileBuilder.create().skinType(SkinType.IMAGE).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Image Tile").image(new Image(Demo.class.getResourceAsStream("HanSolo.png"))).imageMask(ImageMask.ROUND).text("Whatever text").textAlignment(TextAlignment.CENTER).build();
    timelineTile = TileBuilder.create().skinType(SkinType.TIMELINE).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Timeline Tile").unit("mg/dl").minValue(0).maxValue(350).smoothing(true).lowerThreshold(70).lowerThresholdColor(TileColor.RED.color).threshold(240).thresholdColor(TileColor.RED.color).thresholdVisible(true).tickLabelColor(Helper.getColorWithOpacity(Tile.FOREGROUND, 0.5)).sections(new Section(0, 70, "Low", Helper.getColorWithOpacity(Dark.RED, 0.1)), new Section(70, 140, "Ok", Helper.getColorWithOpacity(Bright.GREEN, 0.15)), new Section(140, 350, "High", Helper.getColorWithOpacity(Dark.RED, 0.1))).highlightSections(true).sectionsVisible(true).textAlignment(TextAlignment.CENTER).timePeriod(java.time.Duration.ofMinutes(1)).maxTimePeriod(java.time.Duration.ofMinutes(1)).timePeriodResolution(TimeUnit.SECONDS).numberOfValuesForTrendCalculation(5).trendVisible(true).maxTimePeriod(java.time.Duration.ofSeconds(60)).gradientStops(new Stop(0, Dark.RED), new Stop(0.15, Dark.RED), new Stop(0.2, Bright.YELLOW_ORANGE), new Stop(0.25, Bright.GREEN), new Stop(0.3, Bright.GREEN), new Stop(0.35, Bright.GREEN), new Stop(0.45, Bright.YELLOW_ORANGE), new Stop(0.5, Bright.ORANGE), new Stop(0.685, Dark.RED), new Stop(1.0, Dark.RED)).strokeWithGradient(true).averageVisible(true).averagingPeriod(60).timeoutMs(60000).build();
    imageCounterTile = TileBuilder.create().skinType(SkinType.IMAGE_COUNTER).prefSize(TILE_WIDTH, TILE_HEIGHT).title("ImageCounter Tile").text("Whatever text").description("Whatever\nnumbers").image(new Image(Demo.class.getResourceAsStream("HanSolo.png"))).imageMask(ImageMask.ROUND).build();
    ledTile = TileBuilder.create().skinType(SkinType.LED).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Led Tile").description("Description").text("Whatever text").build();
    countdownTile = TileBuilder.create().skinType(SkinType.COUNTDOWN_TIMER).prefSize(TILE_WIDTH, TILE_HEIGHT).title("CountdownTimer Tile").description("Description").text("Text").barColor(Bright.ORANGE_RED).timePeriod(Duration.ofSeconds(30)).onAlarm(e -> System.out.println("Alarm")).build();
    MatrixIcon matrixIcon1 = new MatrixIcon();
    matrixIcon1.fillPixels(2, 5, 1, Color.BLACK);
    matrixIcon1.setPixelAt(1, 2, Color.BLACK);
    matrixIcon1.fillPixels(2, 5, 2, Color.WHITE);
    matrixIcon1.setPixelAt(6, 2, Color.BLACK);
    matrixIcon1.setPixelAt(0, 3, Color.BLACK);
    matrixIcon1.fillPixels(1, 2, 3, Color.WHITE);
    matrixIcon1.fillPixels(3, 4, 3, Color.web("#4d79ff"));
    matrixIcon1.fillPixels(5, 6, 3, Color.WHITE);
    matrixIcon1.setPixelAt(7, 3, Color.BLACK);
    matrixIcon1.setPixelAt(0, 4, Color.BLACK);
    matrixIcon1.fillPixels(1, 2, 4, Color.WHITE);
    matrixIcon1.fillPixels(3, 4, 4, Color.web("#4d79ff"));
    matrixIcon1.fillPixels(5, 6, 4, Color.WHITE);
    matrixIcon1.setPixelAt(7, 4, Color.BLACK);
    matrixIcon1.setPixelAt(1, 5, Color.BLACK);
    matrixIcon1.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon1.setPixelAt(6, 5, Color.BLACK);
    matrixIcon1.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon2 = new MatrixIcon();
    matrixIcon2.fillPixels(1, 6, 2, Color.BLACK);
    matrixIcon2.setPixelAt(0, 3, Color.BLACK);
    matrixIcon2.fillPixels(1, 2, 3, Color.WHITE);
    matrixIcon2.fillPixels(3, 4, 3, Color.web("#4d79ff"));
    matrixIcon2.fillPixels(5, 6, 3, Color.WHITE);
    matrixIcon2.setPixelAt(7, 3, Color.BLACK);
    matrixIcon2.setPixelAt(0, 4, Color.BLACK);
    matrixIcon2.fillPixels(1, 2, 4, Color.WHITE);
    matrixIcon2.fillPixels(3, 4, 4, Color.web("#4d79ff"));
    matrixIcon2.fillPixels(5, 6, 4, Color.WHITE);
    matrixIcon2.setPixelAt(7, 4, Color.BLACK);
    matrixIcon2.setPixelAt(1, 5, Color.BLACK);
    matrixIcon2.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon2.setPixelAt(6, 5, Color.BLACK);
    matrixIcon2.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon3 = new MatrixIcon();
    matrixIcon3.fillPixels(0, 7, 3, Color.BLACK);
    matrixIcon3.setPixelAt(0, 4, Color.BLACK);
    matrixIcon3.fillPixels(1, 2, 4, Color.WHITE);
    matrixIcon3.fillPixels(3, 4, 4, Color.web("#4d79ff"));
    matrixIcon3.fillPixels(5, 6, 4, Color.WHITE);
    matrixIcon3.setPixelAt(7, 4, Color.BLACK);
    matrixIcon3.setPixelAt(1, 5, Color.BLACK);
    matrixIcon3.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon3.setPixelAt(6, 5, Color.BLACK);
    matrixIcon3.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon4 = new MatrixIcon();
    matrixIcon4.setPixelAt(0, 3, Color.BLACK);
    matrixIcon4.setPixelAt(7, 3, Color.BLACK);
    matrixIcon4.fillPixels(0, 7, 4, Color.BLACK);
    matrixIcon4.setPixelAt(1, 5, Color.BLACK);
    matrixIcon4.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon4.setPixelAt(6, 5, Color.BLACK);
    matrixIcon4.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon5 = new MatrixIcon();
    matrixIcon5.setPixelAt(0, 3, Color.BLACK);
    matrixIcon5.setPixelAt(7, 3, Color.BLACK);
    matrixIcon5.setPixelAt(0, 4, Color.BLACK);
    matrixIcon5.setPixelAt(7, 4, Color.BLACK);
    matrixIcon5.setPixelAt(1, 5, Color.BLACK);
    matrixIcon5.fillPixels(2, 5, 5, Color.BLACK);
    matrixIcon5.setPixelAt(6, 5, Color.BLACK);
    matrixIcon5.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon6 = new MatrixIcon();
    matrixIcon6.setPixelAt(0, 3, Color.BLACK);
    matrixIcon6.setPixelAt(7, 3, Color.BLACK);
    matrixIcon6.fillPixels(0, 7, 4, Color.BLACK);
    matrixIcon6.setPixelAt(1, 5, Color.BLACK);
    matrixIcon6.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon6.setPixelAt(6, 5, Color.BLACK);
    matrixIcon6.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon7 = new MatrixIcon();
    matrixIcon7.fillPixels(0, 7, 3, Color.BLACK);
    matrixIcon7.setPixelAt(0, 4, Color.BLACK);
    matrixIcon7.fillPixels(1, 2, 4, Color.WHITE);
    matrixIcon7.fillPixels(3, 4, 4, Color.web("#4d79ff"));
    matrixIcon7.fillPixels(5, 6, 4, Color.WHITE);
    matrixIcon7.setPixelAt(7, 4, Color.BLACK);
    matrixIcon7.setPixelAt(1, 5, Color.BLACK);
    matrixIcon7.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon7.setPixelAt(6, 5, Color.BLACK);
    matrixIcon7.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon8 = new MatrixIcon();
    matrixIcon8.fillPixels(1, 6, 2, Color.BLACK);
    matrixIcon8.setPixelAt(0, 3, Color.BLACK);
    matrixIcon8.fillPixels(1, 2, 3, Color.WHITE);
    matrixIcon8.fillPixels(3, 4, 3, Color.web("#4d79ff"));
    matrixIcon8.fillPixels(5, 6, 3, Color.WHITE);
    matrixIcon8.setPixelAt(7, 3, Color.BLACK);
    matrixIcon8.setPixelAt(0, 4, Color.BLACK);
    matrixIcon8.fillPixels(1, 2, 4, Color.WHITE);
    matrixIcon8.fillPixels(3, 4, 4, Color.web("#4d79ff"));
    matrixIcon8.fillPixels(5, 6, 4, Color.WHITE);
    matrixIcon8.setPixelAt(7, 4, Color.BLACK);
    matrixIcon8.setPixelAt(1, 5, Color.BLACK);
    matrixIcon8.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon8.setPixelAt(6, 5, Color.BLACK);
    matrixIcon8.fillPixels(2, 5, 6, Color.BLACK);
    MatrixIcon matrixIcon9 = new MatrixIcon();
    matrixIcon9.fillPixels(2, 5, 1, Color.BLACK);
    matrixIcon9.setPixelAt(1, 2, Color.BLACK);
    matrixIcon9.fillPixels(2, 5, 2, Color.WHITE);
    matrixIcon9.setPixelAt(6, 2, Color.BLACK);
    matrixIcon9.setPixelAt(0, 3, Color.BLACK);
    matrixIcon9.fillPixels(1, 2, 3, Color.WHITE);
    matrixIcon9.fillPixels(3, 4, 3, Color.web("#4d79ff"));
    matrixIcon9.fillPixels(5, 6, 3, Color.WHITE);
    matrixIcon9.setPixelAt(7, 3, Color.BLACK);
    matrixIcon9.setPixelAt(0, 4, Color.BLACK);
    matrixIcon9.fillPixels(1, 2, 4, Color.WHITE);
    matrixIcon9.fillPixels(3, 4, 4, Color.web("#4d79ff"));
    matrixIcon9.fillPixels(5, 6, 4, Color.WHITE);
    matrixIcon9.setPixelAt(7, 4, Color.BLACK);
    matrixIcon9.setPixelAt(1, 5, Color.BLACK);
    matrixIcon9.fillPixels(2, 5, 5, Color.WHITE);
    matrixIcon9.setPixelAt(6, 5, Color.BLACK);
    matrixIcon9.fillPixels(2, 5, 6, Color.BLACK);
    matrixIconTile = TileBuilder.create().skinType(SkinType.MATRIX_ICON).prefSize(TILE_WIDTH, TILE_HEIGHT).title("MatrixIcon Tile").matrixIcons(matrixIcon1, matrixIcon2, matrixIcon3, matrixIcon4, matrixIcon5, matrixIcon6, matrixIcon7, matrixIcon8, matrixIcon9).animationDuration(50).animated(true).build();
    cycleStepTile = TileBuilder.create().skinType(SkinType.CYCLE_STEP).prefSize(TILE_WIDTH, TILE_HEIGHT).title("CycleStep Tile").textVisible(false).chartData(chartData1, chartData2, chartData3, chartData4, chartData5).animated(true).decimals(1).build();
    Label name = new Label("Name");
    name.setTextFill(Tile.FOREGROUND);
    name.setAlignment(Pos.CENTER_LEFT);
    HBox.setHgrow(name, Priority.NEVER);
    Region spacer = new Region();
    spacer.setPrefSize(5, 5);
    HBox.setHgrow(spacer, Priority.ALWAYS);
    Label views = new Label("Cases / Deaths");
    views.setTextFill(Tile.FOREGROUND);
    views.setAlignment(Pos.CENTER_RIGHT);
    HBox.setHgrow(views, Priority.NEVER);
    HBox header = new HBox(5, name, spacer, views);
    header.setAlignment(Pos.CENTER_LEFT);
    header.setFillHeight(true);
    HBox usa = getCountryItem(Flag.UNITED_STATES_OF_AMERICA, "USA", "1.618.757 / 96.909");
    HBox brazil = getCountryItem(Flag.BRAZIL, "Brazil", "363.211 / 22.666");
    HBox uk = getCountryItem(Flag.UNITED_KINGDOM, "UK", "259.563 / 36.793");
    HBox spain = getCountryItem(Flag.SPAIN, "Spain", "235.772 / 28.752");
    HBox italy = getCountryItem(Flag.ITALY, "Italy", "229.585 / 32.785");
    HBox germany = getCountryItem(Flag.GERMANY, "Germany", "178.570 / 8.257");
    HBox france = getCountryItem(Flag.FRANCE, "France", "142.204 / 28.315");
    VBox dataTable = new VBox(0, header, usa, brazil, uk, spain, italy, germany, france);
    dataTable.setFillWidth(true);
    customFlagChartTile = TileBuilder.create().skinType(SkinType.CUSTOM).title("Custom Tile Covid-19").text("Data from 26.05.2020").graphic(dataTable).build();
    colorTile = TileBuilder.create().skinType(SkinType.COLOR).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Color Tile").description("Whatever").animated(false).build();
    turnoverTile = TileBuilder.create().skinType(SkinType.TURNOVER).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Turnover Tile").text("Gerrit Grunwald").decimals(0).unit("$").image(new Image(Demo.class.getResourceAsStream("HanSolo.png"))).animated(true).checkThreshold(true).onTileEvent(e -> {
        if (EventType.THRESHOLD_EXCEEDED == e.getEventType()) {
            turnoverTile.setRank(firstRank);
            turnoverTile.setValueColor(firstRank.getColor());
            turnoverTile.setUnitColor(firstRank.getColor());
        } else if (EventType.THRESHOLD_UNDERRUN == e.getEventType()) {
            turnoverTile.setRank(Rank.DEFAULT);
            turnoverTile.setValueColor(Tile.FOREGROUND);
            turnoverTile.setUnitColor(Tile.FOREGROUND);
        }
    }).threshold(// triggers the rotation effect
    70).build();
    fluidTile = TileBuilder.create().skinType(SkinType.FLUID).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Fluid Tile").text("Waterlevel").unit("\u0025").decimals(0).barColor(// defines the fluid color, alternatively use sections or gradientstops
    Tile.BLUE).animated(true).build();
    fireSmokeTile = TileBuilder.create().skinType(SkinType.FIRE_SMOKE).prefSize(TILE_WIDTH, TILE_HEIGHT).title("FireSmoke Tile").text("CPU temp").unit("\u00b0C").threshold(// triggers the fire and smoke effect
    40).decimals(0).animated(true).build();
    gauge2Tile = TileBuilder.create().skinType(SkinType.GAUGE2).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Gauge2 Tile").text("Whatever").unit("Unit").textVisible(true).value(0).gradientStops(new Stop(0, Tile.BLUE), new Stop(0.25, Tile.GREEN), new Stop(0.5, Tile.YELLOW), new Stop(0.75, Tile.ORANGE), new Stop(1, Tile.RED)).strokeWithGradient(true).animated(true).build();
    HappinessIndicator happy = new HappinessIndicator(Happiness.HAPPY, 0.67);
    HappinessIndicator neutral = new HappinessIndicator(Happiness.NEUTRAL, 0.25);
    HappinessIndicator unhappy = new HappinessIndicator(Happiness.UNHAPPY, 0.08);
    HBox happiness = new HBox(unhappy, neutral, happy);
    happiness.setFillHeight(true);
    HBox.setHgrow(happy, Priority.ALWAYS);
    HBox.setHgrow(neutral, Priority.ALWAYS);
    HBox.setHgrow(unhappy, Priority.ALWAYS);
    happinessTile = TileBuilder.create().skinType(SkinType.CUSTOM).prefSize(TILE_WIDTH, TILE_HEIGHT).title("Custom Tile Happiness").text("Whatever").textVisible(true).graphic(happiness).value(0).animated(true).build();
    List<ChartData> glucoseData = new ArrayList<>();
    for (int i = 0; i < 288; i++) {
        glucoseData.add(new ChartData("", RND.nextDouble() * 300 + 50));
    }
    radialDistributionTile = TileBuilder.create().skinType(SkinType.RADIAL_DISTRIBUTION).title("RadialDistribution Tile").text("Whatever").description("Description").minValue(0).maxValue(400).lowerThreshold(70).threshold(140).tickLabelDecimals(0).decimals(0).chartData(glucoseData).barColor(Color.rgb(254, 1, 154)).gradientStops(new Stop(0, Helper.getColorWithOpacity(Color.RED, 0.1)), new Stop(0.1375, Helper.getColorWithOpacity(Color.RED, 0.1)), new Stop(0.15625, Helper.getColorWithOpacity(Color.web("#FA711F"), 0.1)), new Stop(0.175, Helper.getColorWithOpacity(ColorSkin.GREEN, 0.1)), new Stop(0.2625, Helper.getColorWithOpacity(ColorSkin.GREEN, 0.1)), new Stop(0.35, Helper.getColorWithOpacity(ColorSkin.GREEN, 0.1)), new Stop(0.3501, Helper.getColorWithOpacity(ColorSkin.YELLOW, 0.1)), new Stop(0.45, Helper.getColorWithOpacity(Color.web("#FA711F"), 0.1)), new Stop(0.6625, Helper.getColorWithOpacity(Color.web("#FA711F"), 0.1)), new Stop(0.875, Helper.getColorWithOpacity(Color.RED, 0.1)), new Stop(1.0, Helper.getColorWithOpacity(Color.RED, 0.1))).strokeWithGradient(true).build();
    lastTimerCall = System.nanoTime();
    timer = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastTimerCall + 3_500_000_000L) {
                percentageTile.setValue(RND.nextDouble() * percentageTile.getRange() * 1.5 + percentageTile.getMinValue());
                gaugeTile.setValue(RND.nextDouble() * gaugeTile.getRange() * 1.5 + gaugeTile.getMinValue());
                gauge2Tile.setValue(RND.nextDouble() * gaugeTile.getRange() + gaugeTile.getMinValue());
                sparkLineTile.setValue(RND.nextDouble() * sparkLineTile.getRange() * 1.5 + sparkLineTile.getMinValue());
                // value.set(RND.nextDouble() * sparkLineTile.getRange() * 1.5 + sparkLineTile.getMinValue());
                // sparkLineTile.setValue(20);
                highLowTile.setValue(RND.nextDouble() * 10);
                series1.getData().forEach(data -> data.setYValue(RND.nextInt(100)));
                series2.getData().forEach(data -> data.setYValue(RND.nextInt(30)));
                series3.getData().forEach(data -> data.setYValue(RND.nextInt(10)));
                chartData1.setValue(RND.nextDouble() * 50);
                chartData2.setValue(RND.nextDouble() * 50);
                chartData3.setValue(RND.nextDouble() * 50);
                chartData4.setValue(RND.nextDouble() * 50);
                chartData5.setValue(RND.nextDouble() * 50);
                chartData6.setValue(RND.nextDouble() * 50);
                chartData7.setValue(RND.nextDouble() * 50);
                chartData8.setValue(RND.nextDouble() * 50);
                barChartTile.getBarChartItems().get(RND.nextInt(3)).setValue(RND.nextDouble() * 80);
                leaderBoardTile.getLeaderBoardItems().get(RND.nextInt(3)).setValue(RND.nextDouble() * 80);
                circularProgressTile.setValue(RND.nextDouble() * 120);
                stockTile.setValue(RND.nextDouble() * 50 + 500);
                gaugeSparkLineTile.setValue(RND.nextDouble() * 100);
                countryTile.setValue(RND.nextDouble() * 100);
                smoothChartData1.setValue(smoothChartData2.getValue());
                smoothChartData2.setValue(smoothChartData3.getValue());
                smoothChartData3.setValue(smoothChartData4.getValue());
                smoothChartData4.setValue(RND.nextDouble() * 25);
                characterTile.setDescription(Helper.ALPHANUMERIC[RND.nextInt(Helper.ALPHANUMERIC.length - 1)]);
                flipTile.setFlipText(Helper.TIME_0_TO_5[RND.nextInt(Helper.TIME_0_TO_5.length - 1)]);
                radialPercentageTile.setValue(chartData1.getValue());
                if (statusTile.getLeftValue() > 1000) {
                    statusTile.setLeftValue(0);
                }
                if (statusTile.getMiddleValue() > 1000) {
                    statusTile.setMiddleValue(0);
                }
                if (statusTile.getRightValue() > 1000) {
                    statusTile.setRightValue(0);
                }
                statusTile.setLeftValue(statusTile.getLeftValue() + RND.nextInt(4));
                statusTile.setMiddleValue(statusTile.getMiddleValue() + RND.nextInt(3));
                statusTile.setRightValue(statusTile.getRightValue() + RND.nextInt(3));
                barGaugeTile.setValue(RND.nextDouble() * 100);
                timelineTile.addChartData(new ChartData("", RND.nextDouble() * 300 + 50, Instant.now()));
                imageCounterTile.increaseValue(1);
                ledTile.setActive(!ledTile.isActive());
                if (!countdownTile.isRunning()) {
                    countdownTile.setTimePeriod(Duration.ofSeconds(30));
                    countdownTile.setRunning(true);
                }
                colorTile.setValue(RND.nextDouble() * 100);
                turnoverTile.setValue(RND.nextDouble() * 100);
                fluidTile.setValue(RND.nextDouble() * 100);
                fireSmokeTile.setValue(RND.nextDouble() * 100);
                lastTimerCall = now;
            }
        }
    };
    System.out.println("Initialization: " + (System.currentTimeMillis() - start) + "ms");
}
Also used : Button(javafx.scene.control.Button) Pos(javafx.geometry.Pos) Location(eu.hansolo.tilesfx.tools.Location) CycleMethod(javafx.scene.paint.CycleMethod) ZonedDateTime(java.time.ZonedDateTime) LinearGradient(javafx.scene.paint.LinearGradient) Random(java.util.Random) XYChart(javafx.scene.chart.XYChart) VBox(javafx.scene.layout.VBox) Ranking(eu.hansolo.tilesfx.tools.Ranking) MapProvider(eu.hansolo.tilesfx.Tile.MapProvider) Application(javafx.application.Application) Parent(javafx.scene.Parent) ChartData(eu.hansolo.tilesfx.chart.ChartData) Happiness(eu.hansolo.tilesfx.addons.HappinessIndicator.Happiness) Locale(java.util.Locale) TilesFXSeries(eu.hansolo.tilesfx.chart.TilesFXSeries) Country(eu.hansolo.tilesfx.tools.Country) Duration(java.time.Duration) Bright(eu.hansolo.tilesfx.colors.Bright) LocalTime(java.time.LocalTime) TextOrientation(eu.hansolo.tilesfx.chart.SunburstChart.TextOrientation) HBox(javafx.scene.layout.HBox) ChartType(eu.hansolo.tilesfx.Tile.ChartType) RadarChartMode(eu.hansolo.tilesfx.chart.RadarChartMode) Stop(javafx.scene.paint.Stop) ColorSkin(eu.hansolo.tilesfx.colors.ColorSkin) Instant(java.time.Instant) AnimationTimer(javafx.animation.AnimationTimer) Priority(javafx.scene.layout.Priority) List(java.util.List) Region(javafx.scene.layout.Region) HappinessIndicator(eu.hansolo.tilesfx.addons.HappinessIndicator) SimpleDoubleProperty(javafx.beans.property.SimpleDoubleProperty) Dark(eu.hansolo.tilesfx.colors.Dark) ObservableList(javafx.collections.ObservableList) ImageMask(eu.hansolo.tilesfx.Tile.ImageMask) CornerRadii(javafx.scene.layout.CornerRadii) Scene(javafx.scene.Scene) Rank(eu.hansolo.tilesfx.tools.Rank) TreeNode(eu.hansolo.tilesfx.tools.TreeNode) TileColor(eu.hansolo.tilesfx.Tile.TileColor) EventType(eu.hansolo.tilesfx.events.TileEvent.EventType) BarChartItem(eu.hansolo.tilesfx.skins.BarChartItem) DoubleProperty(javafx.beans.property.DoubleProperty) Indicator(eu.hansolo.tilesfx.addons.Indicator) ArrayList(java.util.ArrayList) MatrixIcon(eu.hansolo.tilesfx.tools.MatrixIcon) PerspectiveCamera(javafx.scene.PerspectiveCamera) Insets(javafx.geometry.Insets) Helper(eu.hansolo.tilesfx.tools.Helper) FlowGridPane(eu.hansolo.tilesfx.tools.FlowGridPane) BackgroundFill(javafx.scene.layout.BackgroundFill) Flag(eu.hansolo.tilesfx.icons.Flag) TextAlignment(javafx.scene.text.TextAlignment) Color(javafx.scene.paint.Color) Label(javafx.scene.control.Label) Node(javafx.scene.Node) Background(javafx.scene.layout.Background) TimeUnit(java.util.concurrent.TimeUnit) Stage(javafx.stage.Stage) ImageView(javafx.scene.image.ImageView) SkinType(eu.hansolo.tilesfx.Tile.SkinType) LeaderBoardItem(eu.hansolo.tilesfx.skins.LeaderBoardItem) Image(javafx.scene.image.Image) HBox(javafx.scene.layout.HBox) HappinessIndicator(eu.hansolo.tilesfx.addons.HappinessIndicator) MatrixIcon(eu.hansolo.tilesfx.tools.MatrixIcon) SimpleDoubleProperty(javafx.beans.property.SimpleDoubleProperty) Stop(javafx.scene.paint.Stop) BarChartItem(eu.hansolo.tilesfx.skins.BarChartItem) ArrayList(java.util.ArrayList) Label(javafx.scene.control.Label) Image(javafx.scene.image.Image) Button(javafx.scene.control.Button) ZonedDateTime(java.time.ZonedDateTime) TreeNode(eu.hansolo.tilesfx.tools.TreeNode) ChartData(eu.hansolo.tilesfx.chart.ChartData) AnimationTimer(javafx.animation.AnimationTimer) TileColor(eu.hansolo.tilesfx.Tile.TileColor) Color(javafx.scene.paint.Color) Rank(eu.hansolo.tilesfx.tools.Rank) HappinessIndicator(eu.hansolo.tilesfx.addons.HappinessIndicator) Indicator(eu.hansolo.tilesfx.addons.Indicator) TilesFXSeries(eu.hansolo.tilesfx.chart.TilesFXSeries) LinearGradient(javafx.scene.paint.LinearGradient) XYChart(javafx.scene.chart.XYChart) Region(javafx.scene.layout.Region) LeaderBoardItem(eu.hansolo.tilesfx.skins.LeaderBoardItem) VBox(javafx.scene.layout.VBox) Location(eu.hansolo.tilesfx.tools.Location)

Example 29 with Stop

use of javafx.scene.paint.Stop in project tilesfx by HanSolo.

the class RadarChart method initGraphics.

private void initGraphics() {
    stops = new ArrayList<>(16);
    for (Stop stop : getGradientStops()) {
        if (Double.compare(stop.getOffset(), 0.0) == 0)
            stops.add(new Stop(0, stop.getColor()));
        stops.add(new Stop(stop.getOffset() * 0.69924 + 0.285, stop.getColor()));
    }
    chartCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
    chartCtx = chartCanvas.getGraphicsContext2D();
    overlayCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
    overlayCtx = overlayCanvas.getGraphicsContext2D();
    unitText = new Text(getUnit());
    unitText.setTextAlignment(TextAlignment.CENTER);
    unitText.setTextOrigin(VPos.CENTER);
    unitText.setFont(Fonts.latoLight(0.045 * PREFERRED_WIDTH));
    legendStep = (getMaxValue() - getMinValue()) / 5d;
    dropShadow = new DropShadow(BlurType.TWO_PASS_BOX, Color.BLACK, 5, 0, 0, 0);
    minValueText = new Text(String.format(Locale.US, formatString, getMinValue()));
    minValueText.setTextAlignment(TextAlignment.CENTER);
    minValueText.setTextOrigin(VPos.CENTER);
    minValueText.setVisible(isLegendVisible());
    minValueText.setEffect(dropShadow);
    legend1Text = new Text(String.format(Locale.US, formatString, getMinValue() + legendStep));
    legend1Text.setTextAlignment(TextAlignment.CENTER);
    legend1Text.setTextOrigin(VPos.CENTER);
    legend1Text.setVisible(isLegendVisible());
    legend1Text.setEffect(dropShadow);
    legend2Text = new Text(String.format(Locale.US, formatString, getMinValue() + legendStep * 2));
    legend2Text.setTextAlignment(TextAlignment.CENTER);
    legend2Text.setTextOrigin(VPos.CENTER);
    legend2Text.setVisible(isLegendVisible());
    legend2Text.setEffect(dropShadow);
    legend3Text = new Text(String.format(Locale.US, formatString, getMinValue() + legendStep * 3));
    legend3Text.setTextAlignment(TextAlignment.CENTER);
    legend3Text.setTextOrigin(VPos.CENTER);
    legend3Text.setVisible(isLegendVisible());
    legend3Text.setEffect(dropShadow);
    legend4Text = new Text(String.format(Locale.US, formatString, getMinValue() + legendStep * 3));
    legend4Text.setTextAlignment(TextAlignment.CENTER);
    legend4Text.setTextOrigin(VPos.CENTER);
    legend4Text.setVisible(isLegendVisible());
    legend4Text.setEffect(dropShadow);
    maxValueText = new Text(String.format(Locale.US, formatString, getMaxValue()));
    maxValueText.setTextAlignment(TextAlignment.CENTER);
    maxValueText.setTextOrigin(VPos.CENTER);
    maxValueText.setVisible(isLegendVisible());
    maxValueText.setEffect(dropShadow);
    // Add all nodes
    pane = new Pane(chartCanvas, overlayCanvas, unitText, minValueText, legend1Text, legend2Text, legend3Text, legend4Text, maxValueText);
    pane.setBackground(new Background(new BackgroundFill(getChartBackgroundColor(), new CornerRadii(1024), Insets.EMPTY)));
    getChildren().setAll(pane);
}
Also used : Background(javafx.scene.layout.Background) Stop(javafx.scene.paint.Stop) Canvas(javafx.scene.canvas.Canvas) BackgroundFill(javafx.scene.layout.BackgroundFill) Text(javafx.scene.text.Text) CornerRadii(javafx.scene.layout.CornerRadii) Pane(javafx.scene.layout.Pane) DropShadow(javafx.scene.effect.DropShadow)

Example 30 with Stop

use of javafx.scene.paint.Stop in project tilesfx by HanSolo.

the class GaugeSparkLineTileSkin method setupGradient.

private void setupGradient() {
    double loFactor = (low - minValue) / tile.getRange();
    double hiFactor = (high - minValue) / tile.getRange();
    Stop loStop = new Stop(loFactor, gradientLookup.getColorAt(loFactor));
    Stop hiStop = new Stop(hiFactor, gradientLookup.getColorAt(hiFactor));
    List<Stop> stopsInBetween = gradientLookup.getStopsBetween(loFactor, hiFactor);
    double range = hiFactor - loFactor;
    double factor = 1.0 / range;
    List<Stop> stops = new ArrayList<>();
    stops.add(new Stop(0, loStop.getColor()));
    for (Stop stop : stopsInBetween) {
        stops.add(new Stop((stop.getOffset() - loFactor) * factor, stop.getColor()));
    }
    stops.add(new Stop(1, hiStop.getColor()));
    gradient = new LinearGradient(0, graphBounds.getY() + graphBounds.getHeight(), 0, graphBounds.getY(), false, CycleMethod.NO_CYCLE, stops);
}
Also used : LinearGradient(javafx.scene.paint.LinearGradient) Stop(javafx.scene.paint.Stop) ArrayList(java.util.ArrayList)

Aggregations

Stop (javafx.scene.paint.Stop)98 LinearGradient (javafx.scene.paint.LinearGradient)47 Color (javafx.scene.paint.Color)36 Text (javafx.scene.text.Text)17 ArrayList (java.util.ArrayList)16 RadialGradient (javafx.scene.paint.RadialGradient)16 Scene (javafx.scene.Scene)15 Pane (javafx.scene.layout.Pane)13 Insets (javafx.geometry.Insets)12 Paint (javafx.scene.paint.Paint)12 Canvas (javafx.scene.canvas.Canvas)11 DropShadow (javafx.scene.effect.DropShadow)9 Image (javafx.scene.image.Image)9 InnerShadow (javafx.scene.effect.InnerShadow)8 Background (javafx.scene.layout.Background)8 BackgroundFill (javafx.scene.layout.BackgroundFill)8 Rectangle (javafx.scene.shape.Rectangle)8 DoubleProperty (javafx.beans.property.DoubleProperty)7 SimpleDoubleProperty (javafx.beans.property.SimpleDoubleProperty)7 Group (javafx.scene.Group)7