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 classDeleteAction.ConfirmDeleteDialog(package private) static classDeleteAction.DeleteModeprivate static classDeleteAction.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 booleandrawTargetHighlightprivate static HighlightHelperHIGHLIGHT_HELPERprivate java.awt.event.MouseEventoldEventprivate WaySegmentoldHighlightedWaySegmentelements 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 voidactionPerformed(java.awt.event.ActionEvent e)Call selectMapMode(this) on the parent mapFrame.private voidaddHighlighting(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 CommandbuildDeleteCommands(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 booleanchangesHiddenWay(Command c)static voiddeleteRelation(OsmDataLayer layer, Relation toDelete)Deletes the relation in the context of the given layer.static voiddeleteRelations(OsmDataLayer layer, java.util.Collection<Relation> toDelete)Deletes the relations in the context of the given layer.voiddoActionPerformed(java.awt.event.ActionEvent e)Invoked when the action occurs.voidenterMode()Makes this map mode active.voidexitMode()Makes this map mode inactive.private DeleteAction.DeleteParametersgetDeleteParameters(java.awt.event.MouseEvent e, int modifiers)java.lang.StringgetModeHelpText()Returns a short translated help message describing how this map mode can be used, to be displayed in status line.private voidgiveUserFeedback(java.awt.event.MouseEvent e)Gives the user feedback for the action he/she is about to do.private voidgiveUserFeedback(java.awt.event.MouseEvent e, int modifiers)Gives the user feedback for the action he/she is about to do.booleanlayerIsSupported(Layer l)Determines if layerlis supported by this map mode.voidmodifiersExChanged(int modifiers)This is required to update the cursors when ctrl/shift/alt is pressedvoidmouseDragged(java.awt.event.MouseEvent e)voidmouseMoved(java.awt.event.MouseEvent e)Listen to mouse move to be able to update the cursor (and highlights)voidmouseReleased(java.awt.event.MouseEvent e)If user clicked with the left button, delete the nearest object.private voidremoveHighlighting()removes any highlighting that may have been set beforehand.private voidrepaintIfRequired(java.util.Set<OsmPrimitive> newHighlights, WaySegment newHighlightedWaySegment)private voidupdateCursor(java.awt.event.MouseEvent e, int modifiers)This function handles all work related to updating the cursor and highlightsprotected voidupdateEnabledState()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:MapModeMakes this map mode active.
-
exitMode
public void exitMode()
Description copied from class:MapModeMakes this map mode inactive.
-
actionPerformed
public void actionPerformed(java.awt.event.ActionEvent e)
Description copied from class:MapModeCall selectMapMode(this) on the parent mapFrame.- Specified by:
actionPerformedin interfacejava.awt.event.ActionListener- Overrides:
actionPerformedin 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:
mouseDraggedin interfacejava.awt.event.MouseMotionListener- Overrides:
mouseDraggedin 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:
mouseMovedin interfacejava.awt.event.MouseMotionListener- Overrides:
mouseMovedin 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:
mouseReleasedin interfacejava.awt.event.MouseListener- Overrides:
mouseReleasedin classMapMode
-
getModeHelpText
public java.lang.String getModeHelpText()
Description copied from class:MapModeReturns a short translated help message describing how this map mode can be used, to be displayed in status line.- Overrides:
getModeHelpTextin 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:MapModeDetermines if layerlis 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:
layerIsSupportedin classMapMode- Parameters:
l- layer- Returns:
trueif the layer is supported by this map mode
-
updateEnabledState
protected void updateEnabledState()
Description copied from class:JosmActionOverride 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:
updateEnabledStatein 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:
modifiersExChangedin interfaceModifierExListener- Parameters:
modifiers- The new extended modifiers
-
changesHiddenWay
private static boolean changesHiddenWay(Command c)
-
-