Changeset 12400 in josm for trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
- Timestamp:
- 2017-06-11T22:26:15+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
r12298 r12400 11 11 import java.util.ArrayList; 12 12 import java.util.Arrays; 13 import java.util.Collection;14 import java.util.HashSet;15 13 import java.util.List; 16 import java.util.Set;17 import java.util.Stack;18 14 19 15 import javax.swing.AbstractAction; … … 32 28 import org.openstreetmap.josm.actions.search.SearchAction; 33 29 import org.openstreetmap.josm.data.osm.Filter; 34 import org.openstreetmap.josm.data.osm.OsmPrimitive; 35 import org.openstreetmap.josm.data.osm.Relation; 36 import org.openstreetmap.josm.data.osm.RelationMember; 37 import org.openstreetmap.josm.data.osm.Way; 30 import org.openstreetmap.josm.data.osm.FilterModel; 38 31 import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent; 39 32 import org.openstreetmap.josm.data.osm.event.DataChangedEvent; … … 94 87 DatasetEventManager.getInstance().removeDatasetListener(this); 95 88 MapFrame.removeMapModeChangeListener(this); 96 filterModel. clearFilterFlags();89 filterModel.model.clearFilterFlags(); 97 90 Main.map.mapView.repaint(); 98 91 } … … 302 295 public void updateDialogHeader() { 303 296 SwingUtilities.invokeLater(() -> setTitle( 304 tr("Filter Hidden:{0} Disabled:{1}", filterModel.disabledAndHiddenCount, filterModel.disabledCount))); 297 tr("Filter Hidden:{0} Disabled:{1}", 298 filterModel.model.getDisabledAndHiddenCount(), filterModel.model.getDisabledCount()))); 305 299 } 306 300 … … 313 307 } 314 308 315 /**316 * Returns the list of primitives whose filtering can be affected by change in primitive317 * @param primitives list of primitives to check318 * @return List of primitives whose filtering can be affected by change in source primitives319 */320 private static Collection<OsmPrimitive> getAffectedPrimitives(Collection<? extends OsmPrimitive> primitives) {321 // Filters can use nested parent/child expression so complete tree is necessary322 Set<OsmPrimitive> result = new HashSet<>();323 Stack<OsmPrimitive> stack = new Stack<>();324 stack.addAll(primitives);325 326 while (!stack.isEmpty()) {327 OsmPrimitive p = stack.pop();328 329 if (result.contains(p)) {330 continue;331 }332 333 result.add(p);334 335 if (p instanceof Way) {336 for (OsmPrimitive n: ((Way) p).getNodes()) {337 stack.push(n);338 }339 } else if (p instanceof Relation) {340 for (RelationMember rm: ((Relation) p).getMembers()) {341 stack.push(rm.getMember());342 }343 }344 345 for (OsmPrimitive ref: p.getReferrers()) {346 stack.push(ref);347 }348 }349 350 return result;351 }352 353 309 @Override 354 310 public void dataChanged(DataChangedEvent event) { … … 378 334 @Override 379 335 public void relationMembersChanged(RelationMembersChangedEvent event) { 380 filterModel.executeFilters( getAffectedPrimitives(event.getPrimitives()));336 filterModel.executeFilters(FilterModel.getAffectedPrimitives(event.getPrimitives())); 381 337 } 382 338 383 339 @Override 384 340 public void tagsChanged(TagsChangedEvent event) { 385 filterModel.executeFilters( getAffectedPrimitives(event.getPrimitives()));341 filterModel.executeFilters(FilterModel.getAffectedPrimitives(event.getPrimitives())); 386 342 } 387 343 388 344 @Override 389 345 public void wayNodesChanged(WayNodesChangedEvent event) { 390 filterModel.executeFilters( getAffectedPrimitives(event.getPrimitives()));346 filterModel.executeFilters(FilterModel.getAffectedPrimitives(event.getPrimitives())); 391 347 } 392 348
Note:
See TracChangeset
for help on using the changeset viewer.