Changeset 124 in josm for src/org


Ignore:
Timestamp:
2006-07-23T23:40:38+02:00 (18 years ago)
Author:
imi
Message:

added "Reverse Segments" action

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/Main.java

    r123 r124  
    1212import java.net.URISyntaxException;
    1313import java.util.Collection;
     14import java.util.LinkedList;
    1415import java.util.Map;
    1516import java.util.StringTokenizer;
     
    4041import org.openstreetmap.josm.actions.UploadAction;
    4142import org.openstreetmap.josm.actions.mapmode.MapMode;
     43import org.openstreetmap.josm.command.ChangeCommand;
     44import org.openstreetmap.josm.command.Command;
     45import org.openstreetmap.josm.command.SequenceCommand;
    4246import org.openstreetmap.josm.data.Bounds;
    4347import org.openstreetmap.josm.data.Preferences;
    4448import org.openstreetmap.josm.data.osm.DataSet;
     49import org.openstreetmap.josm.data.osm.Node;
     50import org.openstreetmap.josm.data.osm.OsmPrimitive;
     51import org.openstreetmap.josm.data.osm.Segment;
    4552import org.openstreetmap.josm.data.projection.Epsg4326;
    4653import org.openstreetmap.josm.data.projection.Projection;
     
    156163                        }
    157164                };
    158                 annotationTesterAction.putValue(Action.NAME, "Annotation Preset Tester");
     165                annotationTesterAction.putValue(Action.NAME, tr("Annotation Preset Tester"));
    159166                annotationTesterAction.putValue(Action.SMALL_ICON, ImageProvider.get("annotation-tester"));
     167                final Action reverseSegmentAction = new AbstractAction(){
     168                        public void actionPerformed(ActionEvent e) {
     169                                Collection<OsmPrimitive> sel = Main.ds.getSelected();
     170                                boolean hasSegments = false;
     171                                for (OsmPrimitive osm : sel) {
     172                                        if (osm instanceof Segment) {
     173                                                hasSegments = true;
     174                                                break;
     175                                        }
     176                                }
     177                                if (!hasSegments) {
     178                                        JOptionPane.showMessageDialog(Main.parent, tr("Please select at least one segment."));
     179                                        return;
     180                                }
     181                                Collection<Command> c = new LinkedList<Command>();
     182                                for (OsmPrimitive osm : sel) {
     183                                        if (!(osm instanceof Segment))
     184                                                continue;
     185                                        Segment s = (Segment)osm;
     186                                        Segment snew = new Segment(s);
     187                                        Node n = snew.from;
     188                                        snew.from = snew.to;
     189                                        snew.to = n;
     190                                        c.add(new ChangeCommand(s, snew));
     191                                }
     192                                editLayer().add(new SequenceCommand(tr("Reverse Segments"), c));
     193                                map.repaint();
     194                        }
     195                };
     196                reverseSegmentAction.putValue(Action.NAME, tr("Reverse Segments"));
     197                reverseSegmentAction.putValue(Action.SMALL_ICON, ImageProvider.get("segmentflip"));
    160198
    161199                final Action uploadAction = new UploadAction();
     
    192230                editMenu.add(undoAction);
    193231                editMenu.add(redoAction);
     232                editMenu.addSeparator();
     233                editMenu.add(reverseSegmentAction);
    194234                editMenu.addSeparator();
    195235                editMenu.add(preferencesAction);
     
    216256                toolBar.add(undoAction);
    217257                toolBar.add(redoAction);
     258                toolBar.addSeparator();
     259                toolBar.add(reverseSegmentAction);
    218260                toolBar.addSeparator();
    219261                toolBar.add(preferencesAction);
Note: See TracChangeset for help on using the changeset viewer.