Search in sources :

Example 6 with Group

use of javafx.scene.Group in project big-math by eobermuhlner.

the class GraphApp method start.

@Override
public void start(Stage primaryStage) throws Exception {
    Group root = new Group();
    Scene scene = new Scene(root);
    BorderPane borderPane = new BorderPane();
    root.getChildren().add(borderPane);
    Node toolbar = createToolbar();
    borderPane.setTop(toolbar);
    Node editor = createEditor();
    borderPane.setRight(editor);
    graphCanvas = createGraphCanvas();
    borderPane.setCenter(graphCanvas);
    graphCanvas.requestFocus();
    primaryStage.setScene(scene);
    primaryStage.show();
    function1Property.addListener((observable, oldValue, newValue) -> {
        updateFunctions();
    });
    function2Property.addListener((observable, oldValue, newValue) -> {
        updateFunctions();
    });
    function3Property.addListener((observable, oldValue, newValue) -> {
        updateFunctions();
    });
    ChangeListener<? super Number> graphDrawingListener = (observable, oldValue, newValue) -> drawGraph(graphCanvas);
    xStartProperty.addListener(graphDrawingListener);
    xEndProperty.addListener(graphDrawingListener);
    yStartProperty.addListener(graphDrawingListener);
    yEndProperty.addListener(graphDrawingListener);
    precisionProperty.addListener(graphDrawingListener);
    updateFunctions();
}
Also used : ExpressionFunctionParser(parser.ExpressionFunctionParser) Scene(javafx.scene.Scene) SimpleStringProperty(javafx.beans.property.SimpleStringProperty) AbstractFunctionParser(parser.AbstractFunctionParser) Bindings(javafx.beans.binding.Bindings) IntegerProperty(javafx.beans.property.IntegerProperty) ArrayList(java.util.ArrayList) Application(javafx.application.Application) BigDecimal(java.math.BigDecimal) SimpleIntegerProperty(javafx.beans.property.SimpleIntegerProperty) GridPane(javafx.scene.layout.GridPane) HBox(javafx.scene.layout.HBox) Color(javafx.scene.paint.Color) ObjectProperty(javafx.beans.property.ObjectProperty) TextField(javafx.scene.control.TextField) Label(javafx.scene.control.Label) GraphicsContext(javafx.scene.canvas.GraphicsContext) MathContext(java.math.MathContext) Node(javafx.scene.Node) DecimalFormat(java.text.DecimalFormat) Canvas(javafx.scene.canvas.Canvas) BigDecimalMath(ch.obermuhlner.math.big.BigDecimalMath) StringConverter(javafx.util.StringConverter) Group(javafx.scene.Group) List(java.util.List) Stage(javafx.stage.Stage) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) BorderPane(javafx.scene.layout.BorderPane) StringProperty(javafx.beans.property.StringProperty) ChangeListener(javafx.beans.value.ChangeListener) Group(javafx.scene.Group) BorderPane(javafx.scene.layout.BorderPane) Node(javafx.scene.Node) Scene(javafx.scene.Scene)

Example 7 with Group

use of javafx.scene.Group in project Board-Instrumentation-Framework by intel.

the class TextWidget method Create.

