Search in sources :

Example 6 with BorderStroke

use of javafx.scene.layout.BorderStroke in project tilesfx by HanSolo.

the class CalendarTileSkin method drawCells.

private void drawCells() {
    List<ChartData> dataList = tile.getChartData();
    ZonedDateTime time = tile.getTime();
    Locale locale = tile.getLocale();
    int day = time.getDayOfMonth();
    int startDay = time.withDayOfMonth(1).getDayOfWeek().getValue();
    long lastDay = time.range(DAY_OF_MONTH).getMaximum();
    Color textColor = tile.getTextColor();
    Color bkgColor = tile.getBackgroundColor();
    Font regFont = Fonts.latoRegular(size * 0.045);
    Font bldFont = Fonts.latoBold(size * 0.045);
    Background bkgToday = new Background(new BackgroundFill(tile.getBarColor(), new CornerRadii(size * 0.0125), new Insets(2)));
    Border appmntBorder = new Border(new BorderStroke(tile.getAlarmColor(), tile.getAlarmColor(), tile.getAlarmColor(), tile.getAlarmColor(), BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, BorderStrokeStyle.SOLID, new CornerRadii(size * 0.0125), BorderWidths.DEFAULT, new Insets(1)));
    boolean counting = false;
    int dayCounter = 1;
    for (int y = 0; y < 7; y++) {
        for (int x = 0; x < 8; x++) {
            int index = y * 8 + x;
            Label label = labels.get(index);
            String text;
            if (x == 0 && y == 0) {
                text = "";
                label.setManaged(false);
                label.setVisible(false);
            } else if (y == 0) {
                text = DayOfWeek.of(x).getDisplayName(TextStyle.SHORT, locale);
                // label.setTextFill(x == 7 ? Tile.RED : textColor);
                label.setTextFill(textColor);
                label.setFont(bldFont);
            } else if (x == 0) {
                text = Integer.toString(time.withDayOfMonth(1).plusDays((y - 1) * 7).get(IsoFields.WEEK_OF_WEEK_BASED_YEAR));
                label.setTextFill(Tile.GRAY);
                label.setFont(regFont);
                label.setBorder(weekBorder);
            } else {
                if (index - 7 > startDay) {
                    counting = true;
                    text = Integer.toString(dayCounter);
                    LocalDate currentDay = time.toLocalDate().plusDays(dayCounter - 1);
                    long appointments = dataList.stream().filter(data -> data.getTimestampAsLocalDate().isEqual(currentDay)).count();
                    if (x == 7) {
                        if (appointments > 0) {
                            label.setBorder(appmntBorder);
                        } else {
                            label.setBorder(null);
                        }
                        label.setTextFill(Tile.RED);
                        label.setFont(regFont);
                    } else if (dayCounter == day) {
                        if (appointments > 0) {
                            label.setBorder(appmntBorder);
                        } else {
                            label.setBorder(null);
                        }
                        label.setBackground(bkgToday);
                        label.setTextFill(bkgColor);
                        label.setFont(bldFont);
                    } else {
                        if (appointments > 0) {
                            label.setBorder(appmntBorder);
                        } else {
                            label.setBorder(null);
                        }
                        label.setTextFill(textColor);
                        label.setFont(regFont);
                    }
                } else {
                    text = "";
                    label.setManaged(false);
                    label.setVisible(false);
                }
                if (dayCounter > lastDay) {
                    text = "";
                    label.setManaged(false);
                    label.setVisible(false);
                }
                if (counting) {
                    dayCounter++;
                }
            }
            label.setText(text);
            label.setVisible(true);
            label.setManaged(true);
            label.setPrefSize(cellWidth, cellHeight);
            label.relocate(x * cellWidth + cellOffsetX, y * cellHeight + cellOffsetY);
        }
    }
}
Also used : Locale(java.util.Locale) EventHandler(javafx.event.EventHandler) Pos(javafx.geometry.Pos) Fonts(eu.hansolo.tilesfx.fonts.Fonts) MouseEvent(javafx.scene.input.MouseEvent) ZonedDateTime(java.time.ZonedDateTime) EventType(eu.hansolo.tilesfx.events.TileEvent.EventType) ArrayList(java.util.ArrayList) ChartData(eu.hansolo.tilesfx.chart.ChartData) Insets(javafx.geometry.Insets) Helper(eu.hansolo.tilesfx.tools.Helper) BorderWidths(javafx.scene.layout.BorderWidths) BackgroundFill(javafx.scene.layout.BackgroundFill) Locale(java.util.Locale) Tile(eu.hansolo.tilesfx.Tile) Color(javafx.scene.paint.Color) Label(javafx.scene.control.Label) TextStyle(java.time.format.TextStyle) Border(javafx.scene.layout.Border) Font(javafx.scene.text.Font) Background(javafx.scene.layout.Background) DAY_OF_MONTH(java.time.temporal.ChronoField.DAY_OF_MONTH) BorderStrokeStyle(javafx.scene.layout.BorderStrokeStyle) BorderStroke(javafx.scene.layout.BorderStroke) Text(javafx.scene.text.Text) List(java.util.List) TileEvent(eu.hansolo.tilesfx.events.TileEvent) IsoFields(java.time.temporal.IsoFields) DayOfWeek(java.time.DayOfWeek) LocalDate(java.time.LocalDate) DateTimeFormatter(java.time.format.DateTimeFormatter) Optional(java.util.Optional) CornerRadii(javafx.scene.layout.CornerRadii) ChartData(eu.hansolo.tilesfx.chart.ChartData) Insets(javafx.geometry.Insets) Background(javafx.scene.layout.Background) Color(javafx.scene.paint.Color) BackgroundFill(javafx.scene.layout.BackgroundFill) Label(javafx.scene.control.Label) LocalDate(java.time.LocalDate) Font(javafx.scene.text.Font) ZonedDateTime(java.time.ZonedDateTime) BorderStroke(javafx.scene.layout.BorderStroke) CornerRadii(javafx.scene.layout.CornerRadii) Border(javafx.scene.layout.Border)

