Java源码示例:eu.hansolo.tilesfx.tools.Helper

示例1
@Override protected void handleEvents(final String EVENT_TYPE) {
    super.handleEvents(EVENT_TYPE);

    if ("VISIBILITY".equals(EVENT_TYPE)) {
        Helper.enableNode(titleText, !tile.getTitle().isEmpty());
        Helper.enableNode(valueText, tile.isValueVisible());
        Helper.enableNode(sectionPane, tile.getSectionsVisible());
        Helper.enableNode(thresholdRect, tile.isThresholdVisible());
        Helper.enableNode(thresholdText, tile.isThresholdVisible());
        Helper.enableNode(unitFlow, !tile.getUnit().isEmpty());
        sectionsVisible = tile.getSectionsVisible();
    } else if ("SECTION".equals(EVENT_TYPE)) {
        sections = tile.getSections();
        sectionMap.clear();
        for(Section section : sections) { sectionMap.put(section, new Arc()); }
    } else if ("ALERT".equals(EVENT_TYPE)) {
        Helper.enableNode(valueText, tile.isValueVisible() && !tile.isAlert());
        Helper.enableNode(unitText, tile.isValueVisible() && !tile.isAlert());
        Helper.enableNode(alertIcon, tile.isAlert());
        alertTooltip.setText(tile.getAlertMessage());
    }
}
 
示例2
@Override protected void resizeDynamicText() {
    double maxWidth = unitText.isManaged() ? width - size * 0.275 : width - size * 0.1;
    double fontSize = size * 0.24;
    valueText.setFont(Fonts.latoRegular(fontSize));
    if (valueText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(valueText, maxWidth, fontSize); }

    thresholdText.setFill(sectionsVisible ? Color.TRANSPARENT : tile.getBackgroundColor());
    if (!sectionsVisible) {
        fontSize = size * 0.08;
        thresholdText.setFont(Fonts.latoRegular(fontSize));
        thresholdText.setTextOrigin(VPos.CENTER);
        if (thresholdText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(thresholdText, maxWidth, fontSize); }
        thresholdText.setX((width - thresholdText.getLayoutBounds().getWidth()) * 0.5);
        thresholdText.setY(thresholdRect.getLayoutBounds().getMinY() + thresholdRect.getHeight() * 0.5);
    }
}
 
示例3
@Override protected void handleCurrentValue(final double VALUE) {
    double needleStartAngle = angleRange * 0.5;
    double targetAngle = (VALUE - minValue) * angleStep - needleStartAngle;
    targetAngle = Helper.clamp(-needleStartAngle, -needleStartAngle + angleRange, targetAngle);
    needleRotate.setAngle(targetAngle);
    needleRectRotate.setAngle(targetAngle);
    bar.setLength(-angleStep * VALUE);
    if (tile.isStrokeWithGradient()) {
        needle.setFill(gradientLookup.getColorAt(VALUE / tile.getRange()));
        bar.setStroke(conicalGradient.getImagePattern(barBounds));
    } else {
        needle.setFill(tile.getNeedleColor());
        bar.setStroke(tile.getBarColor());
    }

    if (tile.getCustomDecimalFormatEnabled()) {
        valueText.setText(decimalFormat.format(VALUE));
    } else {
        valueText.setText(String.format(locale, formatString, VALUE));
    }
    resizeDynamicText();
}
 
示例4
@Override protected void initGraphics() {
    super.initGraphics();

    chartItems = new ArrayList<>();
    double sum = tile.getChartData().stream().mapToDouble(chartData -> chartData.getValue()).sum();
    tile.getChartData().forEach(chartData -> chartItems.add(new ChartItem(chartData, sum)));

    chartBox = new VBox(0);
    chartBox.setFillWidth(true);
    chartBox.getChildren().addAll(chartItems);

    titleText = new Text();
    titleText.setFill(tile.getTitleColor());
    Helper.enableNode(titleText, !tile.getTitle().isEmpty());

    text = new Text(tile.getText());
    text.setFill(tile.getUnitColor());
    Helper.enableNode(text, tile.isTextVisible());

    getPane().getChildren().addAll(titleText, text, chartBox);
}
 
