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);
}