Example 7 with BorderStroke

use of javafx.scene.layout.BorderStroke in project tilesfx by HanSolo.

the class CalendarTileSkin method initGraphics.

// ******************** Initialization ************************************
@Override
protected void initGraphics() {
    super.initGraphics();
    final ZonedDateTime TIME = tile.getTime();
    titleText = new Text(MONTH_YEAR_FORMATTER.format(TIME));
    titleText.setFill(tile.getTitleColor());
    clickHandler = e -> checkClick(e);
    labels = new ArrayList<>(56);
    for (int i = 0; i < 56; i++) {
        Label label = new Label();
        label.setManaged(false);
        label.setVisible(false);
        label.setAlignment(Pos.CENTER);
        label.addEventHandler(MouseEvent.MOUSE_PRESSED, clickHandler);
        labels.add(label);
    }
    weekBorder = new Border(new BorderStroke(Color.TRANSPARENT, Tile.GRAY, Color.TRANSPARENT, Color.TRANSPARENT, BorderStrokeStyle.NONE, BorderStrokeStyle.SOLID, BorderStrokeStyle.NONE, BorderStrokeStyle.NONE, CornerRadii.EMPTY, BorderWidths.DEFAULT, Insets.EMPTY));
    text = new Text(DAY_FORMATTER.format(TIME));
    text.setFill(tile.getTextColor());
    getPane().getChildren().addAll(titleText, text);
    getPane().getChildren().addAll(labels);
}
Also used : ZonedDateTime(java.time.ZonedDateTime) Label(javafx.scene.control.Label) BorderStroke(javafx.scene.layout.BorderStroke) Text(javafx.scene.text.Text) Border(javafx.scene.layout.Border)

Example 8 with BorderStroke

use of javafx.scene.layout.BorderStroke in project tilesfx by HanSolo.

the class SunburstChart method initGraphics.

// ******************** Initialization ************************************
private void initGraphics() {
    if (Double.compare(getPrefWidth(), 0.0) <= 0 || Double.compare(getPrefHeight(), 0.0) <= 0 || Double.compare(getWidth(), 0.0) <= 0 || Double.compare(getHeight(), 0.0) <= 0) {
        if (getPrefWidth() > 0 && getPrefHeight() > 0) {
            setPrefSize(getPrefWidth(), getPrefHeight());
        } else {
            setPrefSize(PREFERRED_WIDTH, PREFERRED_HEIGHT);
        }
    }
    segmentPane = new Pane();
    chartCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
    chartCanvas.setMouseTransparent(true);
    chartCtx = chartCanvas.getGraphicsContext2D();
    pane = new Pane(segmentPane, chartCanvas);
    pane.setBackground(new Background(new BackgroundFill(backgroundPaint, CornerRadii.EMPTY, Insets.EMPTY)));
    pane.setBorder(new Border(new BorderStroke(borderPaint, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, new BorderWidths(borderWidth))));
    getChildren().setAll(pane);
    prepareData();
}
Also used : Background(javafx.scene.layout.Background) BorderWidths(javafx.scene.layout.BorderWidths) Canvas(javafx.scene.canvas.Canvas) BackgroundFill(javafx.scene.layout.BackgroundFill) BorderStroke(javafx.scene.layout.BorderStroke) Pane(javafx.scene.layout.Pane) Border(javafx.scene.layout.Border)