示例5
@Override protected void initGraphics() {
    super.initGraphics();

    titleText = new Text();
    titleText.setFill(tile.getTitleColor());
    Helper.enableNode(titleText, !tile.getTitle().isEmpty());

    description = new Label(tile.getDescription());
    description.setAlignment(Pos.CENTER);
    description.setTextAlignment(TextAlignment.CENTER);
    description.setWrapText(true);
    description.setTextOverrun(OverrunStyle.WORD_ELLIPSIS);
    description.setTextFill(tile.getTextColor());
    description.setPrefSize(PREFERRED_WIDTH * 0.9, PREFERRED_HEIGHT * 0.795);
    Helper.enableNode(description, tile.isTextVisible());

    text = new Text(tile.getText());
    text.setFill(tile.getUnitColor());
    Helper.enableNode(text, tile.isTextVisible());

    getPane().getChildren().addAll(titleText, text, description);
}
 
示例6
private void redraw() {
    double value        = chartData.getValue();
    String formatString = "%." + tile.getDecimals() + "f";
    double maxTextWidth = width * 0.4;
    double barStartX    = maxTextWidth + 5;
    double barStartY    = height * 0.2;
    double maxBarWidth  = width - barStartX;
    double barWidth     = value / sum * maxBarWidth;
    double barHeight    = height * 0.6;

    ctx.setTextBaseline(VPos.CENTER);
    ctx.setFont(Fonts.latoRegular(height * 0.4));
    ctx.setTextAlign(TextAlignment.LEFT);
    ctx.clearRect(0, 0, width, height);
    ctx.setFill(tile.getForegroundColor());
    ctx.fillText(chartData.getName(), 0, height / 2, maxTextWidth);
    ctx.setFill(Helper.getColorWithOpacity(tile.getForegroundColor(), 0.1));
    ctx.fillRect(barStartX, barStartY, maxBarWidth, barHeight);
    ctx.setFill(chartData.getFillColor());
    ctx.fillRect(barStartX + factorX * maxBarWidth, barStartY, barWidth, barHeight);
    ctx.setFill(tile.getForegroundColor());
    ctx.setFont(Fonts.latoRegular(height * 0.3));
    ctx.setTextAlign(TextAlignment.CENTER);
    ctx.fillText(String.format(tile.getLocale(), formatString, value), barStartX + factorX * maxBarWidth + barWidth * 0.5, height * 0.5, maxTextWidth);
}
 
示例7
private void updateChart() {
    Platform.runLater(() -> {
        List<BarChartItem> items     = tile.getBarChartItems();
        int                noOfItems = items.size();
        if (noOfItems == 0) { return; }
        double maxValue   = tile.getMaxValue();
        double maxY       = barChartPane.getLayoutBounds().getMaxY();
        double itemHeight = items.get(0).getPrefHeight();
        double factorY    = Helper.clamp(itemHeight, itemHeight * 1.1, 0.13 * size);
        for (int i = 0 ; i < noOfItems ; i++) {
            BarChartItem item = items.get(i);
            double y = i * factorY;
            if ((y + itemHeight) < maxY) {
                item.setMaxValue(maxValue);
                Helper.enableNode(item, true);
                item.relocate(0, y);
            } else {
                Helper.enableNode(item, false);
            }
        }
        long noOfVisibleItems = items.stream().filter(item -> item.isVisible()).count();
        tile.showLowerRightRegion(noOfVisibleItems != noOfItems);
    });
}
 
示例8
@Override protected void handleEvents(final String EVENT_TYPE) {
    super.handleEvents(EVENT_TYPE);

    if ("VISIBILITY".equals(EVENT_TYPE)) {
        Helper.enableNode(titleText, !tile.getTitle().isEmpty());
        Helper.enableNode(text, tile.isTextVisible());
        webView.setMaxSize(size * 0.9, tile.isTextVisible() ? size * 0.68 : size * 0.795);
        webView.setPrefSize(size * 0.9, tile.isTextVisible() ? size * 0.68 : size * 0.795);
    } else if ("LOCATION".equals(EVENT_TYPE)) {
        tile.getCurrentLocation().addLocationEventListener(locationListener);
        updateLocation();
    } else if ("TRACK".equals(EVENT_TYPE)) {
        addTrack(tile.getTrack());
    } else if ("MAP_PROVIDER".equals(EVENT_TYPE)) {
        changeMapProvider(tile.getMapProvider());
    }
}
 
