Ignore:
Timestamp:
2018-02-18T05:02:23+01:00 (6 years ago)
Author:
Don-vip
Message:

see #8039, see #10456 - support read-only data layers

Location:
trunk/src/org/openstreetmap/josm/actions/relation
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java

    r13130 r13434  
    1414import org.openstreetmap.josm.command.SequenceCommand;
    1515import org.openstreetmap.josm.data.SelectionChangedListener;
     16import org.openstreetmap.josm.data.osm.DataSet;
    1617import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1718import org.openstreetmap.josm.data.osm.Relation;
     
    3940        Collection<Command> cmds = new LinkedList<>();
    4041        for (Relation orig : relations) {
    41             Command c = GenericRelationEditor.addPrimitivesToRelation(orig, MainApplication.getLayerManager().getEditDataSet().getSelected());
     42            Command c = GenericRelationEditor.addPrimitivesToRelation(orig, MainApplication.getLayerManager().getActiveDataSet().getSelected());
    4243            if (c != null) {
    4344                cmds.add(c);
     
    5758    @Override
    5859    public void updateEnabledState() {
    59         putValue(NAME, trn("Add selection to {0} relation", "Add selection to {0} relations",
    60                 relations.size(), relations.size()));
     60        int size = relations.size();
     61        putValue(NAME, trn("Add selection to {0} relation", "Add selection to {0} relations", size, size));
     62        DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
     63        if (ds != null) {
     64            selectionChanged(ds.getSelected());
     65        } else {
     66            setEnabled(false);
     67        }
    6168    }
    6269
    6370    @Override
    6471    public void selectionChanged(final Collection<? extends OsmPrimitive> newSelection) {
    65         GuiHelper.runInEDT(() -> setEnabled(newSelection != null && !newSelection.isEmpty()));
     72        GuiHelper.runInEDT(() -> setEnabled(newSelection != null && !newSelection.isEmpty() && !relations.isEmpty()
     73                && relations.stream().map(Relation::getDataSet).noneMatch(DataSet::isReadOnly)));
    6674    }
    6775}
  • trunk/src/org/openstreetmap/josm/actions/relation/DeleteRelationsAction.java

    r12636 r13434  
    88
    99import org.openstreetmap.josm.actions.mapmode.DeleteAction;
     10import org.openstreetmap.josm.data.osm.DataSet;
    1011import org.openstreetmap.josm.data.osm.Relation;
    1112import org.openstreetmap.josm.gui.MainApplication;
     
    4748        deleteRelation(relations);
    4849    }
     50
     51    @Override
     52    protected void updateEnabledState() {
     53        setEnabled(!relations.isEmpty() && relations.stream().map(Relation::getDataSet).noneMatch(DataSet::isReadOnly));
     54    }
    4955}
  • trunk/src/org/openstreetmap/josm/actions/relation/DuplicateRelationAction.java

    r12636 r13434  
    5252    protected void updateEnabledState() {
    5353        // only one selected relation can be edited
    54         setEnabled(relations.size() == 1);
     54        setEnabled(relations.size() == 1 && !relations.iterator().next().getDataSet().isReadOnly());
    5555    }
    5656}
  • trunk/src/org/openstreetmap/josm/actions/relation/EditRelationAction.java

    r12846 r13434  
    1313
    1414import org.openstreetmap.josm.Main;
     15import org.openstreetmap.josm.data.osm.DataSet;
    1516import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1617import org.openstreetmap.josm.data.osm.Relation;
     
    8889    protected void updateEnabledState() {
    8990        boolean enabled = false;
    90         for (Relation r : relations) {
    91             if (!r.isDeleted()) {
    92                 enabled = true;
    93                 break;
     91        if (relations.stream().map(r -> r.getDataSet()).noneMatch(DataSet::isReadOnly)) {
     92            for (Relation r : relations) {
     93                if (!r.isDeleted()) {
     94                    enabled = true;
     95                    break;
     96                }
    9497            }
    9598        }
  • trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java

    r13130 r13434  
    4343        }
    4444        if (add) {
    45             MainApplication.getLayerManager().getEditLayer().data.addSelected(members);
     45            MainApplication.getLayerManager().getActiveDataSet().addSelected(members);
    4646        } else {
    47             MainApplication.getLayerManager().getEditLayer().data.setSelected(members);
     47            MainApplication.getLayerManager().getActiveDataSet().setSelected(members);
    4848        }
    4949    }
  • trunk/src/org/openstreetmap/josm/actions/relation/SelectRelationAction.java

    r12636 r13434  
    66import java.awt.event.ActionEvent;
    77
     8import org.openstreetmap.josm.data.osm.DataSet;
    89import org.openstreetmap.josm.gui.MainApplication;
    9 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1010import org.openstreetmap.josm.tools.ImageProvider;
    1111
     
    3434    public void actionPerformed(ActionEvent e) {
    3535        if (!isEnabled() || relations.isEmpty()) return;
    36         OsmDataLayer editLayer = MainApplication.getLayerManager().getEditLayer();
    37         if (editLayer == null || editLayer.data == null) return;
     36        DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
     37        if (ds == null) return;
    3838        if (add) {
    39             editLayer.data.addSelected(relations);
     39            ds.addSelected(relations);
    4040        } else {
    41             editLayer.data.setSelected(relations);
     41            ds.setSelected(relations);
    4242        }
    4343    }
Note: See TracChangeset for help on using the changeset viewer.