Class DeleteAction
- java.lang.Object
-
- javax.swing.AbstractAction
-
- org.openstreetmap.josm.actions.JosmAction
-
- org.openstreetmap.josm.actions.mapmode.MapMode
-
- org.openstreetmap.josm.actions.mapmode.DeleteAction
-
- All Implemented Interfaces:
java.awt.event.ActionListener
,java.awt.event.MouseListener
,java.awt.event.MouseMotionListener
,java.io.Serializable
,java.lang.Cloneable
,java.util.EventListener
,javax.swing.Action
,ModifierExListener
,PreferenceChangedListener
,Destroyable
public class DeleteAction extends MapMode implements ModifierExListener
A map mode that enables the user to delete nodes and other objects. The user can click on an object, which gets deleted if possible. When Ctrl is pressed when releasing the button, the objects and all its references are deleted. If the user did not press Ctrl and the object has any references, the user is informed and nothing is deleted. If the user enters the mapmode and any object is selected, all selected objects are deleted, if possible.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
DeleteAction.ConfirmDeleteDialog
(package private) static class
DeleteAction.DeleteMode
private static class
DeleteAction.DeleteParameters
-
Nested classes/interfaces inherited from class org.openstreetmap.josm.actions.JosmAction
JosmAction.ActiveLayerChangeAdapter, JosmAction.LayerChangeAdapter, JosmAction.SelectionChangeAdapter
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
drawTargetHighlight
private static HighlightHelper
HIGHLIGHT_HELPER
private java.awt.event.MouseEvent
oldEvent
private WaySegment
oldHighlightedWaySegment
elements that have been highlighted in the previous iteration.-
Fields inherited from class org.openstreetmap.josm.actions.mapmode.MapMode
alt, ctrl, cursor, meta, platformMenuShortcutKeyMask, shift
-
Fields inherited from class org.openstreetmap.josm.actions.JosmAction
sc
-
-
Constructor Summary
Constructors Constructor Description DeleteAction()
Construct a new DeleteAction.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
actionPerformed(java.awt.event.ActionEvent e)
Call selectMapMode(this) on the parent mapFrame.private void
addHighlighting(java.awt.event.MouseEvent e, int modifiers)
handles everything related to highlighting primitives and way segments for the given pointer position (via MouseEvent) and modifiers.private Command
buildDeleteCommands(java.awt.event.MouseEvent e, int modifiers, boolean silent)
This function takes any mouse event argument and builds the list of elements that should be deleted but does not actually delete them.private static boolean
changesHiddenWay(Command c)
static void
deleteRelation(OsmDataLayer layer, Relation toDelete)
Deletes the relation in the context of the given layer.static void
deleteRelations(OsmDataLayer layer, java.util.Collection<Relation> toDelete)
Deletes the relations in the context of the given layer.void
doActionPerformed(java.awt.event.ActionEvent e)
Invoked when the action occurs.void
enterMode()
Makes this map mode active.void
exitMode()
Makes this map mode inactive.private DeleteAction.DeleteParameters
getDeleteParameters(java.awt.event.MouseEvent e, int modifiers)
java.lang.String
getModeHelpText()
Returns a short translated help message describing how this map mode can be used, to be displayed in status line.private void
giveUserFeedback(java.awt.event.MouseEvent e)
Gives the user feedback for the action he/she is about to do.private void
giveUserFeedback(java.awt.event.MouseEvent e, int modifiers)
Gives the user feedback for the action he/she is about to do.boolean
layerIsSupported(Layer l)
Determines if layerl
is supported by this map mode.void
modifiersExChanged(int modifiers)
This is required to update the cursors when ctrl/shift/alt is pressedvoid
mouseDragged(java.awt.event.MouseEvent e)
void
mouseMoved(java.awt.event.MouseEvent e)
Listen to mouse move to be able to update the cursor (and highlights)void
mouseReleased(java.awt.event.MouseEvent e)
If user clicked with the left button, delete the nearest object.private void
removeHighlighting()
removes any highlighting that may have been set beforehand.private void
repaintIfRequired(java.util.Set<OsmPrimitive> newHighlights, WaySegment newHighlightedWaySegment)
private void
updateCursor(java.awt.event.MouseEvent e, int modifiers)
This function handles all work related to updating the cursor and highlightsprotected void
updateEnabledState()
Override in subclasses to update the enabled state of the action when something in the JOSM state changes, i.e.-
Methods inherited from class org.openstreetmap.josm.actions.mapmode.MapMode
isEditableDataLayer, mouseClicked, mouseEntered, mouseExited, mousePressed, preferenceChanged, readPreferences, requestFocusInMapView, updateKeyModifiers, updateKeyModifiers, updateKeyModifiers, updateKeyModifiersEx, updateStatusLine
-
Methods inherited from class org.openstreetmap.josm.actions.JosmAction
buildActiveLayerChangeAdapter, buildLayerChangeAdapter, checkAndConfirmOutlyingOperation, destroy, getLayerManager, getShortcut, initEnabledState, installAdapters, listenToLayerChange, listenToSelectionChange, setHelpId, setToolbarId, setTooltip, updateEnabledState, updateEnabledStateOnCurrentSelection, updateEnabledStateOnCurrentSelection, updateEnabledStateOnModifiableSelection, waitFuture
-
Methods inherited from class javax.swing.AbstractAction
addPropertyChangeListener, clone, firePropertyChange, getKeys, getPropertyChangeListeners, getValue, isEnabled, putValue, removePropertyChangeListener, setEnabled
-
-
-
-
Field Detail
-
oldEvent
private java.awt.event.MouseEvent oldEvent
-
oldHighlightedWaySegment
private transient WaySegment oldHighlightedWaySegment
elements that have been highlighted in the previous iteration. Used to remove the highlight from them again as otherwise the whole data set would have to be checked.
-
HIGHLIGHT_HELPER
private static final HighlightHelper HIGHLIGHT_HELPER
-
drawTargetHighlight
private boolean drawTargetHighlight
-
-
Constructor Detail
-
DeleteAction
public DeleteAction()
Construct a new DeleteAction. Mnemonic is the delete - key.- Since:
- 11713
-
-
Method Detail
-
enterMode
public void enterMode()
Description copied from class:MapMode
Makes this map mode active.
-
exitMode
public void exitMode()
Description copied from class:MapMode
Makes this map mode inactive.
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
Description copied from class:MapMode
Call selectMapMode(this) on the parent mapFrame.- Specified by:
actionPerformed
in interfacejava.awt.event.ActionListener
- Overrides:
actionPerformed
in classMapMode
-
doActionPerformed
public void doActionPerformed(java.awt.event.ActionEvent e)
Invoked when the action occurs.- Parameters:
e
- Action event
-
mouseDragged
public void mouseDragged(java.awt.event.MouseEvent e)
- Specified by:
mouseDragged
in interfacejava.awt.event.MouseMotionListener
- Overrides:
mouseDragged
in classMapMode
-
mouseMoved
public void mouseMoved(java.awt.event.MouseEvent e)
Listen to mouse move to be able to update the cursor (and highlights)- Specified by:
mouseMoved
in interfacejava.awt.event.MouseMotionListener
- Overrides:
mouseMoved
in classMapMode
- Parameters:
e
- The mouse event that has been captured
-
removeHighlighting
private void removeHighlighting()
removes any highlighting that may have been set beforehand.
-
addHighlighting
private void addHighlighting(java.awt.event.MouseEvent e, int modifiers)
handles everything related to highlighting primitives and way segments for the given pointer position (via MouseEvent) and modifiers.- Parameters:
e
- current mouse eventmodifiers
- extended mouse modifiers, not necessarily taken from the given mouse event
-
repaintIfRequired
private void repaintIfRequired(java.util.Set<OsmPrimitive> newHighlights, WaySegment newHighlightedWaySegment)
-
updateCursor
private void updateCursor(java.awt.event.MouseEvent e, int modifiers)
This function handles all work related to updating the cursor and highlights- Parameters:
e
- current mouse eventmodifiers
- extended mouse modifiers, not necessarily taken from the given mouse event
-
giveUserFeedback
private void giveUserFeedback(java.awt.event.MouseEvent e, int modifiers)
Gives the user feedback for the action he/she is about to do. Currently calls the cursor and target highlighting routines. Allows for modifiers not taken from the given mouse event. Normally the mouse event also contains the modifiers. However, when the mouse is not moved and only modifier keys are pressed, no mouse event occurs. We can use AWTEvent to catch those but still lack a proper mouseevent. Instead we copy the previous event and only update the modifiers.- Parameters:
e
- mouse eventmodifiers
- mouse modifiers
-
giveUserFeedback
private void giveUserFeedback(java.awt.event.MouseEvent e)
Gives the user feedback for the action he/she is about to do. Currently calls the cursor and target highlighting routines. Extracts modifiers from mouse event.- Parameters:
e
- mouse event
-
mouseReleased
public void mouseReleased(java.awt.event.MouseEvent e)
If user clicked with the left button, delete the nearest object.- Specified by:
mouseReleased
in interfacejava.awt.event.MouseListener
- Overrides:
mouseReleased
in classMapMode
-
getModeHelpText
public java.lang.String getModeHelpText()
Description copied from class:MapMode
Returns a short translated help message describing how this map mode can be used, to be displayed in status line.- Overrides:
getModeHelpText
in classMapMode
- Returns:
- a short translated help message describing how this map mode can be used
-
layerIsSupported
public boolean layerIsSupported(Layer l)
Description copied from class:MapMode
Determines if layerl
is supported by this map mode. By default, all tools will work with all layers. Can be overwritten to require a special type of layer- Overrides:
layerIsSupported
in classMapMode
- Parameters:
l
- layer- Returns:
true
if the layer is supported by this map mode
-
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()
-
deleteRelation
public static void deleteRelation(OsmDataLayer layer, Relation toDelete)
Deletes the relation in the context of the given layer.- Parameters:
layer
- the layer in whose context the relation is deleted. Must not be null.toDelete
- the relation to be deleted. Must not be null.- Throws:
java.lang.IllegalArgumentException
- if layer is nulljava.lang.IllegalArgumentException
- if toDelete is null
-
deleteRelations
public static void deleteRelations(OsmDataLayer layer, java.util.Collection<Relation> toDelete)
Deletes the relations in the context of the given layer.- Parameters:
layer
- the layer in whose context the relations are deleted. Must not be null.toDelete
- the relations to be deleted. Must not be null.- Throws:
java.lang.IllegalArgumentException
- if layer is nulljava.lang.IllegalArgumentException
- if toDelete is null
-
getDeleteParameters
private DeleteAction.DeleteParameters getDeleteParameters(java.awt.event.MouseEvent e, int modifiers)
-
buildDeleteCommands
private Command buildDeleteCommands(java.awt.event.MouseEvent e, int modifiers, boolean silent)
This function takes any mouse event argument and builds the list of elements that should be deleted but does not actually delete them.- Parameters:
e
- MouseEvent from which modifiers and position are takenmodifiers
- For explanation, seeupdateCursor(java.awt.event.MouseEvent, int)
silent
- Set to true if the user should not be bugged with additional dialogs- Returns:
- delete command
-
modifiersExChanged
public void modifiersExChanged(int modifiers)
This is required to update the cursors when ctrl/shift/alt is pressed- Specified by:
modifiersExChanged
in interfaceModifierExListener
- Parameters:
modifiers
- The new extended modifiers
-
changesHiddenWay
private static boolean changesHiddenWay(Command c)
-
-