Class 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 of JTextField 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 of JTextField.
    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
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • 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.JTextField

        notifyAction
      • Fields inherited from class javax.swing.text.JTextComponent

        DEFAULT_KEYMAP, FOCUS_ACCELERATOR_KEY
      • 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
      • Fields inherited from interface java.awt.image.ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
      • Fields inherited from interface javax.swing.SwingConstants

        BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
    • Constructor Summary

      Constructors 
      Constructor Description
      JosmTextField()
      Constructs a new JosmTextField.
      JosmTextField​(int columns)
      Constructs a new empty JosmTextField with the specified number of columns.
      JosmTextField​(java.lang.String text)
      Constructs a new JosmTextField initialized with the specified text.
      JosmTextField​(java.lang.String text, int columns)
      Constructs a new JosmTextField initialized with the specified text and columns.
      JosmTextField​(javax.swing.text.Document doc, java.lang.String text, int columns)
      Constructs a new JosmTextField 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 new JosmTextField 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 display
      void 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • JosmTextField

        public JosmTextField​(javax.swing.text.Document doc,
                             java.lang.String text,
                             int columns)
        Constructs a new JosmTextField 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 is null, a default model is created.
        Parameters:
        doc - the text storage to use; if this is null, a default will be provided by calling the createDefaultModel method
        text - the initial string to display, or null
        columns - the number of columns to use to calculate the preferred width >= 0; if columns is set to zero, the preferred width will be whatever naturally results from the component implementation
        Throws:
        java.lang.IllegalArgumentException - if columns < 0
      • JosmTextField

        public JosmTextField​(javax.swing.text.Document doc,
                             java.lang.String text,
                             int columns,
                             boolean undoRedo)
        Constructs a new JosmTextField 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 is null, a default model is created.
        Parameters:
        doc - the text storage to use; if this is null, a default will be provided by calling the createDefaultModel method
        text - the initial string to display, or null
        columns - the number of columns to use to calculate the preferred width >= 0; if columns is set to zero, the preferred width will be whatever naturally results from the component implementation
        undoRedo - Enables or not Undo/Redo feature. Not recommended for table cell editors, unless each cell provides its own editor
        Throws:
        java.lang.IllegalArgumentException - if columns < 0
      • JosmTextField

        public JosmTextField​(java.lang.String text,
                             int columns)
        Constructs a new JosmTextField initialized with the specified text and columns. A default model is created.
        Parameters:
        text - the text to be displayed, or null
        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 new JosmTextField initialized with the specified text. A default model is created and the number of columns is 0.
        Parameters:
        text - the text to be displayed, or null
      • JosmTextField

        public JosmTextField​(int columns)
        Constructs a new empty JosmTextField with the specified number of columns. A default model is created and the initial string is set to null.
        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 new JosmTextField. A default model is created, the initial string is null, 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
      • setComponentOrientation

        public void setComponentOrientation​(java.awt.ComponentOrientation o)
        Overrides:
        setComponentOrientation in class javax.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 class javax.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 interface java.awt.event.FocusListener
      • focusLost

        public void focusLost​(java.awt.event.FocusEvent e)
        Specified by:
        focusLost in interface java.awt.event.FocusListener
      • componentResized

        public void componentResized​(java.awt.event.ComponentEvent e)
        Specified by:
        componentResized in interface java.awt.event.ComponentListener
      • componentMoved

        public void componentMoved​(java.awt.event.ComponentEvent e)
        Specified by:
        componentMoved in interface java.awt.event.ComponentListener
      • componentShown

        public void componentShown​(java.awt.event.ComponentEvent e)
        Specified by:
        componentShown in interface java.awt.event.ComponentListener
      • componentHidden

        public void componentHidden​(java.awt.event.ComponentEvent e)
        Specified by:
        componentHidden in interface java.awt.event.ComponentListener
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent evt)
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener