Changeset 7946 in josm for trunk/src/org
- Timestamp:
- 2015-01-09T20:44:46+01:00 (10 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/actions
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
r7945 r7946 22 22 23 23 import org.openstreetmap.josm.Main; 24 import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembersAction; 24 25 import org.openstreetmap.josm.command.AddCommand; 25 26 import org.openstreetmap.josm.command.ChangeCommand; … … 34 35 import org.openstreetmap.josm.data.osm.Way; 35 36 import org.openstreetmap.josm.gui.Notification; 37 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask; 36 38 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask; 37 39 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor; … … 156 158 : null; 157 159 158 // download incomplete relation if necessary 159 if (multipolygonRelation != null && !multipolygonRelation.isNew() 160 && (multipolygonRelation.isIncomplete() || multipolygonRelation.hasIncompleteMembers())) { 161 Main.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.main.getEditLayer())); 160 // download incomplete relation or incomplete members if necessary 161 if (multipolygonRelation != null) { 162 if (!multipolygonRelation.isNew() && multipolygonRelation.isIncomplete()) { 163 Main.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.main.getEditLayer())); 164 } else if (multipolygonRelation.hasIncompleteMembers()) { 165 Main.worker.submit(new DownloadRelationMemberTask(multipolygonRelation, 166 DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(Collections.singleton(multipolygonRelation)), 167 Main.main.getEditLayer())); 168 } 162 169 } 163 170 // create/update multipolygon relation -
trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
r7937 r7946 24 24 public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAction { 25 25 26 private Collection<OsmPrimitive> incompleteMembers; 27 26 28 /** 27 29 * Constructs a new <code>DownloadSelectedIncompleteMembersAction</code>. … … 38 40 * @return The set of incomplete members of the given relations. 39 41 */ 40 public Set<OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) { 42 public static Set<OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) { 41 43 Set<OsmPrimitive> ret = new HashSet<>(); 42 44 for (Relation r : rels) { 43 ret.addAll(r.getIncompleteMembers()); 45 ret.addAll(Utils.filter(r.getIncompleteMembers(), new Predicate<OsmPrimitive>() { 46 @Override 47 public boolean evaluate(OsmPrimitive osm) { 48 return !osm.isNew(); 49 } 50 })); 44 51 } 45 52 return ret; … … 51 58 Main.worker.submit(new DownloadRelationMemberTask( 52 59 relations, 53 buildSetOfIncompleteMembers(relations),60 incompleteMembers, 54 61 Main.main.getEditLayer())); 55 62 } … … 59 66 // selected relations with incomplete members 60 67 this.relations = Utils.filter(getRelations(primitives), new Predicate<Relation>(){ 61 @Override public boolean evaluate(Relation r) { 62 return !r.isNew() && r.hasIncompleteMembers(); 68 @Override 69 public boolean evaluate(Relation r) { 70 return r.hasIncompleteMembers(); 63 71 }}); 72 this.incompleteMembers = buildSetOfIncompleteMembers(relations); 64 73 updateEnabledState(); 65 74 } … … 67 76 @Override 68 77 protected void updateEnabledState() { 69 setEnabled(!relations.isEmpty() && !Main.isOffline(OnlineResource.OSM_API)); 78 setEnabled(!relations.isEmpty() &&!incompleteMembers.isEmpty() && !Main.isOffline(OnlineResource.OSM_API)); 70 79 } 71 80 }
Note:
See TracChangeset
for help on using the changeset viewer.