Search in sources :

Example 16 with Node

use of javafx.scene.Node in project FXyzLib by Birdasaur.

the class Histogram method setHeightData.

public void setHeightData(float[][] arrayY, int barSize, int spacing, Color color, boolean ambient, boolean fill) {
    histogramDataGroup.getChildren().clear();
    PhongMaterial phong = new PhongMaterial();
    phong.setSpecularColor(color);
    phong.setDiffuseColor(color);
    float min = arrayY[0][0], max = arrayY[0][0];
    // Find min and max's for color gradient
    for (int x = 0; x < arrayY.length; x++) {
        for (int z = 0; z < arrayY[0].length; z++) {
            if (arrayY[x][z] < min) {
                min = arrayY[x][z];
            }
            if (arrayY[x][z] > max) {
                max = arrayY[x][z];
            }
        }
    }
    //
    float range = max - min;
    // Generate Bars 
    for (int x = 0; x < arrayY.length; x++) {
        for (int z = 0; z < arrayY[0].length; z++) {
            double ySize = arrayY[x][z];
            if (ySize < 0) {
                ySize *= -1;
            }
            Node bar = createDefaultNode(barSize, ySize);
            bar.setTranslateX(x * spacing);
            bar.setTranslateY(-arrayY[x][z]);
            bar.setTranslateZ(z * spacing);
            //Apply normalized color scale
            double normalizedColor = (arrayY[x][z] - min) / range;
            if (//if it is in the lower half of the range
            arrayY[x][z] < range / 2) {
                phong = new PhongMaterial(new Color(0.25, 0, normalizedColor, 1));
            } else //if it is in the upper half of the range
            {
                phong = new PhongMaterial(new Color(normalizedColor, 0, 0.25, 1));
            }
            switch(getDefaultNodeType()) {
                case CYLINDER:
                    {
                        ((Cylinder) bar).setMaterial(phong);
                        ((Cylinder) bar).setCullFace(CullFace.BACK);
                        if (fill) {
                            ((Cylinder) bar).setDrawMode(DrawMode.FILL);
                        } else {
                            //show lines only by default
                            ((Cylinder) bar).setDrawMode(DrawMode.LINE);
                        }
                        break;
                    }
                case CUBE:
                default:
                    {
                        ((Box) bar).setMaterial(phong);
                        ((Box) bar).setCullFace(CullFace.BACK);
                        if (fill) {
                            ((Box) bar).setDrawMode(DrawMode.FILL);
                        } else {
                            //show lines only by default
                            ((Box) bar).setDrawMode(DrawMode.LINE);
                        }
                    }
            }
            if (ambient) {
                AmbientLight light = new AmbientLight(color);
                light.getScope().add(bar);
                histogramDataGroup.getChildren().add(light);
            }
            histogramDataGroup.getChildren().add(bar);
        }
    }
}
Also used : Node(javafx.scene.Node) Color(javafx.scene.paint.Color) PhongMaterial(javafx.scene.paint.PhongMaterial) AmbientLight(javafx.scene.AmbientLight)

Example 17 with Node

use of javafx.scene.Node in project FXyzLib by Birdasaur.

the class ScatterPlot method setzAxisData.

/**
     * @param data the zAxisData to set
     */
public void setzAxisData(List<Double> data) {
    zAxisData = data;
    scatterDataGroup.getChildren().clear();
    for (int i = 0; i < zAxisData.size(); i++) {
        //            final Sphere dataSphere = new Sphere(scatterRadius);
        //            final Box dataSphere = new Box(scatterRadius, scatterRadius, scatterRadius);
        final Node dataSphere = createDefaultNode(nodeRadius);
        double translateX = 0.0;
        double translateY = 0.0;
        if (!xAxisData.isEmpty() && xAxisData.size() > i)
            translateX = xAxisData.get(i);
        if (!yAxisData.isEmpty() && yAxisData.size() > i)
            translateY = yAxisData.get(i);
        dataSphere.setTranslateX(translateX);
        dataSphere.setTranslateY(translateY);
        dataSphere.setTranslateZ(zAxisData.get(i));
        scatterDataGroup.getChildren().add(dataSphere);
    }
}
Also used : Node(javafx.scene.Node)

Example 18 with Node

use of javafx.scene.Node in project FXyzLib by Birdasaur.

the class ScatterPlot method setxAxisData.

/**
     * @param data the xAxisData to set
     */
public void setxAxisData(List<Double> data) {
    xAxisData = data;
    scatterDataGroup.getChildren().clear();
    for (int i = 0; i < xAxisData.size(); i++) {
        //            final Sphere dataSphere = new Sphere(scatterRadius);
        //            final Box dataSphere = new Box(scatterRadius, scatterRadius, scatterRadius);
        final Node dataSphere = createDefaultNode(nodeRadius);
        double translateY = 0.0;
        double translateZ = 0.0;
        if (!yAxisData.isEmpty() && yAxisData.size() > i)
            translateY = yAxisData.get(i);
        if (!zAxisData.isEmpty() && zAxisData.size() > i)
            translateZ = zAxisData.get(i);
        dataSphere.setTranslateX(xAxisData.get(i));
        dataSphere.setTranslateY(translateY);
        dataSphere.setTranslateZ(translateZ);
        scatterDataGroup.getChildren().add(dataSphere);
    }
}
Also used : Node(javafx.scene.Node)