示例9
@Override protected void resizeDynamicText() {
    double maxWidth = percentageUnitText.isVisible() ? chartSize * 0.7 : chartSize * 0.8;
    double fontSize = chartSize * 0.2;
    percentageValueText.setFont(Fonts.latoRegular(fontSize));
    if (percentageValueText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(percentageValueText, maxWidth, fontSize); }

    fontSize = chartSize * 0.08;
    percentageUnitText.setFont(Fonts.latoLight(fontSize));
    if (percentageUnitText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(percentageUnitText, maxWidth, fontSize); }

    maxWidth = unitText.isVisible() ? chartSize * 0.3 : chartSize * 0.4;
    fontSize = chartSize * 0.075;
    descriptionText.setFont(Fonts.latoRegular(fontSize));
    if (descriptionText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(descriptionText, maxWidth, fontSize); }

    fontSize = chartSize * 0.04;
    unitText.setFont(Fonts.latoLight(fontSize));
    if (unitText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(unitText, maxWidth, fontSize); }
}
 
示例10
@Override protected void resizeStaticText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }
}
 
示例11
private void updateMatrixWithChartData() {
    List<ChartData> dataList = tile.getChartData();
    int             cols     = dataList.size();
    int             rows     = matrix.getRows();
    double          factor   = rows / tile.getRange();
    Color           offColor = matrix.getPixelOffColor();

    matrix.setAllPixelsOff();
    for (int y = rows ; y >= 0 ; y--) {
        for (int x = 0 ; x < cols; x++) {
            int noOfActivePixels = Helper.roundDoubleToInt((maxValue - dataList.get(x).getValue()) * factor);
            matrix.setPixel(x, y, noOfActivePixels <= y ? dataList.get(x).getFillColor() : offColor);
        }
    }
    matrix.drawMatrix();
}
 
示例12
@Override protected void handleEvents(final String EVENT_TYPE) {
    super.handleEvents(EVENT_TYPE);

    if ("VISIBILITY".equals(EVENT_TYPE)) {
        Helper.enableNode(titleText, !tile.getTitle().isEmpty());
        Helper.enableNode(text, tile.isTextVisible());
        Helper.enableNode(dateText, tile.isDateVisible());
        Helper.enableNode(second, tile.isSecondsVisible());
        Helper.enableNode(sectionsPane, tile.getSectionsVisible());
    } else if ("SECTION".equals(EVENT_TYPE)) {
        sectionMap.clear();
        for (TimeSection section : tile.getTimeSections()) { sectionMap.put(section, new Arc()); }
        sectionsPane.getChildren().setAll(sectionMap.values());
        resize();
        redraw();
    }
}
 
示例13
@Override protected void handleEvents(final String EVENT_TYPE) {
    super.handleEvents(EVENT_TYPE);

    if ("VISIBILITY".equals(EVENT_TYPE)) {
        Helper.enableNode(titleText, !tile.getTitle().isEmpty());
        Helper.enableNode(text, tile.isTextVisible());
        Helper.enableNode(valueText, tile.isValueVisible());
        Helper.enableNode(unitFlow, !tile.getUnit().isEmpty());
        Helper.enableNode(lowerThreshold, tile.isLowerThresholdVisible());
        Helper.enableNode(lowerThresholdText, tile.isLowerThresholdVisible());
        Helper.enableNode(threshold, tile.isThresholdVisible());
        Helper.enableNode(thresholdText, tile.isThresholdVisible());
        sectionsVisible = tile.getSectionsVisible();
        redraw();
    }
}
 
示例14
private void smooth(final List<Double> DATA_LIST) {
    Task<Point[]> smoothTask = new Task<Point[]>() {
        @Override protected Point[] call() {
            return Helper.smoothSparkLine(DATA_LIST, minValue, maxValue, graphBounds, noOfDatapoints);
        }
    };
    smoothTask.setOnSucceeded(t -> {
        Point[] smoothedPoints = smoothTask.getValue();
        int lengthMinusOne = smoothedPoints.length - 1;
        sparkLine.getElements().clear();
        sparkLine.getElements().add(new MoveTo(smoothedPoints[0].getX(), smoothedPoints[0].getY()));
        for (int i = 1 ; i < lengthMinusOne ; i++) {
            sparkLine.getElements().add(new LineTo(smoothedPoints[i].getX(), smoothedPoints[i].getY()));
        }
        dot.setCenterX(smoothedPoints[lengthMinusOne].getX());
        dot.setCenterY(smoothedPoints[lengthMinusOne].getY());
    });
    Thread smoothThread = new Thread(smoothTask);
    smoothThread.setDaemon(true);
    smoothThread.start();
}
 
