Ignore:
Timestamp:
2009-07-19T19:04:49+02:00 (15 years ago)
Author:
Gubaer
Message:

removed dependencies to Main.ds, removed Main.ds
removed AddVisitor, NameVisitor, DeleteVisitor - unnecessary double dispatching for these simple cases

Location:
trunk/src/org/openstreetmap/josm/actions
Files:
37 edited

Legend:

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

    r1779 r1814  
    4646
    4747    protected void launchBrowser() {
    48         ArrayList<OsmPrimitive> primitivesToShow = new ArrayList<OsmPrimitive>(Main.ds.getSelected());
     48        ArrayList<OsmPrimitive> primitivesToShow = new ArrayList<OsmPrimitive>(getCurrentDataSet().getSelected());
    4949
    5050        // filter out new primitives which are not yet uploaded to the server
  • trunk/src/org/openstreetmap/josm/actions/AddNodeAction.java

    r1807 r1814  
    7979        /* Now execute the commands to add the dupicated contents of the paste buffer to the map */
    8080        Main.main.undoRedo.add(new AddCommand(nnew));
    81         Main.ds.setSelected(nnew);
     81        getCurrentDataSet().setSelected(nnew);
    8282        Main.map.mapView.repaint();
    8383    }
  • trunk/src/org/openstreetmap/josm/actions/AlignInCircleAction.java

    r1768 r1814  
    7979
    8080    public void actionPerformed(ActionEvent e) {
    81         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     81        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    8282        Collection<Node> nodes = new LinkedList<Node>();
    8383        Collection<Way> ways = new LinkedList<Way>();
  • trunk/src/org/openstreetmap/josm/actions/AlignInLineAction.java

    r1640 r1814  
    3131    public AlignInLineAction() {
    3232        super(tr("Align Nodes in Line"), "alignline", tr("Move the selected nodes in to a line."),
    33         Shortcut.registerShortcut("tools:alignline", tr("Tool: {0}", tr("Align Nodes in Line")), KeyEvent.VK_L, Shortcut.GROUP_EDIT), true);
     33                Shortcut.registerShortcut("tools:alignline", tr("Tool: {0}", tr("Align Nodes in Line")), KeyEvent.VK_L, Shortcut.GROUP_EDIT), true);
    3434    }
    3535
     
    4040     */
    4141    public void actionPerformed(ActionEvent e) {
    42         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     42        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    4343        Collection<Node> nodes = new LinkedList<Node>();
    4444        Collection<Node> itnodes = new LinkedList<Node>();
     
    5050        // special case if no single nodes are selected and exactly one way is:
    5151        // then use the way's nodes
    52         if ((nodes.size() == 0) && (sel.size() == 1))
     52        if ((nodes.size() == 0) && (sel.size() == 1)) {
    5353            for (OsmPrimitive osm : sel)
    5454                if (osm instanceof Way) {
     
    5656                    itnodes.addAll(((Way)osm).nodes);
    5757                }
     58        }
    5859        if (nodes.size() < 3) {
    5960            JOptionPane.showMessageDialog(Main.parent, tr("Please select at least three nodes."));
  • trunk/src/org/openstreetmap/josm/actions/ApiPreconditionChecker.java

    r1693 r1814  
    100100                    List<OsmPrimitive> newNodes = new LinkedList<OsmPrimitive>();
    101101                    newNodes.add(osmPrimitive);
    102                     Main.ds.setSelected(newNodes);
     102                    Main.main.getCurrentDataSet().setSelected(newNodes);
    103103                    return false;
    104104                }
     
    120120                newNodes.add(osmPrimitive);
    121121
    122                 Main.ds.setSelected(newNodes);
     122                Main.main.getCurrentDataSet().setSelected(newNodes);
    123123                return false;
    124124            }
  • trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java

    r1797 r1814  
    7979            Collection<OsmPrimitive> sel = new HashSet<OsmPrimitive>();
    8080            if (mode.equals("selection")) {
    81                 sel = Main.ds.getSelected();
     81                sel = getCurrentDataSet().getSelected();
    8282            } else if (mode.equals("conflict")) {
    8383                if (Main.map.conflictDialog.getConflicts() != null) {
  • trunk/src/org/openstreetmap/josm/actions/CombineWayAction.java

    r1621 r1814  
    5252    public CombineWayAction() {
    5353        super(tr("Combine Way"), "combineway", tr("Combine several ways into one."),
    54         Shortcut.registerShortcut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, Shortcut.GROUP_EDIT), true);
     54                Shortcut.registerShortcut("tools:combineway", tr("Tool: {0}", tr("Combine Way")), KeyEvent.VK_C, Shortcut.GROUP_EDIT), true);
    5555        DataSet.selListeners.add(this);
    5656    }
    5757
    5858    public void actionPerformed(ActionEvent event) {
    59         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     59        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    6060        LinkedList<Way> selectedWays = new LinkedList<Way>();
    6161
    6262        for (OsmPrimitive osm : selection)
    63             if (osm instanceof Way)
     63            if (osm instanceof Way) {
    6464                selectedWays.add((Way)osm);
     65            }
    6566
    6667        if (selectedWays.size() < 2) {
     
    8283            new HashMap<Pair<Relation,String>, HashSet<Way>>();
    8384        HashSet<Relation> relationsUsingWays = new HashSet<Relation>();
    84         for (Relation r : Main.ds.relations) {
    85             if (r.deleted || r.incomplete) continue;
     85        for (Relation r : getCurrentDataSet().relations) {
     86            if (r.deleted || r.incomplete) {
     87                continue;
     88            }
    8689            for (RelationMember rm : r.members) {
    8790                if (rm.member instanceof Way) {
     
    112115                        tr("Combine ways with different memberships?"),
    113116                        tr("The selected ways have differing relation memberships.  "
    114                             + "Do you still want to combine them?"),
    115                         new String[] {tr("Combine Anyway"), tr("Cancel")},
    116                         new String[] {"combineway.png", "cancel.png"}).getValue();
    117                 if (option == 1) break;
     117                                + "Do you still want to combine them?"),
     118                                new String[] {tr("Combine Anyway"), tr("Cancel")},
     119                                new String[] {"combineway.png", "cancel.png"}).getValue();
     120                if (option == 1) {
     121                    break;
     122                }
    118123
    119124                return;
     
    125130        for (Way w : selectedWays) {
    126131            for (Entry<String,String> e : w.entrySet()) {
    127                 if (!props.containsKey(e.getKey()))
     132                if (!props.containsKey(e.getKey())) {
    128133                    props.put(e.getKey(), new TreeSet<String>());
     134                }
    129135                props.get(e.getKey()).add(e.getValue());
    130136            }
     
    139145            if (secondTry instanceof List) {
    140146                int option = new ExtendedDialog(Main.parent,
    141                     tr("Change directions?"),
    142                     tr("The ways can not be combined in their current directions.  "
    143                         + "Do you want to reverse some of them?"),
    144                     new String[] {tr("Reverse and Combine"), tr("Cancel")},
    145                     new String[] {"wayflip.png", "cancel.png"}).getValue();
     147                        tr("Change directions?"),
     148                        tr("The ways can not be combined in their current directions.  "
     149                                + "Do you want to reverse some of them?"),
     150                                new String[] {tr("Reverse and Combine"), tr("Cancel")},
     151                                new String[] {"wayflip.png", "cancel.png"}).getValue();
    146152                if (option != 1) return;
    147153                nodeList = (List<Node>) secondTry;
     
    160166        for (Way w : selectedWays) {
    161167            modifyWay = w;
    162             if (w.id != 0) break;
     168            if (w.id != 0) {
     169                break;
     170            }
    163171        }
    164172        Way newWay = new Way(modifyWay);
     
    188196        if (!components.isEmpty()) {
    189197            int answer = new ExtendedDialog(Main.parent,
    190                 tr("Enter values for all conflicts."),
    191                 p,
    192                 new String[] {tr("Solve Conflicts"), tr("Cancel")},
    193                 new String[] {"dialogs/conflict.png", "cancel.png"}).getValue();
     198                    tr("Enter values for all conflicts."),
     199                    p,
     200                    new String[] {tr("Solve Conflicts"), tr("Cancel")},
     201                    new String[] {"dialogs/conflict.png", "cancel.png"}).getValue();
    194202            if (answer != 1) return;
    195203
    196             for (Entry<String, JComboBox> e : components.entrySet())
     204            for (Entry<String, JComboBox> e : components.entrySet()) {
    197205                newWay.put(e.getKey(), e.getValue().getEditor().getItem().toString());
     206            }
    198207        }
    199208
     
    224233        }
    225234        Main.main.undoRedo.add(new SequenceCommand(tr("Combine {0} ways", selectedWays.size()), cmds));
    226         Main.ds.setSelected(modifyWay);
     235        getCurrentDataSet().setSelected(modifyWay);
    227236    }
    228237
     
    242251
    243252        HashSet<Pair<Node,Node>> chunkSet = new HashSet<Pair<Node,Node>>();
    244         for (Way w : ways)
     253        for (Way w : ways) {
    245254            chunkSet.addAll(w.getNodePairs(ignoreDirection));
     255        }
    246256
    247257        LinkedList<Pair<Node,Node>> chunks = new LinkedList<Pair<Node,Node>>(chunkSet);
    248258
    249         if (chunks.isEmpty()) {
     259        if (chunks.isEmpty())
    250260            return tr("All the ways were empty");
    251         }
    252261
    253262        List<Node> nodeList = Pair.toArrayList(chunks.poll());
     
    273282                break;
    274283            }
    275             if (!foundChunk) break;
    276         }
    277 
    278         if (!chunks.isEmpty()) {
     284            if (!foundChunk) {
     285                break;
     286            }
     287        }
     288
     289        if (!chunks.isEmpty())
    279290            return tr("Could not combine ways "
    280                 + "(They could not be merged into a single string of nodes)");
    281         }
     291                    + "(They could not be merged into a single string of nodes)");
    282292
    283293        return nodeList;
  • trunk/src/org/openstreetmap/josm/actions/CopyAction.java

    r1750 r1814  
    4545
    4646    public void actionPerformed(ActionEvent e) {
    47         if(noSelection()) return;
     47        if(isEmptySelection()) return;
    4848
    4949        Main.pasteBuffer = copyData();
    50         Main.pasteSource = Main.main.createOrGetEditLayer();
     50        Main.pasteSource = getEditLayer();
    5151        Main.main.menu.paste.setEnabled(true); /* now we have a paste buffer we can make paste available */
    5252
     
    5656    }
    5757
    58     public static DataSet copyData() {
     58    public DataSet copyData() {
    5959        /* New pasteBuffer - will be assigned to the global one at the end */
    6060        final DataSet pasteBuffer = new DataSet();
     
    6262        /* temporarily maps old nodes to new so we can do a true deep copy */
    6363
    64         if(noSelection()) return pasteBuffer;
     64        if(isEmptySelection()) return pasteBuffer;
    6565
    6666        /* scan the selected objects, mapping them to copies; when copying a way or relation,
     
    7171                 * or a way and a node in that way is selected, we'll see it twice, once via the
    7272                 * way and once directly; and so on. */
    73                 if (map.containsKey(n)) { return; }
     73                if (map.containsKey(n))
     74                    return;
    7475                Node nnew = new Node(n);
    7576                map.put(n, nnew);
     
    7879            public void visit(Way w) {
    7980                /* check if already in pasteBuffer - could have come from a relation, and directly etc. */
    80                 if (map.containsKey(w)) { return; }
     81                if (map.containsKey(w))
     82                    return;
    8183                Way wnew = new Way();
    8284                wnew.cloneFrom(w);
     
    9395            }
    9496            public void visit(Relation e) {
    95                 if (map.containsKey(e)) { return; }
     97                if (map.containsKey(e))
     98                    return;
    9699                Relation enew = new Relation(e);
    97100                List<RelationMember> members = new ArrayList<RelationMember>();
     
    108111            }
    109112            public void visitAll() {
    110                 for (OsmPrimitive osm : Main.ds.getSelected())
     113                for (OsmPrimitive osm : getCurrentDataSet().getSelected()) {
    111114                    osm.visit(this);
     115                }
    112116
    113117                // Used internally only (in PasteTagsAction), therefore no need to translate these
    114                 if(Main.ds.getSelectedNodes().size() > 0)
     118                if(getCurrentDataSet().getSelectedNodes().size() > 0) {
    115119                    pasteBuffer.dataSources.add(new DataSource(null, "Copied Nodes"));
    116                 if(Main.ds.getSelectedWays().size() > 0)
     120                }
     121                if(getCurrentDataSet().getSelectedWays().size() > 0) {
    117122                    pasteBuffer.dataSources.add(new DataSource(null, "Copied Ways"));
    118                 if(Main.ds.getSelectedRelations().size() > 0)
     123                }
     124                if(getCurrentDataSet().getSelectedRelations().size() > 0) {
    119125                    pasteBuffer.dataSources.add(new DataSource(null, "Copied Relations"));
     126                }
    120127            }
    121128        }.visitAll();
     
    128135    }
    129136
    130     private static boolean noSelection() {
    131         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     137    private boolean isEmptySelection() {
     138        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    132139        if (sel.isEmpty()) {
    133             JOptionPane.showMessageDialog(Main.parent,
    134                     tr("Please select something to copy."));
     140            JOptionPane.showMessageDialog(
     141                    Main.parent,
     142                    tr("Please select something to copy.")
     143            );
    135144            return true;
    136145        }
  • trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java

    r1741 r1814  
    8080        }
    8181
    82         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     82        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    8383        Collection<Node> nodes = new LinkedList<Node>();
    8484        Way existingWay = null;
     
    170170            if (a1 < 999) {
    171171                // if it is, delete it
    172                 CollectBackReferencesVisitor refs = new CollectBackReferencesVisitor(Main.ds);
     172                CollectBackReferencesVisitor refs = new CollectBackReferencesVisitor(getCurrentDataSet());
    173173                refs.visit(n1);
    174174                if (refs.data.isEmpty() || ((refs.data.size() == 1) && (refs.data.contains(existingWay)))) {
  • trunk/src/org/openstreetmap/josm/actions/DistributeAction.java

    r1640 r1814  
    2929    public DistributeAction() {
    3030        super(tr("Distribute Nodes"), "distribute", tr("Distribute the selected nodes to equal distances along a line."),
    31         Shortcut.registerShortcut("tools:distribute", tr("Tool: {0}", tr("Distribute Nodes")), KeyEvent.VK_B, Shortcut.GROUP_EDIT), true);
     31                Shortcut.registerShortcut("tools:distribute", tr("Tool: {0}", tr("Distribute Nodes")), KeyEvent.VK_B, Shortcut.GROUP_EDIT), true);
    3232    }
    3333
     
    3838     */
    3939    public void actionPerformed(ActionEvent e) {
    40         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     40        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    4141        Collection<Node> nodes = new LinkedList<Node>();
    4242        Collection<Node> itnodes = new LinkedList<Node>();
     
    4848        // special case if no single nodes are selected and exactly one way is:
    4949        // then use the way's nodes
    50         if ((nodes.size() == 0) && (sel.size() == 1))
     50        if ((nodes.size() == 0) && (sel.size() == 1)) {
    5151            for (OsmPrimitive osm : sel)
    5252                if (osm instanceof Way) {
     
    5454                    itnodes.addAll(((Way)osm).nodes);
    5555                }
     56        }
    5657
    5758        if (nodes.size() < 3) {
  • trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java

    r1750 r1814  
    99import java.util.Collection;
    1010
    11 import org.openstreetmap.josm.actions.CopyAction;
    12 import org.openstreetmap.josm.actions.PasteAction;
    1311import org.openstreetmap.josm.data.SelectionChangedListener;
    1412import org.openstreetmap.josm.data.osm.DataSet;
    1513import org.openstreetmap.josm.data.osm.OsmPrimitive;
     14import org.openstreetmap.josm.gui.layer.Layer;
     15import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
    1616import org.openstreetmap.josm.tools.Shortcut;
    17 import org.openstreetmap.josm.Main;
    1817
    19 public final class DuplicateAction extends JosmAction implements SelectionChangedListener {
     18public final class DuplicateAction extends JosmAction implements SelectionChangedListener, LayerChangeListener {
    2019
    2120    public DuplicateAction() {
    2221        super(tr("Duplicate"), "duplicate",
    23             tr("Duplicate selection by copy and immediate paste."),
    24             Shortcut.registerShortcut("system:duplicate", tr("Edit: {0}", tr("Duplicate")), KeyEvent.VK_D, Shortcut.GROUP_MENU), true);
     22                tr("Duplicate selection by copy and immediate paste."),
     23                Shortcut.registerShortcut("system:duplicate", tr("Edit: {0}", tr("Duplicate")), KeyEvent.VK_D, Shortcut.GROUP_MENU), true);
    2524        setEnabled(false);
    2625        DataSet.selListeners.add(this);
     26        Layer.listeners.add(this);
    2727    }
    2828
    2929    public void actionPerformed(ActionEvent e) {
    30         PasteAction.pasteData(CopyAction.copyData(), Main.main.createOrGetEditLayer(), e);
     30        new PasteAction().pasteData(new CopyAction().copyData(), getEditLayer(), e);
    3131    }
    3232
     33
     34    protected void refreshEnabled() {
     35        setEnabled(getCurrentDataSet() != null
     36                && ! getCurrentDataSet().getSelected().isEmpty()
     37        );
     38    }
     39
     40    /* ---------------------------------------------------------------------------------- */
     41    /* Interface SelectionChangeListener                                                  */
     42    /* ---------------------------------------------------------------------------------- */
    3343    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
    34         setEnabled(! newSelection.isEmpty());
     44        refreshEnabled();
     45    }
     46
     47    /* ---------------------------------------------------------------------------------- */
     48    /* Interface LayerChangeListener                                                      */
     49    /* ---------------------------------------------------------------------------------- */
     50    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
     51        refreshEnabled();
     52    }
     53
     54    public void layerAdded(Layer newLayer) {
     55        refreshEnabled();
     56    }
     57
     58    public void layerRemoved(Layer oldLayer) {
     59        refreshEnabled();
    3560    }
    3661}
  • trunk/src/org/openstreetmap/josm/actions/GpxExportAction.java

    r1808 r1814  
    8484    public void export(Layer layer) {
    8585        if (layer == null)
    86             throw new IllegalArgumentException(tr("paramenter ''{0'' must not be null", "layer"));
     86            throw new IllegalArgumentException(tr("paramenter ''{0}'' must not be null", "layer"));
    8787        if (! (layer instanceof OsmDataLayer) && ! (layer instanceof GpxLayer))
    8888            throw new IllegalArgumentException(tr("expected instance of OsmDataLayer or GpxLayer. Got ''{0}''.", layer.getClass().getName()));
     
    9898    }
    9999
    100     public static void exportGpx(File file, Layer layer) {
     100    /**
     101     * Exports a layer to a file.
     102     *
     103     * <code>layer</code> must not be null. <code>layer</code> must be an instance of
     104     * {@see OsmDataLayer} or {@see GpxLayer}.
     105     *
     106     * @param layer the layer
     107     * @exception IllegalArgumentException thrown if layer is null
     108     * @exception IllegalArgumentException thrown if layer is neither an instance of {@see OsmDataLayer}
     109     *  nor of {@see GpxLayer}
     110     */
     111
     112    public void exportGpx(File file, Layer layer) {
     113        if (layer == null)
     114            throw new IllegalArgumentException(tr("paramenter ''{0}'' must not be null", "layer"));
     115        if (! (layer instanceof OsmDataLayer) && ! (layer instanceof GpxLayer))
     116            throw new IllegalArgumentException(tr("expected instance of OsmDataLayer or GpxLayer. Got ''{0}''.", layer.getClass().getName()));
     117        if (file == null)
     118            throw new IllegalArgumentException(tr("paramenter ''{0}'' must not be null", "file"));
     119
    101120        String fn = file.getPath();
    102121        if (fn.indexOf('.') == -1) {
     
    172191            gpxData = ((GpxLayer)layer).data;
    173192        } else {
    174             gpxData = OsmDataLayer.toGpxData(Main.ds, file);
     193            gpxData = OsmDataLayer.toGpxData(getCurrentDataSet(), file);
    175194        }
    176195
  • trunk/src/org/openstreetmap/josm/actions/JoinNodeWayAction.java

    r1725 r1814  
    2828    public JoinNodeWayAction() {
    2929        super(tr("Join Node to Way"), "joinnodeway", tr("Join a node into the nearest way segments"),
    30             Shortcut.registerShortcut("tools:joinnodeway", tr("Tool: {0}", tr("Join Node to Way")), KeyEvent.VK_J, Shortcut.GROUP_EDIT), true);
     30                Shortcut.registerShortcut("tools:joinnodeway", tr("Tool: {0}", tr("Join Node to Way")), KeyEvent.VK_J, Shortcut.GROUP_EDIT), true);
    3131    }
    3232
    3333    public void actionPerformed(ActionEvent e) {
    34         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     34        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    3535        if (sel.size() != 1 || !(sel.iterator().next() instanceof Node)) return;
    3636        Node node = (Node) sel.iterator().next();
    3737
    3838        List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(
    39             Main.map.mapView.getPoint(node));
     39                Main.map.mapView.getPoint(node));
    4040        HashMap<Way, List<Integer>> insertPoints = new HashMap<Way, List<Integer>>();
    4141        for (WaySegment ws : wss) {
     
    6060            List<Integer> is = insertPoint.getValue();
    6161            pruneSuccsAndReverse(is);
    62             for (int i : is) wnew.nodes.add(i+1, node);
     62            for (int i : is) {
     63                wnew.nodes.add(i+1, node);
     64            }
    6365            cmds.add(new ChangeCommand(w, wnew));
    6466        }
  • trunk/src/org/openstreetmap/josm/actions/JosmAction.java

    r1415 r1814  
    99import org.openstreetmap.josm.Main;
    1010import org.openstreetmap.josm.data.osm.DataSet;
     11import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1112import org.openstreetmap.josm.tools.Destroyable;
    1213import org.openstreetmap.josm.tools.ImageProvider;
     
    6162        putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tooltip, sc));
    6263        putValue("toolbar", iconName);
    63         if (register)
     64        if (register) {
    6465            Main.toolbar.register(this);
     66        }
    6567    }
    6668
     
    9294    private void setHelpId() {
    9395        String helpId = "Action/"+getClass().getName().substring(getClass().getName().lastIndexOf('.')+1);
    94         if (helpId.endsWith("Action"))
     96        if (helpId.endsWith("Action")) {
    9597            helpId = helpId.substring(0, helpId.length()-6);
     98        }
    9699        putValue("help", helpId);
    97100    }
     101
     102    /**
     103     * Replies the current edit layer
     104     *
     105     * @return the current edit layer. null, if no edit layer exists
     106     */
     107    protected OsmDataLayer getEditLayer() {
     108        return Main.main.getEditLayer();
     109    }
     110
     111    /**
     112     * Replies the current dataset
     113     *
     114     * @return the current dataset. null, if no current dataset exists
     115     */
     116    protected DataSet getCurrentDataSet() {
     117        return Main.main.getCurrentDataSet();
     118    }
    98119}
  • trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java

    r1677 r1814  
    5555    public MergeNodesAction() {
    5656        super(tr("Merge Nodes"), "mergenodes", tr("Merge nodes into the oldest one."),
    57         Shortcut.registerShortcut("tools:mergenodes", tr("Tool: {0}", tr("Merge Nodes")), KeyEvent.VK_M, Shortcut.GROUP_EDIT), true);
     57                Shortcut.registerShortcut("tools:mergenodes", tr("Tool: {0}", tr("Merge Nodes")), KeyEvent.VK_M, Shortcut.GROUP_EDIT), true);
    5858        DataSet.selListeners.add(this);
    5959    }
    6060
    6161    public void actionPerformed(ActionEvent event) {
    62         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     62        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    6363        LinkedList<Node> selectedNodes = new LinkedList<Node>();
    6464
     
    6767        // anyway as long as we have at least two nodes
    6868        for (OsmPrimitive osm : selection)
    69             if (osm instanceof Node)
     69            if (osm instanceof Node) {
    7070                selectedNodes.add((Node)osm);
     71            }
    7172
    7273        if (selectedNodes.size() < 2) {
     
    9394            }
    9495        }
    95         if (useNode == null)
     96        if (useNode == null) {
    9697            useNode = selectedNodes.iterator().next();
     98        }
    9799
    98100        mergeNodes(selectedNodes, useNode);
     
    102104     * really do the merging - returns the node that is left
    103105     */
    104     public static Node mergeNodes(LinkedList<Node> allNodes, Node dest) {
     106    public Node mergeNodes(LinkedList<Node> allNodes, Node dest) {
    105107        Node newNode = new Node(dest);
    106108
     
    118120            new HashMap<Pair<Relation,String>, HashSet<Node>>();
    119121        HashSet<Relation> relationsUsingNodes = new HashSet<Relation>();
    120         for (Relation r : Main.ds.relations) {
    121             if (r.deleted || r.incomplete) continue;
     122        for (Relation r : getCurrentDataSet().relations) {
     123            if (r.deleted || r.incomplete) {
     124                continue;
     125            }
    122126            for (RelationMember rm : r.members) {
    123127                if (rm.member instanceof Node) {
     
    148152                        tr("Merge nodes with different memberships?"),
    149153                        tr("The selected nodes have differing relation memberships.  "
    150                             + "Do you still want to merge them?"),
    151                         new String[] {tr("Merge Anyway"), tr("Cancel")},
    152                         new String[] {"mergenodes.png", "cancel.png"}).getValue();
    153                 if (option == 1) break;
     154                                + "Do you still want to merge them?"),
     155                                new String[] {tr("Merge Anyway"), tr("Cancel")},
     156                                new String[] {"mergenodes.png", "cancel.png"}).getValue();
     157                if (option == 1) {
     158                    break;
     159                }
    154160                return null;
    155161            }
     
    160166        for (Node n : allNodes) {
    161167            for (Entry<String,String> e : n.entrySet()) {
    162                 if (!props.containsKey(e.getKey()))
     168                if (!props.containsKey(e.getKey())) {
    163169                    props.put(e.getKey(), new TreeSet<String>());
     170                }
    164171                props.get(e.getKey()).add(e.getValue());
    165172            }
     
    187194        if (!components.isEmpty()) {
    188195            int answer = new ExtendedDialog(Main.parent,
    189                 tr("Enter values for all conflicts."),
    190                 p,
    191                 new String[] {tr("Solve Conflicts"), tr("Cancel")},
    192                 new String[] {"dialogs/conflict.png", "cancel.png"}).getValue();
     196                    tr("Enter values for all conflicts."),
     197                    p,
     198                    new String[] {tr("Solve Conflicts"), tr("Cancel")},
     199                    new String[] {"dialogs/conflict.png", "cancel.png"}).getValue();
    193200            if (answer != 1)
    194201                return null;
    195             for (Entry<String, JComboBox> e : components.entrySet())
     202            for (Entry<String, JComboBox> e : components.entrySet()) {
    196203                newNode.put(e.getKey(), e.getValue().getEditor().getItem().toString());
     204            }
    197205        }
    198206
     
    202210        Collection<OsmPrimitive> del = new HashSet<OsmPrimitive>();
    203211
    204         for (Way w : Main.ds.ways) {
    205             if (w.deleted || w.incomplete || w.nodes.size() < 1) continue;
     212        for (Way w : getCurrentDataSet().ways) {
     213            if (w.deleted || w.incomplete || w.nodes.size() < 1) {
     214                continue;
     215            }
    206216            boolean modify = false;
    207217            for (Node sn : allNodes) {
    208                 if (sn == dest) continue;
     218                if (sn == dest) {
     219                    continue;
     220                }
    209221                if (w.nodes.contains(sn)) {
    210222                    modify = true;
    211223                }
    212224            }
    213             if (!modify) continue;
     225            if (!modify) {
     226                continue;
     227            }
    214228            // OK - this way contains one or more nodes to change
    215229            ArrayList<Node> nn = new ArrayList<Node>();
     
    227241            if (nn.size() < 2) {
    228242                CollectBackReferencesVisitor backRefs =
    229                     new CollectBackReferencesVisitor(Main.ds, false);
     243                    new CollectBackReferencesVisitor(getCurrentDataSet(), false);
    230244                w.visit(backRefs);
    231245                if (!backRefs.data.isEmpty()) {
    232246                    JOptionPane.showMessageDialog(Main.parent,
    233                         tr("Cannot merge nodes: " +
     247                            tr("Cannot merge nodes: " +
    234248                            "Would have to delete a way that is still used."));
    235249                    return null;
     
    247261        del.addAll(allNodes);
    248262        del.remove(dest);
    249         if (!del.isEmpty()) cmds.add(new DeleteCommand(del));
     263        if (!del.isEmpty()) {
     264            cmds.add(new DeleteCommand(del));
     265        }
    250266
    251267        // modify all relations containing the now-deleted nodes
     
    270286
    271287        Main.main.undoRedo.add(new SequenceCommand(tr("Merge {0} nodes", allNodes.size()), cmds));
    272         Main.ds.setSelected(dest);
     288        getCurrentDataSet().setSelected(dest);
    273289
    274290        return dest;
  • trunk/src/org/openstreetmap/josm/actions/MirrorAction.java

    r1722 r1814  
    1414import org.openstreetmap.josm.Main;
    1515import org.openstreetmap.josm.command.Command;
    16 import org.openstreetmap.josm.command.ChangeCommand;
    1716import org.openstreetmap.josm.command.MoveCommand;
    1817import org.openstreetmap.josm.command.SequenceCommand;
    19 import org.openstreetmap.josm.data.coor.EastNorth;
    2018import org.openstreetmap.josm.data.osm.Node;
    2119import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    3432    public MirrorAction() {
    3533        super(tr("Mirror"), "mirror", tr("Mirror selected nodes and ways."),
    36         Shortcut.registerShortcut("tools:mirror", tr("Tool: {0}", tr("Mirror")),
    37             KeyEvent.VK_M, Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
     34                Shortcut.registerShortcut("tools:mirror", tr("Tool: {0}", tr("Mirror")),
     35                        KeyEvent.VK_M, Shortcut.GROUP_EDIT, Shortcut.SHIFT_DEFAULT), true);
    3836    }
    3937
    4038    public void actionPerformed(ActionEvent e) {
    41         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     39        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    4240        HashSet<Node> nodes = new HashSet<Node>();
    4341
     
    6664        Collection<Command> cmds = new LinkedList<Command>();
    6765
    68         for (Node n : nodes)
     66        for (Node n : nodes) {
    6967            cmds.add(new MoveCommand(n, 2 * (middle - n.getEastNorth().east()), 0.0));
     68        }
    7069
    7170        Main.main.undoRedo.add(new SequenceCommand(tr("Mirror"), cmds));
  • trunk/src/org/openstreetmap/josm/actions/MoveAction.java

    r1750 r1814  
    8585        }
    8686
    87         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     87        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    8888        Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection);
    8989
  • trunk/src/org/openstreetmap/josm/actions/OrthogonalizeAction.java

    r1640 r1814  
    3838    public OrthogonalizeAction() {
    3939        super(tr("Orthogonalize Shape"),
    40             "ortho",
    41             tr("Move nodes so all angles are 90 or 270 degree"),
    42             Shortcut.registerShortcut("tools:orthogonalize", tr("Tool: {0}", tr("Orthogonalize Shape")),
    43             KeyEvent.VK_Q,
    44             Shortcut.GROUP_EDIT), true);
     40                "ortho",
     41                tr("Move nodes so all angles are 90 or 270 degree"),
     42                Shortcut.registerShortcut("tools:orthogonalize", tr("Tool: {0}", tr("Orthogonalize Shape")),
     43                        KeyEvent.VK_Q,
     44                        Shortcut.GROUP_EDIT), true);
    4545    }
    4646
    4747    public void actionPerformed(ActionEvent e) {
    4848
    49         Collection<OsmPrimitive> sel = Main.ds.getSelected();
     49        Collection<OsmPrimitive> sel = getCurrentDataSet().getSelected();
    5050
    5151        ArrayList<Node> dirnodes = new ArrayList<Node>();
     
    8484                double angle2 = Math.abs(way.nodes.get(i2).getEastNorth().heading(way.nodes.get(i3).getEastNorth()));
    8585                double delta = Math.abs(angle2 - angle1);
    86                 while(delta > Math.PI) delta -= Math.PI;
     86                while(delta > Math.PI) {
     87                    delta -= Math.PI;
     88                }
    8789                if(delta < Math.PI/4) {
    8890                    JOptionPane.showMessageDialog(Main.parent, tr("Please select ways with almost right angles to orthogonalize."));
     
    9698                    "to undesirable results when doing rectangular alignments.<br>" +
    9799                    "Change your projection to get rid of this warning.<br>" +
    98                     "Do you want to continue?");
    99 
    100             if (!DontShowAgainInfo.show("align_rectangular_4326", msg, false)) {
     100            "Do you want to continue?");
     101
     102            if (!DontShowAgainInfo.show("align_rectangular_4326", msg, false))
    101103                return;
    102             }
    103104        }
    104105        // Check, if selection held neither none nor two nodes
     
    122123
    123124        for (OsmPrimitive osm : sel) {
    124             if(!(osm instanceof Way))
     125            if(!(osm instanceof Way)) {
    125126                continue;
     127            }
    126128
    127129            Way way = (Way)osm;
     
    158160                        diff = heading_diff(headings[i], headings[i - 1]);
    159161                    }
    160                     if (diff > angle_diff_max) angle_diff_max = diff;
     162                    if (diff > angle_diff_max) {
     163                        angle_diff_max = diff;
     164                    }
    161165                }
    162166
     
    164168                    // rearrange headings: everything < 0 gets PI/2-rotated
    165169                    for (int i=0; i < sides; i++) {
    166                         if (headings[i] < 0)
     170                        if (headings[i] < 0) {
    167171                            headings[i] += Math.PI/2;
     172                        }
    168173                    }
    169174                }
     
    217222                // been duplicated
    218223
    219                 if (u == 0) continue;
     224                if (u == 0) {
     225                    continue;
     226                }
    220227
    221228                // q is a number between 0 and 1
     
    257264        double llimit = -Math.PI/4;
    258265        double ulimit = Math.PI/4;
    259         while (h - align_to > ulimit) h -= Math.PI/2;
    260         while (h - align_to < llimit) h += Math.PI/2;
     266        while (h - align_to > ulimit) {
     267            h -= Math.PI/2;
     268        }
     269        while (h - align_to < llimit) {
     270            h += Math.PI/2;
     271        }
    261272
    262273        return h;
  • trunk/src/org/openstreetmap/josm/actions/PasteAction.java

    r1750 r1814  
    3131    public PasteAction() {
    3232        super(tr("Paste"), "paste", tr("Paste contents of paste buffer."),
    33             Shortcut.registerShortcut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, Shortcut.GROUP_MENU), true);
     33                Shortcut.registerShortcut("system:paste", tr("Edit: {0}", tr("Paste")), KeyEvent.VK_V, Shortcut.GROUP_MENU), true);
    3434        setEnabled(false);
    3535    }
     
    3939    }
    4040
    41     public static void pasteData(DataSet pasteBuffer, Layer source, ActionEvent e) {
     41    public void pasteData(DataSet pasteBuffer, Layer source, ActionEvent e) {
    4242        /* Find the middle of the pasteBuffer area */
    4343        double maxEast = -1E100, minEast = 1E100, maxNorth = -1E100, minNorth = 1E100;
     
    6363
    6464        HashMap<OsmPrimitive,OsmPrimitive> map = new HashMap<OsmPrimitive,OsmPrimitive>();
    65           /* temporarily maps old nodes to new so we can do a true deep copy */
     65        /* temporarily maps old nodes to new so we can do a true deep copy */
    6666
    6767        /* do the deep copy of the paste buffer contents, leaving the pasteBuffer unchanged */
     
    6969            Node nnew = new Node(n);
    7070            nnew.id = 0;
    71             if (Main.main.createOrGetEditLayer() == source) {
     71            if (Main.map.mapView.getEditLayer() == source) {
    7272                nnew.setEastNorth(nnew.getEastNorth().add(offsetEast, offsetNorth));
    7373            }
     
    113113
    114114        Main.main.undoRedo.add(new SequenceCommand(tr("Paste"), clist));
    115         Main.ds.setSelected(osms);
     115        getCurrentDataSet().setSelected(osms);
    116116        Main.map.mapView.repaint();
    117117    }
  • trunk/src/org/openstreetmap/josm/actions/PasteTagsAction.java

    r1613 r1814  
    2727    public PasteTagsAction(JosmAction copyAction) {
    2828        super(tr("Paste Tags"), "pastetags",
    29             tr("Apply tags of contents of paste buffer to all selected items."),
    30             Shortcut.registerShortcut("system:pastestyle", tr("Edit: {0}", tr("Paste Tags")), KeyEvent.VK_V, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT), true);
     29                tr("Apply tags of contents of paste buffer to all selected items."),
     30                Shortcut.registerShortcut("system:pastestyle", tr("Edit: {0}", tr("Paste Tags")), KeyEvent.VK_V, Shortcut.GROUP_MENU, Shortcut.SHIFT_DEFAULT), true);
    3131        DataSet.selListeners.add(this);
    3232        copyAction.addListener(this);
     
    4343            OsmPrimitive osm = it.next();
    4444            Map<String, String> m = osm.keys;
    45             if(m == null)
     45            if(m == null) {
    4646                continue;
     47            }
    4748
    4849            for (String key : m.keySet()) {
     
    5556        Collection<Command> clist = new LinkedList<Command>();
    5657        String pbSource = "Multiple Sources";
    57         if(Main.pasteBuffer.dataSources.size() == 1)
     58        if(Main.pasteBuffer.dataSources.size() == 1) {
    5859            pbSource = ((DataSource) Main.pasteBuffer.dataSources.toArray()[0]).origin;
     60        }
    5961
    6062        boolean pbNodes = Main.pasteBuffer.nodes.size() > 0;
    6163        boolean pbWays  = Main.pasteBuffer.ways.size() > 0;
    6264
    63         boolean seNodes = Main.ds.getSelectedNodes().size() > 0;
    64         boolean seWays  = Main.ds.getSelectedWays().size() > 0;
    65         boolean seRels  = Main.ds.getSelectedRelations().size() > 0;
     65        boolean seNodes = getCurrentDataSet().getSelectedNodes().size() > 0;
     66        boolean seWays  = getCurrentDataSet().getSelectedWays().size() > 0;
     67        boolean seRels  = getCurrentDataSet().getSelectedRelations().size() > 0;
    6668
    6769        if(!seNodes && seWays && !seRels && pbNodes && pbSource.equals("Copied Nodes")) {
    6870            // Copy from nodes to ways
    69             pasteKeys(clist, Main.pasteBuffer.nodes, Main.ds.getSelectedWays());
     71            pasteKeys(clist, Main.pasteBuffer.nodes, getCurrentDataSet().getSelectedWays());
    7072        } else if(seNodes && !seWays && !seRels && pbWays && pbSource.equals("Copied Ways")) {
    7173            // Copy from ways to nodes
    72             pasteKeys(clist, Main.pasteBuffer.ways, Main.ds.getSelectedNodes());
     74            pasteKeys(clist, Main.pasteBuffer.ways, getCurrentDataSet().getSelectedNodes());
    7375        } else {
    7476            // Copy from equal to equal
    75             pasteKeys(clist, Main.pasteBuffer.nodes, Main.ds.getSelectedNodes());
    76             pasteKeys(clist, Main.pasteBuffer.ways, Main.ds.getSelectedWays());
    77             pasteKeys(clist, Main.pasteBuffer.relations, Main.ds.getSelectedRelations());
     77            pasteKeys(clist, Main.pasteBuffer.nodes, getCurrentDataSet().getSelectedNodes());
     78            pasteKeys(clist, Main.pasteBuffer.ways, getCurrentDataSet().getSelectedWays());
     79            pasteKeys(clist, Main.pasteBuffer.relations, getCurrentDataSet().getSelectedRelations());
    7880        }
    7981        Main.main.undoRedo.add(new SequenceCommand(tr("Paste Tags"), clist));
    80         Main.ds.setSelected(Main.ds.getSelected()); // to force selection listeners, in particular the tag panel, to update
     82        getCurrentDataSet().setSelected(getCurrentDataSet().getSelected()); // to force selection listeners, in particular the tag panel, to update
    8183        Main.map.mapView.repaint();
    8284    }
     
    8688        for (Iterator<? extends OsmPrimitive> it = osms.iterator(); it.hasNext();) {
    8789            OsmPrimitive osm = it.next();
    88             if (osm.keys == null || osm.keys.isEmpty())
     90            if (osm.keys == null || osm.keys.isEmpty()) {
    8991                continue;
     92            }
    9093            for (String key : osm.keys.keySet()) {
    9194                String value = osm.keys.get(key);
    92                 if (! kvSeen.containsKey(key))
     95                if (! kvSeen.containsKey(key)) {
    9396                    kvSeen.put(key, value);
    94                 else if (! kvSeen.get(key).equals(value))
     97                } else if (! kvSeen.get(key).equals(value))
    9598                    return true;
    9699            }
     
    110113                ! selection.isEmpty() &&
    111114                ! pasteBuffer.allPrimitives().isEmpty() &&
    112                 (Main.ds.getSelectedNodes().isEmpty() ||
    113                     ! containsSameKeysWithDifferentValues(pasteBuffer.nodes)) &&
    114                 (Main.ds.getSelectedWays().isEmpty() ||
    115                     ! containsSameKeysWithDifferentValues(pasteBuffer.ways)) &&
    116                 (Main.ds.getSelectedRelations().isEmpty() ||
    117                     ! containsSameKeysWithDifferentValues(pasteBuffer.relations)));
     115                (getCurrentDataSet().getSelectedNodes().isEmpty() ||
     116                        ! containsSameKeysWithDifferentValues(pasteBuffer.nodes)) &&
     117                        (getCurrentDataSet().getSelectedWays().isEmpty() ||
     118                                ! containsSameKeysWithDifferentValues(pasteBuffer.ways)) &&
     119                                (getCurrentDataSet().getSelectedRelations().isEmpty() ||
     120                                        ! containsSameKeysWithDifferentValues(pasteBuffer.relations)));
    118121    }
    119122
    120123    @Override public void pasteBufferChanged(DataSet newPasteBuffer) {
    121         possiblyEnable(Main.ds.getSelected(), newPasteBuffer);
     124        possiblyEnable(getCurrentDataSet().getSelected(), newPasteBuffer);
    122125    }
    123126
  • trunk/src/org/openstreetmap/josm/actions/ReverseWayAction.java

    r1613 r1814  
    3030    public ReverseWayAction() {
    3131        super(tr("Reverse Ways"), "wayflip", tr("Reverse the direction of all selected ways."),
    32         Shortcut.registerShortcut("tools:reverse", tr("Tool: {0}", tr("Reverse Ways")), KeyEvent.VK_R, Shortcut.GROUP_EDIT), true);
     32                Shortcut.registerShortcut("tools:reverse", tr("Tool: {0}", tr("Reverse Ways")), KeyEvent.VK_R, Shortcut.GROUP_EDIT), true);
    3333    }
    3434
     
    4747
    4848            public void visitAll() {
    49                 for (OsmPrimitive osm : Main.ds.getSelected())
     49                for (OsmPrimitive osm : getCurrentDataSet().getSelected()) {
    5050                    osm.visit(this);
     51                }
    5152            }
    5253        }.visitAll();
     
    6970                    final Collection<Command> changePropertyCommands = reverseWayTagCorrector.execute(w, wnew);
    7071                    propertiesUpdated = propertiesUpdated
    71                         || (changePropertyCommands != null && !changePropertyCommands.isEmpty());
     72                    || (changePropertyCommands != null && !changePropertyCommands.isEmpty());
    7273                    c.addAll(changePropertyCommands);
    7374                }
     
    8081        }
    8182        Main.main.undoRedo.add(new SequenceCommand(tr("Reverse ways"), c));
    82         if (propertiesUpdated)
    83             DataSet.fireSelectionChanged(Main.ds.getSelected());
     83        if (propertiesUpdated) {
     84            DataSet.fireSelectionChanged(getCurrentDataSet().getSelected());
     85        }
    8486        Main.map.repaint();
    8587    }
  • trunk/src/org/openstreetmap/josm/actions/SaveActionBase.java

    r1808 r1814  
    160160            OsmBzip2Importer osmBzip2Importer = new OsmBzip2Importer();
    161161            if (gpxImExporter.acceptFile(file)) {
    162                 GpxExportAction.exportGpx(file, layer);
     162                new GpxExportAction().exportGpx(file, layer);
    163163            } else if (osmImExporter.acceptFile(file)
    164164                    || osmGzipImporter.acceptFile(file)
  • trunk/src/org/openstreetmap/josm/actions/SelectAllAction.java

    r1808 r1814  
    77import java.awt.event.KeyEvent;
    88
    9 import org.openstreetmap.josm.Main;
    109import org.openstreetmap.josm.gui.layer.Layer;
    1110import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
     
    2423        if (!isEnabled())
    2524            return;
    26         Main.ds.setSelected(Main.ds.allNonDeletedCompletePrimitives());
     25        getCurrentDataSet().setSelected(getCurrentDataSet().allNonDeletedCompletePrimitives());
    2726    }
    2827
     
    3231     */
    3332    protected void refreshEnabled() {
    34         setEnabled(Main.map != null
    35                 && Main.map.mapView !=null
    36                 && Main.map.mapView.getEditLayer() != null
    37         );
     33        setEnabled(getEditLayer() != null);
    3834    }
    3935
  • trunk/src/org/openstreetmap/josm/actions/SplitWayAction.java

    r1809 r1814  
    3232import org.openstreetmap.josm.data.osm.Way;
    3333import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor;
    34 import org.openstreetmap.josm.data.osm.visitor.NameVisitor;
    3534import org.openstreetmap.josm.data.osm.visitor.Visitor;
     35import org.openstreetmap.josm.gui.PrimitiveNameFormatter;
    3636import org.openstreetmap.josm.tools.Shortcut;
    3737
     
    6565    public void actionPerformed(ActionEvent e) {
    6666
    67         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     67        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    6868
    6969        if (!checkSelection(selection)) {
     
    9999            HashMap<Way, Integer> wayOccurenceCounter = new HashMap<Way, Integer>();
    100100            for (Node n : selectedNodes) {
    101                 for (Way w : Main.ds.ways) {
     101                for (Way w : getCurrentDataSet().ways) {
    102102                    if (w.deleted || w.incomplete) {
    103103                        continue;
     
    272272        Boolean warnme=false;
    273273        // now copy all relations to new way also
    274         for (Relation r : Main.ds.relations) {
     274
     275        for (Relation r : getCurrentDataSet().relations) {
    275276            if (r.deleted || r.incomplete) {
    276277                continue;
     
    329330        }
    330331
    331         NameVisitor v = new NameVisitor();
    332         v.visit(selectedWay);
    333332        Main.main.undoRedo.add(
    334333                new SequenceCommand(tr("Split way {0} into {1} parts",
    335                         v.name, wayChunks.size()),
     334                        new PrimitiveNameFormatter().getName(selectedWay), wayChunks.size()),
    336335                        commandList));
    337         Main.ds.setSelected(newSelection);
     336        getCurrentDataSet().setSelected(newSelection);
    338337    }
    339338
  • trunk/src/org/openstreetmap/josm/actions/UnGlueAction.java

    r1722 r1814  
    5050    public UnGlueAction() {
    5151        super(tr("UnGlue Ways"), "unglueways", tr("Duplicate nodes that are used by multiple ways."),
    52         Shortcut.registerShortcut("tools:unglue", tr("Tool: {0}", tr("UnGlue Ways")), KeyEvent.VK_G, Shortcut.GROUP_EDIT), true);
     52                Shortcut.registerShortcut("tools:unglue", tr("Tool: {0}", tr("UnGlue Ways")), KeyEvent.VK_G, Shortcut.GROUP_EDIT), true);
    5353        //DataSet.selListeners.add(this);
    5454    }
     
    6161    public void actionPerformed(ActionEvent e) {
    6262
    63         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     63        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    6464
    6565        String errMsg = null;
    6666        if (checkSelection(selection)) {
    6767            int count = 0;
    68             for (Way w : Main.ds.ways) {
    69                 if (w.deleted || w.incomplete || w.nodes.size() < 1) continue;
    70                 if (!w.nodes.contains(selectedNode)) continue;
     68            for (Way w : getCurrentDataSet().ways) {
     69                if (w.deleted || w.incomplete || w.nodes.size() < 1) {
     70                    continue;
     71                }
     72                if (!w.nodes.contains(selectedNode)) {
     73                    continue;
     74                }
    7175                count++;
    7276            }
     
    7478                // If there aren't enough ways, maybe the user wanted to unglue the nodes
    7579                // (= copy tags to a new node)
    76                 if(checkForUnglueNode(selection))
     80                if(checkForUnglueNode(selection)) {
    7781                    unglueNode(e);
    78                 else
     82                } else {
    7983                    errMsg = tr("This node is not glued to anything else.");
     84                }
    8085            } else {
    8186                // and then do the work.
     
    8691            for (Node n : selectedNodes) {
    8792                int count = 0;
    88                 for (Way w : Main.ds.ways) {
    89                     if (w.deleted || w.incomplete || w.nodes.size() < 1) continue;
    90                     if (!w.nodes.contains(n)) continue;
     93                for (Way w : getCurrentDataSet().ways) {
     94                    if (w.deleted || w.incomplete || w.nodes.size() < 1) {
     95                        continue;
     96                    }
     97                    if (!w.nodes.contains(n)) {
     98                        continue;
     99                    }
    91100                    count++;
    92101                }
     
    118127                "\n"+
    119128                tr("Note: If a way is selected, this way will get fresh copies of the unglued\n"+
    120                    "nodes and the new nodes will be selected. Otherwise, all ways will get their\n"+
    121                    "own copy and all nodes will be selected.");
    122         }
    123 
    124         if(errMsg != null)
     129                        "nodes and the new nodes will be selected. Otherwise, all ways will get their\n"+
     130                "own copy and all nodes will be selected.");
     131        }
     132
     133        if(errMsg != null) {
    125134            JOptionPane.showMessageDialog(Main.parent, errMsg);
     135        }
    126136
    127137        selectedNode = null;
     
    156166
    157167        Main.main.undoRedo.add(new SequenceCommand(tr("Unglued Node"), cmds));
    158         Main.ds.setSelected(n);
     168        getCurrentDataSet().setSelected(n);
    159169        Main.map.mapView.repaint();
    160170    }
     
    176186            return false;
    177187        boolean isPartOfWay = false;
    178         for(Way w : Main.ds.ways) {
     188        for(Way w : getCurrentDataSet().ways) {
    179189            if(w.nodes.contains(n)) {
    180190                isPartOfWay = true;
     
    250260        for (OsmPrimitive p : selection) {
    251261            if (p instanceof Way) {
    252                 if (selectedWay != null) {
     262                if (selectedWay != null)
    253263                    return false;
    254                 }
    255264                selectedWay = (Way) p;
    256265            }
    257266        }
    258         if (selectedWay == null) {
    259             return false;
    260         }
     267        if (selectedWay == null)
     268            return false;
    261269
    262270        selectedNodes = new ArrayList<Node>();
     
    264272            if (p instanceof Node) {
    265273                Node n = (Node) p;
    266                 if (!selectedWay.nodes.contains(n)) {
     274                if (!selectedWay.nodes.contains(n))
    267275                    return false;
    268                 }
    269276                selectedNodes.add(n);
    270277            }
     
    311318        Relation newRel = null;
    312319        HashSet<String> rolesToReAdd = null;
    313         for (Relation r : Main.ds.relations) {
    314             if (r.deleted || r.incomplete) continue;
     320        for (Relation r : getCurrentDataSet().relations) {
     321            if (r.deleted || r.incomplete) {
     322                continue;
     323            }
    315324            newRel = null;
    316325            rolesToReAdd = null;
     
    330339                for (RelationMember rm : r.members) {
    331340                    //if (rm.member != selectedNode) {
    332                         newRel.members.add(rm);
     341                    newRel.members.add(rm);
    333342                    //}
    334343                }
     
    356365            boolean firstway = true;
    357366            // modify all ways containing the nodes
    358             for (Way w : Main.ds.ways) {
    359                 if (w.deleted || w.incomplete || w.nodes.size() < 1) continue;
    360                 if (!w.nodes.contains(selectedNode)) continue;
    361                 if (!firstway) cmds.add(new ChangeCommand(w, modifyWay(selectedNode, w, cmds, newNodes)));
     367            for (Way w : getCurrentDataSet().ways) {
     368                if (w.deleted || w.incomplete || w.nodes.size() < 1) {
     369                    continue;
     370                }
     371                if (!w.nodes.contains(selectedNode)) {
     372                    continue;
     373                }
     374                if (!firstway) {
     375                    cmds.add(new ChangeCommand(w, modifyWay(selectedNode, w, cmds, newNodes)));
     376                }
    362377                firstway = false;
    363378            }
     
    372387            newNodes.add(selectedNode);
    373388        } // if a node and a way has been selected, new selection is only the new node that was added to the selected way
    374         Main.ds.setSelected(newNodes);
     389        getCurrentDataSet().setSelected(newNodes);
    375390    }
    376391
     
    393408
    394409        Main.main.undoRedo.add(new SequenceCommand(tr("Dupe {0} nodes into {1} nodes", selectedNodes.size(), selectedNodes.size()+allNewNodes.size()), cmds));
    395         Main.ds.setSelected(allNewNodes);
    396     }
    397 
    398 // Disabled because we have such a nice help text that would not be shown otherwise.
    399 //
    400 //  /**
    401 //   * Enable the menu option if the selection looks like we could use it.
    402 //   */
    403 //  public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) {
    404 //      setEnabled(checkSelection(newSelection) || checkSelection2(newSelection));
    405 //      selectedNode = null;
    406 //      selectedWay = null;
    407 //      selectedNodes = null;
    408 //  }
     410        getCurrentDataSet().setSelected(allNewNodes);
     411    }
    409412}
  • trunk/src/org/openstreetmap/josm/actions/UnselectAllAction.java

    r1808 r1814  
    4444        if (!isEnabled())
    4545            return;
    46         Main.ds.setSelected();
     46        getCurrentDataSet().setSelected();
    4747    }
    4848    /**
     
    5151     */
    5252    protected void refreshEnabled() {
    53         setEnabled(Main.map != null
    54                 && Main.map.mapView !=null
    55                 && Main.map.mapView.getEditLayer() != null
    56         );
     53        setEnabled(getEditLayer() != null);
    5754    }
    5855
  • trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java

    r1808 r1814  
    1616import org.openstreetmap.josm.data.osm.DataSource;
    1717import org.openstreetmap.josm.gui.layer.Layer;
     18import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1819import org.openstreetmap.josm.gui.layer.Layer.LayerChangeListener;
    1920import org.openstreetmap.josm.tools.Shortcut;
     
    3839     */
    3940    protected void refreshEnabled() {
    40         setEnabled(Main.main != null
    41                 && Main.map != null
    42                 && Main.map.mapView !=null
    43                 && Main.map.mapView.getEditLayer() != null
    44         );
     41        setEnabled(getEditLayer() != null);
    4542    }
    4643
     
    5047        int bboxCount = 0;
    5148        List<Area> areas = new ArrayList<Area>();
    52         for(DataSource ds : Main.main.createOrGetEditLayer().data.dataSources) {
     49        for(DataSource ds : Main.map.mapView.getEditLayer().data.dataSources) {
    5350            areas.add(new Area(ds.bounds.asRect()));
    5451        }
  • trunk/src/org/openstreetmap/josm/actions/UpdateSelectionAction.java

    r1811 r1814  
    4242    protected void handlePrimitiveGoneException(long id) {
    4343        MultiFetchServerObjectReader reader = new MultiFetchServerObjectReader();
    44         reader.append(Main.main.createOrGetEditLayer().data,id);
     44        reader.append(getCurrentDataSet(),id);
    4545        DataSet ds = null;
    4646        try {
     
    194194     */
    195195    protected void refreshEnabled() {
    196         setEnabled(Main.main != null
    197                 && Main.map != null
    198                 && Main.map.mapView !=null
    199                 && Main.map.mapView.getEditLayer() != null
    200                 && ! Main.map.mapView.getEditLayer().data.getSelected().isEmpty()
     196        setEnabled(getCurrentDataSet() != null
     197                && ! getCurrentDataSet().getSelected().isEmpty()
    201198        );
    202199    }
     
    208205        if (! isEnabled())
    209206            return;
    210         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     207        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    211208        if (selection.size() == 0) {
    212209            JOptionPane.showMessageDialog(
  • trunk/src/org/openstreetmap/josm/actions/UploadAction.java

    r1811 r1814  
    178178        }
    179179
    180         ConflictCollection conflicts = Main.main.createOrGetEditLayer().getConflicts();
     180        ConflictCollection conflicts = Main.map.mapView.getEditLayer().getConflicts();
    181181        if (conflicts !=null && !conflicts.isEmpty()) {
    182182            JOptionPane.showMessageDialog(Main.parent,tr("There are unresolved conflicts. You have to resolve these first."));
     
    189189        final LinkedList<OsmPrimitive> update = new LinkedList<OsmPrimitive>();
    190190        final LinkedList<OsmPrimitive> delete = new LinkedList<OsmPrimitive>();
    191         for (OsmPrimitive osm : Main.ds.allPrimitives()) {
     191        for (OsmPrimitive osm : getCurrentDataSet().allPrimitives()) {
    192192            if (osm.get("josm/ignore") != null) {
    193193                continue;
     
    231231            @Override protected void realRun() throws SAXException, IOException {
    232232                try {
    233                     server.uploadOsm(Main.ds.version, all, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
    234                     Main.main.createOrGetEditLayer().cleanData(server.processed, !add.isEmpty());
     233                    server.uploadOsm(getCurrentDataSet().version, all, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
     234                    getEditLayer().cleanData(server.processed, !add.isEmpty());
    235235                } catch (Exception sxe) {
    236236                    if (uploadCancelled) {
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DeleteAction.java

    r1750 r1814  
    7777        Command c;
    7878        if (ctrl) {
    79             c = DeleteCommand.deleteWithReferences(Main.ds.getSelected());
     79            c = DeleteCommand.deleteWithReferences(getCurrentDataSet().getSelected());
    8080        } else {
    81             c = DeleteCommand.delete(Main.ds.getSelected(), !alt);
     81            c = DeleteCommand.delete(getCurrentDataSet().getSelected(), !alt);
    8282        }
    8383        if (c != null) {
     
    8585        }
    8686
    87         Main.ds.setSelected();
     87        getCurrentDataSet().setSelected();
    8888        Main.map.repaint();
    8989    }
     
    124124        }
    125125
    126         Main.ds.setSelected();
     126        getCurrentDataSet().setSelected();
    127127        Main.map.mapView.repaint();
    128128    }
  • trunk/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

    r1750 r1814  
    9494        // Add extra shortcut N
    9595        Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
    96             Shortcut.registerShortcut("mapmode:drawfocus", tr("Mode: Draw Focus"), KeyEvent.VK_N, Shortcut.GROUP_EDIT).getKeyStroke(), tr("Draw"));
     96                Shortcut.registerShortcut("mapmode:drawfocus", tr("Mode: Draw Focus"), KeyEvent.VK_N, Shortcut.GROUP_EDIT).getKeyStroke(), tr("Draw"));
    9797
    9898        cursorCrosshair = getCursor();
     
    124124                        return;
    125125                    switch(c) {
    126                         case way:
    127                             Main.map.mapView.setCursor(cursorJoinWay);
    128                             break;
    129                         case node:
    130                             Main.map.mapView.setCursor(cursorJoinNode);
    131                             break;
    132                         default:
    133                             Main.map.mapView.setCursor(cursorCrosshair);
    134                             break;
     126                    case way:
     127                        Main.map.mapView.setCursor(cursorJoinWay);
     128                        break;
     129                    case node:
     130                        Main.map.mapView.setCursor(cursorJoinNode);
     131                        break;
     132                    default:
     133                        Main.map.mapView.setCursor(cursorCrosshair);
     134                    break;
    135135                    }
    136136                }
     
    162162
    163163        // This happens when nothing is selected, but we still want to highlight the "target node"
    164         if (mouseOnExistingNode == null && Main.ds.getSelected().size() == 0
    165                 && mousePos != null)
     164        if (mouseOnExistingNode == null && getCurrentDataSet().getSelected().size() == 0
     165                && mousePos != null) {
    166166            mouseOnExistingNode = Main.map.mapView.getNearestNode(mousePos);
     167        }
    167168
    168169        if (mouseOnExistingNode != null) {
     
    170171            // We also need this list for the statusbar help text
    171172            oldHighlights.add(mouseOnExistingNode);
    172             if(drawTargetHighlight)
     173            if(drawTargetHighlight) {
    173174                mouseOnExistingNode.highlighted = true;
     175            }
    174176            return;
    175177        }
     
    259261
    260262    private void tryAgain(MouseEvent e) {
    261         Main.ds.setSelected();
     263        getCurrentDataSet().setSelected();
    262264        mouseClicked(e);
    263265    }
     
    306308        mousePos = e.getPoint();
    307309
    308         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     310        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    309311        Collection<Command> cmds = new LinkedList<Command>();
    310312
    311313        ArrayList<Way> reuseWays = new ArrayList<Way>(),
    312             replacedWays = new ArrayList<Way>();
     314        replacedWays = new ArrayList<Way>();
    313315        boolean newNode = false;
    314316        Node n = null;
    315317
    316         if (!ctrl)
     318        if (!ctrl) {
    317319            n = Main.map.mapView.getNearestNode(mousePos);
     320        }
    318321
    319322        if (n != null) {
     
    323326                // (this is just a convenience option so that people don't
    324327                // have to switch modes)
    325                 Main.ds.setSelected(n);
    326                 selection = Main.ds.getSelected();
     328                getCurrentDataSet().setSelected(n);
     329                selection = getCurrentDataSet().getSelected();
    327330                // The user explicitly selected a node, so let him continue drawing
    328331                wayIsFinished = false;
     
    334337            if (n.getCoor().isOutSideWorld()) {
    335338                JOptionPane.showMessageDialog(Main.parent,
    336                     tr("Cannot add a node outside of the world."));
     339                        tr("Cannot add a node outside of the world."));
    337340                return;
    338341            }
     
    366369
    367370                    pruneSuccsAndReverse(is);
    368                     for (int i : is) segSet.add(
    369                         Pair.sort(new Pair<Node,Node>(w.nodes.get(i), w.nodes.get(i+1))));
    370                     for (int i : is) wnew.addNode(i + 1, n);
     371                    for (int i : is) {
     372                        segSet.add(
     373                                Pair.sort(new Pair<Node,Node>(w.nodes.get(i), w.nodes.get(i+1))));
     374                    }
     375                    for (int i : is) {
     376                        wnew.addNode(i + 1, n);
     377                    }
    371378
    372379                    // If ALT is pressed, a new way should be created and that new way should get
     
    375382                    // but pressing ALT prevents this. Therefore we must de-select the way manually
    376383                    // here so /only/ the new way will be selected after this method finishes.
    377                     if(alt) wnew.selected = false;
     384                    if(alt) {
     385                        wnew.selected = false;
     386                    }
    378387
    379388                    cmds.add(new ChangeCommand(insertPoint.getKey(), wnew));
     
    450459                    int nodeCount=0;
    451460                    for (Node p : way.nodes)
    452                         if(p.equals(n0)) nodeCount++;
    453                     if(nodeCount > 1) way = null;
     461                        if(p.equals(n0)) {
     462                            nodeCount++;
     463                        }
     464                    if(nodeCount > 1) {
     465                        way = null;
     466                    }
    454467                }
    455468
     
    476489
    477490                // Add new node to way
    478                 if (way.nodes.get(way.nodes.size() - 1) == n0)
     491                if (way.nodes.get(way.nodes.size() - 1) == n0) {
    479492                    way.addNode(n);
    480                 else
     493                } else {
    481494                    way.addNode(0, n);
     495                }
    482496
    483497                extendedWay = true;
    484                 Main.ds.setSelected(way);
     498                getCurrentDataSet().setSelected(way);
    485499            }
    486500        }
     
    488502        String title;
    489503        if (!extendedWay) {
    490             if (!newNode) {
     504            if (!newNode)
    491505                return; // We didn't do anything.
    492             } else if (reuseWays.isEmpty()) {
     506            else if (reuseWays.isEmpty()) {
    493507                title = tr("Add node");
    494508            } else {
    495509                title = tr("Add node into way");
    496                 for (Way w : reuseWays) w.selected = false;
    497             }
    498             Main.ds.setSelected(n);
     510                for (Way w : reuseWays) {
     511                    w.selected = false;
     512                }
     513            }
     514            getCurrentDataSet().setSelected(n);
    499515        } else if (!newNode) {
    500516            title = tr("Connect existing way to node");
     
    508524
    509525        Main.main.undoRedo.add(c);
    510         if(!wayIsFinished) lastUsedNode = n;
     526        if(!wayIsFinished) {
     527            lastUsedNode = n;
     528        }
    511529
    512530        computeHelperLine();
     
    534552            int posn0 = selectedWay.nodes.indexOf(currentNode);
    535553            if( posn0 != -1 && // n0 is part of way
    536                 (posn0 >= 1                          && targetNode.equals(selectedWay.nodes.get(posn0-1))) || // previous node
    537                 (posn0 < selectedWay.nodes.size()-1) && targetNode.equals(selectedWay.nodes.get(posn0+1))) {  // next node
    538                 Main.ds.setSelected(targetNode);
     554                    (posn0 >= 1                          && targetNode.equals(selectedWay.nodes.get(posn0-1))) || // previous node
     555                    (posn0 < selectedWay.nodes.size()-1) && targetNode.equals(selectedWay.nodes.get(posn0+1))) {  // next node
     556                getCurrentDataSet().setSelected(targetNode);
    539557                lastUsedNode = targetNode;
    540558                return true;
     
    618636        double angle = -1;
    619637
    620         Collection<OsmPrimitive> selection = Main.ds.getSelected();
     638        Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    621639
    622640        Node selectedNode = null;
     
    638656        if(!ctrl && currentMouseNode == null) {
    639657            List<WaySegment> wss = Main.map.mapView.getNearestWaySegments(mousePos);
    640             for(WaySegment ws : wss)
     658            for(WaySegment ws : wss) {
    641659                mouseOnExistingWays.add(ws.way);
     660            }
    642661        }
    643662
     
    692711        if (previousNode != null) {
    693712            angle = hdg - Math.toDegrees(previousNode.getCoor().heading(currentBaseNode.getCoor()));
    694             if (angle < 0) angle += 360;
     713            if (angle < 0) {
     714                angle += 360;
     715            }
    695716        }
    696717        Main.map.statusLine.setAngle(angle);
     
    715736     *  <code>null</code> otherwise.
    716737     */
    717     public static Way getWayForNode(Node n) {
     738    public Way getWayForNode(Node n) {
    718739        Way way = null;
    719         for (Way w : Main.ds.ways) {
    720             if (w.deleted || w.incomplete || w.nodes.size() < 1) continue;
     740        for (Way w : getCurrentDataSet().ways) {
     741            if (w.deleted || w.incomplete || w.nodes.size() < 1) {
     742                continue;
     743            }
    721744            Node firstNode = w.nodes.get(0);
    722745            Node lastNode = w.nodes.get(w.nodes.size() - 1);
     
    805828        default:
    806829            EastNorth P = n.getEastNorth();
    807             seg = segs.iterator().next();
    808             A = seg.a.getEastNorth();
    809             B = seg.b.getEastNorth();
    810             double a = P.distanceSq(B);
    811             double b = P.distanceSq(A);
    812             double c = A.distanceSq(B);
    813             q = (a - b + c) / (2*c);
    814             n.setEastNorth(new EastNorth(B.east() + q * (A.east() - B.east()), B.north() + q * (A.north() - B.north())));
     830        seg = segs.iterator().next();
     831        A = seg.a.getEastNorth();
     832        B = seg.b.getEastNorth();
     833        double a = P.distanceSq(B);
     834        double b = P.distanceSq(A);
     835        double c = A.distanceSq(B);
     836        q = (a - b + c) / (2*c);
     837        n.setEastNorth(new EastNorth(B.east() + q * (A.east() - B.east()), B.north() + q * (A.north() - B.north())));
    815838        }
    816839    }
     
    883906            // oldHighlights may store a node or way, check if it's a node
    884907            OsmPrimitive x = oldHighlights.iterator().next();
    885             if (x instanceof Node)
     908            if (x instanceof Node) {
    886909                rv = tr("Select node under cursor.");
    887             else
     910            } else {
    888911                rv = trn("Insert new node into way.", "Insert new node into {0} ways.",
    889                 oldHighlights.size(), oldHighlights.size());
     912                        oldHighlights.size(), oldHighlights.size());
     913            }
    890914        }
    891915
     
    894918         */
    895919        if (currentBaseNode != null && !wayIsFinished) {
    896             if (alt)
     920            if (alt) {
    897921                rv += " " + tr("Start new way from last node.");
    898             else
     922            } else {
    899923                rv += " " + tr("Continue way from last node.");
     924            }
    900925        }
    901926
     
    904929         * Handle special case: Highlighted node == selected node => finish drawing
    905930         */
    906         if (n != null && Main.ds.getSelectedNodes().contains(n)) {
    907             if (wayIsFinished)
     931        if (n != null && getCurrentDataSet().getSelectedNodes().contains(n)) {
     932            if (wayIsFinished) {
    908933                rv = tr("Select node under cursor.");
    909             else
     934            } else {
    910935                rv = tr("Finish drawing.");
     936            }
    911937        }
    912938
     
    914940         * Handle special case: Self-Overlapping or closing way
    915941         */
    916         if (Main.ds.getSelectedWays().size() > 0 && !wayIsFinished && !alt) {
    917             Way w = (Way) Main.ds.getSelectedWays().iterator().next();
     942        if (getCurrentDataSet().getSelectedWays().size() > 0 && !wayIsFinished && !alt) {
     943            Way w = (Way) getCurrentDataSet().getSelectedWays().iterator().next();
    918944            for (Node m : w.nodes) {
    919945                if (m.equals(mouseOnExistingNode) || mouseOnExistingWays.contains(w)) {
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ExtrudeAction.java

    r1750 r1814  
    7777        super(tr("Extrude"), "extrude/extrude", tr("Create areas"),
    7878                Shortcut.registerShortcut("mapmode:extrude", tr("Mode: {0}", tr("Extrude")), KeyEvent.VK_X, Shortcut.GROUP_EDIT),
    79             mapFrame,
    80             getCursor("normal", "rectangle", Cursor.DEFAULT_CURSOR));
     79                mapFrame,
     80                getCursor("normal", "rectangle", Cursor.DEFAULT_CURSOR));
    8181        putValue("help", "Action/Extrude/Extrude");
    8282        initialMoveDelay = Main.pref.getInteger("edit.initial-move-delay",200);
     
    160160
    161161            double u = ((en3.east() - en1.east()) * (en2.east() - en1.east()) +
    162                         (en3.north() - en1.north()) * (en2.north() - en1.north())) /
    163                        en2.distanceSq(en1);
     162                    (en3.north() - en1.north()) * (en2.north() - en1.north())) /
     163                    en2.distanceSq(en1);
    164164            // the point on the segment from which the distance to mouse pos is shortest
    165165            EastNorth base = new EastNorth(en1.east() + u * (en2.east() - en1.east()),
    166                                            en1.north() + u * (en2.north() - en1.north()));
     166                    en1.north() + u * (en2.north() - en1.north()));
    167167
    168168            // find out the distance, in metres, between the base point and the mouse cursor
     
    219219        initialMousePos = e.getPoint();
    220220
    221         if(selectedSegment != null)
    222             Main.ds.setSelected(selectedSegment.way);
     221        if(selectedSegment != null) {
     222            getCurrentDataSet().setSelected(selectedSegment.way);
     223        }
    223224    }
    224225
     
    241242            wnew.addNode(selectedSegment.lowerIndex+1, n3);
    242243            wnew.addNode(selectedSegment.lowerIndex+1, n4);
    243             if (wnew.nodes.size() == 4) wnew.addNode(n1);
     244            if (wnew.nodes.size() == 4) {
     245                wnew.addNode(n1);
     246            }
    244247            Collection<Command> cmds = new LinkedList<Command>();
    245248            cmds.add(new AddCommand(n4));
     
    258261
    259262    @Override public String getModeHelpText() {
    260         if (mode == Mode.select) {
     263        if (mode == Mode.select)
    261264            return tr("Release the mouse button to select the objects in the rectangle.");
    262         } else if (mode == Mode.EXTRUDE) {
     265        else if (mode == Mode.EXTRUDE)
    263266            return tr("Draw a rectangle of the desired size, then release the mouse button.");
    264         } else if (mode == Mode.rotate) {
     267        else if (mode == Mode.rotate)
    265268            return tr("Release the mouse button to stop rotating.");
    266         } else {
     269        else
    267270            return tr("Drag a way segment to make a rectangle.");
    268         }
    269     }
    270 
    271         @Override public boolean layerIsSupported(Layer l) {
    272                 return l instanceof OsmDataLayer;
    273         }
     271    }
     272
     273    @Override public boolean layerIsSupported(Layer l) {
     274        return l instanceof OsmDataLayer;
     275    }
    274276}
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r1750 r1814  
    207207            // Currently we support moving and rotating, which do not affect relations.
    208208            // So don't add them in the first place to make handling easier
    209             Collection<OsmPrimitive> selection = Main.ds.getSelectedNodesAndWays();
     209            Collection<OsmPrimitive> selection = getCurrentDataSet().getSelectedNodesAndWays();
    210210            Collection<Node> affectedNodes = AllNodesVisitor.getAllNodes(selection);
    211211
     
    355355
    356356        if (ctrl && shift) {
    357             if (Main.ds.getSelected().isEmpty()) {
     357            if (getCurrentDataSet().getSelected().isEmpty()) {
    358358                selectPrims(osmColl, true, false, false, false);
    359359            }
     
    366366            // move.
    367367            selectPrims(osmColl,
    368                     shift || Main.ds.getSelected().containsAll(osmColl),
     368                    shift || getCurrentDataSet().getSelected().containsAll(osmColl),
    369369                    ctrl, false, false);
    370370            mode = Mode.move;
     
    403403
    404404            // Select Draw Tool if no selection has been made
    405             if(Main.ds.getSelected().size() == 0 && !cancelDrawMode) {
     405            if(getCurrentDataSet().getSelected().size() == 0 && !cancelDrawMode) {
    406406                Main.map.selectDrawTool(true);
    407407                return;
     
    419419
    420420                // If the user double-clicked a node, change to draw mode
    421                 List<OsmPrimitive> sel = new ArrayList<OsmPrimitive>(Main.ds.getSelected());
     421                List<OsmPrimitive> sel = new ArrayList<OsmPrimitive>(getCurrentDataSet().getSelected());
    422422                if(e.getClickCount() >=2 && sel.size() == 1 && sel.get(0) instanceof Node) {
    423423                    // We need to do it like this as otherwise drawAction will see a double
     
    431431                }
    432432            } else {
    433                 Collection<OsmPrimitive> selection = Main.ds.getSelected();
     433                Collection<OsmPrimitive> selection = getCurrentDataSet().getSelected();
    434434                Collection<OsmPrimitive> s = new TreeSet<OsmPrimitive>();
    435435                int max = Main.pref.getInteger("warn.move.maxelements", 20);
     
    469469                        if (selNodes.size() > 0) {
    470470                            selNodes.add(n);
    471                             MergeNodesAction.mergeNodes(selNodes, n);
     471                            new MergeNodesAction().mergeNodes(selNodes, n);
    472472                        }
    473473                    }
     
    496496            curSel = new LinkedList<OsmPrimitive>(); // new selection will replace the old.
    497497        } else {
    498             curSel = Main.ds.getSelected();
     498            curSel = getCurrentDataSet().getSelected();
    499499        }
    500500
     
    512512            }
    513513        }
    514         Main.ds.setSelected(curSel);
     514        getCurrentDataSet().setSelected(curSel);
    515515        Main.map.mapView.repaint();
    516516    }
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ZoomAction.java

    r1722 r1814  
    77import java.awt.event.KeyEvent;
    88
    9 import org.openstreetmap.josm.data.coor.EastNorth;
    109import org.openstreetmap.josm.gui.MapFrame;
    1110import org.openstreetmap.josm.gui.MapView;
     
    4746    public ZoomAction(MapFrame mapFrame) {
    4847        super(tr("Zoom"), "zoom", tr("Zoom and move map"),
    49         Shortcut.registerShortcut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.VK_Z, Shortcut.GROUP_EDIT),
    50         mapFrame, ImageProvider.getCursor("normal", "zoom"));
     48                Shortcut.registerShortcut("mapmode:zoom", tr("Mode: {0}", tr("Zoom")), KeyEvent.VK_Z, Shortcut.GROUP_EDIT),
     49                mapFrame, ImageProvider.getCursor("normal", "zoom"));
    5150        mv = mapFrame.mapView;
    5251        selectionManager = new SelectionManager(this, true, mv);
     
    5756     */
    5857    public void selectionEnded(Rectangle r, boolean alt, boolean shift, boolean ctrl) {
    59         if (r.width >= 3 && r.height >= 3)
     58        if (r.width >= 3 && r.height >= 3) {
    6059            mv.zoomToFactor(mv.getEastNorth(r.x+r.width/2, r.y+r.height/2), r.getWidth()/mv.getWidth());
     60        }
    6161    }
    6262
  • trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java

    r1808 r1814  
    164164        }
    165165        try {
    166             Collection<OsmPrimitive> sel = Main.ds.getSelected();
     166            Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getSelected();
    167167            SearchCompiler.Match matcher = SearchCompiler.compile(search, caseSensitive, regexSearch);
    168168            int foundMatches = 0;
    169             for (OsmPrimitive osm : Main.ds.allNonDeletedCompletePrimitives()) {
     169            for (OsmPrimitive osm : Main.main.getCurrentDataSet().allNonDeletedCompletePrimitives()) {
    170170                if (mode == SearchMode.replace) {
    171171                    if (matcher.match(osm)) {
     
    183183                }
    184184            }
    185             Main.ds.setSelected(sel);
     185            Main.main.getCurrentDataSet().setSelected(sel);
    186186            if (foundMatches == 0) {
    187187                String msg = null;
     
    241241     */
    242242    protected void refreshEnabled() {
    243         setEnabled(Main.map != null
    244                 && Main.map.mapView !=null
    245                 && Main.map.mapView.getEditLayer() != null
    246         );
     243        setEnabled(getEditLayer() != null);
    247244    }
    248245
  • trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java

    r1786 r1814  
    133133                String value = null;
    134134
    135                 if (key.equals("timestamp"))
     135                if (key.equals("timestamp")) {
    136136                    value = DateUtils.fromDate(osm.getTimestamp());
    137                 else
     137                } else {
    138138                    value = osm.get(key);
     139                }
    139140
    140141                if (value == null)
     
    169170
    170171        public ExactKeyValue(boolean regexp, String key, String value) throws ParseError {
    171             if (key == "") {
     172            if (key == "")
    172173                throw new ParseError(tr("Key cannot be empty when tag operator is used. Sample use: key=value"));
    173             }
    174174            this.key = key;
    175175            this.value = value;
     
    223223        public boolean match(OsmPrimitive osm) throws ParseError {
    224224
    225             if (osm.keys == null || osm.keys.isEmpty()) {
     225            if (osm.keys == null || osm.keys.isEmpty())
    226226                return mode == Mode.NONE;
    227             }
    228227
    229228            switch (mode) {
     
    238237            case ANY_KEY:
    239238                for (String v:osm.keys.values()) {
    240                     if (v.equals(value)) {
     239                    if (v.equals(value))
    241240                        return true;
    242                     }
    243241                }
    244242                return false;
     
    247245            case ANY_KEY_REGEXP:
    248246                for (String v:osm.keys.values()) {
    249                     if (valuePattern.matcher(v).matches()) {
     247                    if (valuePattern.matcher(v).matches())
    250248                        return true;
    251                     }
    252249                }
    253250                return false;
     
    257254                    if (keyPattern.matcher(entry.getKey()).matches()) {
    258255                        if (mode == Mode.ANY_VALUE_REGEXP
    259                                 || valuePattern.matcher(entry.getValue()).matches()) {
     256                                || valuePattern.matcher(entry.getValue()).matches())
    260257                            return true;
    261                         }
    262258                    }
    263259                }
     
    265261            case MISSING_KEY_REGEXP:
    266262                for (String k:osm.keys.keySet()) {
    267                     if (keyPattern.matcher(k).matches()) {
     263                    if (keyPattern.matcher(k).matches())
    268264                        return false;
    269                     }
    270265                }
    271266                return true;
     
    337332                // is not Java 1.5
    338333                //String name = java.text.Normalizer.normalize(name, java.text.Normalizer.Form.NFC);
    339                 if (!caseSensitive)
     334                if (!caseSensitive) {
    340335                    name = name.toLowerCase();
     336                }
    341337                if (name.indexOf(search) != -1)
    342338                    return true;
     
    356352            } else if ("relation".equals(type)) {
    357353                this.type = Relation.class;
    358             } else {
     354            } else
    359355                throw new ParseError(tr("Unknown primitive type: {0}. Allowed values are node, way or relation",
    360356                        type));
    361             }
    362357        }
    363358        @Override public boolean match(OsmPrimitive osm) {
     
    441436            // "parent" (null) should mean the same as "parent()"
    442437            // (Always). I.e. match everything
    443             if (child == null)
     438            if (child == null) {
    444439                child = new Always();
     440            }
    445441
    446442            if (osm instanceof Way) {
    447                 for (Node n : ((Way)osm).nodes)
     443                for (Node n : ((Way)osm).nodes) {
    448444                    isParent |= child.match(n);
     445                }
    449446            } else if (osm instanceof Relation) {
    450447                for (RelationMember member : ((Relation)osm).members) {
    451                     if (member.member != null)
     448                    if (member.member != null) {
    452449                        isParent |= child.match(member.member);
     450                    }
    453451                }
    454452            }
     
    464462            // "child" (null) should mean the same as "child()"
    465463            // (Always). I.e. match everything
    466             if (parent == null)
     464            if (parent == null) {
    467465                parent = new Always();
     466            }
    468467
    469468            boolean isChild = false;
    470             CollectBackReferencesVisitor backRefs = new CollectBackReferencesVisitor(Main.ds);
     469            CollectBackReferencesVisitor backRefs = new CollectBackReferencesVisitor(Main.main.getCurrentDataSet());
    471470            osm.visit(backRefs);
    472471            for (OsmPrimitive p : backRefs.data) {
     
    485484
    486485    public static Match compile(String searchStr, boolean caseSensitive, boolean regexSearch)
    487             throws ParseError {
     486    throws ParseError {
    488487        return new SearchCompiler(caseSensitive, regexSearch,
    489488                new PushbackTokenizer(
    490                     new PushbackReader(new StringReader(searchStr))))
    491             .parse();
     489                        new PushbackReader(new StringReader(searchStr))))
     490        .parse();
    492491    }
    493492
    494493    public Match parse() throws ParseError {
    495494        Match m = parseJuxta();
    496         if (!tokenizer.readIfEqual(null)) {
     495        if (!tokenizer.readIfEqual(null))
    497496            throw new ParseError(tr("Unexpected token: {0}", tokenizer.nextToken()));
    498         }
    499497        return m;
    500498    }
     
    515513        if (tokenizer.readIfEqual("|")) {
    516514            Match b = parseNot();
    517             if (a == null || b == null) {
     515            if (a == null || b == null)
    518516                throw new ParseError(tr("Missing arguments for or."));
    519             }
    520517            return new Or(a, b);
    521518        }
     
    526523        if (tokenizer.readIfEqual("-")) {
    527524            Match m = parseParens();
    528             if (m == null) {
     525            if (m == null)
    529526                throw new ParseError(tr("Missing argument for not."));
    530             }
    531527            return new Not(m);
    532528        }
     
    537533        if (tokenizer.readIfEqual("(")) {
    538534            Match m = parseJuxta();
    539             if (!tokenizer.readIfEqual(")")) {
     535            if (!tokenizer.readIfEqual(")"))
    540536                throw new ParseError(tr("Expected closing parenthesis."));
    541             }
    542537            return m;
    543538        }
     
    550545        if (tokenizer.readIfEqual(":")) {
    551546            String tok2 = tokenizer.readText();
    552             if (tok == null) tok = "";
    553             if (tok2 == null) tok2 = "";
     547            if (tok == null) {
     548                tok = "";
     549            }
     550            if (tok2 == null) {
     551                tok2 = "";
     552            }
    554553            return parseKV(tok, tok2);
    555554        }
     
    557556        if (tokenizer.readIfEqual("=")) {
    558557            String tok2 = tokenizer.readText();
    559             if (tok == null) tok = "";
    560             if (tok2 == null) tok2 = "";
     558            if (tok == null) {
     559                tok = "";
     560            }
     561            if (tok2 == null) {
     562                tok2 = "";
     563            }
    561564            return new ExactKeyValue(regexSearch, tok, tok2);
    562565        }
    563566
    564         if (tok == null) {
     567        if (tok == null)
    565568            return null;
    566         } else if (tok.equals("modified")) {
     569        else if (tok.equals("modified"))
    567570            return new Modified();
    568         } else if (tok.equals("incomplete")) {
     571        else if (tok.equals("incomplete"))
    569572            return new Incomplete();
    570         } else if (tok.equals("untagged")) {
     573        else if (tok.equals("untagged"))
    571574            return new Untagged();
    572         } else if (tok.equals("selected")) {
     575        else if (tok.equals("selected"))
    573576            return new Selected();
    574         } else if (tok.equals("child")) {
     577        else if (tok.equals("child"))
    575578            return new Child(parseParens());
    576         } else if (tok.equals("parent")) {
     579        else if (tok.equals("parent"))
    577580            return new Parent(parseParens());
    578         } else {
     581        else
    579582            return new Any(tok);
    580         }
    581583    }
    582584
    583585    private Match parseKV(String key, String value) throws ParseError {
    584         if (key.equals("type")) {
     586        if (key.equals("type"))
    585587            return new ExactType(value);
    586         } else if (key.equals("user")) {
     588        else if (key.equals("user"))
    587589            return new UserMatch(value);
    588         } else if (key.equals("nodes")) {
     590        else if (key.equals("nodes")) {
    589591            try {
    590592                String[] range = value.split("-");
    591                 if (range.length == 1) {
     593                if (range.length == 1)
    592594                    return new NodeCount(Integer.parseInt(value));
    593                 } else if (range.length == 2) {
     595                else if (range.length == 2)
    594596                    return new NodeCountRange(Integer.parseInt(range[0]), Integer.parseInt(range[1]));
    595                 } else {
     597                else
    596598                    throw new ParseError(tr("Wrong number of parameters for nodes operator."));
    597                 }
    598599            } catch (NumberFormatException e) {
    599600                throw new ParseError(tr("Incorrect value of nodes operator: {0}. Nodes operator expects number of nodes or range, for example nodes:10-20", value));
     
    606607                throw new ParseError(tr("Incorrect value of id operator: {0}. Number is expected.", value));
    607608            }
    608         } else {
     609        } else
    609610            return new KeyValue(key, value);
    610         }
    611611    }
    612612
     
    627627        // insensitively, but the OSM data is in Unicode. With
    628628        // UNICODE_CASE casefolding is made Unicode-aware.
    629         if (!caseSensitive)
     629        if (!caseSensitive) {
    630630            searchFlags |= (Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
     631        }
    631632
    632633        return searchFlags;
  • trunk/src/org/openstreetmap/josm/actions/search/SelectionWebsiteLoader.java

    r1811 r1814  
    4040    @Override protected void realRun() {
    4141        progressMonitor.setTicksCount(2);
    42         sel = mode != SearchAction.SearchMode.remove ? new LinkedList<OsmPrimitive>() : Main.ds.allNonDeletedPrimitives();
     42        sel = mode != SearchAction.SearchMode.remove ? new LinkedList<OsmPrimitive>() : Main.main.getCurrentDataSet().allNonDeletedPrimitives();
    4343        try {
    4444            URLConnection con = url.openConnection();
     
    4747            progressMonitor.subTask(tr("Downloading..."));
    4848            Map<Long, String> ids = idReader.parseIds(in);
    49             for (OsmPrimitive osm : Main.ds.allNonDeletedPrimitives()) {
     49            for (OsmPrimitive osm : Main.main.getCurrentDataSet().allNonDeletedPrimitives()) {
    5050                if (ids.containsKey(osm.id) && osm.getClass().getName().toLowerCase().endsWith(ids.get(osm.id))) {
    5151                    if (mode == SearchAction.SearchMode.remove) {
     
    8686    @Override protected void finish() {
    8787        if (sel != null) {
    88             Main.ds.setSelected(sel);
     88            Main.main.getCurrentDataSet().setSelected(sel);
    8989        }
    9090    }
Note: See TracChangeset for help on using the changeset viewer.