Search in sources :

Example 6 with Marker

use of eu.hansolo.enzo.common.Marker in project Board-Instrumentation-Framework by intel.

the class DemoGauge method init.

@Override
public void init() {
    control = GaugeBuilder.create().prefSize(400, 400).animated(false).startAngle(330).angleRange(300).minValue(0).maxValue(100).sectionsVisible(true).sections(new Section(0, 15), new Section(15, 25), new Section(25, 35)).areas(new Section(25, 35, Color.rgb(255, 0, 0, 0.5))).majorTickSpace(10).plainValue(false).tickLabelOrientation(Gauge.TickLabelOrientation.HORIZONTAL).threshold(70).thresholdVisible(true).minMeasuredValueVisible(true).maxMeasuredValueVisible(true).title("Title").unit("Unit").build();
    // control.setStyle("-tick-label-fill: blue;");
    // control.setMinorTickSpaceOne(2);
    // control.setHistogramEnabled(true);
    // control.setOnThresholdExceeded(observable -> System.out.println("Threshold exceeded") );
    // control.setOnThresholdUnderrun(observable -> System.out.println("Threshold underrun"));
    marker0 = new Marker(25);
    // marker0.setOnMarkerExceeded(observable -> System.out.println("Marker exceeded"));
    // marker0.setOnMarkerUnderrun(observable -> System.out.println("Marker underrun"));
    control.addMarker(marker0);
    control.setMarkerFill0(Color.RED);
    lastTimerCall = System.nanoTime() + 3_000_000_000l;
    timer = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastTimerCall + 2_000_000_000l) {
                control.setValue(RND.nextDouble() * (control.getMaxValue() - control.getMinValue()) + control.getMinValue());
                System.out.println(control.getValue());
                lastTimerCall = now;
            }
        }
    };
}
Also used : AnimationTimer(javafx.animation.AnimationTimer) Marker(eu.hansolo.enzo.common.Marker) Section(eu.hansolo.enzo.common.Section)

Example 7 with Marker

use of eu.hansolo.enzo.common.Marker in project Board-Instrumentation-Framework by intel.

the class DemoRadialBargraph method init.

@Override
public void init() {
    control = RadialBargraphBuilder.create().title("Enzo").unit("°C").markers(new Marker(40)).threshold(25).sections(new Section(60, 80, Color.rgb(255, 255, 0, 0.5))).thresholdVisible(true).build();
    control.setBarGradientEnabled(true);
    List<Stop> stops = new ArrayList<>();
    stops.add(new Stop(0.0, Color.BLUE));
    // stops.add(new Stop(0.31, Color.CYAN));
    // stops.add(new Stop(0.5, Color.LIME));
    // stops.add(new Stop(0.69, Color.YELLOW));
    stops.add(new Stop(1.0, Color.RED));
    control.setBarGradient(stops);
    lastTimerCall = System.nanoTime() + 2_000_000_000l;
    timer = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastTimerCall + 5_000_000_000l) {
                control.setValue(RND.nextDouble() * 100);
                lastTimerCall = now;
            }
        }
    };
}
Also used : AnimationTimer(javafx.animation.AnimationTimer) Stop(javafx.scene.paint.Stop) ArrayList(java.util.ArrayList) Marker(eu.hansolo.enzo.common.Marker) Section(eu.hansolo.enzo.common.Section)

Example 8 with Marker

use of eu.hansolo.enzo.common.Marker in project Board-Instrumentation-Framework by intel.

the class GaugeSkin method registerListeners.