示例15
@Override protected void handleEvents(final String EVENT_TYPE) {
    super.handleEvents(EVENT_TYPE);

    if (EventType.VISIBILITY.name().equals(EVENT_TYPE)) {
        Helper.enableNode(titleText, !tile.getTitle().isEmpty());
        Helper.enableNode(valueText, tile.isValueVisible());
        Helper.enableNode(unitFlow, !tile.getUnit().isEmpty());
        Helper.enableNode(dataPointGroup, tile.getDataPointsVisible());
    } else if (EventType.SERIES.name().equals(EVENT_TYPE)) {
        Helper.enableNode(fillPath, ChartType.AREA == tile.getChartType());
    } else if (EventType.CLEAR_DATA.name().equals(EVENT_TYPE)) {
        Platform.runLater(() -> {
            tile.clearChartData();
            fillPath.setVisible(false);
            strokePath.setVisible(false);
            Helper.enableNode(dataPointGroup, false);
            if (tile.getCustomDecimalFormatEnabled()) {
                valueText.setText(decimalFormat.format(minValue));
            } else {
                valueText.setText(String.format(locale, formatString, minValue));
            }
        });
        handleData();
    }
}
 
示例16
@Override protected void redraw() {
    super.redraw();
    titleText.setText(tile.getTitle());
    text.setText(tile.getText());

    resizeStaticText();

    titleText.setFill(tile.getTitleColor());
    text.setFill(tile.getTextColor());

    matrix.setPixelOnColor(tile.getBarColor());
    matrix.setPixelOffColor(Helper.isDark(tile.getBackgroundColor()) ? tile.getBackgroundColor().brighter() : tile.getBackgroundColor().darker());
    updateMatrix();
}
 
示例17
@Override protected void resizeStaticText() {
    double  maxWidth = width - size * 0.1;
    double  fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);
}
 
示例18
@Override protected void resizeStaticText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    text.setText(tile.getText());
    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);
}
 
示例19
@Override protected void initGraphics() {
    super.initGraphics();

    updateHandler    = e -> {
        final ChartDataEvent.EventType TYPE = e.getType();
        switch (TYPE) {
            case UPDATE  : updateChart(); break;
            case FINISHED: sortItems(); break;
        }
    };
    paneSizeListener = o -> resizeItems();
    handlerMap       = new HashMap<>();
    
    tile.getBarChartItems().forEach(item -> {
        item.addChartDataEventListener(updateHandler);
        EventHandler<MouseEvent> clickHandler = e -> tile.fireTileEvent(new TileEvent(EventType.SELECTED_CHART_DATA, item.getChartData()));
        handlerMap.put(item, clickHandler);
        item.addEventHandler(MouseEvent.MOUSE_PRESSED, clickHandler);
        item.setMaxValue(tile.getMaxValue());
        if (null == item.getFormatString() || item.getFormatString().isEmpty()) {
            item.setFormatString(formatString);
        }
    });
    barChartPane = new Pane();
    barChartPane.getChildren().addAll(tile.getBarChartItems());

    sortItems();

    titleText = new Text();
    titleText.setFill(tile.getTitleColor());
    Helper.enableNode(titleText, !tile.getTitle().isEmpty());

    text = new Text(tile.getText());
    text.setFill(tile.getUnitColor());
    Helper.enableNode(text, tile.isTextVisible());

    getPane().getChildren().addAll(titleText, text, barChartPane);
}
 
示例20
@Override protected void resizeStaticText() {
    double  maxWidth = width - size * 0.1;
    double  fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);
}
 
示例21
@Override protected void handleEvents(final String EVENT_TYPE) {
    super.handleEvents(EVENT_TYPE);

    if ("VISIBILITY".equals(EVENT_TYPE)) {
        Helper.enableNode(titleText, !tile.getTitle().isEmpty());
        Helper.enableNode(text, tile.isTextVisible());
        graphicContainer.setMaxSize(size * 0.9, tile.isTextVisible() ? size * 0.68 : size * 0.795);
        graphicContainer.setPrefSize(size * 0.9, tile.isTextVisible() ? size * 0.68 : size * 0.795);
    } else if ("GRAPHIC".equals(EVENT_TYPE)) {
        if (null != tile.getGraphic()) graphicContainer.setContent(tile.getGraphic());
    }
}
 
