aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/gui/settings/SettingsPane.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/gui/settings/SettingsPane.java')
-rw-r--r--src/jcgp/gui/settings/SettingsPane.java76
1 files changed, 54 insertions, 22 deletions
diff --git a/src/jcgp/gui/settings/SettingsPane.java b/src/jcgp/gui/settings/SettingsPane.java
index 4e8c342..4050a89 100644
--- a/src/jcgp/gui/settings/SettingsPane.java
+++ b/src/jcgp/gui/settings/SettingsPane.java
@@ -6,7 +6,6 @@ import java.util.ArrayList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
-import javafx.scene.Group;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
@@ -125,8 +124,7 @@ public class SettingsPane extends AnchorPane {
eaCBox.getSelectionModel().select(jcgp.getEvolutionaryStrategy());
eaCBox.prefWidthProperty().bind(mainContainer.widthProperty());
- final VBox eaParameters = new VBox();
- eaParameters.setSpacing(2);
+ final VBox eaParameters = new VBox(2);
if (jcgp.getEvolutionaryStrategy().getLocalParameters() != null) {
refreshParameters(jcgp.getEvolutionaryStrategy().getLocalParameters(), eaParameters);
@@ -158,8 +156,7 @@ public class SettingsPane extends AnchorPane {
mutatorCBox.getSelectionModel().select(jcgp.getMutator());
mutatorCBox.prefWidthProperty().bind(mainContainer.widthProperty());
- final VBox mutatorParameters = new VBox();
- mutatorParameters.setSpacing(2);
+ final VBox mutatorParameters = new VBox(2);
if (jcgp.getEvolutionaryStrategy().getLocalParameters() != null) {
refreshParameters(jcgp.getMutator().getLocalParameters(), mutatorParameters);
}
@@ -190,23 +187,27 @@ public class SettingsPane extends AnchorPane {
problemCBox.getSelectionModel().select(jcgp.getProblem());
problemCBox.prefWidthProperty().bind(mainContainer.widthProperty());
- final VBox problemParameters = new VBox();
- problemParameters.setSpacing(2);
+ final VBox problemParameters = new VBox(2);
problemParameters.setPadding(new Insets(0, 0, 4, 0));
if (jcgp.getProblem().getLocalParameters() != null) {
refreshParameters(jcgp.getProblem().getLocalParameters(), problemParameters);
}
- final Group showTestCaseContainer = new Group();
+ final HBox testCaseControlContainer = new HBox(2);
+
final Button showTestCaseButton = makeTestCaseButton();
+ final Button loadTestCaseButton = makeLoadTestCaseButton();
+ HBox.setHgrow(showTestCaseButton, Priority.ALWAYS);
+ showTestCaseButton.setMaxWidth(Double.MAX_VALUE);
+ HBox.setHgrow(loadTestCaseButton, Priority.ALWAYS);
+ loadTestCaseButton.setMaxWidth(Double.MAX_VALUE);
+
if (jcgp.getProblem() instanceof TestCaseProblem<?>) {
- showTestCaseContainer.getChildren().add(showTestCaseButton);
-
- testCaseTable = new TestCaseTable((TestCaseProblem<Object>) jcgp.getProblem(), gui);
+ testCaseControlContainer.getChildren().addAll(showTestCaseButton, loadTestCaseButton);
+ remakeTestCaseTable();
}
- nodeFunctions = new VBox();
- nodeFunctions.setSpacing(2);
+ nodeFunctions = new VBox(2);
nodeFunctions.setPadding(new Insets(0, 0, 4, 0));
refreshFunctions();
@@ -220,20 +221,40 @@ public class SettingsPane extends AnchorPane {
testCaseTable.close();
gui.setEvaluating(false);
refreshFunctions();
- showTestCaseContainer.getChildren().clear();
+ testCaseControlContainer.getChildren().clear();
if (jcgp.getProblem() instanceof TestCaseProblem) {
- showTestCaseContainer.getChildren().add(showTestCaseButton);
- testCaseTable = new TestCaseTable((TestCaseProblem<Object>) jcgp.getProblem(), gui);
+ testCaseControlContainer.getChildren().addAll(showTestCaseButton, loadTestCaseButton);
+ remakeTestCaseTable();
}
gui.reset();
}
});
- problemPane.getChildren().addAll(header, problemCBox, problemParameters, nodeFunctions, showTestCaseContainer);
+ problemPane.getChildren().addAll(header, problemCBox, problemParameters, nodeFunctions, testCaseControlContainer);
mainContainer.getChildren().add(problemPane);
}
+ private Button makeLoadTestCaseButton() {
+ Button b = new Button("Load test cases");
+ b.setOnAction(new EventHandler<ActionEvent>() {
+ @Override
+ public void handle(ActionEvent event) {
+ FileChooser fc = new FileChooser();
+ fc.setTitle("Open test case file...");
+ fc.getExtensionFilters().add(new ExtensionFilter("CGP " + gui.getExperiment().getProblem() + " files", "*" + ((TestCaseProblem<?>) gui.getExperiment().getProblem()).getFileExtension()));
+ fc.getExtensionFilters().add(new ExtensionFilter("All files", "*.*"));
+ File chrFile = fc.showOpenDialog(gui.getStage());
+ if (chrFile != null) {
+ gui.getExperiment().loadTestCases(chrFile);
+ remakeTestCaseTable();
+ gui.reDraw();
+ }
+ }
+ });
+ return b;
+ }
+
private Button makeTestCaseButton() {
Button b = new Button("Show test cases");
b.setOnAction(new EventHandler<ActionEvent>() {
@@ -295,9 +316,9 @@ public class SettingsPane extends AnchorPane {
File parFile = fc.showOpenDialog(gui.getStage());
if (parFile != null) {
gui.getExperiment().loadParameters(parFile);
+ gui.reDraw();
+ refreshFunctions();
}
- gui.reDraw();
- refreshFunctions();
}
});
@@ -311,14 +332,14 @@ public class SettingsPane extends AnchorPane {
File chrFile = fc.showOpenDialog(gui.getStage());
if (chrFile != null) {
gui.getExperiment().loadChromosome(chrFile);
+ gui.reDraw();
}
- gui.reDraw();
}
});
saveChromosome.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
- //gui.step();
+
}
});
@@ -458,10 +479,21 @@ public class SettingsPane extends AnchorPane {
loadChromosome.setDisable(running);
saveChromosome.setDisable(running);
-
testCaseTable.getTable().setDisable(running);
}
+ private void remakeTestCaseTable() {
+ boolean wasShowing = false;
+ if (testCaseTable != null) {
+ wasShowing = testCaseTable.isShowing();
+ testCaseTable.close();
+ }
+ testCaseTable = new TestCaseTable((TestCaseProblem<Object>) gui.getExperiment().getProblem(), gui);
+ if (wasShowing) {
+ testCaseTable.show();
+ }
+ }
+
public TestCaseTable getTestCaseTable() {
return testCaseTable;
}