@Override
public boolean Create(GridPane pane, DataManager dataMgr) {
    SetParent(pane);
    if (null != _TextString) {
        _TextControl.setText(_TextString);
    }
    ConfigureDimentions();
    _TextControl.setScaleShape(getScaleToFitBounderies());
    // By adding it to a group, the underlying java framework will properly
    // clip and resize bounderies if rotated
    _Group = new Group(_TextControl);
    ConfigureAlignment();
    SetupPeekaboo(dataMgr);
    pane.add(_Group, getColumn(), getRow(), getColumnSpan(), getRowSpan());
    dataMgr.AddListener(getMinionID(), getNamespace(), new ChangeListener() {

        @Override
        public void changed(ObservableValue o, Object oldVal, Object newVal) {
            if (IsPaused()) {
                return;
            }
            _TextString = newVal.toString();
            if (true == _NumericFormat) {
                try {
                    if (// good bet it's a float
                    _TextString.contains(".")) {
                        _TextString = NumberFormat.getNumberInstance().format(Float.parseFloat(_TextString));
                    } else {
                        _TextString = NumberFormat.getNumberInstance().format(Long.parseLong(_TextString));
                    }
                } catch (Exception Ex) {
                // System.out.println(Ex.toString());
                }
            } else if (true == _MoneraryFormat) {
                if (// good bet it's a float
                _TextString.contains(".")) {
                    _TextString = NumberFormat.getCurrencyInstance().format(Float.parseFloat(_TextString));
                } else {
                    _TextString = NumberFormat.getCurrencyInstance().format(Long.parseLong(_TextString));
                }
            } else if (true == _PercentFormat) {
                if (// good bet it's a float
                _TextString.contains(".")) {
                    _TextString = NumberFormat.getPercentInstance().format(Float.parseFloat(_TextString));
                } else {
                    _TextString = NumberFormat.getPercentInstance().format(Long.parseLong(_TextString));
                }
            }
            _TextString += _Suffix;
            if (// seems a single character won't display - bug in Java
            _TextString.length() < 2) {
                _TextString += " ";
            }
            _TextControl.setText(_TextString);
        }
    });
    SetupTaskAction();
    return ApplyCSS();
}
Also used : Group(javafx.scene.Group) ObservableValue(javafx.beans.value.ObservableValue) ChangeListener(javafx.beans.value.ChangeListener)

Example 8 with Group

use of javafx.scene.Group in project Board-Instrumentation-Framework by intel.

the class ClockSkin method initGraphics.