示例22
@Override protected void handleEvents(final String EVENT_TYPE) {
    super.handleEvents(EVENT_TYPE);

    if ("VISIBILITY".equals(EVENT_TYPE)) {
        Helper.enableNode(titleText, !tile.getTitle().isEmpty());
        Helper.enableNode(text, tile.isTextVisible());
    } else if ("RECALC".equals(EVENT_TYPE)) {
        matrix.setColsAndRows(tile.getMatrixSize());
        resize();
    }
}
 
示例23
@Override protected void resizeStaticText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font customFont        = tile.getCustomFont();
    Font font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    text.setText(tile.getText());
    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);

    fontSize = size * 0.1;
    description.setFont(Fonts.latoRegular(fontSize));
    description.setAlignment(Pos.TOP_CENTER);
    description.setWrapText(false);
}
 
示例24
@Override protected void resizeStaticText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    //maxWidth = size * 0.9;
    text.setText(tile.getText());
    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);

    maxWidth = width - size * 0.275;
    fontSize = size * 0.12;
    unitText.setText(tile.getUnit());
    unitText.setFont(Fonts.latoRegular(fontSize));
    if (unitText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(unitText, maxWidth, fontSize); }

    fontSize = size * 0.1;
    description.setFont(Fonts.latoRegular(fontSize));
}
 
示例25
@Override protected void resizeStaticText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    text.setText(tile.getText());
    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);
}
 
示例26
@Override protected void redraw() {
    super.redraw();
    titleText.setText(tile.getTitle());
    if (!tile.getDescription().isEmpty()) { text.setText(tile.getDescription()); }

    if (tile.isTextVisible()) {
        text.setText(tile.getText());
    } else if (!tile.isTextVisible() && null != movingAverage.getTimeSpan()) {
        timeSpanText.setText(createTimeSpanText());
        text.setText(timeFormatter.format(movingAverage.getLastEntry().getTimestampAsDateTime(tile.getZoneId())));
    }

    changeText.setText(String.format(locale, "%." + tile.getTickLabelDecimals() + "f", (tile.getCurrentValue() - tile.getReferenceValue())));
    StringBuilder changePercentageTextBuilder = new StringBuilder();
    if (Double.compare(tile.getReferenceValue(), 0.0) == 0) {
        changePercentageTextBuilder.append(String.format(locale, "%." + tile.getTickLabelDecimals() + "f", 0.0));
    } else {
        changePercentageTextBuilder.append(String.format(locale, "%." + tile.getTickLabelDecimals() + "f", (tile.getCurrentValue() / tile.getReferenceValue() * 100.0) - 100.0));
    }
    changePercentageTextBuilder.append(Helper.PERCENTAGE);
    changePercentageText.setText(changePercentageTextBuilder.toString());

    resizeStaticText();

    titleText.setFill(tile.getTitleColor());
    valueText.setFill(tile.getValueColor());
    highText.setFill(tile.getValueColor());
    lowText.setFill(tile.getValueColor());
    text.setFill(tile.getTextColor());
    timeSpanText.setFill(tile.getTextColor());
    referenceLine.setStroke(tile.getThresholdColor());
    sparkLine.setStroke(tile.getBarColor());
    dot.setFill(tile.getBarColor());
    changeText.setTextFill(state.color);
    changePercentageText.setFill(state.color);
    triangle.setFill(state.color);
}
 
