Skip to content

Commit 220a070

Browse files
committed
Improve TestBuilder selection UI
1 parent f2618b2 commit 220a070

File tree

7 files changed

+53
-31
lines changed

7 files changed

+53
-31
lines changed

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/GeometryEditPanel.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,7 @@ public void render(Graphics2D g2)
623623
renderLayersTheme(tbModel.getLayersBase(), g2);
624624
renderLayersCore(getLayerList(), g2);
625625
renderLayersTheme(tbModel.getLayersTop(), g2);
626+
renderLayersTheme(tbModel.getLayersFloating(), g2);
626627

627628
if (isRevealingTopology && isRenderingStretchVertices) {
628629
renderMagnifiedVertices(g2);

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/LayerListPanel.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ public void populateList() {
186186
addLayers(JTSTestBuilder.model().getLayersTop());
187187
addLayers(JTSTestBuilder.model().getLayers());
188188
addLayers(JTSTestBuilder.model().getLayersBase());
189+
addLayers(JTSTestBuilder.model().getLayersFloating());
189190
setLayerFocus(layerItems.get(0));
190191
}
191192

@@ -338,6 +339,7 @@ public void update() {
338339
LayerStyleSwatchControl.update(swatch, layer);
339340
lblName.setText( layer.getName());
340341
lblName.setForeground(layer.hasGeometry() ? Color.BLACK : Color.GRAY);
342+
checkbox.setSelected(layer.isEnabled());
341343
}
342344

343345
private void uiInit() throws Exception {

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/LayerStylePanel.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ void updateStyleControls() {
131131
lineWidthModel.setValue((double) geomStyle().getStrokeWidth());
132132
setPaletteType(comboPalette, layer.getLayerStyle().getFillType());
133133

134-
JTSTestBuilder.controller().updateLayerList();
134+
JTSTestBuilder.controller().layerListUpdate();
135135
}
136136

137137
private void uiInit() throws Exception {
@@ -210,7 +210,7 @@ public void insertUpdate(DocumentEvent e) {
210210
public void update() {
211211
String name = txtName.getText();
212212
layer.setName(name);
213-
JTSTestBuilder.controller().updateLayerList();
213+
JTSTestBuilder.controller().layerListUpdate();
214214
}
215215
});
216216

@@ -294,7 +294,7 @@ public void colorChanged(Color clr) {
294294
geomStyle().setLineColor(clr);
295295
layer.getLayerStyle().setColor(clr);
296296
JTSTestBuilder.controller().geometryViewChanged();
297-
JTSTestBuilder.controller().updateLayerList();
297+
JTSTestBuilder.controller().layerListUpdate();
298298
}
299299
}
300300
);
@@ -321,7 +321,7 @@ public void stateChanged(ChangeEvent e) {
321321
float width = lineWidthModel.getNumber().floatValue();
322322
geomStyle().setStrokeWidth(width);
323323
JTSTestBuilder.controller().geometryViewChanged();
324-
JTSTestBuilder.controller().updateLayerList();
324+
JTSTestBuilder.controller().layerListUpdate();
325325
}
326326
});
327327

@@ -332,7 +332,7 @@ public void stateChanged(ChangeEvent e) {
332332
int alpha = (int)source.getValue();
333333
geomStyle().setLineAlpha(alpha);
334334
JTSTestBuilder.controller().geometryViewChanged();
335-
JTSTestBuilder.controller().updateLayerList();
335+
JTSTestBuilder.controller().layerListUpdate();
336336
}
337337
}
338338
});
@@ -431,7 +431,7 @@ public void actionPerformed(ActionEvent e) {
431431
public void actionPerformed(ActionEvent e) {
432432
geomStyle().setFilled(cbFilled.isSelected());
433433
JTSTestBuilder.controller().geometryViewChanged();
434-
JTSTestBuilder.controller().updateLayerList();
434+
JTSTestBuilder.controller().layerListUpdate();
435435
}
436436
});
437437

@@ -442,7 +442,7 @@ public void stateChanged(ChangeEvent e) {
442442
int alpha = (int)source.getValue();
443443
geomStyle().setFillAlpha(alpha);
444444
JTSTestBuilder.controller().geometryViewChanged();
445-
JTSTestBuilder.controller().updateLayerList();
445+
JTSTestBuilder.controller().layerListUpdate();
446446
}
447447
}
448448
});
@@ -454,7 +454,7 @@ public void colorChanged(Color clr) {
454454
geomStyle().setFillColor(clr);
455455
updateStyleControls();
456456
JTSTestBuilder.controller().geometryViewChanged();
457-
JTSTestBuilder.controller().updateLayerList();
457+
JTSTestBuilder.controller().layerListUpdate();
458458
}
459459
}
460460
);

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/controller/JTSTestBuilderController.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ public void extractComponentsToTestCase(Geometry aoi, boolean isSegments)
148148
if (comp == null)
149149
return;
150150
model().addCase(comp);
151-
model().setSelection(comp[0]);
152151
JTSTestBuilderFrame.instance().updateTestCases();
153152
toolbar().selectZoomButton();
154153
modeZoomIn();
@@ -173,6 +172,7 @@ public void selectComponents(Geometry aoi)
173172
model().clearSelection();
174173
}
175174
else {
175+
model().getLayerSelect().setEnabled(true);
176176
//TODO: allow selecting from A or B when enabled
177177
if (comp[0] != null) {
178178
model().setSelection(comp[0]);
@@ -182,6 +182,8 @@ public void selectComponents(Geometry aoi)
182182
}
183183
}
184184
geometryViewChanged();
185+
layerListRefresh();
186+
layerListUpdate();
185187
}
186188