private void initGraphics() {
    pane = new Pane();
    background = new Region();
    if (Clock.Design.IOS6 == getSkinnable().getDesign()) {
        background.getStyleClass().setAll("background-ios6");
    } else if (Clock.Design.DB == getSkinnable().getDesign()) {
        background.getStyleClass().setAll("background-db");
    } else if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        background.getStyleClass().setAll("background-braun");
    } else if (Clock.Design.BOSCH == getSkinnable().getDesign()) {
        background.getStyleClass().setAll("background-bosch");
    }
    logoLayer = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
    ctx = logoLayer.getGraphicsContext2D();
    String majorTickStyleClass;
    String minorTickStyleClass;
    if (Clock.Design.IOS6 == getSkinnable().getDesign()) {
        majorTickStyleClass = "major-tick-ios6";
        minorTickStyleClass = "minor-tick-ios6";
    } else if (Clock.Design.DB == getSkinnable().getDesign()) {
        majorTickStyleClass = "major-tick-db";
        minorTickStyleClass = "minor-tick-db";
    } else if (Clock.Design.BOSCH == getSkinnable().getDesign()) {
        majorTickStyleClass = "major-tick-bosch";
        minorTickStyleClass = "minor-tick-bosch";
    } else {
        majorTickStyleClass = "major-tick-braun";
        minorTickStyleClass = "minor-tick-braun";
    }
    int tickLabelCounter = 1;
    for (double angle = 0; angle < 360; angle += 6) {
        Region tick = new Region();
        if (angle % 30 == 0) {
            tick.getStyleClass().setAll(majorTickStyleClass);
            Text tickLabel = new Text(Integer.toString(tickLabelCounter));
            tickLabel.getStyleClass().setAll("tick-label-braun");
            tickLabels.add(tickLabel);
            tickLabelCounter++;
        } else {
            tick.getStyleClass().setAll(minorTickStyleClass);
        }
        ticks.add(tick);
    }
    DropShadow dropShadow = new DropShadow();
    dropShadow.setColor(Color.rgb(0, 0, 0, 0.65));
    dropShadow.setRadius(1.5);
    dropShadow.setBlurType(BlurType.TWO_PASS_BOX);
    dropShadow.setOffsetY(1);
    tickMarkGroup = new Group();
    tickMarkGroup.setEffect(dropShadow);
    tickMarkGroup.getChildren().setAll(ticks);
    tickLabelGroup = new Group();
    tickLabelGroup.setEffect(dropShadow);
    tickLabelGroup.getChildren().setAll(tickLabels);
    tickLabelGroup.setOpacity(Clock.Design.BRAUN == getSkinnable().getDesign() ? 1 : 0);
    minutePointer = new Region();
    if (Clock.Design.IOS6 == getSkinnable().getDesign()) {
        minutePointer.getStyleClass().setAll("hour-pointer-ios6");
    } else if (Clock.Design.DB == getSkinnable().getDesign()) {
        minutePointer.getStyleClass().setAll("hour-pointer-db");
    } else if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        minutePointer.getStyleClass().setAll("hour-pointer-braun");
    } else if (Clock.Design.BOSCH == getSkinnable().getDesign()) {
        minutePointer.getStyleClass().setAll("hour-pointer-bosch");
    }
    minutePointer.getTransforms().setAll(minuteRotate);
    minutePointerFlour = new Region();
    minutePointerFlour.getStyleClass().setAll("hour-pointer-braun-flour");
    if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        minutePointerFlour.setOpacity(1);
    } else {
        minutePointerFlour.setOpacity(0);
    }
    minutePointerFlour.getTransforms().setAll(minuteRotate);
    hourPointer = new Region();
    if (Clock.Design.IOS6 == getSkinnable().getDesign()) {
        hourPointer.getStyleClass().setAll("minute-pointer-ios6");
    } else if (Clock.Design.DB == getSkinnable().getDesign()) {
        hourPointer.getStyleClass().setAll("minute-pointer-db");
    } else if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        hourPointer.getStyleClass().setAll("minute-pointer-braun");
    } else if (Clock.Design.BOSCH == getSkinnable().getDesign()) {
        hourPointer.getStyleClass().setAll("minute-pointer-bosch");
    }
    hourPointer.getTransforms().setAll(hourRotate);
    hourPointerFlour = new Region();
    hourPointerFlour.getStyleClass().setAll("minute-pointer-braun-flour");
    if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        hourPointerFlour.setOpacity(1);
    } else {
        hourPointerFlour.setOpacity(0);
    }
    hourPointerFlour.getTransforms().setAll(hourRotate);
    DropShadow pointerShadow = new DropShadow();
    pointerShadow.setColor(Color.rgb(0, 0, 0, 0.45));
    pointerShadow.setRadius(12);
    pointerShadow.setBlurType(BlurType.TWO_PASS_BOX);
    pointerShadow.setOffsetY(6);
    pointerGroup = new Group();
    pointerGroup.setEffect(pointerShadow);
    pointerGroup.getChildren().setAll(hourPointerFlour, hourPointer, minutePointerFlour, minutePointer);
    secondPointer = new Region();
    secondPointer.setOpacity(1);
    if (Clock.Design.IOS6 == getSkinnable().getDesign()) {
        secondPointer.getStyleClass().setAll("second-pointer-ios6");
    } else if (Clock.Design.DB == getSkinnable().getDesign()) {
        secondPointer.getStyleClass().setAll("second-pointer-db");
    } else if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        secondPointer.getStyleClass().setAll("second-pointer-braun");
    } else if (Clock.Design.BOSCH == getSkinnable().getDesign()) {
        secondPointer.setOpacity(0);
    }
    secondPointer.getTransforms().setAll(secondRotate);
    InnerShadow secondPointerInnerShadow = new InnerShadow();
    secondPointerInnerShadow.setColor(Color.rgb(0, 0, 0, 0.3));
    secondPointerInnerShadow.setRadius(1);
    secondPointerInnerShadow.setBlurType(BlurType.TWO_PASS_BOX);
    secondPointerInnerShadow.setOffsetY(-1);
    InnerShadow secondPointerInnerHighlight = new InnerShadow();
    secondPointerInnerHighlight.setColor(Color.rgb(255, 255, 255, 0.3));
    secondPointerInnerHighlight.setRadius(1);
    secondPointerInnerHighlight.setBlurType(BlurType.TWO_PASS_BOX);
    secondPointerInnerHighlight.setOffsetY(1);
    secondPointerInnerHighlight.setInput(secondPointerInnerShadow);
    DropShadow secondPointerShadow = new DropShadow();
    secondPointerShadow.setColor(Color.rgb(0, 0, 0, 0.45));
    secondPointerShadow.setRadius(12);
    secondPointerShadow.setBlurType(BlurType.TWO_PASS_BOX);
    secondPointerShadow.setOffsetY(6);
    secondPointerShadow.setInput(secondPointerInnerHighlight);
    secondPointerGroup = new Group();
    secondPointerGroup.setEffect(secondPointerShadow);
    secondPointerGroup.getChildren().setAll(secondPointer);
    secondPointerGroup.setOpacity(getSkinnable().isSecondPointerVisible() ? 1 : 0);
    centerKnob = new Region();
    if (Clock.Design.IOS6 == getSkinnable().getDesign()) {
        centerKnob.getStyleClass().setAll("center-knob-ios6");
    } else if (Clock.Design.DB == getSkinnable().getDesign()) {
        centerKnob.getStyleClass().setAll("center-knob-db");
    } else if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        centerKnob.getStyleClass().setAll("center-knob-braun");
    } else if (Clock.Design.BOSCH == getSkinnable().getDesign()) {
        centerKnob.getStyleClass().setAll("center-knob-bosch");
    }
    foreground = new Region();
    if (Clock.Design.IOS6 == getSkinnable().getDesign()) {
        foreground.getStyleClass().setAll("foreground-ios6");
    } else if (Clock.Design.DB == getSkinnable().getDesign()) {
        foreground.getStyleClass().setAll("foreground-db");
    } else if (Clock.Design.BRAUN == getSkinnable().getDesign()) {
        foreground.getStyleClass().setAll("foreground-braun");
    } else if (Clock.Design.BOSCH == getSkinnable().getDesign()) {
        foreground.getStyleClass().setAll("foreground-bosch");
    }
    foreground.setOpacity(getSkinnable().isHighlightVisible() ? 1 : 0);
    pane.getChildren().setAll(background, logoLayer, tickMarkGroup, tickLabelGroup, pointerGroup, secondPointerGroup, centerKnob, foreground);
    getChildren().setAll(pane);
    updateDesign();
}
Also used : Group(javafx.scene.Group) InnerShadow(javafx.scene.effect.InnerShadow) Canvas(javafx.scene.canvas.Canvas) Region(javafx.scene.layout.Region) Text(javafx.scene.text.Text) Pane(javafx.scene.layout.Pane) DropShadow(javafx.scene.effect.DropShadow)

