package jcgp.gui.population; import javafx.scene.control.Tab; import javafx.scene.control.TabPane; import jcgp.JCGP; import jcgp.backend.modules.problem.TestCaseProblem; import jcgp.backend.modules.problem.TestCaseProblem.TestCase; import jcgp.gui.GUI; public class PopulationPane extends TabPane { private GUI gui; public PopulationPane(GUI gui) { super(); this.gui = gui; setTabClosingPolicy(TabClosingPolicy.UNAVAILABLE); remakeTabs(); } public void remakeTabs() { getTabs().clear(); JCGP jcgp = gui.getExperiment(); Tab tab; ChromosomePane cp; for (int i = 0; i < jcgp.getResources().populationSize(); i++) { cp = new ChromosomePane(jcgp.getPopulation().getChromosome(i), gui); tab = new Tab("Chr " + i); tab.setContent(cp); getTabs().add(tab); } } public void updateGenes() { for (int i = 0; i < getChildrenUnmodifiable().size(); i++) { ((ChromosomePane) getTabs().get(i).getContent()).updateGenes(); } } public void unlockOutputs() { for (int i = 0; i < getChildrenUnmodifiable().size(); i++) { ((ChromosomePane) getTabs().get(i).getContent()).unlockOutputs(); } } public void relockOutputs() { for (int i = 0; i < getChildrenUnmodifiable().size(); i++) { ((ChromosomePane) getTabs().get(i).getContent()).relockOutputs(); } } public void evaluateTestCase(TestCase testCase) { if (gui.getExperiment().getProblem() instanceof TestCaseProblem) { if (testCase.getInputs().length == gui.getExperiment().getResources().inputs()) { for (int i = 0; i < getTabs().size(); i++) { ((ChromosomePane) getTabs().get(i).getContent()).setInputs(testCase.getInputs()); } } else { throw new IllegalArgumentException("Test case has " + testCase.getInputs().length + " inputs and chromosome has " + gui.getExperiment().getResources().inputs()); } } } public void hideValues() { for (int i = 0; i < getTabs().size(); i++) { ((ChromosomePane) getTabs().get(i).getContent()).hideValues(); } } }