diff options
Diffstat (limited to 'src/jcgp/gui/settings/SettingsPane.java')
-rw-r--r-- | src/jcgp/gui/settings/SettingsPane.java | 76 |
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; } |