org.openstreetmap.josm.actions
Class MergeNodesAction

java.lang.Object
  extended by javax.swing.AbstractAction
      extended by org.openstreetmap.josm.actions.JosmAction
          extended by org.openstreetmap.josm.actions.MergeNodesAction
All Implemented Interfaces:
java.awt.event.ActionListener, java.io.Serializable, java.lang.Cloneable, java.util.EventListener, javax.swing.Action, Destroyable

public class MergeNodesAction
extends JosmAction

Merges a collection of nodes into one node. The "surviving" node will be the one with the lowest positive id. (I.e. it was uploaded to the server and is the oldest one.) However we use the location of the node that was selected *last*. The "surviving" node will be moved to that location if it is different from the last selected node.

See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.openstreetmap.josm.actions.JosmAction
sc
 
Fields inherited from class javax.swing.AbstractAction
changeSupport, enabled
 
Fields inherited from interface javax.swing.Action
ACCELERATOR_KEY, ACTION_COMMAND_KEY, DEFAULT, DISPLAYED_MNEMONIC_INDEX_KEY, LARGE_ICON_KEY, LONG_DESCRIPTION, MNEMONIC_KEY, NAME, SELECTED_KEY, SHORT_DESCRIPTION, SMALL_ICON
 
Constructor Summary
MergeNodesAction()
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent event)
           
static void doMergeNodes(OsmDataLayer layer, java.util.Collection<Node> nodes, Node targetLocationNode)
           
protected static java.util.List<Command> fixParentWays(java.util.Collection<Node> nodesToDelete, Node targetNode)
          Fixes the parent ways referring to one of the nodes.
static Command mergeNodes(OsmDataLayer layer, java.util.Collection<Node> nodes, Node targetLocationNode)
           
static Command mergeNodes(OsmDataLayer layer, java.util.Collection<Node> nodes, Node targetNode, Node targetLocationNode)
          Merges the nodes in nodes onto one of the nodes.
static Node selectTargetLocationNode(java.util.List<Node> candidates)
          Select the location of the target node after merge.
static Node selectTargetNode(java.util.Collection<Node> candidates)
          Find which node to merge into (i.e.
protected  void updateEnabledState()
          Override in subclasses to update the enabled state of the action when something in the JOSM state changes, i.e.
protected  void updateEnabledState(java.util.Collection<? extends OsmPrimitive> selection)
          Override in subclasses to update the enabled state of the action if the collection of selected primitives changes.
 
Methods inherited from class org.openstreetmap.josm.actions.JosmAction
destroy, getCurrentDataSet, getEditLayer, getShortcut, initEnabledState, installAdapters, setTooltip
 
Methods inherited from class javax.swing.AbstractAction
addPropertyChangeListener, clone, firePropertyChange, getKeys, getPropertyChangeListeners, getValue, isEnabled, putValue, removePropertyChangeListener, setEnabled
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MergeNodesAction

public MergeNodesAction()
Method Detail

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent event)

selectTargetLocationNode

public static Node selectTargetLocationNode(java.util.List<Node> candidates)
Select the location of the target node after merge.

Parameters:
candidates - the collection of candidate nodes
Returns:
the coordinates of this node are later used for the target node

selectTargetNode

public static Node selectTargetNode(java.util.Collection<Node> candidates)
Find which node to merge into (i.e. which one will be left)

Parameters:
candidates - the collection of candidate nodes
Returns:
the selected target node

fixParentWays

protected static java.util.List<Command> fixParentWays(java.util.Collection<Node> nodesToDelete,
                                                       Node targetNode)
Fixes the parent ways referring to one of the nodes. Replies null, if the ways could not be fixed, i.e. because a way would have to be deleted which is referred to by a relation.

Parameters:
nodesToDelete - the collection of nodes to be deleted
targetNode - the target node the other nodes are merged to
Returns:
a list of commands; null, if the ways could not be fixed

doMergeNodes

public static void doMergeNodes(OsmDataLayer layer,
                                java.util.Collection<Node> nodes,
                                Node targetLocationNode)

mergeNodes

public static Command mergeNodes(OsmDataLayer layer,
                                 java.util.Collection<Node> nodes,
                                 Node targetLocationNode)

mergeNodes

public static Command mergeNodes(OsmDataLayer layer,
                                 java.util.Collection<Node> nodes,
                                 Node targetNode,
                                 Node targetLocationNode)
Merges the nodes in nodes onto one of the nodes. Uses the dataset managed by layer as reference.

Parameters:
layer - layer the reference data layer. Must not be null.
nodes - the collection of nodes. Ignored if null.
targetNode - the target node the collection of nodes is merged to. Must not be null.
targetLocationNode - this node's location will be used for the targetNode.

updateEnabledState

protected void updateEnabledState()
Description copied from class: JosmAction
Override in subclasses to update the enabled state of the action when something in the JOSM state changes, i.e. when a layer is removed or added. See JosmAction.updateEnabledState(Collection) to respond to changes in the collection of selected primitives. Default behavior is empty.

Overrides:
updateEnabledState in class JosmAction
See Also:
JosmAction.updateEnabledState(Collection), JosmAction.initEnabledState()

updateEnabledState

protected void updateEnabledState(java.util.Collection<? extends OsmPrimitive> selection)
Description copied from class: JosmAction
Override in subclasses to update the enabled state of the action if the collection of selected primitives changes. This method is called with the new selection.

Overrides:
updateEnabledState in class JosmAction
Parameters:
selection - the collection of selected primitives; may be empty, but not null
See Also:
JosmAction.updateEnabledState(), JosmAction.initEnabledState()


JOSM