Search in sources :

Example 1 with Canvas

use of javafx.scene.canvas.Canvas in project aima-java by aimacode.

the class SimulationPaneBuilder method getResultFor.

/**
	 * Adds a toolbar, a state view, and a status label to the provided pane and returns
	 * a controller class instance. The toolbar contains combo boxes to control parameter settings
	 * and buttons for simulation control. The controller class instance handles user events and provides
	 * access to user settings (parameter settings, simulation speed, status text, ...).
	 */
public SimulationPaneCtrl getResultFor(BorderPane pane) {
    List<ComboBox<String>> combos = new ArrayList<>();
    parameters.add(createSimSpeedParam());
    for (Parameter param : parameters) {
        ComboBox<String> combo = new ComboBox<>();
        combo.setId(param.getName());
        combo.getItems().addAll(param.getValueNames());
        combo.getSelectionModel().select(param.getDefaultValueIndex());
        combos.add(combo);
    }
    Button simBtn = new Button();
    Node[] tools = new Node[combos.size() + 2];
    for (int i = 0; i < combos.size() - 1; i++) tools[i] = combos.get(i);
    tools[combos.size() - 1] = new Separator();
    tools[combos.size() + 0] = combos.get(combos.size() - 1);
    tools[combos.size() + 1] = simBtn;
    ToolBar toolBar = new ToolBar(tools);
    Label statusLabel = new Label();
    statusLabel.setMaxWidth(Double.MAX_VALUE);
    statusLabel.setAlignment(Pos.CENTER);
    statusLabel.setFont(Font.font(16));
    pane.setTop(toolBar);
    if (stateView.isPresent()) {
        if (stateView.get() instanceof Canvas) {
            // make canvas resizable
            Canvas canvas = (Canvas) stateView.get();
            Pane canvasPane = new Pane();
            canvasPane.getChildren().add(canvas);
            canvas.widthProperty().bind(canvasPane.widthProperty());
            canvas.heightProperty().bind(canvasPane.heightProperty());
            pane.setCenter(canvasPane);
            pane.setStyle("-fx-background-color: white");
        } else
            pane.setCenter(stateView.get());
    }
    pane.setBottom(statusLabel);
    if (!initMethod.isPresent())
        throw new IllegalStateException("No initialization method defined.");
    if (!simMethod.isPresent())
        throw new IllegalStateException("No simulation method defined.");
    return new SimulationPaneCtrl(parameters, combos, initMethod.get(), simMethod.get(), simBtn, statusLabel);
}
Also used : ComboBox(javafx.scene.control.ComboBox) Node(javafx.scene.Node) Canvas(javafx.scene.canvas.Canvas) ArrayList(java.util.ArrayList) Label(javafx.scene.control.Label) BorderPane(javafx.scene.layout.BorderPane) Pane(javafx.scene.layout.Pane) Button(javafx.scene.control.Button) ToolBar(javafx.scene.control.ToolBar) Separator(javafx.scene.control.Separator)

Example 2 with Canvas

use of javafx.scene.canvas.Canvas in project aima-java by aimacode.

the class GeneticMaximumFinderApp method createRootPane.

/**
	 * Defines state view, parameters, and call-back functions and calls the
	 * simulation pane builder to create layout and controller objects.
	 */
@Override
public Pane createRootPane() {
    BorderPane root = new BorderPane();
    Canvas canvas = new Canvas();
    funcPlotterCtrl = new FunctionPlotterCtrl(canvas);
    funcPlotterCtrl.setLimits(Functions.minX, Functions.maxX, Functions.minY, Functions.maxY);
    List<Parameter> params = createParameters();
    SimulationPaneBuilder builder = new SimulationPaneBuilder();
    builder.defineParameters(params);
    builder.defineStateView(canvas);
    builder.defineInitMethod(this::initialize);
    builder.defineSimMethod(this::simulate);
    simPaneCtrl = builder.getResultFor(root);
    return root;
}
Also used : BorderPane(javafx.scene.layout.BorderPane) SimulationPaneBuilder(aima.gui.fx.framework.SimulationPaneBuilder) Canvas(javafx.scene.canvas.Canvas) Parameter(aima.gui.fx.framework.Parameter) FunctionPlotterCtrl(aima.gui.fx.views.FunctionPlotterCtrl)

