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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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;
Note: See TracChangeset for help on using the changeset viewer.