Changeset 13957 in josm for trunk/src/org/openstreetmap/josm/actions
- Timestamp:
- 2018-06-18T21:53:59+02:00 (7 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/actions
- Files:
-
- 1 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
r13486 r13957 168 168 } else if (multipolygonRelation.hasIncompleteMembers()) { 169 169 MainApplication.worker.submit(new DownloadRelationMemberTask(multipolygonRelation, 170 DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(Collections.singleton(multipolygonRelation)), 170 Utils.filteredCollection( 171 DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers( 172 Collections.singleton(multipolygonRelation)), OsmPrimitive.class), 171 173 editLayer)); 172 174 } -
trunk/src/org/openstreetmap/josm/actions/OsmPrimitiveAction.java
r8512 r13957 11 11 * Interface used to enable/disable all primitive-related actions, even those registered by plugins. 12 12 * @since 5821 13 * @deprecated Use {@link IPrimitiveAction} instead 13 14 */ 15 @Deprecated 14 16 public interface OsmPrimitiveAction extends Action { 15 17 -
trunk/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java
r13559 r13957 8 8 9 9 import org.openstreetmap.josm.Main; 10 import org.openstreetmap.josm.actions.OsmPrimitiveAction; 11 import org.openstreetmap.josm.data.osm.DataSet; 10 import org.openstreetmap.josm.actions.IPrimitiveAction; 12 11 import org.openstreetmap.josm.data.osm.DownloadPolicy; 13 import org.openstreetmap.josm.data.osm.OsmPrimitive; 14 import org.openstreetmap.josm.data.osm.Relation; 12 import org.openstreetmap.josm.data.osm.IPrimitive; 13 import org.openstreetmap.josm.data.osm.IRelation; 14 import org.openstreetmap.josm.data.osm.OsmData; 15 15 import org.openstreetmap.josm.io.OnlineResource; 16 16 import org.openstreetmap.josm.tools.SubclassFilteredCollection; … … 20 20 * to be disabled if the collection is empty 21 21 * @since 5793 22 * @since 13957 (signature) 22 23 */ 23 public abstract class AbstractRelationAction extends AbstractAction implements OsmPrimitiveAction {24 public abstract class AbstractRelationAction extends AbstractAction implements IPrimitiveAction { 24 25 /** relation collection */ 25 protected transient Collection< Relation> relations = Collections.<Relation>emptySet();26 protected transient Collection<IRelation<?>> relations = Collections.<IRelation<?>>emptySet(); 26 27 27 28 /** … … 30 31 * @return the relation contained in {@code primitives} 31 32 */ 32 protected static final Collection< Relation> getRelations(Collection<? extendsOsmPrimitive> primitives) {33 protected static final Collection<IRelation<?>> getRelations(Collection<? extends IPrimitive> primitives) { 33 34 if (primitives == null || primitives.isEmpty()) { 34 return Collections.< Relation>emptySet();35 return Collections.<IRelation<?>>emptySet(); 35 36 } else { 36 return new SubclassFilteredCollection<>(primitives, Relation.class::isInstance); 37 return new SubclassFilteredCollection<>(primitives, IRelation.class::isInstance); 37 38 } 38 39 } 39 40 40 41 @Override 41 public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {42 public void setPrimitives(Collection<? extends IPrimitive> primitives) { 42 43 this.relations = getRelations(primitives); 43 44 updateEnabledState(); … … 55 56 return false; 56 57 } 57 DataSetds = relations.iterator().next().getDataSet();58 OsmData<?, ?, ?, ?> ds = relations.iterator().next().getDataSet(); 58 59 return !Main.isOffline(OnlineResource.OSM_API) 59 60 && ds != null && !ds.isLocked() && !DownloadPolicy.BLOCKED.equals(ds.getDownloadPolicy()); -
trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
r13925 r13957 14 14 import org.openstreetmap.josm.command.SequenceCommand; 15 15 import org.openstreetmap.josm.data.osm.DataSelectionListener; 16 import org.openstreetmap.josm.data.osm. DataSet;17 import org.openstreetmap.josm.data.osm.Osm Primitive;16 import org.openstreetmap.josm.data.osm.IPrimitive; 17 import org.openstreetmap.josm.data.osm.OsmData; 18 18 import org.openstreetmap.josm.data.osm.OsmUtils; 19 19 import org.openstreetmap.josm.data.osm.Relation; … … 23 23 import org.openstreetmap.josm.gui.util.GuiHelper; 24 24 import org.openstreetmap.josm.tools.ImageProvider; 25 import org.openstreetmap.josm.tools.Utils; 25 26 26 27 /** … … 40 41 public void actionPerformed(ActionEvent e) { 41 42 Collection<Command> cmds = new LinkedList<>(); 42 for (Relation orig : relations) { 43 for (Relation orig : Utils.filteredCollection(relations, Relation.class)) { 43 44 Command c = GenericRelationEditor.addPrimitivesToRelation(orig, MainApplication.getLayerManager().getActiveDataSet().getSelected()); 44 45 if (c != null) { … … 61 62 int size = relations.size(); 62 63 putValue(NAME, trn("Add selection to {0} relation", "Add selection to {0} relations", size, size)); 63 DataSetds = MainApplication.getLayerManager().getActiveDataSet();64 OsmData<?, ?, ?, ?> ds = MainApplication.getLayerManager().getActiveData(); 64 65 if (ds != null) { 65 66 selectionChanged(ds.getSelected()); … … 69 70 } 70 71 71 private void selectionChanged(final Collection<? extends OsmPrimitive> newSelection) {72 private void selectionChanged(final Collection<? extends IPrimitive> newSelection) { 72 73 GuiHelper.runInEDT(() -> setEnabled(newSelection != null && !newSelection.isEmpty() 73 74 && OsmUtils.isOsmCollectionEditable(relations))); -
trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java
r13611 r13957 14 14 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 15 15 import org.openstreetmap.josm.tools.ImageProvider; 16 import org.openstreetmap.josm.tools.Utils; 16 17 17 18 /** … … 46 47 if (!isEnabled()) 47 48 return; 48 deleteRelation(relations); 49 deleteRelation(Utils.filteredCollection(relations, Relation.class)); 49 50 } 50 51 -
trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
r13486 r13957 8 8 import java.util.Collection; 9 9 10 import org.openstreetmap.josm.data.osm.OsmPrimitive; 10 import org.openstreetmap.josm.data.osm.IPrimitive; 11 import org.openstreetmap.josm.data.osm.Relation; 11 12 import org.openstreetmap.josm.gui.MainApplication; 12 13 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask; 13 14 import org.openstreetmap.josm.tools.ImageProvider; 14 15 import org.openstreetmap.josm.tools.SubclassFilteredCollection; 16 import org.openstreetmap.josm.tools.Utils; 15 17 16 18 /** … … 33 35 public void actionPerformed(ActionEvent e) { 34 36 if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return; 35 MainApplication.worker.submit(new DownloadRelationTask(relations, MainApplication.getLayerManager().getEditLayer())); 37 MainApplication.worker.submit(new DownloadRelationTask( 38 Utils.filteredCollection(relations, Relation.class), MainApplication.getLayerManager().getEditLayer())); 36 39 } 37 40 38 41 @Override 39 public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {42 public void setPrimitives(Collection<? extends IPrimitive> primitives) { 40 43 // selected non-new relations 41 44 this.relations = SubclassFilteredCollection.filter(getRelations(primitives), r -> !r.isNew()); -
trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
r13486 r13957 9 9 import java.util.Set; 10 10 11 import org.openstreetmap.josm.data.osm.IPrimitive; 12 import org.openstreetmap.josm.data.osm.IRelation; 11 13 import org.openstreetmap.josm.data.osm.OsmPrimitive; 12 14 import org.openstreetmap.josm.data.osm.Relation; … … 15 17 import org.openstreetmap.josm.tools.ImageProvider; 16 18 import org.openstreetmap.josm.tools.SubclassFilteredCollection; 19 import org.openstreetmap.josm.tools.Utils; 17 20 18 21 /** … … 22 25 public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAction { 23 26 24 private transient Collection< OsmPrimitive> incompleteMembers;27 private transient Collection<IPrimitive> incompleteMembers; 25 28 26 29 /** … … 38 41 * @return The set of incomplete members of the given relations. 39 42 */ 40 public static Set< OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) {41 Set< OsmPrimitive> ret = new HashSet<>();42 for ( Relationr : rels) {43 public static Set<IPrimitive> buildSetOfIncompleteMembers(Collection<IRelation<?>> rels) { 44 Set<IPrimitive> ret = new HashSet<>(); 45 for (IRelation<?> r : rels) { 43 46 ret.addAll(SubclassFilteredCollection.filter(r.getIncompleteMembers(), osm -> !osm.isNew())); 44 47 } … … 50 53 if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return; 51 54 MainApplication.worker.submit(new DownloadRelationMemberTask( 52 relations, 53 incompleteMembers, 55 Utils.filteredCollection(relations, Relation.class), 56 Utils.filteredCollection(incompleteMembers, OsmPrimitive.class), 54 57 MainApplication.getLayerManager().getEditLayer())); 55 58 } 56 59 57 60 @Override 58 public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {61 public void setPrimitives(Collection<? extends IPrimitive> primitives) { 59 62 // selected relations with incomplete members 60 this.relations = SubclassFilteredCollection.filter(getRelations(primitives), Relation::hasIncompleteMembers); 63 this.relations = SubclassFilteredCollection.filter(getRelations(primitives), IRelation::hasIncompleteMembers); 61 64 this.incompleteMembers = buildSetOfIncompleteMembers(relations); 62 65 updateEnabledState(); -
trunk/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java
r13453 r13957 6 6 import java.awt.event.ActionEvent; 7 7 8 import org.openstreetmap.josm.data.osm.IRelation; 8 9 import org.openstreetmap.josm.data.osm.Relation; 9 10 import org.openstreetmap.josm.gui.MainApplication; … … 45 46 if (!isEnabled() || relations.isEmpty()) 46 47 return; 47 Relation r = relations.iterator().next(); 48 duplicateRelationAndLaunchEditor(r); 48 IRelation<?> r = relations.iterator().next(); 49 if (r instanceof Relation) { 50 duplicateRelationAndLaunchEditor((Relation) r); 51 } 49 52 } 50 53 … … 52 55 protected void updateEnabledState() { 53 56 // only one selected relation can be edited 54 setEnabled(relations.size() == 1 && !relations.iterator().next().getDataSet().isLocked()); 57 setEnabled(relations.size() == 1 58 && relations.iterator().next() instanceof Relation 59 && !relations.iterator().next().getDataSet().isLocked()); 55 60 } 56 61 } -
trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java
r13611 r13957 13 13 14 14 import org.openstreetmap.josm.Main; 15 import org.openstreetmap.josm.data.osm.IRelation; 15 16 import org.openstreetmap.josm.data.osm.OsmPrimitive; 16 17 import org.openstreetmap.josm.data.osm.OsmUtils; … … 22 23 import org.openstreetmap.josm.spi.preferences.Config; 23 24 import org.openstreetmap.josm.tools.ImageProvider; 25 import org.openstreetmap.josm.tools.SubclassFilteredCollection; 26 import org.openstreetmap.josm.tools.Utils; 24 27 25 28 /** … … 71 74 @Override 72 75 public void actionPerformed(ActionEvent e) { 73 if (!isEnabled() || relations.isEmpty()) return; 74 if (relations.size() > Config.getPref().getInt("warn.open.maxrelations", 5) && 76 SubclassFilteredCollection<IRelation<?>, Relation> filteredRelations = Utils.filteredCollection(relations, Relation.class); 77 if (!isEnabled() || filteredRelations.isEmpty()) return; 78 if (filteredRelations.size() > Config.getPref().getInt("warn.open.maxrelations", 5) && 75 79 /* I18N english text for value 1 makes no real sense, never called for values <= maxrel (usually 5) */ 76 80 JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(Main.parent, 77 81 "<html>"+trn("You are about to open <b>{0}</b> different relation editor simultaneously.<br/>Do you want to continue?", 78 82 "You are about to open <b>{0}</b> different relation editors simultaneously.<br/>Do you want to continue?", 79 relations.size(),relations.size())+"</html>",83 filteredRelations.size(), filteredRelations.size())+"</html>", 80 84 tr("Confirmation"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE)) { 81 85 return; 82 86 } 83 for (Relation r : relations) {87 for (Relation r : filteredRelations) { 84 88 launchEditor(r); 85 89 } … … 89 93 protected void updateEnabledState() { 90 94 boolean enabled = false; 91 if (OsmUtils.isOsmCollectionEditable(relations)) { 92 for (Relation r : relations) { 95 SubclassFilteredCollection<IRelation<?>, Relation> filteredRelations = Utils.filteredCollection(relations, Relation.class); 96 if (OsmUtils.isOsmCollectionEditable(filteredRelations)) { 97 for (Relation r : filteredRelations) { 93 98 if (!r.isDeleted()) { 94 99 enabled = true; -
trunk/src/org/openstreetmap/josm/actions/relation/ExportRelationToGpxAction.java
r13852 r13957 23 23 24 24 import org.openstreetmap.josm.actions.GpxExportAction; 25 import org.openstreetmap.josm.actions. OsmPrimitiveAction;25 import org.openstreetmap.josm.actions.IPrimitiveAction; 26 26 import org.openstreetmap.josm.data.gpx.GpxData; 27 27 import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack; 28 28 import org.openstreetmap.josm.data.gpx.WayPoint; 29 import org.openstreetmap.josm.data.osm.IPrimitive; 29 30 import org.openstreetmap.josm.data.osm.Node; 30 import org.openstreetmap.josm.data.osm.OsmPrimitive;31 31 import org.openstreetmap.josm.data.osm.Relation; 32 32 import org.openstreetmap.josm.data.osm.RelationMember; … … 47 47 */ 48 48 public class ExportRelationToGpxAction extends GpxExportAction 49 implements OsmPrimitiveAction {49 implements IPrimitiveAction { 50 50 51 51 /** Enumeration of export variants */ … … 235 235 236 236 @Override 237 public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {237 public void setPrimitives(Collection<? extends IPrimitive> primitives) { 238 238 relations = Collections.<Relation>emptySet(); 239 239 if (primitives != null && !primitives.isEmpty()) { -
trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java
r13434 r13957 8 8 import java.util.Set; 9 9 10 import org.openstreetmap.josm.data.osm. OsmPrimitive;11 import org.openstreetmap.josm.data.osm.Relation; 10 import org.openstreetmap.josm.data.osm.IPrimitive; 11 import org.openstreetmap.josm.data.osm.IRelation; 12 12 import org.openstreetmap.josm.gui.MainApplication; 13 13 import org.openstreetmap.josm.tools.ImageProvider; … … 38 38 if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return; 39 39 40 Set< OsmPrimitive> members = new HashSet<>();41 for ( Relationr: relations) {40 Set<IPrimitive> members = new HashSet<>(); 41 for (IRelation<?> r: relations) { 42 42 members.addAll(r.getMemberPrimitivesList()); 43 43 } 44 44 if (add) { 45 MainApplication.getLayerManager().getActiveData Set().addSelected(members);45 MainApplication.getLayerManager().getActiveData().addSelected(members); 46 46 } else { 47 MainApplication.getLayerManager().getActiveData Set().setSelected(members);47 MainApplication.getLayerManager().getActiveData().setSelected(members); 48 48 } 49 49 } -
trunk/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java
r13434 r13957 6 6 import java.awt.event.ActionEvent; 7 7 8 import org.openstreetmap.josm.data.osm. DataSet;8 import org.openstreetmap.josm.data.osm.OsmData; 9 9 import org.openstreetmap.josm.gui.MainApplication; 10 10 import org.openstreetmap.josm.tools.ImageProvider; … … 34 34 public void actionPerformed(ActionEvent e) { 35 35 if (!isEnabled() || relations.isEmpty()) return; 36 DataSetds = MainApplication.getLayerManager().getActiveDataSet();36 OsmData<?, ?, ?, ?> ds = MainApplication.getLayerManager().getActiveData(); 37 37 if (ds == null) return; 38 38 if (add) {
Note:
See TracChangeset
for help on using the changeset viewer.