Package org.jdesktop.swingx.plaf
Class PromptTextUI
- java.lang.Object
-
- javax.swing.plaf.ComponentUI
-
- javax.swing.plaf.TextUI
-
- org.jdesktop.swingx.plaf.PromptTextUI
-
- Direct Known Subclasses:
PromptTextAreaUI
,PromptTextFieldUI
public abstract class PromptTextUI extends javax.swing.plaf.TextUI
Abstract
TextUI
class that delegates most work to anotherTextUI
and additionally renders a prompt text as specified in theJTextComponent
s client properties byPromptSupport
.Subclasses of this class must provide a prompt component used for rendering the prompt text.
- Author:
- Peter Weishapl
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
PromptTextUI.PainterHighlighter
-
Field Summary
Fields Modifier and Type Field Description protected javax.swing.plaf.TextUI
delegate
Delegate the hard work to this object.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 newPromptTextUI
which delegates most work to anotherTextUI
.
-
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 callComponentUI#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)
WhenshouldPaintPrompt(JTextComponent)
returns true, the prompt component is retrieved by callinggetPromptComponent(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 onc
which repaints the component when it gains or loses the focus.java.awt.Rectangle
modelToView(javax.swing.text.JTextComponent t, int pos)
CallsmodelToView(JTextComponent, int, Bias)
withPosition.Bias.Forward
.java.awt.Rectangle
modelToView(javax.swing.text.JTextComponent t, int pos, javax.swing.text.Position.Bias bias)
Delegate whenshouldPaintPrompt(JTextComponent)
returns false.void
paint(java.awt.Graphics g, javax.swing.JComponent c)
Delegates painting whenshouldPaintPrompt(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 oftxt
.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)
-
-
-
Constructor Detail
-
PromptTextUI
public PromptTextUI(javax.swing.plaf.TextUI delegate)
Creates a newPromptTextUI
which delegates most work to anotherTextUI
.- 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 onc
which repaints the component when it gains or loses the focus.- Overrides:
installUI
in classjavax.swing.plaf.ComponentUI
-
uninstallUI
public void uninstallUI(javax.swing.JComponent c)
Delegates, then uninstalls the focus listener.- Overrides:
uninstallUI
in classjavax.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 givenJTextComponent
s properties and returns it.- Parameters:
txt
-- Returns:
- the adjusted prompt component
-
getPreferredSize
public java.awt.Dimension getPreferredSize(javax.swing.JComponent c)
WhenshouldPaintPrompt(JTextComponent)
returns true, the prompt component is retrieved by callinggetPromptComponent(JTextComponent)
and it's preferred size is returned. Otherwise supergetPreferredSize(JComponent)
is called.- Overrides:
getPreferredSize
in classjavax.swing.plaf.ComponentUI
-
paint
public void paint(java.awt.Graphics g, javax.swing.JComponent c)
Delegates painting whenshouldPaintPrompt(JTextComponent)
returns false. Otherwise the prompt component is retrieved by callinggetPromptComponent(JTextComponent)
and painted. Then the caret of the given text component is painted.- Overrides:
paint
in classjavax.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 oftxt
.- 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 classjavax.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 whenshouldPaintPrompt(JTextComponent)
returns false. Otherwise get the prompt component's UI and delegate to it. This ensures that theCaret
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 classjavax.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
CallsmodelToView(JTextComponent, int, Bias)
withPosition.Bias.Forward
.- Specified by:
modelToView
in classjavax.swing.plaf.TextUI
- Throws:
javax.swing.text.BadLocationException
-
contains
public boolean contains(javax.swing.JComponent c, int x, int y)
- Overrides:
contains
in classjavax.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 classjavax.swing.plaf.TextUI
-
damageRange
public void damageRange(javax.swing.text.JTextComponent t, int p0, int p1)
- Specified by:
damageRange
in classjavax.swing.plaf.TextUI
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
getAccessibleChild
public javax.accessibility.Accessible getAccessibleChild(javax.swing.JComponent c, int i)
- Overrides:
getAccessibleChild
in classjavax.swing.plaf.ComponentUI
-
getAccessibleChildrenCount
public int getAccessibleChildrenCount(javax.swing.JComponent c)
- Overrides:
getAccessibleChildrenCount
in classjavax.swing.plaf.ComponentUI
-
getEditorKit
public javax.swing.text.EditorKit getEditorKit(javax.swing.text.JTextComponent t)
- Specified by:
getEditorKit
in classjavax.swing.plaf.TextUI
-
getMaximumSize
public java.awt.Dimension getMaximumSize(javax.swing.JComponent c)
- Overrides:
getMaximumSize
in classjavax.swing.plaf.ComponentUI
-
getMinimumSize
public java.awt.Dimension getMinimumSize(javax.swing.JComponent c)
- Overrides:
getMinimumSize
in classjavax.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 classjavax.swing.plaf.TextUI
- Throws:
javax.swing.text.BadLocationException
-
getRootView
public javax.swing.text.View getRootView(javax.swing.text.JTextComponent t)
- Specified by:
getRootView
in classjavax.swing.plaf.TextUI
-
getToolTipText
public java.lang.String getToolTipText(javax.swing.text.JTextComponent t, java.awt.Point pt)
- Overrides:
getToolTipText
in classjavax.swing.plaf.TextUI
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.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 classjavax.swing.plaf.TextUI
-
viewToModel
public int viewToModel(javax.swing.text.JTextComponent t, java.awt.Point pt)
- Specified by:
viewToModel
in classjavax.swing.plaf.TextUI
-
getBaseline
public int getBaseline(javax.swing.JComponent c, int width, int height)
Tries to callComponentUI#getBaseline(int, int)
on the delegate via Reflection. Workaround to maintain compatibility with Java 5. Ideally we should also overrideComponentUI.getBaselineResizeBehavior(JComponent)
, but that's impossible since theComponent.BaselineResizeBehavior
class, which does not exist in Java 5, is involved.- Overrides:
getBaseline
in classjavax.swing.plaf.ComponentUI
- Returns:
- the baseline, or -2 if
getBaseline
could not be invoked on the delegate.
-
-