Changeset 32398 in osm for applications/editors/josm/plugins/reltoolbox/src/relcontext/actions/AddRemoveMemberAction.java
- Timestamp:
- 2016-06-25T11:56:57+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/reltoolbox/src/relcontext/actions/AddRemoveMemberAction.java
r32395 r32398 13 13 import org.openstreetmap.josm.command.ChangeCommand; 14 14 import org.openstreetmap.josm.command.Command; 15 import org.openstreetmap.josm.data.osm.DataSet; 15 16 import org.openstreetmap.josm.data.osm.Node; 16 17 import org.openstreetmap.josm.data.osm.OsmPrimitive; … … 49 50 @Override 50 51 public void actionPerformed(ActionEvent e) { 51 if (rel.get() == null )52 if (rel.get() == null) 52 53 return; 53 54 54 55 Relation r = new Relation(rel.get()); 55 56 56 Collection<OsmPrimitive> toAdd = new ArrayList<>(get CurrentDataSet().getSelected());57 Collection<OsmPrimitive> toAdd = new ArrayList<>(getLayerManager().getEditDataSet().getSelected()); 57 58 toAdd.remove(rel.get()); 58 59 toAdd.removeAll(r.getMemberPrimitives()); … … 62 63 63 64 // 1. remove all present members 64 r.removeMembersFor(get CurrentDataSet().getSelected());65 r.removeMembersFor(getLayerManager().getEditDataSet().getSelected()); 65 66 66 67 // 2. add all new members 67 68 for (OsmPrimitive p : toAdd) { 68 69 int pos = -1; //p instanceof Way ? findAdjacentMember(p, r) : -1; 69 if (pos < 0 ) {70 if (pos < 0) { 70 71 r.addMember(new RelationMember("", p)); 71 72 } else { … … 76 77 // 3. check for roles again (temporary) 77 78 Command roleFix = !isBroken && sortAndFix.needsFixing(r) ? sortAndFix.fixRelation(r) : null; 78 if (roleFix != null ) {79 if (roleFix != null) { 79 80 roleFix.executeCommand(); 80 81 } 81 82 82 if (!r.getMemberPrimitives().equals(rel.get().getMemberPrimitives()) ) {83 if (!r.getMemberPrimitives().equals(rel.get().getMemberPrimitives())) { 83 84 Main.main.undoRedo.add(new ChangeCommand(rel.get(), r)); 84 85 } … … 96 97 for (int i = 0; i < r.getMembersCount(); i++) { 97 98 if (r.getMember(i).getType().equals(OsmPrimitiveType.WAY)) { 98 Way rw = (Way)r.getMember(i).getMember(); 99 Way rw = (Way) r.getMember(i).getMember(); 99 100 Node firstNodeR = rw.firstNode(); 100 101 Node lastNodeR = rw.lastNode(); 101 if (firstNode.equals(firstNodeR) || firstNode.equals(lastNodeR) || lastNode.equals(firstNodeR) || lastNode.equals(lastNodeR) )102 if (firstNode.equals(firstNodeR) || firstNode.equals(lastNodeR) || lastNode.equals(firstNodeR) || lastNode.equals(lastNodeR)) 102 103 return i + 1; 103 104 } … … 114 115 @Override 115 116 protected void updateEnabledState() { 116 updateEnabledState(get CurrentDataSet() == null ? null : getCurrentDataSet().getSelected());117 updateEnabledState(getLayerManager().getEditDataSet() == null ? null : getLayerManager().getEditDataSet().getSelected()); 117 118 } 118 119 … … 134 135 // todo: change icon based on selection 135 136 final int state; // 0=unknown, 1=add, 2=remove, 3=both 136 if (getCurrentDataSet() == null || getCurrentDataSet().getSelected() == null 137 || getCurrentDataSet().getSelected().isEmpty() || rel == null || rel.get() == null ) { 137 DataSet ds = getLayerManager().getEditDataSet(); 138 if (ds == null || ds.getSelected() == null 139 || ds.getSelected().isEmpty() || rel == null || rel.get() == null) { 138 140 state = 0; 139 141 } else { 140 Collection<OsmPrimitive> toAdd = new ArrayList<>( getCurrentDataSet().getSelected());142 Collection<OsmPrimitive> toAdd = new ArrayList<>(ds.getSelected()); 141 143 toAdd.remove(rel.get()); 142 144 int selectedSize = toAdd.size(); 143 if (selectedSize == 0 ) {145 if (selectedSize == 0) { 144 146 state = 0; 145 147 } else { 146 148 toAdd.removeAll(rel.get().getMemberPrimitives()); 147 if (toAdd.isEmpty() ) {149 if (toAdd.isEmpty()) { 148 150 state = 2; 149 } else if (toAdd.size() < selectedSize ) {151 } else if (toAdd.size() < selectedSize) { 150 152 state = 3; 151 153 } else { … … 157 159 @Override 158 160 public void run() { 159 // String name = state == 0 ? "?" : state == 1 ? "+" : state == 2 ? "-" : "±";160 // putValue(Action.NAME, name);161 161 if (state == 0) { 162 // putValue(NAME, "?");163 162 putValue(LARGE_ICON_KEY, ImageProvider.get("relcontext", "addremove")); 164 163 } else {
Note:
See TracChangeset
for help on using the changeset viewer.
