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);
}
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;
}
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;
}
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;
}
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;
}
Aggregations