Ignore:
Timestamp:
2018-06-18T21:53:59+02:00 (7 years ago)
Author:
Don-vip
Message:

use IRelation in RelationListDialog and *RelationActions

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  
    168168            } else if (multipolygonRelation.hasIncompleteMembers()) {
    169169                MainApplication.worker.submit(new DownloadRelationMemberTask(multipolygonRelation,
    170                         DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(Collections.singleton(multipolygonRelation)),
     170                        Utils.filteredCollection(
     171                            DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(
     172                                    Collections.singleton(multipolygonRelation)), OsmPrimitive.class),
    171173                        editLayer));
    172174            }
  • trunk/src/org/openstreetmap/josm/actions/OsmPrimitiveAction.java

    r8512 r13957  
    1111 * Interface used to enable/disable all primitive-related actions, even those registered by plugins.
    1212 * @since 5821
     13 * @deprecated Use {@link IPrimitiveAction} instead
    1314 */
     15@Deprecated
    1416public interface OsmPrimitiveAction extends Action {
    1517
  • trunk/src/org/openstreetmap/josm/actions/relation/AbstractRelationAction.java

    r13559 r13957  
    88
    99import org.openstreetmap.josm.Main;
    10 import org.openstreetmap.josm.actions.OsmPrimitiveAction;
    11 import org.openstreetmap.josm.data.osm.DataSet;
     10import org.openstreetmap.josm.actions.IPrimitiveAction;
    1211import org.openstreetmap.josm.data.osm.DownloadPolicy;
    13 import org.openstreetmap.josm.data.osm.OsmPrimitive;
    14 import org.openstreetmap.josm.data.osm.Relation;
     12import org.openstreetmap.josm.data.osm.IPrimitive;
     13import org.openstreetmap.josm.data.osm.IRelation;
     14import org.openstreetmap.josm.data.osm.OsmData;
    1515import org.openstreetmap.josm.io.OnlineResource;
    1616import org.openstreetmap.josm.tools.SubclassFilteredCollection;
     
    2020 * to be disabled if the collection is empty
    2121 * @since 5793
     22 * @since 13957 (signature)
    2223 */
    23 public abstract class AbstractRelationAction extends AbstractAction implements OsmPrimitiveAction {
     24public abstract class AbstractRelationAction extends AbstractAction implements IPrimitiveAction {
    2425    /** relation collection */
    25     protected transient Collection<Relation> relations = Collections.<Relation>emptySet();
     26    protected transient Collection<IRelation<?>> relations = Collections.<IRelation<?>>emptySet();
    2627
    2728    /**
     
    3031     * @return the relation contained in {@code primitives}
    3132     */
    32     protected static final Collection<Relation> getRelations(Collection<? extends OsmPrimitive> primitives) {
     33    protected static final Collection<IRelation<?>> getRelations(Collection<? extends IPrimitive> primitives) {
    3334        if (primitives == null || primitives.isEmpty()) {
    34             return Collections.<Relation>emptySet();
     35            return Collections.<IRelation<?>>emptySet();
    3536        } else {
    36             return new SubclassFilteredCollection<>(primitives, Relation.class::isInstance);
     37            return new SubclassFilteredCollection<>(primitives, IRelation.class::isInstance);
    3738        }
    3839    }
    3940
    4041    @Override
    41     public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
     42    public void setPrimitives(Collection<? extends IPrimitive> primitives) {
    4243        this.relations = getRelations(primitives);
    4344        updateEnabledState();
     
    5556            return false;
    5657        }
    57         DataSet ds = relations.iterator().next().getDataSet();
     58        OsmData<?, ?, ?, ?> ds = relations.iterator().next().getDataSet();
    5859        return !Main.isOffline(OnlineResource.OSM_API)
    5960            && ds != null && !ds.isLocked() && !DownloadPolicy.BLOCKED.equals(ds.getDownloadPolicy());
  • trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java

    r13925 r13957  
    1414import org.openstreetmap.josm.command.SequenceCommand;
    1515import org.openstreetmap.josm.data.osm.DataSelectionListener;
    16 import org.openstreetmap.josm.data.osm.DataSet;
    17 import org.openstreetmap.josm.data.osm.OsmPrimitive;
     16import org.openstreetmap.josm.data.osm.IPrimitive;
     17import org.openstreetmap.josm.data.osm.OsmData;
    1818import org.openstreetmap.josm.data.osm.OsmUtils;
    1919import org.openstreetmap.josm.data.osm.Relation;
     
    2323import org.openstreetmap.josm.gui.util.GuiHelper;
    2424import org.openstreetmap.josm.tools.ImageProvider;
     25import org.openstreetmap.josm.tools.Utils;
    2526
    2627/**
     
    4041    public void actionPerformed(ActionEvent e) {
    4142        Collection<Command> cmds = new LinkedList<>();
    42         for (Relation orig : relations) {
     43        for (Relation orig : Utils.filteredCollection(relations, Relation.class)) {
    4344            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, MainApplication.getLayerManager().getActiveDataSet().getSelected());
    4445            if (c != null) {
     
    6162        int size = relations.size();
    6263        putValue(NAME, trn("Add selection to {0} relation", "Add selection to {0} relations", size, size));
    63         DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
     64        OsmData<?, ?, ?, ?> ds = MainApplication.getLayerManager().getActiveData();
    6465        if (ds != null) {
    6566            selectionChanged(ds.getSelected());
     
    6970    }
    7071
    71     private void selectionChanged(final Collection<? extends OsmPrimitive> newSelection) {
     72    private void selectionChanged(final Collection<? extends IPrimitive> newSelection) {
    7273        GuiHelper.runInEDT(() -> setEnabled(newSelection != null && !newSelection.isEmpty()
    7374                && OsmUtils.isOsmCollectionEditable(relations)));
  • trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java

    r13611 r13957  
    1414import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1515import org.openstreetmap.josm.tools.ImageProvider;
     16import org.openstreetmap.josm.tools.Utils;
    1617
    1718/**
     
    4647        if (!isEnabled())
    4748            return;
    48         deleteRelation(relations);
     49        deleteRelation(Utils.filteredCollection(relations, Relation.class));
    4950    }
    5051
  • trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java

    r13486 r13957  
    88import java.util.Collection;
    99
    10 import org.openstreetmap.josm.data.osm.OsmPrimitive;
     10import org.openstreetmap.josm.data.osm.IPrimitive;
     11import org.openstreetmap.josm.data.osm.Relation;
    1112import org.openstreetmap.josm.gui.MainApplication;
    1213import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
    1314import org.openstreetmap.josm.tools.ImageProvider;
    1415import org.openstreetmap.josm.tools.SubclassFilteredCollection;
     16import org.openstreetmap.josm.tools.Utils;
    1517
    1618/**
     
    3335    public void actionPerformed(ActionEvent e) {
    3436        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()));
    3639    }
    3740
    3841    @Override
    39     public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
     42    public void setPrimitives(Collection<? extends IPrimitive> primitives) {
    4043        // selected non-new relations
    4144        this.relations = SubclassFilteredCollection.filter(getRelations(primitives), r -> !r.isNew());
  • trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java

    r13486 r13957  
    99import java.util.Set;
    1010
     11import org.openstreetmap.josm.data.osm.IPrimitive;
     12import org.openstreetmap.josm.data.osm.IRelation;
    1113import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1214import org.openstreetmap.josm.data.osm.Relation;
     
    1517import org.openstreetmap.josm.tools.ImageProvider;
    1618import org.openstreetmap.josm.tools.SubclassFilteredCollection;
     19import org.openstreetmap.josm.tools.Utils;
    1720
    1821/**
     
    2225public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAction {
    2326
    24     private transient Collection<OsmPrimitive> incompleteMembers;
     27    private transient Collection<IPrimitive> incompleteMembers;
    2528
    2629    /**
     
    3841     * @return The set of incomplete members of the given relations.
    3942     */
    40     public static Set<OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) {
    41         Set<OsmPrimitive> ret = new HashSet<>();
    42         for (Relation r : rels) {
     43    public static Set<IPrimitive> buildSetOfIncompleteMembers(Collection<IRelation<?>> rels) {
     44        Set<IPrimitive> ret = new HashSet<>();
     45        for (IRelation<?> r : rels) {
    4346            ret.addAll(SubclassFilteredCollection.filter(r.getIncompleteMembers(), osm -> !osm.isNew()));
    4447        }
     
    5053        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
    5154        MainApplication.worker.submit(new DownloadRelationMemberTask(
    52                 relations,
    53                 incompleteMembers,
     55                Utils.filteredCollection(relations, Relation.class),
     56                Utils.filteredCollection(incompleteMembers, OsmPrimitive.class),
    5457                MainApplication.getLayerManager().getEditLayer()));
    5558    }
    5659
    5760    @Override
    58     public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
     61    public void setPrimitives(Collection<? extends IPrimitive> primitives) {
    5962        // selected relations with incomplete members
    60         this.relations = SubclassFilteredCollection.filter(getRelations(primitives), Relation::hasIncompleteMembers);
     63        this.relations = SubclassFilteredCollection.filter(getRelations(primitives), IRelation::hasIncompleteMembers);
    6164        this.incompleteMembers = buildSetOfIncompleteMembers(relations);
    6265        updateEnabledState();
  • trunk/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java

    r13453 r13957  
    66import java.awt.event.ActionEvent;
    77
     8import org.openstreetmap.josm.data.osm.IRelation;
    89import org.openstreetmap.josm.data.osm.Relation;
    910import org.openstreetmap.josm.gui.MainApplication;
     
    4546        if (!isEnabled() || relations.isEmpty())
    4647            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        }
    4952    }
    5053
     
    5255    protected void updateEnabledState() {
    5356        // 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());
    5560    }
    5661}
  • trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java

    r13611 r13957  
    1313
    1414import org.openstreetmap.josm.Main;
     15import org.openstreetmap.josm.data.osm.IRelation;
    1516import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1617import org.openstreetmap.josm.data.osm.OsmUtils;
     
    2223import org.openstreetmap.josm.spi.preferences.Config;
    2324import org.openstreetmap.josm.tools.ImageProvider;
     25import org.openstreetmap.josm.tools.SubclassFilteredCollection;
     26import org.openstreetmap.josm.tools.Utils;
    2427
    2528/**
     
    7174    @Override
    7275    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) &&
    7579            /* I18N english text for value 1 makes no real sense, never called for values <= maxrel (usually 5) */
    7680            JOptionPane.OK_OPTION != JOptionPane.showConfirmDialog(Main.parent,
    7781                    "<html>"+trn("You are about to open <b>{0}</b> different relation editor simultaneously.<br/>Do you want to continue?",
    7882                            "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>",
    8084                    tr("Confirmation"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE)) {
    8185            return;
    8286        }
    83         for (Relation r : relations) {
     87        for (Relation r : filteredRelations) {
    8488            launchEditor(r);
    8589        }
     
    8993    protected void updateEnabledState() {
    9094        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) {
    9398                if (!r.isDeleted()) {
    9499                    enabled = true;
  • trunk/src/org/openstreetmap/josm/actions/relation/ExportRelationToGpxAction.java

    r13852 r13957  
    2323
    2424import org.openstreetmap.josm.actions.GpxExportAction;
    25 import org.openstreetmap.josm.actions.OsmPrimitiveAction;
     25import org.openstreetmap.josm.actions.IPrimitiveAction;
    2626import org.openstreetmap.josm.data.gpx.GpxData;
    2727import org.openstreetmap.josm.data.gpx.ImmutableGpxTrack;
    2828import org.openstreetmap.josm.data.gpx.WayPoint;
     29import org.openstreetmap.josm.data.osm.IPrimitive;
    2930import org.openstreetmap.josm.data.osm.Node;
    30 import org.openstreetmap.josm.data.osm.OsmPrimitive;
    3131import org.openstreetmap.josm.data.osm.Relation;
    3232import org.openstreetmap.josm.data.osm.RelationMember;
     
    4747 */
    4848public class ExportRelationToGpxAction extends GpxExportAction
    49     implements OsmPrimitiveAction {
     49    implements IPrimitiveAction {
    5050
    5151    /** Enumeration of export variants */
     
    235235
    236236    @Override
    237     public void setPrimitives(Collection<? extends OsmPrimitive> primitives) {
     237    public void setPrimitives(Collection<? extends IPrimitive> primitives) {
    238238        relations = Collections.<Relation>emptySet();
    239239        if (primitives != null && !primitives.isEmpty()) {
  • trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java

    r13434 r13957  
    88import java.util.Set;
    99
    10 import org.openstreetmap.josm.data.osm.OsmPrimitive;
    11 import org.openstreetmap.josm.data.osm.Relation;
     10import org.openstreetmap.josm.data.osm.IPrimitive;
     11import org.openstreetmap.josm.data.osm.IRelation;
    1212import org.openstreetmap.josm.gui.MainApplication;
    1313import org.openstreetmap.josm.tools.ImageProvider;
     
    3838        if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
    3939
    40         Set<OsmPrimitive> members = new HashSet<>();
    41         for (Relation r: relations) {
     40        Set<IPrimitive> members = new HashSet<>();
     41        for (IRelation<?> r: relations) {
    4242            members.addAll(r.getMemberPrimitivesList());
    4343        }
    4444        if (add) {
    45             MainApplication.getLayerManager().getActiveDataSet().addSelected(members);
     45            MainApplication.getLayerManager().getActiveData().addSelected(members);
    4646        } else {
    47             MainApplication.getLayerManager().getActiveDataSet().setSelected(members);
     47            MainApplication.getLayerManager().getActiveData().setSelected(members);
    4848        }
    4949    }
  • trunk/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java

    r13434 r13957  
    66import java.awt.event.ActionEvent;
    77
    8 import org.openstreetmap.josm.data.osm.DataSet;
     8import org.openstreetmap.josm.data.osm.OsmData;
    99import org.openstreetmap.josm.gui.MainApplication;
    1010import org.openstreetmap.josm.tools.ImageProvider;
     
    3434    public void actionPerformed(ActionEvent e) {
    3535        if (!isEnabled() || relations.isEmpty()) return;
    36         DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
     36        OsmData<?, ?, ?, ?> ds = MainApplication.getLayerManager().getActiveData();
    3737        if (ds == null) return;
    3838        if (add) {
Note: See TracChangeset for help on using the changeset viewer.