source: subversion/applications/editors/josm/plugins/alignways/src/org/openstreetmap/josm/plugins/alignways/AlignWaysAction.java

Last change on this file was 34489, checked in by donvip, 8 months ago

rename package, fix checkstyle and javadoc warnings

File size: 3.0 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.plugins.alignways;
3
4import static org.openstreetmap.josm.tools.I18n.tr;
5
6import java.awt.event.ActionEvent;
7import java.awt.event.KeyEvent;
8import java.util.Collection;
9
10import org.openstreetmap.josm.actions.JosmAction;
11import org.openstreetmap.josm.command.Command;
12import org.openstreetmap.josm.data.UndoRedoHandler;
13import org.openstreetmap.josm.data.osm.DataSet;
14import org.openstreetmap.josm.data.osm.Node;
15import org.openstreetmap.josm.gui.MainApplication;
16import org.openstreetmap.josm.plugins.alignways.AlignWaysDialog.AligningModeOption;
17import org.openstreetmap.josm.tools.Shortcut;
18
19/**
20 * Makes a pair of selected way segments parallel by rotating one of them around a chosen pivot.
21 * @author tilusnet <tilusnet@gmail.com>
22 */
23public class AlignWaysAction extends JosmAction {
24
25    private static final long serialVersionUID = -1540319652562985458L;
26
27    public AlignWaysAction() {
28        super(
29                tr("Align Way Segments"),
30                "alignways",
31                tr("Makes a pair of selected way segments parallel by rotating one of them "
32                        + "around a chosen pivot."),
33                Shortcut.registerShortcut("tools:alignways", tr("Tool: {0}", tr("Align Ways")),
34                                KeyEvent.VK_SPACE, Shortcut.SHIFT),
35                true);
36        setEnabled(false);
37    }
38
39    @Override
40    public void actionPerformed(ActionEvent e) {
41        if (!isEnabled())
42            return;
43        DataSet ds = getLayerManager().getEditDataSet();
44        if (ds == null)
45            return;
46
47        Collection<Node> affectableNodes = AlignWaysSegmentMgr.getInstance(
48                MainApplication.getMap().mapView).getSelectedNodes();
49
50        // c is the last command launched, if any
51        Command c = !UndoRedoHandler.getInstance().commands.isEmpty() ? UndoRedoHandler.getInstance().commands
52                .getLast() : null;
53
54                // Potentially add my type of command only if last command wasn't my type
55                // or, if it was, the rotated nodes were not the same as now
56                if (!(c instanceof AlignWaysCmdKeepLength && affectableNodes
57                        .equals(((AlignWaysCmdKeepLength) c).getPrevAffectedNodes()))) {
58
59                    AlignWaysCmdKeepLength cmdAW;
60                    if (AlignWaysPlugin.getAwDialog().getAwOpt() == AligningModeOption.ALGN_OPT_KEEP_ANGLE) {
61                        cmdAW = new AlignWaysCmdKeepAngles(ds);
62                    } else {
63                        cmdAW = new AlignWaysCmdKeepLength(ds);
64                    }
65
66                    if (cmdAW.executable()) {
67                        // This will also trigger AlignWaysCmdKeepLength.executeCommand()
68                        UndoRedoHandler.getInstance().add(cmdAW);
69                    }
70                }
71
72                MainApplication.getMap().mapView.repaint();
73
74                return;
75    }
76}
Note: See TracBrowser for help on using the repository browser.