Example 9 with Group

use of javafx.scene.Group in project Board-Instrumentation-Framework by intel.

the class RectangularGaugeSkin method initGraphics.

private void initGraphics() {
    ticksAndSectionsCanvas = new Canvas(PREFERRED_WIDTH, PREFERRED_HEIGHT);
    ticksAndSections = ticksAndSectionsCanvas.getGraphicsContext2D();
    innerShadow = new InnerShadow(BlurType.TWO_PASS_BOX, Color.rgb(0, 0, 0, 0.65), 8, 0d, 0d, 0d);
    glow = new DropShadow(BlurType.TWO_PASS_BOX, getSkinnable().getLedColor(), 20, 0d, 0d, 0d);
    glow.setInput(innerShadow);
    ledFrame = new Region();
    ledFrame.getStyleClass().setAll("led-frame");
    ledMain = new Region();
    ledMain.getStyleClass().setAll("led-main");
    ledMain.setStyle("-led-color: " + (colorToCss(getSkinnable().getLedColor())) + ";");
    ledHl = new Region();
    ledHl.getStyleClass().setAll("led-hl");
    needle = new Region();
    needle.getStyleClass().setAll(RectangularGauge.STYLE_CLASS_NEEDLE_STANDARD);
    needleRotate = new Rotate(180 - getSkinnable().getStartAngle());
    needleRotate.setAngle(needleRotate.getAngle() + (getSkinnable().getValue() - oldValue - getSkinnable().getMinValue()) * angleStep);
    needle.getTransforms().setAll(needleRotate);
    needleHighlight = new Region();
    needleHighlight.setMouseTransparent(true);
    needleHighlight.getStyleClass().setAll("needle-highlight");
    needleHighlight.getTransforms().setAll(needleRotate);
    dropShadow = new DropShadow();
    dropShadow.setColor(Color.rgb(0, 0, 0, 0.25));
    dropShadow.setBlurType(BlurType.TWO_PASS_BOX);
    dropShadow.setRadius(0.015 * PREFERRED_WIDTH);
    dropShadow.setOffsetY(0.015 * PREFERRED_WIDTH);
    shadowGroup = new Group(needle, needleHighlight);
    shadowGroup.setEffect(getSkinnable().isDropShadowEnabled() ? dropShadow : null);
    titleText = new Text(getSkinnable().getTitle());
    titleText.setTextOrigin(VPos.CENTER);
    titleText.getStyleClass().setAll("title");
    unitText = new Text(getSkinnable().getUnit());
    unitText.setMouseTransparent(true);
    unitText.setTextOrigin(VPos.CENTER);
    unitText.getStyleClass().setAll("unit");
    lcdText = new Label(String.format(Locale.US, "%." + getSkinnable().getDecimals() + "f", getSkinnable().getValue()));
    lcdText.getStyleClass().setAll("lcd-text");
    // Set initial value
    angleStep = getSkinnable().getAngleRange() / (getSkinnable().getMaxValue() - getSkinnable().getMinValue());
    double targetAngle = 180 - getSkinnable().getStartAngle() + (getSkinnable().getValue() - getSkinnable().getMinValue()) * angleStep;
    targetAngle = clamp(180 - getSkinnable().getStartAngle(), 180 - getSkinnable().getStartAngle() + getSkinnable().getAngleRange(), targetAngle);
    needleRotate.setAngle(targetAngle);
    lightEffect = new InnerShadow(BlurType.TWO_PASS_BOX, Color.rgb(255, 255, 255, 0.65), 2, 0d, 0d, 2d);
    foreground = new Region();
    foreground.getStyleClass().setAll("foreground");
    foreground.setEffect(lightEffect);
    // Add all nodes
    pane = new Pane();
    pane.getChildren().setAll(ticksAndSectionsCanvas, ledFrame, ledMain, ledHl, unitText, lcdText, shadowGroup, foreground, titleText);
    getChildren().setAll(pane);
}
Also used : Group(javafx.scene.Group) Rotate(javafx.scene.transform.Rotate) InnerShadow(javafx.scene.effect.InnerShadow) Canvas(javafx.scene.canvas.Canvas) Label(javafx.scene.control.Label) Region(javafx.scene.layout.Region) Text(javafx.scene.text.Text) Pane(javafx.scene.layout.Pane) DropShadow(javafx.scene.effect.DropShadow)

