Skip to content

Commit 95442f7

Browse files
committed
Make TestBuilder select use focus layer
1 parent 5b4fc35 commit 95442f7

File tree

3 files changed

+39
-12
lines changed

3 files changed

+39
-12
lines changed

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

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.locationtech.jtstest.testbuilder.JTSTestBuilderToolBar;
3030
import org.locationtech.jtstest.testbuilder.SpatialFunctionPanel;
3131
import org.locationtech.jtstest.testbuilder.TestBuilderDialogs;
32+
import org.locationtech.jtstest.testbuilder.geom.GeometryElementLocater;
3233
import org.locationtech.jtstest.testbuilder.model.GeometryEditModel;
3334
import org.locationtech.jtstest.testbuilder.model.LayerList;
3435
import org.locationtech.jtstest.testbuilder.model.TestBuilderModel;
@@ -165,21 +166,17 @@ public void copyElementToClipboard(Coordinate pt)
165166

166167
public void selectElements(Geometry aoi)
167168
{
168-
LayerList lyrList = model().getLayers();
169-
Geometry[] comp;
170-
comp = lyrList.getElements(aoi);
169+
Geometry geom = model().getGeometryEditModel().getGeometry();
170+
Geometry comp = null;
171+
if (geom != null) {
172+
comp = GeometryElementLocater.extractElements(geom, aoi);
173+
}
171174
if (comp == null) {
172175
model().clearSelection();
173176
}
174177
else {
175178
model().getLayerSelect().setEnabled(true);
176-
//TODO: allow selecting from A or B when enabled
177-
if (comp[0] != null) {
178-
model().setSelection(comp[0]);
179-
}
180-
else {
181-
model().setSelection(comp[1]);
182-
}
179+
model().setSelection(comp);
183180
}
184181
geometryViewChanged();
185182
layerListRefresh();
@@ -212,7 +209,7 @@ public void inspectGeometry(String tag, Geometry geometry) {
212209

213210
public void inspectGeometryDialogForCurrentCase()
214211
{
215-
int geomIndex = JTSTestBuilder.model().getGeometryEditModel().getGeomIndex();
212+
int geomIndex = model().getGeometryEditModel().getGeomIndex();
216213
Geometry geometry = model().getCurrentCase().getGeometry(geomIndex);
217214
TestBuilderDialogs.inspectGeometry(frame(), geomIndex, geometry);
218215
}

modules/app/src/main/java/org/locationtech/jtstest/testbuilder/geom/GeometryElementLocater.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@
1313
package org.locationtech.jtstest.testbuilder.geom;
1414

1515
import java.util.ArrayList;
16+
import java.util.Iterator;
1617
import java.util.List;
1718
import java.util.Stack;
1819

1920
import org.locationtech.jts.geom.Coordinate;
2021
import org.locationtech.jts.geom.Envelope;
2122
import org.locationtech.jts.geom.Geometry;
2223
import org.locationtech.jts.geom.GeometryCollection;
24+
import org.locationtech.jts.geom.GeometryFactory;
2325

2426

2527
/**
@@ -31,6 +33,32 @@
3133
*/
3234
public class GeometryElementLocater {
3335

36+
public static Geometry extractElements(Geometry parentGeom, Geometry aoi)
37+
{
38+
GeometryElementLocater locater = new GeometryElementLocater(parentGeom);
39+
List locs = locater.getElements(aoi);
40+
List geoms = extractLocationGeometry(locs);
41+
if (geoms.size() <= 0)
42+
return null;
43+
if (geoms.size() == 1)
44+
return (Geometry) geoms.get(0);
45+
// if parent was a GC, ensure returning a GC
46+
if (parentGeom.getGeometryType().equals("GeometryCollection"))
47+
return parentGeom.getFactory().createGeometryCollection(GeometryFactory.toGeometryArray(geoms));
48+
// otherwise return MultiGeom
49+
return parentGeom.getFactory().buildGeometry(geoms);
50+
}
51+
52+
private static List extractLocationGeometry(List locs)
53+
{
54+
List geoms = new ArrayList();
55+
for (Iterator i = locs.iterator(); i.hasNext();) {
56+
GeometryLocation loc = (GeometryLocation) i.next();
57+
geoms.add(loc.getElement());
58+
}
59+
return geoms;
60+
}
61+
3462
public static List<GeometryLocation> getElements(Geometry parentGeom, Coordinate queryPt, double tolerance) {
3563
GeometryElementLocater locater = new GeometryElementLocater(parentGeom);
3664
return locater.getElements(queryPt, tolerance);

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,13 @@ public Geometry[] getElements(Geometry aoi, boolean isSegments)
103103
comp[i] = SegmentExtracter.extract(geom, aoi);
104104
}
105105
else {
106-
comp[i] = extractElements(geom, aoi);
106+
comp[i] = GeometryElementLocater.extractElements(geom, aoi);
107107
}
108108
}
109109
return comp;
110110
}
111111

112+
/*
112113
private Geometry extractElements(Geometry parentGeom, Geometry aoi)
113114
{
114115
GeometryElementLocater locater = new GeometryElementLocater(parentGeom);
@@ -134,6 +135,7 @@ private List extractLocationGeometry(List locs)
134135
}
135136
return geoms;
136137
}
138+
*/
137139

138140
public Layer add(Layer lyr, boolean atTop) {
139141
if (atTop) {

0 commit comments

Comments
 (0)