Example 9 with BorderStroke

use of javafx.scene.layout.BorderStroke in project tilesfx by HanSolo.

the class PlusMinusTileSkin method decrement.

private void decrement() {
    minusLabel.setTextFill(tile.getActiveColor());
    minusLabel.setBorder(new Border(new BorderStroke(tile.getActiveColor(), BorderStrokeStyle.SOLID, new CornerRadii(1024), new BorderWidths(size * 0.01))));
    double newValue = clamp(minValue, maxValue, tile.getValue() - tile.getIncrement());
    tile.setValue(newValue);
}
Also used : BorderWidths(javafx.scene.layout.BorderWidths) BorderStroke(javafx.scene.layout.BorderStroke) CornerRadii(javafx.scene.layout.CornerRadii) Border(javafx.scene.layout.Border)

Example 10 with BorderStroke

use of javafx.scene.layout.BorderStroke in project tilesfx by HanSolo.

the class PlusMinusTileSkin method resize.

@Override
protected void resize() {
    super.resize();
    description.setPrefSize(width - size * 0.1, size * 0.43);
    description.relocate(size * 0.05, titleText.isVisible() ? height * 0.42 : height * 0.32);
    double buttonSize = size * 0.18;
    minusLabel.setFont(Fonts.latoBold(size * 0.2));
    minusLabel.setPrefSize(buttonSize, buttonSize);
    minusLabel.setMinSize(buttonSize, buttonSize);
    minusLabel.setMaxSize(buttonSize, buttonSize);
    // minusLabel.setPadding(new Insets(-0.055 * size, 0, 0, 0));
    minusLabel.setPadding(new Insets(-0.0625 * size, 0, 0, 0));
    minusLabel.setBorder(new Border(new BorderStroke(tile.getForegroundColor(), BorderStrokeStyle.SOLID, new CornerRadii(1024), new BorderWidths(size * 0.01))));
    minusLabel.relocate(size * 0.05, height - size * 0.20 - buttonSize);
    plusLabel.setFont(Fonts.latoBold(size * 0.2));
    plusLabel.setPrefSize(buttonSize, buttonSize);
    plusLabel.setMinSize(buttonSize, buttonSize);
    plusLabel.setMaxSize(buttonSize, buttonSize);
    plusLabel.setPadding(new Insets(-0.05 * size, 0, 0, 0));
    plusLabel.setBorder(new Border(new BorderStroke(tile.getForegroundColor(), BorderStrokeStyle.SOLID, new CornerRadii(1024), new BorderWidths(size * 0.01))));
    plusLabel.relocate(width - size * 0.05 - buttonSize, height - size * 0.20 - buttonSize);
    valueUnitFlow.setPrefWidth(contentBounds.getWidth());
    valueUnitFlow.relocate(contentBounds.getX(), contentBounds.getY());
}
Also used : Insets(javafx.geometry.Insets) BorderWidths(javafx.scene.layout.BorderWidths) BorderStroke(javafx.scene.layout.BorderStroke) CornerRadii(javafx.scene.layout.CornerRadii) Border(javafx.scene.layout.Border)

Aggregations

Border (javafx.scene.layout.Border)23 BorderStroke (javafx.scene.layout.BorderStroke)23 BorderWidths (javafx.scene.layout.BorderWidths)18 Background (javafx.scene.layout.Background)13 BackgroundFill (javafx.scene.layout.BackgroundFill)13 CornerRadii (javafx.scene.layout.CornerRadii)10 Insets (javafx.geometry.Insets)9 Text (javafx.scene.text.Text)5 ArrayList (java.util.ArrayList)4 Label (javafx.scene.control.Label)4 List (java.util.List)3 BorderStrokeStyle (javafx.scene.layout.BorderStrokeStyle)3 Color (javafx.scene.paint.Color)3 ZonedDateTime (java.time.ZonedDateTime)2 Optional (java.util.Optional)2 ObservableList (javafx.collections.ObservableList)2 MouseEvent (javafx.scene.input.MouseEvent)2 StackPane (javafx.scene.layout.StackPane)2 VBox (javafx.scene.layout.VBox)2 Rectangle (javafx.scene.shape.Rectangle)2