Changeset 86 in josm for src/org/openstreetmap/josm/actions/mapmode
- Timestamp:
- 2006-04-21T14:31:51+02:00 (20 years ago)
- Location:
- src/org/openstreetmap/josm/actions/mapmode
- Files:
-
- 7 edited
- 1 moved
-
AddNodeAction.java (modified) (3 diffs)
-
AddSegmentAction.java (moved) (moved from src/org/openstreetmap/josm/actions/mapmode/AddLineSegmentAction.java ) (9 diffs)
-
AddWayAction.java (modified) (7 diffs)
-
DeleteAction.java (modified) (8 diffs)
-
MapMode.java (modified) (1 diff)
-
MoveAction.java (modified) (7 diffs)
-
SelectionAction.java (modified) (4 diffs)
-
ZoomAction.java (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/org/openstreetmap/josm/actions/mapmode/AddNodeAction.java
r71 r86 27 27 } 28 28 29 @Override 30 public void registerListener() { 29 @Override public void registerListener() { 31 30 super.registerListener(); 32 31 mv.addMouseListener(this); 33 32 } 34 33 35 @Override 36 public void unregisterListener() { 34 @Override public void unregisterListener() { 37 35 super.unregisterListener(); 38 36 mv.removeMouseListener(this); … … 43 41 * position. 44 42 */ 45 @Override 46 public void mouseClicked(MouseEvent e) { 43 @Override public void mouseClicked(MouseEvent e) { 47 44 if (e.getButton() == MouseEvent.BUTTON1) { 48 45 Node node = new Node(mv.getLatLon(e.getX(), e.getY())); … … 51 48 return; 52 49 } 53 mv.editLayer().add(new AddCommand(Main. main.ds, node));50 mv.editLayer().add(new AddCommand(Main.ds, node)); 54 51 mv.repaint(); 55 52 } -
src/org/openstreetmap/josm/actions/mapmode/AddSegmentAction.java
r84 r86 11 11 import org.openstreetmap.josm.Main; 12 12 import org.openstreetmap.josm.command.AddCommand; 13 import org.openstreetmap.josm.data.osm. LineSegment;13 import org.openstreetmap.josm.data.osm.Segment; 14 14 import org.openstreetmap.josm.data.osm.Node; 15 15 import org.openstreetmap.josm.data.osm.OsmPrimitive; … … 17 17 18 18 /** 19 * The user can add a new linesegment between two nodes by pressing on the19 * The user can add a new segment between two nodes by pressing on the 20 20 * starting node and dragging to the ending node. 21 21 * 22 * No linesegment can be created if there is already alinesegment containing22 * No segment can be created if there is already a segment containing 23 23 * both nodes. 24 24 * 25 25 * @author imi 26 26 */ 27 public class Add LineSegmentAction extends MapMode implements MouseListener {27 public class AddSegmentAction extends MapMode implements MouseListener { 28 28 29 29 /** … … 42 42 43 43 /** 44 * Create a new Add LineSegmentAction.44 * Create a new AddSegmentAction. 45 45 * @param mapFrame The MapFrame this action belongs to. 46 46 */ 47 public Add LineSegmentAction(MapFrame mapFrame) {48 super("Add Line Segment", "addlinesegment", "Add alinesegment between two nodes.", "G", KeyEvent.VK_G, mapFrame);47 public AddSegmentAction(MapFrame mapFrame) { 48 super("Add segment", "addlinesegment", "Add a segment between two nodes.", "G", KeyEvent.VK_G, mapFrame); 49 49 } 50 50 51 @Override 52 public void registerListener() { 51 @Override public void registerListener() { 53 52 super.registerListener(); 54 53 mv.addMouseListener(this); … … 56 55 } 57 56 58 @Override 59 public void unregisterListener() { 57 @Override public void unregisterListener() { 60 58 super.unregisterListener(); 61 59 mv.removeMouseListener(this); … … 65 63 66 64 67 @Override 68 public void actionPerformed(ActionEvent e) { 65 @Override public void actionPerformed(ActionEvent e) { 69 66 super.actionPerformed(e); 70 make LineSegment();67 makeSegment(); 71 68 } 72 69 … … 74 71 * If user clicked on a node, from the dragging with that node. 75 72 */ 76 @Override 77 public void mousePressed(MouseEvent e) { 73 @Override public void mousePressed(MouseEvent e) { 78 74 if (e.getButton() != MouseEvent.BUTTON1) 79 75 return; … … 91 87 * the mouse button now. 92 88 */ 93 @Override 94 public void mouseDragged(MouseEvent e) { 89 @Override public void mouseDragged(MouseEvent e) { 95 90 if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0) 96 91 return; … … 107 102 108 103 /** 109 * If left button was released, try to create the linesegment.104 * If left button was released, try to create the segment. 110 105 */ 111 @Override 112 public void mouseReleased(MouseEvent e) { 106 @Override public void mouseReleased(MouseEvent e) { 113 107 if (e.getButton() == MouseEvent.BUTTON1) { 114 make LineSegment();115 first = null; // release linesegment drawing108 makeSegment(); 109 first = null; // release segment drawing 116 110 } 117 111 } 118 112 119 113 /** 120 * Create the linesegment if first and second are different and there is121 * not already a linesegment.114 * Create the segment if first and second are different and there is 115 * not already a segment. 122 116 */ 123 private void make LineSegment() {117 private void makeSegment() { 124 118 if (first == null || second == null) { 125 119 first = null; … … 136 130 137 131 if (start != end) { 138 // try to find a linesegment139 for ( LineSegment ls : Main.main.ds.lineSegments)132 // try to find a segment 133 for (Segment ls : Main.ds.segments) 140 134 if ((start == ls.from && end == ls.to) || (end == ls.from && start == ls.to)) 141 return; // already a linesegment here - be happy, do nothing.135 return; // already a segment here - be happy, do nothing. 142 136 143 LineSegment ls = newLineSegment(start, end);144 mv.editLayer().add(new AddCommand(Main. main.ds, ls));137 Segment ls = new Segment(start, end); 138 mv.editLayer().add(new AddCommand(Main.ds, ls)); 145 139 } 146 140 -
src/org/openstreetmap/josm/actions/mapmode/AddWayAction.java
r68 r86 11 11 import org.openstreetmap.josm.Main; 12 12 import org.openstreetmap.josm.command.AddCommand; 13 import org.openstreetmap.josm.data.osm. LineSegment;13 import org.openstreetmap.josm.data.osm.Segment; 14 14 import org.openstreetmap.josm.data.osm.OsmPrimitive; 15 15 import org.openstreetmap.josm.data.osm.Way; … … 17 17 18 18 /** 19 * Add a new way from all selected linesegments.19 * Add a new way from all selected segments. 20 20 * 21 * If there is a selection when the mode is entered, all linesegments in this21 * If there is a selection when the mode is entered, all segments in this 22 22 * selection form a new way, except the user holds down Shift. 23 23 * 24 * The user can click on a linesegment. If he holds down Shift, no way is24 * The user can click on a segment. If he holds down Shift, no way is 25 25 * created yet. If he holds down Alt, the whole way is considered instead of 26 * the clicked linesegment. If the user holds down Ctrl, no way is created27 * and the clicked linesegment get removed from the list.26 * the clicked segment. If the user holds down Ctrl, no way is created 27 * and the clicked segment get removed from the list. 28 28 * 29 29 * Also, the user may select a rectangle as in selection mode. No node, area or … … 47 47 } 48 48 49 @Override 50 public void actionPerformed(ActionEvent e) { 49 @Override public void actionPerformed(ActionEvent e) { 51 50 makeWay(); 52 51 super.actionPerformed(e); … … 58 57 */ 59 58 private void makeWay() { 60 Collection<OsmPrimitive> selection = Main. main.ds.getSelected();59 Collection<OsmPrimitive> selection = Main.ds.getSelected(); 61 60 if (selection.isEmpty()) 62 61 return; 63 62 64 63 // form a new way 65 LinkedList< LineSegment>lineSegments = new LinkedList<LineSegment>();64 LinkedList<Segment> segments = new LinkedList<Segment>(); 66 65 int numberOfSelectedWays = 0; 67 66 for (OsmPrimitive osm : selection) { 68 67 if (osm instanceof Way) 69 68 numberOfSelectedWays++; 70 else if (osm instanceof LineSegment)71 lineSegments.add((LineSegment)osm);69 else if (osm instanceof Segment) 70 segments.add((Segment)osm); 72 71 } 73 72 … … 81 80 for (OsmPrimitive osm : selection) 82 81 if (osm instanceof Way) 83 lineSegments.addAll(((Way)osm).segments);82 segments.addAll(((Way)osm).segments); 84 83 } 85 84 } 86 85 87 // sort the linesegments in best possible order. This is done by:86 // sort the segments in best possible order. This is done by: 88 87 // 0 if no elements in list, quit 89 88 // 1 taking the first ls as pivot, remove it from list … … 91 90 // 3 if found, attach it, remove it from list, goto 2 92 91 // 4 if not found, save the pivot-string and goto 0 93 LinkedList< LineSegment> sortedLineSegments = new LinkedList<LineSegment>();94 while (! lineSegments.isEmpty()) {95 LinkedList< LineSegment> pivotList = new LinkedList<LineSegment>();96 pivotList.add( lineSegments.getFirst());97 lineSegments.removeFirst();92 LinkedList<Segment> sortedSegments = new LinkedList<Segment>(); 93 while (!segments.isEmpty()) { 94 LinkedList<Segment> pivotList = new LinkedList<Segment>(); 95 pivotList.add(segments.getFirst()); 96 segments.removeFirst(); 98 97 for (boolean found = true; found;) { 99 98 found = false; 100 for (Iterator< LineSegment> it =lineSegments.iterator(); it.hasNext();) {101 LineSegment ls = it.next();99 for (Iterator<Segment> it = segments.iterator(); it.hasNext();) { 100 Segment ls = it.next(); 102 101 if (ls.incomplete) 103 102 continue; // incomplete segments are never added to a new way … … 113 112 } 114 113 } 115 sorted LineSegments.addAll(pivotList);114 sortedSegments.addAll(pivotList); 116 115 } 117 116 118 117 Way t = new Way(); 119 t.segments.addAll(sorted LineSegments);120 mv.editLayer().add(new AddCommand(Main. main.ds, t));121 Main. main.ds.clearSelection();118 t.segments.addAll(sortedSegments); 119 mv.editLayer().add(new AddCommand(Main.ds, t)); 120 Main.ds.clearSelection(); 122 121 mv.repaint(); 123 122 } -
src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java
r71 r86 26 26 * @see #deleteWithReferences(OsmPrimitive) 27 27 * 28 * Pressing Alt will select the way instead of a linesegment, as usual.28 * Pressing Alt will select the way instead of a segment, as usual. 29 29 * 30 30 * If the user did not press Ctrl and the object has any references, the user … … 46 46 } 47 47 48 @Override 49 public void registerListener() { 48 @Override public void registerListener() { 50 49 super.registerListener(); 51 50 mv.addMouseListener(this); 52 51 } 53 52 54 @Override 55 public void unregisterListener() { 53 @Override public void unregisterListener() { 56 54 super.unregisterListener(); 57 55 mv.removeMouseListener(this); … … 59 57 60 58 61 @Override 62 public void actionPerformed(ActionEvent e) { 59 @Override public void actionPerformed(ActionEvent e) { 63 60 super.actionPerformed(e); 64 61 boolean ctrl = (e.getModifiers() & ActionEvent.CTRL_MASK) != 0; 65 62 if (ctrl) 66 deleteWithReferences(Main. main.ds.getSelected());63 deleteWithReferences(Main.ds.getSelected()); 67 64 else 68 delete(Main. main.ds.getSelected(), false);65 delete(Main.ds.getSelected(), false); 69 66 mv.repaint(); 70 67 } … … 74 71 * position. 75 72 */ 76 @Override 77 public void mouseClicked(MouseEvent e) { 73 @Override public void mouseClicked(MouseEvent e) { 78 74 if (e.getButton() != MouseEvent.BUTTON1) 79 75 return; … … 94 90 * Delete the primitives and everything they references. 95 91 * 96 * If a node is deleted, the node and all linesegments, ways and areas92 * If a node is deleted, the node and all segments, ways and areas 97 93 * the node is part of are deleted as well. 98 94 * 99 * If a linesegment is deleted, all ways the line segment is part of95 * If a segment is deleted, all ways the segment is part of 100 96 * are deleted as well. No nodes are deleted. 101 97 * 102 * If a way is deleted, only the way and no linesegments or nodes are98 * If a way is deleted, only the way and no segments or nodes are 103 99 * deleted. 104 100 * … … 110 106 Collection<Command> deleteCommands = new LinkedList<Command>(); 111 107 for (OsmPrimitive osm : selection) 112 deleteCommands.add(new DeleteCommand( Main.main.ds,osm));108 deleteCommands.add(new DeleteCommand(osm)); 113 109 if (!deleteCommands.isEmpty()) 114 110 mv.editLayer().add(new SequenceCommand(deleteCommands)); … … 126 122 Collection<Command> deleteCommands = new LinkedList<Command>(); 127 123 for (OsmPrimitive osm : selection) { 128 CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(Main. main.ds);124 CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(Main.ds); 129 125 osm.visit(v); 130 126 if (!selection.containsAll(v.data)) { … … 132 128 JOptionPane.showMessageDialog(Main.main, "This object is in use."); 133 129 } else 134 deleteCommands.add(new DeleteCommand( Main.main.ds,osm));130 deleteCommands.add(new DeleteCommand(osm)); 135 131 } 136 132 if (!deleteCommands.isEmpty()) -
src/org/openstreetmap/josm/actions/mapmode/MapMode.java
r68 r86 14 14 /** 15 15 * A class implementing MapMode is able to be selected as an mode for map editing. 16 * As example scrolling the map is a MapMode, connecting Nodes to new LineSegments16 * As example scrolling the map is a MapMode, connecting Nodes to new Segments 17 17 * is another. 18 18 * -
src/org/openstreetmap/josm/actions/mapmode/MoveAction.java
r71 r86 5 5 import java.awt.event.KeyEvent; 6 6 import java.awt.event.MouseEvent; 7 import java.util.Arrays; 7 8 import java.util.Collection; 8 9 … … 51 52 } 52 53 53 @Override 54 public void registerListener() { 54 @Override public void registerListener() { 55 55 super.registerListener(); 56 56 mv.addMouseListener(this); … … 58 58 } 59 59 60 @Override 61 public void unregisterListener() { 60 @Override public void unregisterListener() { 62 61 super.unregisterListener(); 63 62 mv.removeMouseListener(this); … … 70 69 * objects. 71 70 */ 72 @Override 73 public void mouseDragged(MouseEvent e) { 71 @Override public void mouseDragged(MouseEvent e) { 74 72 if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == 0) 75 73 return; … … 87 85 return; 88 86 89 Collection<OsmPrimitive> selection = Main. main.ds.getSelected();87 Collection<OsmPrimitive> selection = Main.ds.getSelected(); 90 88 Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection); 91 89 … … 117 115 * cursor to movement. 118 116 */ 119 @Override 120 public void mousePressed(MouseEvent e) { 117 @Override public void mousePressed(MouseEvent e) { 121 118 if (e.getButton() != MouseEvent.BUTTON1) 122 119 return; 123 120 124 if (Main. main.ds.getSelected().size() == 0) {121 if (Main.ds.getSelected().size() == 0) { 125 122 OsmPrimitive osm = mv.getNearest(e.getPoint(), (e.getModifiersEx() & MouseEvent.ALT_DOWN_MASK) != 0); 126 123 if (osm != null) 127 osm.setSelected(true);124 Main.ds.setSelected(Arrays.asList(new OsmPrimitive[]{osm})); 128 125 singleOsmPrimitive = osm; 129 126 mv.repaint(); … … 139 136 * Restore the old mouse cursor. 140 137 */ 141 @Override 142 public void mouseReleased(MouseEvent e) { 138 @Override public void mouseReleased(MouseEvent e) { 143 139 mv.setCursor(oldCursor); 144 140 if (singleOsmPrimitive != null) { 145 singleOsmPrimitive.setSelected(false);141 Main.ds.clearSelection(); 146 142 mv.repaint(); 147 143 } -
src/org/openstreetmap/josm/actions/mapmode/SelectionAction.java
r71 r86 4 4 import java.awt.event.KeyEvent; 5 5 import java.util.Collection; 6 import java.util.LinkedList; 6 7 7 8 import org.openstreetmap.josm.Main; … … 43 44 * pixel are considered "only click". If that happens, the nearest Node will 44 45 * be selected if there is any within 10 pixel range. If there is no Node within 45 * 10 pixel, the nearest LineSegment (or Street, if user hold down the Alt-Key)46 * within 10 pixel range is selected. If there is no LineSegment within 10 pixel46 * 10 pixel, the nearest Segment (or Street, if user hold down the Alt-Key) 47 * within 10 pixel range is selected. If there is no Segment within 10 pixel 47 48 * and the user clicked in or 10 pixel away from an area, this area is selected. 48 49 * If there is even no area, nothing is selected. Shift and Ctrl key applies to … … 67 68 } 68 69 69 @Override 70 public void registerListener() { 70 @Override public void registerListener() { 71 71 super.registerListener(); 72 72 selectionManager.register(mv); 73 73 } 74 74 75 @Override 76 public void unregisterListener() { 75 @Override public void unregisterListener() { 77 76 super.unregisterListener(); 78 77 selectionManager.unregister(mv); … … 87 86 return; // not allowed together 88 87 88 Collection<OsmPrimitive> curSel; 89 89 if (!ctrl && !shift) 90 Main.main.ds.clearSelection(); // new selection will replace the old. 90 curSel = new LinkedList<OsmPrimitive>(); // new selection will replace the old. 91 else 92 curSel = Main.ds.getSelected(); 91 93 92 94 Collection<OsmPrimitive> selectionList = selectionManager.getObjectsInRectangle(r,alt); 93 95 for (OsmPrimitive osm : selectionList) 94 osm.setSelected(!ctrl); 96 if (ctrl) 97 curSel.remove(osm); 98 else 99 curSel.add(osm); 100 Main.ds.setSelected(curSel); 95 101 mv.repaint(); 96 102 } -
src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java
r71 r86 57 57 } 58 58 59 @Override 60 public void registerListener() { 59 @Override public void registerListener() { 61 60 super.registerListener(); 62 61 selectionManager.register(mv); 63 62 } 64 63 65 @Override 66 public void unregisterListener() { 64 @Override public void unregisterListener() { 67 65 super.unregisterListener(); 68 66 selectionManager.unregister(mv);
Note:
See TracChangeset
for help on using the changeset viewer.
