Class PromptTextUI

  • Direct Known Subclasses:
    PromptTextAreaUI, PromptTextFieldUI

    public abstract class PromptTextUI
    extends javax.swing.plaf.TextUI

    Abstract TextUI class that delegates most work to another TextUI and additionally renders a prompt text as specified in the JTextComponents client properties by PromptSupport.

    Subclasses of this class must provide a prompt component used for rendering the prompt text.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected javax.swing.plaf.TextUI delegate
      Delegate the hard work to this object.
      (package private) static PromptTextUI.FocusHandler focusHandler  
      protected javax.swing.text.JTextComponent promptComponent
      This component ist painted when rendering the prompt text.
    • Constructor Summary

      Constructors 
      Constructor Description
      PromptTextUI​(javax.swing.plaf.TextUI delegate)
      Creates a new PromptTextUI which delegates most work to another TextUI.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      boolean contains​(javax.swing.JComponent c, int x, int y)  
      protected abstract javax.swing.text.JTextComponent createPromptComponent()
      Creates a component which should be used to render the prompt text.
      void damageRange​(javax.swing.text.JTextComponent t, int p0, int p1)  
      void damageRange​(javax.swing.text.JTextComponent t, int p0, int p1, javax.swing.text.Position.Bias firstBias, javax.swing.text.Position.Bias secondBias)  
      boolean equals​(java.lang.Object obj)  
      javax.accessibility.Accessible getAccessibleChild​(javax.swing.JComponent c, int i)  
      int getAccessibleChildrenCount​(javax.swing.JComponent c)  
      int getBaseline​(javax.swing.JComponent c, int width, int height)
      Tries to call ComponentUI#getBaseline(int, int) on the delegate via Reflection.
      javax.swing.text.EditorKit getEditorKit​(javax.swing.text.JTextComponent t)  
      java.awt.Dimension getMaximumSize​(javax.swing.JComponent c)  
      java.awt.Dimension getMinimumSize​(javax.swing.JComponent c)  
      int getNextVisualPositionFrom​(javax.swing.text.JTextComponent t, int pos, javax.swing.text.Position.Bias b, int direction, javax.swing.text.Position.Bias[] biasRet)  
      java.awt.Dimension getPreferredSize​(javax.swing.JComponent c)
      When shouldPaintPrompt(JTextComponent) returns true, the prompt component is retrieved by calling getPromptComponent(JTextComponent) and it's preferred size is returned.
      javax.swing.text.JTextComponent getPromptComponent​(javax.swing.text.JTextComponent txt)
      Creates a label component, if none has already been created.
      javax.swing.text.View getRootView​(javax.swing.text.JTextComponent t)  
      java.lang.String getToolTipText​(javax.swing.text.JTextComponent t, java.awt.Point pt)  
      int hashCode()  
      void installUI​(javax.swing.JComponent c)
      Calls TextUI#installUI(JComponent) on the delegate and installs a focus listener on c which repaints the component when it gains or loses the focus.
      java.awt.Rectangle modelToView​(javax.swing.text.JTextComponent t, int pos)
      Calls modelToView(JTextComponent, int, Bias) with Position.Bias.Forward.
      java.awt.Rectangle modelToView​(javax.swing.text.JTextComponent t, int pos, javax.swing.text.Position.Bias bias)
      Delegate when shouldPaintPrompt(JTextComponent) returns false.
      void paint​(java.awt.Graphics g, javax.swing.JComponent c)
      Delegates painting when shouldPaintPrompt(JTextComponent) returns false.
      protected void paintPromptComponent​(java.awt.Graphics g, javax.swing.text.JTextComponent txt)  
      boolean shouldPaintPrompt​(javax.swing.text.JTextComponent txt)
      Returns if the prompt or the text field should be painted, depending on the state of txt.
      java.lang.String toString()  
      void uninstallUI​(javax.swing.JComponent c)
      Delegates, then uninstalls the focus listener.
      void update​(java.awt.Graphics g, javax.swing.JComponent c)
      Calls super.update(Graphics, JComponent), which in turn calls the paint method of this object.
      int viewToModel​(javax.swing.text.JTextComponent t, java.awt.Point pt)  
      int viewToModel​(javax.swing.text.JTextComponent t, java.awt.Point pt, javax.swing.text.Position.Bias[] biasReturn)  
      • Methods inherited from class javax.swing.plaf.TextUI

        getToolTipText2D, modelToView2D, viewToModel2D
      • Methods inherited from class javax.swing.plaf.ComponentUI

        createUI, getBaselineResizeBehavior
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • delegate

        protected final javax.swing.plaf.TextUI delegate
        Delegate the hard work to this object.
      • promptComponent

        protected javax.swing.text.JTextComponent promptComponent
        This component ist painted when rendering the prompt text.
    • Constructor Detail

      • PromptTextUI

        public PromptTextUI​(javax.swing.plaf.TextUI delegate)
        Creates a new PromptTextUI which delegates most work to another TextUI.
        Parameters:
        delegate -
    • Method Detail

      • createPromptComponent

        protected abstract javax.swing.text.JTextComponent createPromptComponent()
        Creates a component which should be used to render the prompt text.
        Returns:
      • installUI

        public void installUI​(javax.swing.JComponent c)
        Calls TextUI#installUI(JComponent) on the delegate and installs a focus listener on c which repaints the component when it gains or loses the focus.
        Overrides:
        installUI in class javax.swing.plaf.ComponentUI
      • uninstallUI

        public void uninstallUI​(javax.swing.JComponent c)
        Delegates, then uninstalls the focus listener.
        Overrides:
        uninstallUI in class javax.swing.plaf.ComponentUI
      • getPromptComponent

        public javax.swing.text.JTextComponent getPromptComponent​(javax.swing.text.JTextComponent txt)
        Creates a label component, if none has already been created. Sets the prompt components properties to reflect the given JTextComponents properties and returns it.
        Parameters:
        txt -
        Returns:
        the adjusted prompt component
      • paint

        public void paint​(java.awt.Graphics g,
                          javax.swing.JComponent c)
        Delegates painting when shouldPaintPrompt(JTextComponent) returns false. Otherwise the prompt component is retrieved by calling getPromptComponent(JTextComponent) and painted. Then the caret of the given text component is painted.
        Overrides:
        paint in class javax.swing.plaf.ComponentUI
      • paintPromptComponent

        protected void paintPromptComponent​(java.awt.Graphics g,
                                            javax.swing.text.JTextComponent txt)
      • shouldPaintPrompt

        public boolean shouldPaintPrompt​(javax.swing.text.JTextComponent txt)
        Returns if the prompt or the text field should be painted, depending on the state of txt.
        Parameters:
        txt -
        Returns:
        true when txt contains not text, otherwise false
      • update

        public void update​(java.awt.Graphics g,
                           javax.swing.JComponent c)
        Calls super.update(Graphics, JComponent), which in turn calls the paint method of this object.
        Overrides:
        update in class javax.swing.plaf.ComponentUI
      • modelToView

        public java.awt.Rectangle modelToView​(javax.swing.text.JTextComponent t,
                                              int pos,
                                              javax.swing.text.Position.Bias bias)
                                       throws javax.swing.text.BadLocationException
        Delegate when shouldPaintPrompt(JTextComponent) returns false. Otherwise get the prompt component's UI and delegate to it. This ensures that the Caret is painted on the correct position (this is important when the text is centered, so that the caret will not be painted inside the label text)
        Specified by:
        modelToView in class javax.swing.plaf.TextUI
        Throws:
        javax.swing.text.BadLocationException
      • modelToView

        public java.awt.Rectangle modelToView​(javax.swing.text.JTextComponent t,
                                              int pos)
                                       throws javax.swing.text.BadLocationException
        Calls modelToView(JTextComponent, int, Bias) with Position.Bias.Forward.
        Specified by:
        modelToView in class javax.swing.plaf.TextUI
        Throws:
        javax.swing.text.BadLocationException
      • contains

        public boolean contains​(javax.swing.JComponent c,
                                int x,
                                int y)
        Overrides:
        contains in class javax.swing.plaf.ComponentUI
      • damageRange

        public void damageRange​(javax.swing.text.JTextComponent t,
                                int p0,
                                int p1,
                                javax.swing.text.Position.Bias firstBias,
                                javax.swing.text.Position.Bias secondBias)
        Specified by:
        damageRange in class javax.swing.plaf.TextUI
      • damageRange

        public void damageRange​(javax.swing.text.JTextComponent t,
                                int p0,
                                int p1)
        Specified by:
        damageRange in class javax.swing.plaf.TextUI
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • getAccessibleChild

        public javax.accessibility.Accessible getAccessibleChild​(javax.swing.JComponent c,
                                                                 int i)
        Overrides:
        getAccessibleChild in class javax.swing.plaf.ComponentUI
      • getAccessibleChildrenCount

        public int getAccessibleChildrenCount​(javax.swing.JComponent c)
        Overrides:
        getAccessibleChildrenCount in class javax.swing.plaf.ComponentUI
      • getEditorKit

        public javax.swing.text.EditorKit getEditorKit​(javax.swing.text.JTextComponent t)
        Specified by:
        getEditorKit in class javax.swing.plaf.TextUI
      • getMaximumSize

        public java.awt.Dimension getMaximumSize​(javax.swing.JComponent c)
        Overrides:
        getMaximumSize in class javax.swing.plaf.ComponentUI
      • getMinimumSize

        public java.awt.Dimension getMinimumSize​(javax.swing.JComponent c)
        Overrides:
        getMinimumSize in class javax.swing.plaf.ComponentUI
      • getNextVisualPositionFrom

        public int getNextVisualPositionFrom​(javax.swing.text.JTextComponent t,
                                             int pos,
                                             javax.swing.text.Position.Bias b,
                                             int direction,
                                             javax.swing.text.Position.Bias[] biasRet)
                                      throws javax.swing.text.BadLocationException
        Specified by:
        getNextVisualPositionFrom in class javax.swing.plaf.TextUI
        Throws:
        javax.swing.text.BadLocationException
      • getRootView

        public javax.swing.text.View getRootView​(javax.swing.text.JTextComponent t)
        Specified by:
        getRootView in class javax.swing.plaf.TextUI
      • getToolTipText

        public java.lang.String getToolTipText​(javax.swing.text.JTextComponent t,
                                               java.awt.Point pt)
        Overrides:
        getToolTipText in class javax.swing.plaf.TextUI
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • viewToModel

        public int viewToModel​(javax.swing.text.JTextComponent t,
                               java.awt.Point pt,
                               javax.swing.text.Position.Bias[] biasReturn)
        Specified by:
        viewToModel in class javax.swing.plaf.TextUI
      • viewToModel

        public int viewToModel​(javax.swing.text.JTextComponent t,
                               java.awt.Point pt)
        Specified by:
        viewToModel in class javax.swing.plaf.TextUI
      • getBaseline

        public int getBaseline​(javax.swing.JComponent c,
                               int width,
                               int height)
        Tries to call ComponentUI#getBaseline(int, int) on the delegate via Reflection. Workaround to maintain compatibility with Java 5. Ideally we should also override ComponentUI.getBaselineResizeBehavior(JComponent), but that's impossible since the Component.BaselineResizeBehavior class, which does not exist in Java 5, is involved.
        Overrides:
        getBaseline in class javax.swing.plaf.ComponentUI
        Returns:
        the baseline, or -2 if getBaseline could not be invoked on the delegate.