Example 3 with Canvas

use of javafx.scene.canvas.Canvas in project aima-java by aimacode.

the class SimulatedAnnealingMaximumFinderApp method createRootPane.

/**
	 * Defines state view, parameters, and call-back functions and calls the
	 * simulation pane builder to create layout and controller objects.
	 */
@Override
public Pane createRootPane() {
    BorderPane root = new BorderPane();
    Canvas canvas = new Canvas();
    funcPlotterCtrl = new FunctionPlotterCtrl(canvas);
    funcPlotterCtrl.setLimits(Functions.minX, Functions.maxX, Functions.minY, Functions.maxY);
    List<Parameter> params = createParameters();
    SimulationPaneBuilder builder = new SimulationPaneBuilder();
    builder.defineParameters(params);
    builder.defineStateView(canvas);
    builder.defineInitMethod(this::initialize);
    builder.defineSimMethod(this::simulate);
    simPaneCtrl = builder.getResultFor(root);
    simPaneCtrl.setParam(SimulationPaneCtrl.PARAM_SIM_SPEED, 1);
    return root;
}
Also used : BorderPane(javafx.scene.layout.BorderPane) SimulationPaneBuilder(aima.gui.fx.framework.SimulationPaneBuilder) Canvas(javafx.scene.canvas.Canvas) Parameter(aima.gui.fx.framework.Parameter) FunctionPlotterCtrl(aima.gui.fx.views.FunctionPlotterCtrl)

Example 4 with Canvas

use of javafx.scene.canvas.Canvas in project aima-java by aimacode.

the class MapPaneCtrl method update.

public void update() {
    Canvas canvas = osCanvas;
    if (canvas == null || Math.abs(canvas.getWidth() - pane.getWidth()) > 0.01 || Math.abs(canvas.getHeight() - pane.getHeight()) > 0.1) {
        canvas = new Canvas(pane.getWidth(), pane.getHeight());
        canvas.setFocusTraversable(true);
    }
    mapDrawer.drawMap(canvas, scaleToFit);
    pane.getChildren().add(canvas);
    if (pane.getChildren().size() > 1)
        pane.getChildren().remove(0);
    osCanvas = currCanvas;
    currCanvas = canvas;
    scaleToFit = false;
}
Also used : Canvas(javafx.scene.canvas.Canvas)

Example 5 with Canvas

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

the class GraphApp method createGraphCanvas.

private Canvas createGraphCanvas() {
    Canvas canvas = new Canvas(GRAPH_WIDTH, GRAPH_HEIGHT);
    canvas.setFocusTraversable(true);
    setupCanvasEventHandlers(canvas);
    return canvas;
}
Also used : Canvas(javafx.scene.canvas.Canvas)

Aggregations

Canvas (javafx.scene.canvas.Canvas)57 Pane (javafx.scene.layout.Pane)18 Text (javafx.scene.text.Text)17 GraphicsContext (javafx.scene.canvas.GraphicsContext)12 Region (javafx.scene.layout.Region)11 Group (javafx.scene.Group)9 Scene (javafx.scene.Scene)9 Label (javafx.scene.control.Label)9 DropShadow (javafx.scene.effect.DropShadow)9 InnerShadow (javafx.scene.effect.InnerShadow)9 Stop (javafx.scene.paint.Stop)9 Rotate (javafx.scene.transform.Rotate)9 Color (javafx.scene.paint.Color)7 ListChangeListener (javafx.collections.ListChangeListener)6 SnapshotParameters (javafx.scene.SnapshotParameters)6 Button (javafx.scene.control.Button)6 VPos (javafx.geometry.VPos)5 Comparator (java.util.Comparator)4 WritableImage (javafx.scene.image.WritableImage)4 LinearGradient (javafx.scene.paint.LinearGradient)4