Example 10 with Group

use of javafx.scene.Group in project Board-Instrumentation-Framework by intel.

the class LcdClockSkin method initGraphics.

private void initGraphics() {
    main = new Region();
    main.getStyleClass().setAll("main");
    main.setOpacity(getSkinnable().isBackgroundVisible() ? 1 : 0);
    mainInnerShadow0 = new InnerShadow();
    mainInnerShadow0.setOffsetX(0.0);
    mainInnerShadow0.setOffsetY(0.0);
    mainInnerShadow0.setRadius(3.0 / 132.0 * PREFERRED_WIDTH);
    mainInnerShadow0.setColor(Color.web("0xffffff80"));
    mainInnerShadow0.setBlurType(BlurType.TWO_PASS_BOX);
    mainInnerShadow1 = new InnerShadow();
    mainInnerShadow1.setOffsetX(0.0);
    mainInnerShadow1.setOffsetY(1.0);
    mainInnerShadow1.setRadius(2.0 / 132.0 * PREFERRED_WIDTH);
    mainInnerShadow1.setColor(Color.web("0x000000a6"));
    mainInnerShadow1.setBlurType(BlurType.TWO_PASS_BOX);
    mainInnerShadow1.setInput(mainInnerShadow0);
    main.setEffect(getSkinnable().isMainInnerShadowVisible() ? mainInnerShadow1 : null);
    crystalClip = new Rectangle(0, 0, PREFERRED_WIDTH, PREFERRED_HEIGHT);
    crystalClip.setArcWidth(5);
    crystalClip.setArcHeight(5);
    crystalImage = createNoiseImage(PREFERRED_WIDTH, PREFERRED_HEIGHT, DARK_NOISE_COLOR, BRIGHT_NOISE_COLOR, 8);
    crystalOverlay = new ImageView(crystalImage);
    crystalOverlay.setClip(this.crystalClip);
    crystalOverlay.setOpacity(getSkinnable().isCrystalOverlayVisible() ? 1 : 0);
    alarm = new Region();
    alarm.getStyleClass().setAll("alarm");
    alarm.setOpacity(getSkinnable().getAlarms().isEmpty() || allAlarmsInactive() ? 0 : 1);
    backgroundTimeText = new Text("");
    backgroundTimeText.getStyleClass().setAll("fg-trsp");
    backgroundTimeText.setOpacity((LcdClock.LcdFont.LCD == getSkinnable().getTimeFont() || LcdClock.LcdFont.ELEKTRA == getSkinnable().getTimeFont()) ? 1 : 0);
    timeText = new Text("");
    timeText.getStyleClass().setAll("fg");
    backgroundSecondText = new Text("");
    backgroundSecondText.getStyleClass().setAll("fg-trsp");
    backgroundSecondText.setOpacity((LcdClock.LcdFont.LCD == getSkinnable().getTimeFont() || LcdClock.LcdFont.ELEKTRA == getSkinnable().getTimeFont()) ? 1 : 0);
    secondText = new Text("");
    secondText.getStyleClass().setAll("fg");
    title = new Text(getSkinnable().getTitle());
    title.getStyleClass().setAll("fg");
    dateText = new Text(getSkinnable().getTime().getMonthValue() + "/" + getSkinnable().getTime().getDayOfMonth() + "/" + getSkinnable().getTime().getYear());
    dateText.getStyleClass().setAll("fg");
    dayOfWeekText = new Text("");
    dayOfWeekText.getStyleClass().setAll("fg");
    shadowGroup = new Group();
    shadowGroup.setEffect(getSkinnable().isForegroundShadowVisible() ? FOREGROUND_SHADOW : null);
    shadowGroup.getChildren().setAll(alarm, timeText, secondText, title, dateText, dayOfWeekText);
    pane = new Pane();
    pane.getChildren().setAll(main, crystalOverlay, backgroundTimeText, backgroundSecondText, shadowGroup);
    getChildren().setAll(pane);
    resize();
    updateLcd();
}
Also used : Group(javafx.scene.Group) InnerShadow(javafx.scene.effect.InnerShadow) Rectangle(javafx.scene.shape.Rectangle) Region(javafx.scene.layout.Region) Text(javafx.scene.text.Text) ImageView(javafx.scene.image.ImageView) Pane(javafx.scene.layout.Pane)

Aggregations

Group (javafx.scene.Group)121 Scene (javafx.scene.Scene)64 Rotate (javafx.scene.transform.Rotate)41 KeyCode (javafx.scene.input.KeyCode)32 PerspectiveCamera (javafx.scene.PerspectiveCamera)31 MouseEvent (javafx.scene.input.MouseEvent)28 Text (javafx.scene.text.Text)25 PointLight (javafx.scene.PointLight)24 Color (javafx.scene.paint.Color)24 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)16 Pane (javafx.scene.layout.Pane)16 AnimationTimer (javafx.animation.AnimationTimer)15 ArrayList (java.util.ArrayList)14 Node (javafx.scene.Node)14 Label (javafx.scene.control.Label)14 Rectangle (javafx.scene.shape.Rectangle)13 Translate (javafx.scene.transform.Translate)13 Canvas (javafx.scene.canvas.Canvas)11 Stage (javafx.stage.Stage)11 Point3D (org.fxyz.geometry.Point3D)11