示例27
@Override protected void resizeDynamicText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * 0.24;
    valueText.setFont(Fonts.latoRegular(fontSize));
    if (valueText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(valueText, maxWidth, fontSize); }

    maxWidth = width - size * 0.55;
    fontSize = size * 0.06;

    changeText.setFont(Fonts.latoRegular(fontSize));

    changePercentageText.setFont(Fonts.latoRegular(fontSize));
    if (changePercentageText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(changePercentageText, maxWidth, fontSize); }

    maxWidth = width - size * 0.7;
    fontSize = size * 0.06;

    highText.setFont(Fonts.latoRegular(fontSize));
    if (highText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(highText, maxWidth, fontSize); }
    highText.setY(graphBounds.getY() - size * 0.0125);

    lowText.setFont(Fonts.latoRegular(fontSize));
    if (lowText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(lowText, maxWidth, fontSize); }
    lowText.setY(height - size * 0.1);

    maxWidth = width - size * 0.25;
    fontSize = size * 0.06;
    text.setFont(Fonts.latoRegular(fontSize));
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    text.relocate(width - size * 0.05 - text.getLayoutBounds().getWidth(), height - size * 0.1);

    maxWidth = width - size * 0.25;
    fontSize = size * 0.06;
    timeSpanText.setFont(Fonts.latoRegular(fontSize));
    if (timeSpanText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(timeSpanText, maxWidth, fontSize); }
    timeSpanText.relocate((width - timeSpanText.getLayoutBounds().getWidth()) * 0.5, height - size * 0.1);
}
 
示例28
private void drawOverlay() {
    final Paint  CHART_BKG     = getChartBackgroundColor();
    final double CENTER_X      = 0.5 * width;
    final double CENTER_Y      = 0.5 * height;
    final double CIRCLE_RADIUS = 0.45 * size;
    final int    NO_OF_SECTORS = getNoOfSectors();

    // clear the overlayPath
    overlayPath.getElements().clear();

    // draw center point
    centerCircle.setCenterX(CENTER_X);
    centerCircle.setCenterY(CENTER_Y);
    centerCircle.setRadius(0.28571 * CIRCLE_RADIUS);
    centerCircle.setFill(CHART_BKG);
    centerCircle.setStroke(getGridColor());
    overlayPath.setStroke(getGridColor());
    overlayPath.setStrokeWidth(1);
    addCircle(overlayPath, CENTER_X, CENTER_Y, CIRCLE_RADIUS);

    // draw concentric rings
    double ringStepSize = (CIRCLE_RADIUS - CIRCLE_RADIUS * 0.28571) / 20.0;
    double ringSize     = CIRCLE_RADIUS;

    for (int i = 0 ; i < 11 ; i++) {
        addCircle(overlayPath,CENTER_X, CENTER_Y, ringSize);
        ringSize -= 2 * ringStepSize;
    }

    // draw star lines
    for (int i = 0 ; i < NO_OF_SECTORS ; i++) {
        double[] xy = Helper.rotatePointAroundRotationCenter(CENTER_X, CENTER_Y - CIRCLE_RADIUS, CENTER_X, CENTER_Y, i * angleStep);
        overlayPath.getElements().add(new MoveTo(CENTER_X, CENTER_Y));
        overlayPath.getElements().add(new LineTo(xy[0], xy[1]));
    }
}
 
示例29
@Override protected void resizeStaticText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    text.setText(tile.getText());
    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);

    fontSize = size * 0.1;
    description.setFont(Fonts.latoRegular(fontSize));
}
 
示例30
@Override protected void resizeStaticText() {
    double maxWidth = width - size * 0.1;
    double fontSize = size * textSize.factor;

    boolean customFontEnabled = tile.isCustomFontEnabled();
    Font    customFont        = tile.getCustomFont();
    Font    font              = (customFontEnabled && customFont != null) ? Font.font(customFont.getFamily(), fontSize) : Fonts.latoRegular(fontSize);

    titleText.setFont(font);
    if (titleText.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(titleText, maxWidth, fontSize); }
    switch(tile.getTitleAlignment()) {
        default    :
        case LEFT  : titleText.relocate(size * 0.05, size * 0.05); break;
        case CENTER: titleText.relocate((width - titleText.getLayoutBounds().getWidth()) * 0.5, size * 0.05); break;
        case RIGHT : titleText.relocate(width - (size * 0.05) - titleText.getLayoutBounds().getWidth(), size * 0.05); break;
    }

    text.setFont(font);
    if (text.getLayoutBounds().getWidth() > maxWidth) { Helper.adjustTextSize(text, maxWidth, fontSize); }
    switch(tile.getTextAlignment()) {
        default    :
        case LEFT  : text.setX(size * 0.05); break;
        case CENTER: text.setX((width - text.getLayoutBounds().getWidth()) * 0.5); break;
        case RIGHT : text.setX(width - (size * 0.05) - text.getLayoutBounds().getWidth()); break;
    }
    text.setY(height - size * 0.05);
}