Skip to content

Commit 4eeeeba

Browse files
committed
FX GUI framework improved.
It is now easier to extend existing applications.
1 parent 83f1ce6 commit 4eeeeba

File tree

11 files changed

+128
-115
lines changed

11 files changed

+128
-115
lines changed

aima-gui/src/main/java/aima/gui/fx/applications/agent/RouteFindingAgentApp.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
package aima.gui.fx.applications.agent;
22

33
import java.util.ArrayList;
4+
import java.util.Arrays;
45
import java.util.List;
56

67
import aima.core.agent.Agent;
7-
import aima.core.environment.map.*;
8+
import aima.core.environment.map.AdaptableHeuristicFunction;
9+
import aima.core.environment.map.ExtendableMap;
10+
import aima.core.environment.map.MapAgent;
11+
import aima.core.environment.map.MapEnvironment;
12+
import aima.core.environment.map.MapFunctionFactory;
13+
import aima.core.environment.map.Scenario;
14+
import aima.core.environment.map.SimplifiedRoadMapOfAustralia;
15+
import aima.core.environment.map.SimplifiedRoadMapOfPartOfRomania;
816
import aima.core.util.CancelableThread;
9-
import aima.core.util.math.geom.shapes.Point2D;
1017
import aima.gui.fx.framework.IntegrableApplication;
1118
import aima.gui.fx.framework.Parameter;
1219
import aima.gui.fx.framework.SimulationPaneBuilder;
@@ -73,7 +80,7 @@ public Pane createRootPane() {
7380
StackPane envView = new StackPane();
7481
envViewCtrl = new MapEnvironmentViewCtrl(envView);
7582

76-
Parameter[] params = createParameters();
83+
List<Parameter> params = createParameters();
7784

7885
SimulationPaneBuilder builder = new SimulationPaneBuilder();
7986
builder.defineParameters(params);
@@ -85,7 +92,7 @@ public Pane createRootPane() {
8592
return root;
8693
}
8794

88-
protected Parameter[] createParameters() {
95+
protected List<Parameter> createParameters() {
8996
Parameter p1 = new Parameter(PARAM_SCENARIO, "Romania, from Arad", "Romania, from Lugoj",
9097
"Romania, from Fagaras", "Australia, from Sydney", "Australia, from Random");
9198
p1.setValueNames("Romania, from Arad", "Romania, from Lugoj", "Romania, from Fagaras", "Australia, from Sydney",
@@ -107,7 +114,7 @@ protected Parameter[] createParameters() {
107114
p5.setDefaultValueIndex(1);
108115
p5.setDependency(PARAM_SEARCH, "Greedy Best First", "A*", "Recursive Best First",
109116
"Recursive Best First No Loops", "Hill Climbing");
110-
return new Parameter[] { p1, p2r, p2a, p3, p4, p5 };
117+
return Arrays.asList(p1, p2r, p2a, p3, p4, p5);
111118
}
112119

113120
/** Is called after each parameter selection change. */

aima-gui/src/main/java/aima/gui/fx/applications/agent/VacuumAgentApp.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package aima.gui.fx.applications.agent;
22

3+
import java.util.Arrays;
4+
import java.util.List;
5+
36
import aima.core.agent.impl.AbstractAgent;
47
import aima.core.environment.vacuum.FullyObservableVacuumEnvironmentPerceptToStateFunction;
58
import aima.core.environment.vacuum.ModelBasedReflexVacuumAgent;
@@ -66,7 +69,7 @@ public Pane createRootPane() {
6669
StackPane envView = new StackPane();
6770
envViewCtrl = new VacuumEnvironmentViewCtrl(envView);
6871

69-
Parameter[] params = createParameters();
72+
List<Parameter> params = createParameters();
7073

7174
SimulationPaneBuilder builder = new SimulationPaneBuilder();
7275
builder.defineParameters(params);
@@ -78,11 +81,11 @@ public Pane createRootPane() {
7881
return root;
7982
}
8083

81-
protected Parameter[] createParameters() {
84+
protected List<Parameter> createParameters() {
8285
Parameter p1 = new Parameter(PARAM_ENV, "A/B Deterministic Environment", "A/B Non-Deterministic Environment");
8386
Parameter p2 = new Parameter(PARAM_AGENT, "TableDrivenVacuumAgent", "ReflexVacuumAgent",
8487
"SimpleReflexVacuumAgent", "ModelBasedReflexVacuumAgent", "NondeterministicVacuumAgent");
85-
return new Parameter[] { p1, p2 };
88+
return Arrays.asList(p1, p2);
8689
}
8790

8891
/** Is called after each parameter selection change. */

aima-gui/src/main/java/aima/gui/fx/applications/search/CspMapColoringApp.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
package aima.gui.fx.applications.search;
22

3-
import aima.core.search.csp.*;
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
import aima.core.search.csp.Assignment;
7+
import aima.core.search.csp.BacktrackingStrategy;
8+
import aima.core.search.csp.CSP;
9+
import aima.core.search.csp.CSPStateListener;
10+
import aima.core.search.csp.Domain;
11+
import aima.core.search.csp.ImprovedBacktrackingStrategy;
12+
import aima.core.search.csp.MinConflictsStrategy;
13+
import aima.core.search.csp.SolutionStrategy;
414
import aima.core.search.csp.examples.MapCSP;
515
import aima.gui.fx.framework.IntegrableApplication;
616
import aima.gui.fx.framework.Parameter;
@@ -55,7 +65,7 @@ public Pane createRootPane() {
5565
StackPane stateView = new StackPane();
5666
stateViewCtrl = new CspViewCtrl(stateView);
5767

58-
Parameter[] params = createParameters();
68+
List<Parameter> params = createParameters();
5969

6070
SimulationPaneBuilder builder = new SimulationPaneBuilder();
6171
builder.defineParameters(params);
@@ -67,7 +77,7 @@ public Pane createRootPane() {
6777
return root;
6878
}
6979

70-
protected Parameter[] createParameters() {
80+
protected List<Parameter> createParameters() {
7181
Parameter p1 = new Parameter(PARAM_MAP, "Map of Australia",
7282
"Map of Australia NSW=BLUE (for LCV)",
7383
"Map of Australia WA=RED (for LCV)");
@@ -79,7 +89,7 @@ protected Parameter[] createParameters() {
7989
"Backtracking + AC3",
8090
"Backtracking + AC3 + MRV & DEG + LCV",
8191
"Min-Conflicts (50)");
82-
return new Parameter[]{p1, p2};
92+
return Arrays.asList(p1, p2);
8393
}
8494

8595
/**

aima-gui/src/main/java/aima/gui/fx/applications/search/CspNQueensApp.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package aima.gui.fx.applications.search;
22

3+
import java.util.Arrays;
4+
import java.util.List;
5+
36
import aima.core.environment.nqueens.NQueensBoard;
47
import aima.core.search.csp.Assignment;
58
import aima.core.search.csp.CSP;
@@ -65,7 +68,7 @@ public Pane createRootPane() {
6568
StackPane stateView = new StackPane();
6669
stateViewCtrl = new NQueensViewCtrl(stateView);
6770

68-
Parameter[] params = createParameters();
71+
List<Parameter> params = createParameters();
6972

7073
SimulationPaneBuilder builder = new SimulationPaneBuilder();
7174
builder.defineParameters(params);
@@ -78,7 +81,7 @@ public Pane createRootPane() {
7881
return root;
7982
}
8083

81-
protected Parameter[] createParameters() {
84+
protected List<Parameter> createParameters() {
8285
Parameter p1 = new Parameter(PARAM_STRATEGY,
8386
"Min-Conflicts", "Backtracking");
8487
Parameter p2 = new Parameter(PARAM_MRV, true, false);
@@ -91,7 +94,7 @@ protected Parameter[] createParameters() {
9194
p5.setDependency(PARAM_STRATEGY, "Backtracking");
9295
Parameter p6 = new Parameter(PARAM_BOARD_SIZE, 4, 8, 16, 32, 64);
9396
p6.setDefaultValueIndex(1);
94-
return new Parameter[] {p1, p2, p3, p4, p5, p6};
97+
return Arrays.asList(p1, p2, p3, p4, p5, p6);
9598
}
9699

97100
/** Displays the initialized board on the state view. */

aima-gui/src/main/java/aima/gui/fx/applications/search/NQueensSearchApp.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import javafx.scene.layout.StackPane;
2323

2424
import java.util.Arrays;
25+
import java.util.List;
2526

2627

2728
/**
@@ -66,7 +67,7 @@ public Pane createRootPane() {
6667
StackPane stateView = new StackPane();
6768
stateViewCtrl = new NQueensViewCtrl(stateView);
6869

69-
Parameter[] params = createParameters();
70+
List<Parameter> params = createParameters();
7071

7172
SimulationPaneBuilder builder = new SimulationPaneBuilder();
7273
builder.defineParameters(params);
@@ -79,7 +80,7 @@ public Pane createRootPane() {
7980
return root;
8081
}
8182

82-
protected Parameter[] createParameters() {
83+
protected List<Parameter> createParameters() {
8384
Parameter p1 = new Parameter(PARAM_STRATEGY,
8485
"Depth-First Search (incremental)", "Breadth-First Search (incremental)",
8586
"Iterative Deepening Search",
@@ -91,7 +92,7 @@ protected Parameter[] createParameters() {
9192
p3.setDependency(PARAM_STRATEGY, "Iterative Deepening Search",
9293
"Greedy Best-First Search (attacking pair heuristic)", "A* search (attacking pair heuristic)",
9394
"Hill Climbing", "Simulated Annealing", "Genetic Algorithm");
94-
return new Parameter[] {p1, p2, p3};
95+
return Arrays.asList(p1, p2, p3);
9596
}
9697

9798
/** Displays the initialized board on the state view. */

aima-gui/src/main/java/aima/gui/fx/applications/search/games/EightPuzzleApp.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package aima.gui.fx.applications.search.games;
22

33
import java.util.ArrayList;
4+
import java.util.Arrays;
45
import java.util.List;
56
import java.util.Random;
67

@@ -103,7 +104,7 @@ public Pane createRootPane() {
103104
StackPane stateView = new StackPane();
104105
stateViewCtrl = new EightPuzzleViewCtrl(stateView);
105106

106-
Parameter[] params = createParameters();
107+
List<Parameter> params = createParameters();
107108

108109
SimulationPaneBuilder builder = new SimulationPaneBuilder();
109110
builder.defineParameters(params);
@@ -115,10 +116,10 @@ public Pane createRootPane() {
115116
return root;
116117
}
117118

118-
protected Parameter[] createParameters() {
119+
protected List<Parameter> createParameters() {
119120
Parameter p1 = new Parameter(PARAM_INIT_CONF, "Three Moves", "Medium", "Extreme", "Random");
120121
Parameter p2 = new Parameter(PARAM_STRATEGY, (Object[]) SEARCH_NAMES.toArray(new String[] {}));
121-
return new Parameter[] {p1, p2};
122+
return Arrays.asList(p1, p2);
122123
}
123124

124125
/** Displays the initialized board on the state view. */

aima-gui/src/main/java/aima/gui/fx/applications/search/local/GeneticMaximumFinderApp.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package aima.gui.fx.applications.search.local;
22

3+
import java.util.Arrays;
34
import java.util.Collection;
5+
import java.util.List;
46
import java.util.Optional;
57
import java.util.function.Function;
68

@@ -56,7 +58,7 @@ public Pane createRootPane() {
5658
Canvas canvas = new Canvas();
5759
funcPlotterCtrl = new FunctionPlotterCtrl(canvas);
5860
funcPlotterCtrl.setLimits(Functions.minX, Functions.maxX, Functions.minY, Functions.maxY);
59-
Parameter[] params = createParameters();
61+
List<Parameter> params = createParameters();
6062

6163
SimulationPaneBuilder builder = new SimulationPaneBuilder();
6264
builder.defineParameters(params);
@@ -68,7 +70,7 @@ public Pane createRootPane() {
6870
return root;
6971
}
7072

71-
protected Parameter[] createParameters() {
73+
protected List<Parameter> createParameters() {
7274
Parameter p1 = new Parameter(PARAM_FUNC_SELECT);
7375
p1.setValues(Functions.f1, Functions.f2, Functions.f3);
7476
p1.setValueNames("f1", "f2", "f3");
@@ -78,7 +80,7 @@ protected Parameter[] createParameters() {
7880
p3.setDefaultValueIndex(2);
7981
Parameter p4 = new Parameter(PARAM_MAX_ITER, 100, 200, 400);
8082
p4.setDefaultValueIndex(0);
81-
return new Parameter[] {p1, p2, p3, p4};
83+
return Arrays.asList(p1, p2, p3, p4);
8284
}
8385

8486
/** Displays the selected function on the state view. */

aima-gui/src/main/java/aima/gui/fx/applications/search/local/SimulatedAnnealingMaximumFinderApp.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package aima.gui.fx.applications.search.local;
22

3+
import java.util.Arrays;
34
import java.util.HashSet;
5+
import java.util.List;
46
import java.util.Optional;
57
import java.util.Random;
68
import java.util.Set;
@@ -64,7 +66,7 @@ public Pane createRootPane() {
6466
Canvas canvas = new Canvas();
6567
funcPlotterCtrl = new FunctionPlotterCtrl(canvas);
6668
funcPlotterCtrl.setLimits(Functions.minX, Functions.maxX, Functions.minY, Functions.maxY);
67-
Parameter[] params = createParameters();
69+
List<Parameter> params = createParameters();
6870

6971
SimulationPaneBuilder builder = new SimulationPaneBuilder();
7072
builder.defineParameters(params);
@@ -76,7 +78,7 @@ public Pane createRootPane() {
7678
return root;
7779
}
7880

79-
protected Parameter[] createParameters() {
81+
protected List<Parameter> createParameters() {
8082
Parameter p1 = new Parameter(PARAM_FUNC_SELECT);
8183
p1.setValues(Functions.f1, Functions.f2, Functions.f3);
8284
p1.setValueNames("f1", "f2", "f3");
@@ -86,7 +88,7 @@ protected Parameter[] createParameters() {
8688
p3.setDefaultValueIndex(1);
8789
Parameter p4 = new Parameter(PARAM_MAX_ITER, 100, 500, 1000);
8890
p4.setDefaultValueIndex(1);
89-
return new Parameter[] {p1, p2, p3, p4};
91+
return Arrays.asList(p1, p2, p3, p4);
9092
}
9193

9294

aima-gui/src/main/java/aima/gui/fx/framework/SimulationPaneBuilder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package aima.gui.fx.framework;
22

33
import java.util.ArrayList;
4-
import java.util.Arrays;
54
import java.util.List;
65
import java.util.Optional;
76

@@ -32,9 +31,9 @@ public class SimulationPaneBuilder {
3231
protected Optional<Runnable> initMethod = Optional.empty();
3332
protected Optional<Runnable> simMethod = Optional.empty();
3433

35-
public final void defineParameters(Parameter... params) {
34+
public final void defineParameters(List<Parameter> params) {
3635
parameters.clear();
37-
parameters.addAll(Arrays.asList(params));
36+
parameters.addAll(params);
3837
}
3938

4039
public final void defineStateView(Node stateView) {

0 commit comments

Comments
 (0)