Quaqua 5.4.1 2009-07-14

ch.randelshofer.quaqua
Class QuaquaPasswordView

java.lang.Object
  extended by javax.swing.text.View
      extended by javax.swing.text.PlainView
          extended by javax.swing.text.FieldView
              extended by ch.randelshofer.quaqua.QuaquaPasswordView
All Implemented Interfaces:
javax.swing.SwingConstants, javax.swing.text.TabExpander

public class QuaquaPasswordView
extends javax.swing.text.FieldView

QuaquaPasswordView paints a filled circle instead of the echo char returned by the JPasswordField.

Version:
1.0.1 2008-01-04 Only paint a filled circle, if the echo char is a '*' character.
1.0 16 March 2005 Created.
Author:
Werner Randelshofer

Field Summary
protected  java.awt.Color selected
           
protected  java.awt.Color unselected
           
 
Fields inherited from class javax.swing.text.PlainView
metrics
 
Fields inherited from class javax.swing.text.View
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
 
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
QuaquaPasswordView(javax.swing.text.Element element)
          Creates a new instance.
 
Method Summary
protected  int drawEchoCharacter(java.awt.Graphics g, int x, int y, char c)
          Renders the echo character, or whatever graphic should be used to display the password characters.
protected  int drawSelectedText(java.awt.Graphics g, int x, int y, int p0, int p1)
          Renders the given range in the model as selected text.
protected  int drawUnselectedText(java.awt.Graphics g, int x, int y, int p0, int p1)
          Renders the given range in the model as normal unselected text.
protected  char getEchoChar(javax.swing.JPasswordField field)
           
 float getPreferredSpan(int axis)
          Determines the preferred span for this view along an axis.
 java.awt.Shape modelToView(int pos, java.awt.Shape a, javax.swing.text.Position.Bias b)
          Provides a mapping from the document model coordinate space to the coordinate space of the view mapped to it.
 void paint(java.awt.Graphics g, java.awt.Shape a)
           
 int viewToModel(float fx, float fy, java.awt.Shape a, javax.swing.text.Position.Bias[] bias)
          Provides a mapping from the view coordinate space to the logical coordinate space of the model.
 
Methods inherited from class javax.swing.text.FieldView
adjustAllocation, getFontMetrics, getResizeWeight, insertUpdate, removeUpdate
 
Methods inherited from class javax.swing.text.PlainView
changedUpdate, damageLineRange, drawLine, getLineBuffer, getTabSize, lineToRect, nextTabStop, setSize, updateDamage, updateMetrics
 
Methods inherited from class javax.swing.text.View
append, breakView, createFragment, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getChildAllocation, getContainer, getDocument, getElement, getEndOffset, getGraphics, getMaximumSpan, getMinimumSpan, getNextVisualPositionFrom, getParent, getStartOffset, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, isVisible, modelToView, modelToView, preferenceChanged, remove, removeAll, replace, setParent, updateChildren, updateLayout, viewToModel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

unselected

protected java.awt.Color unselected

selected

protected java.awt.Color selected
Constructor Detail

QuaquaPasswordView

public QuaquaPasswordView(javax.swing.text.Element element)
Creates a new instance.

Method Detail

getEchoChar

protected char getEchoChar(javax.swing.JPasswordField field)

drawUnselectedText

protected int drawUnselectedText(java.awt.Graphics g,
                                 int x,
                                 int y,
                                 int p0,
                                 int p1)
                          throws javax.swing.text.BadLocationException
Renders the given range in the model as normal unselected text. This sets the foreground color and echos the characters using the value returned by getEchoChar().

Overrides:
drawUnselectedText in class javax.swing.text.PlainView
Parameters:
g - the graphics context
x - the starting X coordinate >= 0
y - the starting Y coordinate >= 0
p0 - the starting offset in the model >= 0
p1 - the ending offset in the model >= p0
Returns:
the X location of the end of the range >= 0
Throws:
javax.swing.text.BadLocationException - if p0 or p1 are out of range

paint

public void paint(java.awt.Graphics g,
                  java.awt.Shape a)
Overrides:
paint in class javax.swing.text.FieldView

drawSelectedText

protected int drawSelectedText(java.awt.Graphics g,
                               int x,
                               int y,
                               int p0,
                               int p1)
                        throws javax.swing.text.BadLocationException
Renders the given range in the model as selected text. This is implemented to render the text in the color specified in the hosting component. It assumes the highlighter will render the selected background. Uses the result of getEchoChar() to display the characters.

Overrides:
drawSelectedText in class javax.swing.text.PlainView
Parameters:
g - the graphics context
x - the starting X coordinate >= 0
y - the starting Y coordinate >= 0
p0 - the starting offset in the model >= 0
p1 - the ending offset in the model >= p0
Returns:
the X location of the end of the range >= 0
Throws:
javax.swing.text.BadLocationException - if p0 or p1 are out of range

drawEchoCharacter

protected int drawEchoCharacter(java.awt.Graphics g,
                                int x,
                                int y,
                                char c)
Renders the echo character, or whatever graphic should be used to display the password characters. The color in the Graphics object is set to the appropriate foreground color for selected or unselected text.

Parameters:
g - the graphics context
x - the starting X coordinate >= 0
y - the starting Y coordinate >= 0
c - the echo character
Returns:
the updated X position >= 0

modelToView

public java.awt.Shape modelToView(int pos,
                                  java.awt.Shape a,
                                  javax.swing.text.Position.Bias b)
                           throws javax.swing.text.BadLocationException
Provides a mapping from the document model coordinate space to the coordinate space of the view mapped to it.

Overrides:
modelToView in class javax.swing.text.FieldView
Parameters:
pos - the position to convert >= 0
a - the allocated region to render into
Returns:
the bounding box of the given position
Throws:
javax.swing.text.BadLocationException - if the given position does not represent a valid location in the associated document
See Also:
View.modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)

viewToModel

public int viewToModel(float fx,
                       float fy,
                       java.awt.Shape a,
                       javax.swing.text.Position.Bias[] bias)
Provides a mapping from the view coordinate space to the logical coordinate space of the model.

Overrides:
viewToModel in class javax.swing.text.FieldView
Parameters:
fx - the X coordinate >= 0.0f
fy - the Y coordinate >= 0.0f
a - the allocated region to render into
Returns:
the location within the model that best represents the given point in the view
See Also:
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

getPreferredSpan

public float getPreferredSpan(int axis)
Determines the preferred span for this view along an axis.

Overrides:
getPreferredSpan in class javax.swing.text.FieldView
Parameters:
axis - may be either View.X_AXIS or View.Y_AXIS
Returns:
the span the view would like to be rendered into >= 0. Typically the view is told to render into the span that is returned, although there is no guarantee. The parent may choose to resize or break the view.

Copyright 2003-2007 (c) Werner Randelshofer.
All rights reserved.