private void registerListeners() {
    getSkinnable().widthProperty().addListener(observable -> handleControlPropertyChanged("RESIZE"));
    getSkinnable().heightProperty().addListener(observable -> handleControlPropertyChanged("RESIZE"));
    getSkinnable().minMeasuredValueProperty().addListener(observable -> handleControlPropertyChanged("MIN_MEASURED_VALUE"));
    getSkinnable().minMeasuredValueVisibleProperty().addListener(observable -> handleControlPropertyChanged("MIN_MEASURED_VALUE_VISIBLE"));
    getSkinnable().maxMeasuredValueProperty().addListener(observable -> handleControlPropertyChanged("MAX_MEASURED_VALUE"));
    getSkinnable().maxMeasuredValueVisibleProperty().addListener(observable -> handleControlPropertyChanged("MAX_MEASURED_VALUE_VISIBLE"));
    getSkinnable().tickLabelOrientationProperty().addListener(observable -> handleControlPropertyChanged("RESIZE"));
    getSkinnable().needleTypeProperty().addListener(observable -> handleControlPropertyChanged("NEEDLE_TYPE"));
    getSkinnable().needleColorProperty().addListener(observable -> handleControlPropertyChanged("NEEDLE_COLOR"));
    getSkinnable().animatedProperty().addListener(observable -> handleControlPropertyChanged("ANIMATED"));
    getSkinnable().thresholdProperty().addListener(observable -> handleControlPropertyChanged("THRESHOLD"));
    getSkinnable().thresholdVisibleProperty().addListener(observable -> handleControlPropertyChanged("THRESHOLD_VISIBLE"));
    getSkinnable().angleRangeProperty().addListener(observable -> handleControlPropertyChanged("ANGLE_RANGE"));
    getSkinnable().numberFormatProperty().addListener(observable -> handleControlPropertyChanged("RECALC"));
    getSkinnable().plainValueProperty().addListener(observable -> handleControlPropertyChanged("PLAIN_VALUE"));
    getSkinnable().histogramEnabledProperty().addListener(observable -> handleControlPropertyChanged("HISTOGRAM"));
    getSkinnable().dropShadowEnabledProperty().addListener(observable -> handleControlPropertyChanged("DROP_SHADOW"));
    getSkinnable().interactiveProperty().addListener(observable -> handleControlPropertyChanged("INTERACTIVE"));
    getSkinnable().getSections().addListener((ListChangeListener<Section>) change -> handleControlPropertyChanged("CANVAS_REFRESH"));
    getSkinnable().getAreas().addListener((ListChangeListener<Section>) change -> handleControlPropertyChanged("CANVAS_REFRESH"));
    getSkinnable().getMarkers().addListener((MapChangeListener<Marker, Rotate>) change -> handleControlPropertyChanged("MARKER"));
    getSkinnable().markersVisibleProperty().addListener(observable -> handleControlPropertyChanged("MARKER"));
    getSkinnable().sectionsVisibleProperty().addListener(observable -> handleControlPropertyChanged("CANVAS_REFRESH"));
    getSkinnable().areasVisibleProperty().addListener(observable -> handleControlPropertyChanged("CANVAS_REFRESH"));
    getSkinnable().customKnobClickHandlerProperty().addListener(observable -> handleControlPropertyChanged("CUSTOM_KNOB_CLICK_HANDLER"));
    getSkinnable().valueProperty().addListener((OV, OLD_VALUE, NEW_VALUE) -> {
        withinSpeedLimit = !(Instant.now().minusMillis((long) getSkinnable().getAnimationDuration()).isBefore(lastCall));
        lastCall = Instant.now();
        oldValue = OLD_VALUE.doubleValue();
        rotateNeedle();
    });
    getSkinnable().minValueProperty().addListener((OV, OLD_VALUE, NEW_VALUE) -> {
        angleStep = getSkinnable().getAngleRange() / (getSkinnable().getMaxValue() - NEW_VALUE.doubleValue());
        needleRotate.setAngle((180 - getSkinnable().getStartAngle()) + (getSkinnable().getValue() - NEW_VALUE.doubleValue()) * angleStep);
        if (getSkinnable().getValue() < NEW_VALUE.doubleValue()) {
            getSkinnable().setValue(NEW_VALUE.doubleValue());
            oldValue = NEW_VALUE.doubleValue();
        }
    });
    getSkinnable().maxValueProperty().addListener((OV, OLD_VALUE, NEW_VALUE) -> {
        angleStep = getSkinnable().getAngleRange() / (NEW_VALUE.doubleValue() - getSkinnable().getMinValue());
        needleRotate.setAngle((180 - getSkinnable().getStartAngle()) + (getSkinnable().getValue() - getSkinnable().getMinValue()) * angleStep);
        if (getSkinnable().getValue() > NEW_VALUE.doubleValue()) {
            getSkinnable().setValue(NEW_VALUE.doubleValue());
            oldValue = NEW_VALUE.doubleValue();
        }
    });
    getSkinnable().limitProperty().addListener(observable -> handleControlPropertyChanged("LIMIT"));
    needleRotate.angleProperty().addListener(observable -> handleControlPropertyChanged("ANGLE"));
    if (null == getSkinnable().getCustomKnobClickHandler()) {
        knob.setOnMousePressed(event -> {
            timeline.stop();
            needleRotate.setAngle(180 - getSkinnable().getStartAngle() + (getSkinnable().getValue() - getSkinnable().getMinValue()) * angleStep);
            getSkinnable().setInteractive(!getSkinnable().isInteractive());
        });
    } else {
        knob.setOnMousePressed(getSkinnable().getCustomKnobClickHandler());
    }
    minMeasuredValue.setOnMousePressed(mouseEventHandler);
    minMeasuredValue.setOnMouseReleased(mouseEventHandler);
    maxMeasuredValue.setOnMousePressed(mouseEventHandler);
    maxMeasuredValue.setOnMouseReleased(mouseEventHandler);
    threshold.setOnMousePressed(mouseEventHandler);
    threshold.setOnMouseDragged(mouseEventHandler);
    threshold.setOnMouseReleased(mouseEventHandler);
    for (Marker marker : getSkinnable().getMarkers().keySet()) {
        marker.setOnMousePressed(mouseEventHandler);
        marker.setOnMouseDragged(mouseEventHandler);
        marker.setOnMouseReleased(mouseEventHandler);
    }
}
Also used : EventHandler(javafx.event.EventHandler) CacheHint(javafx.scene.CacheHint) Rotate(javafx.scene.transform.Rotate) ArcTo(javafx.scene.shape.ArcTo) BlendMode(javafx.scene.effect.BlendMode) ListChangeListener(javafx.collections.ListChangeListener) Locale(java.util.Locale) Point2D(javafx.geometry.Point2D) Pane(javafx.scene.layout.Pane) GraphicsContext(javafx.scene.canvas.GraphicsContext) MapChangeListener(javafx.collections.MapChangeListener) Blend(javafx.scene.effect.Blend) Font(javafx.scene.text.Font) Timeline(javafx.animation.Timeline) Canvas(javafx.scene.canvas.Canvas) Group(javafx.scene.Group) Instant(java.time.Instant) ArcType(javafx.scene.shape.ArcType) Text(javafx.scene.text.Text) Marker(eu.hansolo.enzo.common.Marker) Duration(javafx.util.Duration) List(java.util.List) Region(javafx.scene.layout.Region) Interpolator(javafx.animation.Interpolator) PauseTransition(javafx.animation.PauseTransition) TouchEvent(javafx.scene.input.TouchEvent) StrokeLineCap(javafx.scene.shape.StrokeLineCap) ObservableList(javafx.collections.ObservableList) Path(javafx.scene.shape.Path) FontWeight(javafx.scene.text.FontWeight) IntStream(java.util.stream.IntStream) SkinBase(javafx.scene.control.SkinBase) Gauge(eu.hansolo.enzo.gauge.Gauge) CubicCurve(javafx.scene.shape.CubicCurve) PathTransition(javafx.animation.PathTransition) MouseEvent(javafx.scene.input.MouseEvent) FXCollections(javafx.collections.FXCollections) Skin(javafx.scene.control.Skin) ArrayList(java.util.ArrayList) FadeTransition(javafx.animation.FadeTransition) ValueEvent(eu.hansolo.enzo.common.ValueEvent) VPos(javafx.geometry.VPos) BlurType(javafx.scene.effect.BlurType) TextAlignment(javafx.scene.text.TextAlignment) KeyValue(javafx.animation.KeyValue) InnerShadow(javafx.scene.effect.InnerShadow) Color(javafx.scene.paint.Color) KeyFrame(javafx.animation.KeyFrame) Section(eu.hansolo.enzo.common.Section) Node(javafx.scene.Node) DropShadow(javafx.scene.effect.DropShadow) Fonts(eu.hansolo.enzo.fonts.Fonts) EventType(javafx.event.EventType) ParallelTransition(javafx.animation.ParallelTransition) SequentialTransition(javafx.animation.SequentialTransition) Arc(javafx.scene.shape.Arc) FillRule(javafx.scene.shape.FillRule) Shape(javafx.scene.shape.Shape) Rotate(javafx.scene.transform.Rotate) Marker(eu.hansolo.enzo.common.Marker) Section(eu.hansolo.enzo.common.Section)

