Package org.openstreetmap.josm.actions
Class MergeNodesAction
- java.lang.Object
-
- javax.swing.AbstractAction
-
- org.openstreetmap.josm.actions.JosmAction
-
- 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.- Since:
- 422
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.openstreetmap.josm.actions.JosmAction
JosmAction.ActiveLayerChangeAdapter, JosmAction.LayerChangeAdapter, JosmAction.SelectionChangeAdapter
-
-
Field Summary
-
Fields inherited from class org.openstreetmap.josm.actions.JosmAction
sc
-
-
Constructor Summary
Constructors Constructor Description MergeNodesAction()
Constructs a newMergeNodesAction
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionPerformed(java.awt.event.ActionEvent event)
static void
doMergeNodes(OsmDataLayer layer, java.util.Collection<Node> nodes, Node targetLocationNode)
Merges the nodes innodes
at the specified node's location.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(java.util.Collection<Node> nodes, Node targetLocationNode)
Merges the nodes innodes
at the specified node's location.static Command
mergeNodes(java.util.Collection<Node> nodes, Node targetNode, Node targetLocationNode)
Merges the nodes innodes
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
buildActiveLayerChangeAdapter, buildLayerChangeAdapter, checkAndConfirmOutlyingOperation, destroy, getLayerManager, getShortcut, initEnabledState, installAdapters, listenToLayerChange, listenToSelectionChange, setHelpId, setToolbarId, setTooltip, updateEnabledStateOnCurrentSelection, updateEnabledStateOnCurrentSelection, updateEnabledStateOnModifiableSelection, waitFuture
-
Methods inherited from class javax.swing.AbstractAction
addPropertyChangeListener, clone, firePropertyChange, getKeys, getPropertyChangeListeners, getValue, isEnabled, putValue, removePropertyChangeListener, setEnabled
-
-
-
-
Constructor Detail
-
MergeNodesAction
public MergeNodesAction()
Constructs a newMergeNodesAction
.
-
-
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 deletedtargetNode
- 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)
Merges the nodes innodes
at the specified node's location. Uses the dataset managed bylayer
as reference.- Parameters:
layer
- layer the reference data layer. Must not be nullnodes
- the collection of nodes. Ignored if nulltargetLocationNode
- this node's location will be used for the target node- Throws:
java.lang.IllegalArgumentException
- iflayer
is null
-
mergeNodes
public static Command mergeNodes(java.util.Collection<Node> nodes, Node targetLocationNode)
Merges the nodes innodes
at the specified node's location.- Parameters:
nodes
- the collection of nodes. Ignored if null.targetLocationNode
- this node's location will be used for the targetNode.- Returns:
- The command necessary to run in order to perform action, or
null
if there is nothing to do - Throws:
java.lang.IllegalArgumentException
- iflayer
is null- Since:
- 12689
-
mergeNodes
public static Command mergeNodes(java.util.Collection<Node> nodes, Node targetNode, Node targetLocationNode)
Merges the nodes innodes
onto one of the nodes.- Parameters:
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.- Returns:
- The command necessary to run in order to perform action, or
null
if there is nothing to do - Throws:
java.lang.IllegalArgumentException
- if layer is null
-
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. SeeJosmAction.updateEnabledState(Collection)
to respond to changes in the collection of selected primitives. Default behavior is empty.- Overrides:
updateEnabledState
in classJosmAction
- See Also:
JosmAction.updateEnabledState(Collection)
,JosmAction.initEnabledState()
,JosmAction.listenToLayerChange()
-
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 classJosmAction
- Parameters:
selection
- the collection of selected primitives; may be empty, but not null- See Also:
JosmAction.updateEnabledState()
,JosmAction.initEnabledState()
,JosmAction.listenToSelectionChange()
-
-