Class JosmTextField
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.text.JTextComponent
-
- javax.swing.JTextField
-
- org.openstreetmap.josm.gui.widgets.JosmTextField
-
- All Implemented Interfaces:
java.awt.event.ComponentListener
,java.awt.event.FocusListener
,java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.beans.PropertyChangeListener
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.Scrollable
,javax.swing.SwingConstants
,Destroyable
- Direct Known Subclasses:
AutoCompletingTextField
,AutoCompTextField
,DisableShortcutsOnFocusGainedTextField
public class JosmTextField extends javax.swing.JTextField implements Destroyable, java.awt.event.ComponentListener, java.awt.event.FocusListener, java.beans.PropertyChangeListener
Subclass ofJTextField
that:- adds a "native" context menu (undo/redo/cut/copy/paste/select all)
- adds an optional "hint" displayed when no text has been entered
- disables the global advanced key press detector when focused
- implements a workaround to JDK bug 6322854
This class must be used everywhere in core and plugins instead ofJTextField
.- Since:
- 5886
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class javax.swing.JTextField
javax.swing.JTextField.AccessibleJTextField
-
Nested classes/interfaces inherited from class javax.swing.text.JTextComponent
javax.swing.text.JTextComponent.AccessibleJTextComponent, javax.swing.text.JTextComponent.DropLocation, javax.swing.text.JTextComponent.KeyBinding
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
hint
private javax.swing.Icon
icon
private java.awt.Point
iconPos
private PopupMenuLauncher
launcher
private OrientationAction
orientationAction
private java.awt.Insets
originalMargin
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
-
Constructor Summary
Constructors Constructor Description JosmTextField()
Constructs a newJosmTextField
.JosmTextField(int columns)
Constructs a new emptyJosmTextField
with the specified number of columns.JosmTextField(java.lang.String text)
Constructs a newJosmTextField
initialized with the specified text.JosmTextField(java.lang.String text, int columns)
Constructs a newJosmTextField
initialized with the specified text and columns.JosmTextField(javax.swing.text.Document doc, java.lang.String text, int columns)
Constructs a newJosmTextField
that uses the given text storage model and the given number of columns.JosmTextField(javax.swing.text.Document doc, java.lang.String text, int columns, boolean undoRedo)
Constructs a newJosmTextField
that uses the given text storage model and the given number of columns.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
componentHidden(java.awt.event.ComponentEvent e)
void
componentMoved(java.awt.event.ComponentEvent e)
void
componentResized(java.awt.event.ComponentEvent e)
void
componentShown(java.awt.event.ComponentEvent e)
void
destroy()
Called when the object has been destroyed.void
discardAllUndoableEdits()
Empties the internal undo manager.boolean
displayHint()
Return true if the textfield should display the hint text.void
drawHint(java.awt.Graphics g)
Draws the hint text over the editor component.void
focusGained(java.awt.event.FocusEvent e)
void
focusLost(java.awt.event.FocusEvent e)
java.lang.String
getHint()
Replies the hint displayed when no text has been entered.static java.awt.Font
getHintFont()
Returns the font for hint texts.static java.awt.Color
getHintTextColor()
Returns the color for hint texts.javax.swing.Icon
getIcon()
Returns the icon to displayvoid
paintComponent(java.awt.Graphics g)
private void
positionIcon()
void
propertyChange(java.beans.PropertyChangeEvent evt)
void
setComponentOrientation(java.awt.ComponentOrientation o)
java.lang.String
setHint(java.lang.String hint)
Sets the hint to display when no text has been entered.void
setIcon(javax.swing.Icon icon)
Sets the icon to display-
Methods inherited from class javax.swing.JTextField
actionPropertyChanged, addActionListener, configurePropertiesFromAction, createActionPropertyChangeListener, createDefaultModel, fireActionPerformed, getAccessibleContext, getAction, getActionListeners, getActions, getColumns, getColumnWidth, getHorizontalAlignment, getHorizontalVisibility, getPreferredSize, getScrollOffset, getUIClassID, isValidateRoot, paramString, postActionEvent, removeActionListener, scrollRectToVisible, setAction, setActionCommand, setColumns, setDocument, setFont, setHorizontalAlignment, setScrollOffset
-
Methods inherited from class javax.swing.text.JTextComponent
addCaretListener, addInputMethodListener, addKeymap, copy, cut, fireCaretUpdate, getCaret, getCaretColor, getCaretListeners, getCaretPosition, getDisabledTextColor, getDocument, getDragEnabled, getDropLocation, getDropMode, getFocusAccelerator, getHighlighter, getInputMethodRequests, getKeymap, getKeymap, getMargin, getNavigationFilter, getPreferredScrollableViewportSize, getPrintable, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedText, getSelectedTextColor, getSelectionColor, getSelectionEnd, getSelectionStart, getText, getText, getToolTipText, getUI, isEditable, loadKeymap, modelToView, modelToView2D, moveCaretPosition, paste, print, print, print, processInputMethodEvent, read, removeCaretListener, removeKeymap, removeNotify, replaceSelection, restoreComposedText, saveComposedText, select, selectAll, setCaret, setCaretColor, setCaretPosition, setDisabledTextColor, setDragEnabled, setDropMode, setEditable, setFocusAccelerator, setHighlighter, setKeymap, setMargin, setNavigationFilter, setSelectedTextColor, setSelectionColor, setSelectionEnd, setSelectionStart, setText, setUI, updateUI, viewToModel, viewToModel2D, write
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
-
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
launcher
private final PopupMenuLauncher launcher
-
hint
private java.lang.String hint
-
icon
private javax.swing.Icon icon
-
iconPos
private java.awt.Point iconPos
-
originalMargin
private java.awt.Insets originalMargin
-
orientationAction
private OrientationAction orientationAction
-
-
Constructor Detail
-
JosmTextField
public JosmTextField(javax.swing.text.Document doc, java.lang.String text, int columns)
Constructs a newJosmTextField
that uses the given text storage model and the given number of columns. This is the constructor through which the other constructors feed. If the document isnull
, a default model is created.- Parameters:
doc
- the text storage to use; if this isnull
, a default will be provided by calling thecreateDefaultModel
methodtext
- the initial string to display, ornull
columns
- the number of columns to use to calculate the preferred width >= 0; ifcolumns
is set to zero, the preferred width will be whatever naturally results from the component implementation- Throws:
java.lang.IllegalArgumentException
- ifcolumns
< 0
-
JosmTextField
public JosmTextField(javax.swing.text.Document doc, java.lang.String text, int columns, boolean undoRedo)
Constructs a newJosmTextField
that uses the given text storage model and the given number of columns. This is the constructor through which the other constructors feed. If the document isnull
, a default model is created.- Parameters:
doc
- the text storage to use; if this isnull
, a default will be provided by calling thecreateDefaultModel
methodtext
- the initial string to display, ornull
columns
- the number of columns to use to calculate the preferred width >= 0; ifcolumns
is set to zero, the preferred width will be whatever naturally results from the component implementationundoRedo
- Enables or not Undo/Redo feature. Not recommended for table cell editors, unless each cell provides its own editor- Throws:
java.lang.IllegalArgumentException
- ifcolumns
< 0
-
JosmTextField
public JosmTextField(java.lang.String text, int columns)
Constructs a newJosmTextField
initialized with the specified text and columns. A default model is created.- Parameters:
text
- the text to be displayed, ornull
columns
- the number of columns to use to calculate the preferred width; if columns is set to zero, the preferred width will be whatever naturally results from the component implementation
-
JosmTextField
public JosmTextField(java.lang.String text)
Constructs a newJosmTextField
initialized with the specified text. A default model is created and the number of columns is 0.- Parameters:
text
- the text to be displayed, ornull
-
JosmTextField
public JosmTextField(int columns)
Constructs a new emptyJosmTextField
with the specified number of columns. A default model is created and the initial string is set tonull
.- Parameters:
columns
- the number of columns to use to calculate the preferred width; if columns is set to zero, the preferred width will be whatever naturally results from the component implementation
-
JosmTextField
public JosmTextField()
Constructs a newJosmTextField
. A default model is created, the initial string isnull
, and the number of columns is set to 0.
-
-
Method Detail
-
getHint
public final java.lang.String getHint()
Replies the hint displayed when no text has been entered.- Returns:
- the hint
- Since:
- 7505
-
setHint
public java.lang.String setHint(java.lang.String hint)
Sets the hint to display when no text has been entered.- Parameters:
hint
- the hint to set- Returns:
- the old hint
- Since:
- 18221 (signature)
-
displayHint
public boolean displayHint()
Return true if the textfield should display the hint text.- Returns:
- whether to display the hint text
- Since:
- 18221
-
getIcon
public javax.swing.Icon getIcon()
Returns the icon to display- Returns:
- the icon to display
- Since:
- 17768
-
setIcon
public void setIcon(javax.swing.Icon icon)
Sets the icon to display- Parameters:
icon
- the icon to set- Since:
- 17768
-
positionIcon
private void positionIcon()
-
setComponentOrientation
public void setComponentOrientation(java.awt.ComponentOrientation o)
- Overrides:
setComponentOrientation
in classjavax.swing.text.JTextComponent
-
discardAllUndoableEdits
public final void discardAllUndoableEdits()
Empties the internal undo manager.- Since:
- 14977
-
getHintTextColor
public static java.awt.Color getHintTextColor()
Returns the color for hint texts.- Returns:
- the Color for hint texts
-
getHintFont
public static java.awt.Font getHintFont()
Returns the font for hint texts.- Returns:
- the font for hint texts
-
paintComponent
public void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponent
in classjavax.swing.JComponent
-
drawHint
public void drawHint(java.awt.Graphics g)
Draws the hint text over the editor component.- Parameters:
g
- the graphics context
-
focusGained
public void focusGained(java.awt.event.FocusEvent e)
- Specified by:
focusGained
in interfacejava.awt.event.FocusListener
-
focusLost
public void focusLost(java.awt.event.FocusEvent e)
- Specified by:
focusLost
in interfacejava.awt.event.FocusListener
-
destroy
public void destroy()
Description copied from interface:Destroyable
Called when the object has been destroyed.- Specified by:
destroy
in interfaceDestroyable
-
componentResized
public void componentResized(java.awt.event.ComponentEvent e)
- Specified by:
componentResized
in interfacejava.awt.event.ComponentListener
-
componentMoved
public void componentMoved(java.awt.event.ComponentEvent e)
- Specified by:
componentMoved
in interfacejava.awt.event.ComponentListener
-
componentShown
public void componentShown(java.awt.event.ComponentEvent e)
- Specified by:
componentShown
in interfacejava.awt.event.ComponentListener
-
componentHidden
public void componentHidden(java.awt.event.ComponentEvent e)
- Specified by:
componentHidden
in interfacejava.awt.event.ComponentListener
-
propertyChange
public void propertyChange(java.beans.PropertyChangeEvent evt)
- Specified by:
propertyChange
in interfacejava.beans.PropertyChangeListener
-
-