Example 9 with Marker

use of eu.hansolo.enzo.common.Marker in project Board-Instrumentation-Framework by intel.

the class GaugeSkin method handleMouseEvent.

private void handleMouseEvent(final MouseEvent MOUSE_EVENT) {
    final Object SRC = MOUSE_EVENT.getSource();
    final EventType TYPE = MOUSE_EVENT.getEventType();
    if (getSkinnable().isInteractive() && SRC.equals(threshold)) {
        if (MouseEvent.MOUSE_PRESSED == TYPE) {
            unitText.setText("Threshold");
            valueText.setText(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", getSkinnable().getThreshold()));
            resizeText();
        } else if (MouseEvent.MOUSE_DRAGGED == TYPE) {
            Point2D point = getSkinnable().sceneToLocal(MOUSE_EVENT.getSceneX(), MOUSE_EVENT.getSceneY());
            touchRotate(point.getX(), point.getY(), thresholdRotate);
        } else if (MouseEvent.MOUSE_RELEASED == TYPE) {
            getSkinnable().setThreshold(Double.parseDouble(valueText.getText()));
            fadeBackToInteractive();
        }
    } else if (getSkinnable().isInteractive() && SRC instanceof Marker) {
        if (MouseEvent.MOUSE_PRESSED == TYPE) {
            unitText.setText(((Marker) SRC).getText());
            valueText.setText(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", ((Marker) SRC).getValue()));
            resizeText();
        } else if (MouseEvent.MOUSE_DRAGGED == TYPE) {
            Point2D point = getSkinnable().sceneToLocal(MOUSE_EVENT.getSceneX(), MOUSE_EVENT.getSceneY());
            touchRotate(point.getX(), point.getY(), getSkinnable().getMarkers().get(SRC));
        } else if (MouseEvent.MOUSE_RELEASED == TYPE) {
            ((Marker) SRC).setValue(Double.parseDouble(valueText.getText()));
            fadeBackToInteractive();
        }
    } else if (getSkinnable().isInteractive() && SRC.equals(minMeasuredValue)) {
        if (MouseEvent.MOUSE_PRESSED == TYPE) {
            unitText.setText("Min");
            valueText.setText(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", getSkinnable().getMinMeasuredValue()));
            resizeText();
        } else if (MouseEvent.MOUSE_RELEASED == TYPE) {
            fadeBackToInteractive();
        }
    } else if (getSkinnable().isInteractive() && SRC.equals(maxMeasuredValue)) {
        if (MouseEvent.MOUSE_PRESSED == TYPE) {
            unitText.setText("Max");
            valueText.setText(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", getSkinnable().getMaxMeasuredValue()));
            resizeText();
        } else if (MouseEvent.MOUSE_RELEASED == TYPE) {
            fadeBackToInteractive();
        }
    }
}
Also used : EventType(javafx.event.EventType) Point2D(javafx.geometry.Point2D) Marker(eu.hansolo.enzo.common.Marker)

Example 10 with Marker

use of eu.hansolo.enzo.common.Marker in project Board-Instrumentation-Framework by intel.

the class RadialBargraphSkin method checkForRemovedMarkers.

// ******************** Private Methods ***********************************
private void checkForRemovedMarkers() {
    markersToRemove.clear();
    for (Node node : pane.getChildren()) {
        if (node instanceof Marker) {
            if (getSkinnable().getMarkers().keySet().contains(node))
                continue;
            node.setManaged(false);
            node.removeEventHandler(MouseEvent.MOUSE_PRESSED, mouseEventHandler);
            node.removeEventHandler(MouseEvent.MOUSE_DRAGGED, mouseEventHandler);
            node.removeEventHandler(MouseEvent.MOUSE_RELEASED, mouseEventHandler);
            node.removeEventHandler(TouchEvent.TOUCH_PRESSED, touchEventHandler);
            node.removeEventHandler(TouchEvent.TOUCH_MOVED, touchEventHandler);
            node.removeEventHandler(TouchEvent.TOUCH_RELEASED, touchEventHandler);
            markersToRemove.add(node);
        }
    }
    for (Node node : markersToRemove) pane.getChildren().remove(node);
}
Also used : Node(javafx.scene.Node) Marker(eu.hansolo.enzo.common.Marker)

Aggregations

Marker (eu.hansolo.enzo.common.Marker)15 EventType (javafx.event.EventType)6 Point2D (javafx.geometry.Point2D)6 Section (eu.hansolo.enzo.common.Section)5 Node (javafx.scene.Node)4 Rotate (javafx.scene.transform.Rotate)4 ArrayList (java.util.ArrayList)3 Color (javafx.scene.paint.Color)3 ValueEvent (eu.hansolo.enzo.common.ValueEvent)2 Fonts (eu.hansolo.enzo.fonts.Fonts)2 Instant (java.time.Instant)2 List (java.util.List)2 Locale (java.util.Locale)2 IntStream (java.util.stream.IntStream)2 AnimationTimer (javafx.animation.AnimationTimer)2 FadeTransition (javafx.animation.FadeTransition)2 Interpolator (javafx.animation.Interpolator)2 KeyFrame (javafx.animation.KeyFrame)2 KeyValue (javafx.animation.KeyValue)2 ParallelTransition (javafx.animation.ParallelTransition)2