Example 19 with Node

use of javafx.scene.Node in project aic-praise by aic-sri-international.

the class QueryController method displayQueryAnswer.

private void displayQueryAnswer(String query, Expression result, ParsedHOGModel parsedModel, long millisecondsToCompute) {
    String answer = "P(" + query + " | ... ) = " + result;
    String title = "Query" + duration(" took ", millisecondsToCompute) + " to compute '" + answer + "'";
    HOGMCodeArea resultCodeArea = new HOGMCodeArea(false);
    resultCodeArea.setText(answer);
    resultCodeArea.setEditable(false);
    Node resultContent = null;
    if (SGSolverDemoController.isInDebugMode()) {
        HOGMCodeArea parsedModelArea = createParsedModelView(parsedModel);
        TabPane resultTabs = new TabPane();
        resultTabs.getTabs().add(new Tab("Answer", resultCodeArea));
        resultTabs.getTabs().add(new Tab("Parsed As", parsedModelArea));
        resultContent = resultTabs;
    } else {
        resultContent = resultCodeArea;
    }
    TitledPane resultPane = new TitledPane(title, resultContent);
    FXUtil.setTitledPaneIcon(resultPane, FontAwesomeIcons.CHECK);
    showResultPane(resultPane);
}
Also used : TitledPane(javafx.scene.control.TitledPane) TabPane(javafx.scene.control.TabPane) HOGMCodeArea(com.sri.ai.praise.sgsolver.demo.editor.HOGMCodeArea) Tab(javafx.scene.control.Tab) Node(javafx.scene.Node)

Example 20 with Node

use of javafx.scene.Node in project aic-praise by aic-sri-international.

the class QueryController method displayQueryErrors.

private void displayQueryErrors(String query, List<HOGMQueryError> queryErrors, ParsedHOGModel parsedModel, long millisecondsToCompute) {
    String title = "Query '" + query + "' encountered " + queryErrors.size() + " error(s) when attempting to compute answer (" + duration("took ", millisecondsToCompute) + ")";
    ListView<HOGMQueryError> errors = new ListView<>(FXCollections.observableList(queryErrors));
    //errors.setFixedCellSize(24);
    errors.setPrefHeight(24 * 5);
    errors.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
    errors.getSelectionModel().selectedIndexProperty().addListener((obs, oldValue, newValue) -> {
        if (newValue.intValue() >= 0) {
            HOGMQueryError qError = errors.getItems().get(newValue.intValue());
            if (qError.getContext() == HOGMQueryError.Context.MODEL) {
                modelPageEditor.highlight(qError.getStartContextIndex(), qError.getEndContextIndex());
            } else if (qError.getContext() == HOGMQueryError.Context.QUERY) {
                queryComboBox.getEditor().selectAll();
            }
        }
    });
    Node resultContent = null;
    if (SGSolverDemoController.isInDebugMode()) {
        HOGMCodeArea parsedModelArea = createParsedModelView(parsedModel);
        TabPane resultTabs = new TabPane();
        resultTabs.getTabs().add(new Tab("Errors", errors));
        resultTabs.getTabs().add(new Tab("Parsed As", parsedModelArea));
        resultContent = resultTabs;
    } else {
        resultContent = errors;
    }
    TitledPane resultPane = new TitledPane(title, resultContent);
    FXUtil.setTitledPaneIcon(resultPane, FontAwesomeIcons.TIMES);
    showResultPane(resultPane);
    errors.getSelectionModel().selectFirst();
}
Also used : TitledPane(javafx.scene.control.TitledPane) TabPane(javafx.scene.control.TabPane) ListView(javafx.scene.control.ListView) HOGMCodeArea(com.sri.ai.praise.sgsolver.demo.editor.HOGMCodeArea) Tab(javafx.scene.control.Tab) HOGMQueryError(com.sri.ai.praise.sgsolver.solver.HOGMQueryError) Node(javafx.scene.Node)

Aggregations

Node (javafx.scene.Node)118 Label (javafx.scene.control.Label)18 Stage (javafx.stage.Stage)17 Parent (javafx.scene.Parent)16 Button (javafx.scene.control.Button)16 ArrayList (java.util.ArrayList)15 ObservableList (javafx.collections.ObservableList)14 FXML (javafx.fxml.FXML)14 List (java.util.List)12 BorderPane (javafx.scene.layout.BorderPane)12 HBox (javafx.scene.layout.HBox)11 IOException (java.io.IOException)10 Platform (javafx.application.Platform)10 Insets (javafx.geometry.Insets)10 Color (javafx.scene.paint.Color)10 FXCollections (javafx.collections.FXCollections)9 MouseEvent (javafx.scene.input.MouseEvent)9 VBox (javafx.scene.layout.VBox)9 FadeTransition (javafx.animation.FadeTransition)8 MenuItem (javafx.scene.control.MenuItem)8