187189

@@ -260,11 +262,16 @@ public void saveImageToClipboard() {
260262
reportException(x);
261263
}
262264
}
265+
266+
//==================================
263267

264-
public void updateLayerList() {
268+
public void layerListUpdate() {
265269
JTSTestBuilderFrame.instance().updateLayerList();
266270
}
267271

272+
public void layerListRefresh() {
273+
JTSTestBuilderFrame.instance().refreshLayerList();
274+
}
268275

269276
//================================
270277

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/model/Layer.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,5 @@ public void resetStyle() {
132132
if (initStyle == null) return;
133133
setGeometryStyle(initStyle.copy());
134134
}
135-
136135

137136
}

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/model/LayerList.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,17 @@ public static LayerList createFixed() {
3333
return list;
3434
}
3535

36-
public static LayerList create(LayerList l1, LayerList l2, LayerList l3) {
36+
public static LayerList create(LayerList... lists) {
3737
LayerList list = new LayerList();
38-
list.add(l1);
39-
list.add(l2);
40-
list.add(l3);
38+
for (LayerList ll : lists) {
39+
list.add(ll);
40+
}
4141
return list;
4242
}
4343

4444
public static final int LYR_A = 0;
4545
public static final int LYR_B = 1;
4646
public static final int LYR_RESULT = 2;
47-
public static final int LYR_SELECT = 3;
4847

4948
private List<Layer> layers = new ArrayList<Layer>();
5049

@@ -56,7 +55,6 @@ void initFixed() {
5655
layers.add(new Layer(AppStrings.GEOM_LABEL_A, false));
5756
layers.add(new Layer(AppStrings.GEOM_LABEL_B, false));
5857
layers.add(new Layer(AppStrings.GEOM_LABEL_RESULT, false));
59-
layers.add(new Layer(AppStrings.LYR_LABEL_SELECTION, false));
6058
}
6159

6260
public int size() { return layers.size(); }

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/model/TestBuilderModel.java

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class TestBuilderModel
5252
private LayerList layerList = LayerList.createFixed();
5353
private LayerList layerListTop = new LayerList();
5454
private LayerList layerListBase = new LayerList();
55+
private Layer layerSelect = new Layer(AppStrings.LYR_LABEL_SELECTION, false);
5556

5657
private WKTWriter writer = new WKTWriter();
5758
private Object currResult = null;
@@ -91,13 +92,30 @@ public String getResultDisplayString(Geometry g)
9192
return writer.writeFormatted(g);
9293
}
9394

95+
public Layer getLayer(int i) { return layerList.getLayer(i); }
9496
public LayerList getLayers() { return layerList; }
95-
public LayerList getLayersAll() { return LayerList.create(layerListTop,layerList,layerListBase) ; }
96-
9797
public LayerList getLayersTop() { return layerListTop; }
9898
public LayerList getLayersBase() { return layerListBase; }
99-
100-
99+
public LayerList getLayersAll() {
100+
LayerList layers = LayerList.create(
101+
layerListTop,
102+
layerList,
103+
getLayersFloating(),
104+
layerListBase
105+
);
106+
return layers;
107+
}
108+
public Layer getLayerSelect() {
109+
return layerSelect;
110+
}
111+
112+
public LayerList getLayersFloating() {
113+
LayerList list = new LayerList();
114+
if (layerSelect.hasGeometry())
115+
list.addBottom(layerSelect);
116+
return list;
117+
}
118+
101119
public List<Layer> getLayersLegend() {
102120
List<Layer> layers = new ArrayList<Layer>();
103121
addLegendLayers(layerList, layers);
@@ -177,8 +195,7 @@ private void initLayers()
177195
lyrR.setGeometryStyle(new BasicStyle(AppColors.GEOM_RESULT_LINE_CLR,
178196
AppColors.GEOM_RESULT_FILL_CLR));
179197

180-
Layer lyrSel = layerList.getLayer(LayerList.LYR_SELECT);
181-
lyrSel.setGeometryStyle(new BasicStyle(AppColors.GEOM_SELECT_LINE_CLR,
198+
layerSelect.setGeometryStyle(new BasicStyle(AppColors.GEOM_SELECT_LINE_CLR,
182199
AppColors.GEOM_SELECT_FILL_CLR));
183200
}
184201

@@ -608,22 +625,20 @@ else if (layerListTop.contains(lyr)) {
608625
}
609626

610627
public void setSelection(Geometry geometry) {
611-
Layer lyr = layerList.getLayer(LayerList.LYR_SELECT);
612-
lyr.setGeometry(geometry);
628+
layerSelect.setGeometry(geometry);
613629
}
614630

631+
/*
615632
public void addSelection(Geometry geometry) {
616-
Layer lyr = layerList.getLayer(LayerList.LYR_SELECT);
617-
ListGeometryContainer src = (ListGeometryContainer) lyr.getSource();
633+
ListGeometryContainer src = (ListGeometryContainer) layerSelect.getSource();
618634
src.add(geometry);
619635
}
620-
636+
*/
637+
621638
public void clearSelection() {
622-
Layer lyr = layerList.getLayer(LayerList.LYR_SELECT);
623-
lyr.getSource().clear();
639+
layerSelect.getSource().clear();
624640
}
625641

626-
627642
}
628643

629644

0 commit comments

Comments
 (0)