javax.swing.text
Class JTextComponent.AccessibleJTextComponent

java.lang.Object
  extended byjavax.accessibility.AccessibleContext
      extended byjava.awt.Component.AccessibleAWTComponent
          extended byjava.awt.Container.AccessibleAWTContainer
              extended byjavax.swing.JComponent.AccessibleJComponent
                  extended byjavax.swing.text.JTextComponent.AccessibleJTextComponent
All Implemented Interfaces:
javax.accessibility.AccessibleAction, javax.accessibility.AccessibleComponent, javax.accessibility.AccessibleEditableText, javax.accessibility.AccessibleExtendedComponent, javax.accessibility.AccessibleText, CaretListener, DocumentListener, EventListener, Serializable
Direct Known Subclasses:
JEditorPane.AccessibleJEditorPane, JTextArea.AccessibleJTextArea, JTextField.AccessibleJTextField
Enclosing class:
JTextComponent

public class JTextComponent.AccessibleJTextComponent
extends JComponent.AccessibleJComponent
implements javax.accessibility.AccessibleText, CaretListener, DocumentListener, javax.accessibility.AccessibleAction, javax.accessibility.AccessibleEditableText

This class implements accessibility support for the JTextComponent class. It provides an implementation of the Java Accessibility API appropriate to menu user-interface elements.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see XMLEncoder.

See Also:
Serialized Form

Nested Class Summary
private  class JTextComponent.AccessibleJTextComponent.IndexedSegment
          IndexedSegment extends Segment adding the offset into the the model the Segment was asked for.
 
Nested classes inherited from class javax.swing.JComponent.AccessibleJComponent
JComponent.AccessibleJComponent.AccessibleContainerHandler, JComponent.AccessibleJComponent.AccessibleFocusHandler
 
Nested classes inherited from class java.awt.Component.AccessibleAWTComponent
Component.AccessibleAWTComponent.AccessibleAWTComponentHandler, Component.AccessibleAWTComponent.AccessibleAWTFocusHandler
 
Field Summary
(package private)  int caretPos
           
(package private)  Point oldLocationOnScreen
           
 
Fields inherited from class javax.swing.JComponent.AccessibleJComponent
accessibleContainerHandler, accessibleFocusHandler
 
Fields inherited from class java.awt.Component.AccessibleAWTComponent
accessibleAWTComponentHandler, accessibleAWTFocusHandler
 
Fields inherited from class javax.accessibility.AccessibleContext
ACCESSIBLE_ACTION_PROPERTY, ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY, ACCESSIBLE_CARET_PROPERTY, ACCESSIBLE_CHILD_PROPERTY, ACCESSIBLE_DESCRIPTION_PROPERTY, ACCESSIBLE_HYPERTEXT_OFFSET, ACCESSIBLE_NAME_PROPERTY, ACCESSIBLE_SELECTION_PROPERTY, ACCESSIBLE_STATE_PROPERTY, ACCESSIBLE_TABLE_CAPTION_CHANGED, ACCESSIBLE_TABLE_COLUMN_DESCRIPTION_CHANGED, ACCESSIBLE_TABLE_COLUMN_HEADER_CHANGED, ACCESSIBLE_TABLE_MODEL_CHANGED, ACCESSIBLE_TABLE_ROW_DESCRIPTION_CHANGED, ACCESSIBLE_TABLE_ROW_HEADER_CHANGED, ACCESSIBLE_TABLE_SUMMARY_CHANGED, ACCESSIBLE_TEXT_PROPERTY, ACCESSIBLE_VALUE_PROPERTY, ACCESSIBLE_VISIBLE_DATA_PROPERTY, accessibleDescription, accessibleName, accessibleParent
 
Fields inherited from interface javax.accessibility.AccessibleText
CHARACTER, SENTENCE, WORD
 
Constructor Summary
JTextComponent.AccessibleJTextComponent()
          Constructs an AccessibleJTextComponent.
 
Method Summary
 void caretUpdate(CaretEvent e)
          Handles caret updates (fire appropriate property change event, which are AccessibleContext.ACCESSIBLE_CARET_PROPERTY and AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY).
 void changedUpdate(DocumentEvent e)
          Handles document remove (fire appropriate property change event, which is AccessibleContext.ACCESSIBLE_TEXT_PROPERTY).
 void cut(int startIndex, int endIndex)
          Cuts the text between two indices into the system clipboard.
 void delete(int startIndex, int endIndex)
          Deletes the text between two indices
 boolean doAccessibleAction(int i)
          Performs the specified Action on the object
 javax.accessibility.AccessibleAction getAccessibleAction()
           
 int getAccessibleActionCount()
          Returns the number of accessible actions available in this object If there are more than one, the first one is considered the "default" action of the object.
 String getAccessibleActionDescription(int i)
          Returns a description of the specified action of the object.
 javax.accessibility.AccessibleEditableText getAccessibleEditableText()
          Returns the AccessibleEditableText interface for this text component.
 javax.accessibility.AccessibleRole getAccessibleRole()
          Gets the role of this object.
 javax.accessibility.AccessibleStateSet getAccessibleStateSet()
          Gets the state set of the JTextComponent.
 javax.accessibility.AccessibleText getAccessibleText()
          Get the AccessibleText associated with this object.
 String getAfterIndex(int part, int index)
           
 String getAtIndex(int part, int index)
           
private  String getAtIndex(int part, int index, int direction)
          Gets the word, sentence, or character at index.
 String getBeforeIndex(int part, int index)
           
 int getCaretPosition()
          Returns the zero-based offset of the caret.
 AttributeSet getCharacterAttribute(int i)
          Returns the AttributeSet for a given character (at a given index).
 Rectangle getCharacterBounds(int i)
          Determines the bounding box of the character at the given index into the string.
 int getCharCount()
          Returns the number of characters (valid indices)
 int getIndexAtPoint(Point p)
          Given a point in local coordinates, return the zero-based index of the character under that Point.
private  Element getParagraphElement(int index)
           
private  JTextComponent.AccessibleJTextComponent.IndexedSegment getParagraphElementText(int index)
           
(package private)  Rectangle getRootEditorRect()
          Gets the editor's drawing rectangle.
private  JTextComponent.AccessibleJTextComponent.IndexedSegment getSegmentAt(int part, int index)
          Returns the Segment at index representing either the paragraph or sentence as identified by part, or null if a valid paragraph/sentence can't be found.
 String getSelectedText()
          Returns the portion of the text that is selected.
 int getSelectionEnd()
          Returns the end offset within the selected text.
 int getSelectionStart()
          Returns the start offset within the selected text.
 String getTextRange(int startIndex, int endIndex)
          Returns the text string between two indices.
 void insertTextAtIndex(int index, String s)
          Inserts the specified string at the given index
 void insertUpdate(DocumentEvent e)
          Handles document insert (fire appropriate property change event which is AccessibleContext.ACCESSIBLE_TEXT_PROPERTY).
 void paste(int startIndex)
          Pastes the text from the system clipboard into the text starting at the specified index.
 void removeUpdate(DocumentEvent e)
          Handles document remove (fire appropriate property change event, which is AccessibleContext.ACCESSIBLE_TEXT_PROPERTY).
 void replaceText(int startIndex, int endIndex, String s)
          Replaces the text between two indices with the specified string.
 void selectText(int startIndex, int endIndex)
          Selects the text between two indices.
 void setAttributes(int startIndex, int endIndex, AttributeSet as)
          Sets attributes for the text between two indices.
 void setTextContents(String s)
          Sets the text contents to the specified string.
 
Methods inherited from class javax.swing.JComponent.AccessibleJComponent
addPropertyChangeListener, getAccessibleChild, getAccessibleChildrenCount, getAccessibleDescription, getAccessibleKeyBinding, getAccessibleName, getBorderTitle, getTitledBorderText, getToolTipText, removePropertyChangeListener
 
Methods inherited from class java.awt.Container.AccessibleAWTContainer
getAccessibleAt
 
Methods inherited from class java.awt.Component.AccessibleAWTComponent
addFocusListener, contains, getAccessibleComponent, getAccessibleIndexInParent, getAccessibleParent, getBackground, getBounds, getCursor, getFont, getFontMetrics, getForeground, getLocale, getLocation, getLocationOnScreen, getSize, isEnabled, isFocusTraversable, isShowing, isVisible, removeFocusListener, requestFocus, setBackground, setBounds, setCursor, setEnabled, setFont, setForeground, setLocation, setSize, setVisible
 
Methods inherited from class javax.accessibility.AccessibleContext
firePropertyChange, getAccessibleIcon, getAccessibleRelationSet, getAccessibleSelection, getAccessibleTable, getAccessibleValue, setAccessibleDescription, setAccessibleName, setAccessibleParent
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.accessibility.AccessibleComponent
addFocusListener, contains, getAccessibleAt, getBackground, getBounds, getCursor, getFont, getFontMetrics, getForeground, getLocation, getLocationOnScreen, getSize, isEnabled, isFocusTraversable, isShowing, isVisible, removeFocusListener, requestFocus, setBackground, setBounds, setCursor, setEnabled, setFont, setForeground, setLocation, setSize, setVisible
 

Field Detail

caretPos

int caretPos

oldLocationOnScreen

Point oldLocationOnScreen
Constructor Detail

JTextComponent.AccessibleJTextComponent

public JTextComponent.AccessibleJTextComponent()
Constructs an AccessibleJTextComponent. Adds a listener to track caret change.

Method Detail

caretUpdate

public void caretUpdate(CaretEvent e)
Handles caret updates (fire appropriate property change event, which are AccessibleContext.ACCESSIBLE_CARET_PROPERTY and AccessibleContext.ACCESSIBLE_SELECTION_PROPERTY). This keeps track of the dot position internally. When the caret moves, the internal position is updated after firing the event.

Specified by:
caretUpdate in interface CaretListener
Parameters:
e - the CaretEvent

insertUpdate

public void insertUpdate(DocumentEvent e)
Handles document insert (fire appropriate property change event which is AccessibleContext.ACCESSIBLE_TEXT_PROPERTY). This tracks the changed offset via the event.

Specified by:
insertUpdate in interface DocumentListener
Parameters:
e - the DocumentEvent

removeUpdate

public void removeUpdate(DocumentEvent e)
Handles document remove (fire appropriate property change event, which is AccessibleContext.ACCESSIBLE_TEXT_PROPERTY). This tracks the changed offset via the event.

Specified by:
removeUpdate in interface DocumentListener
Parameters:
e - the DocumentEvent

changedUpdate

public void changedUpdate(DocumentEvent e)
Handles document remove (fire appropriate property change event, which is AccessibleContext.ACCESSIBLE_TEXT_PROPERTY). This tracks the changed offset via the event.

Specified by:
changedUpdate in interface DocumentListener
Parameters:
e - the DocumentEvent

getAccessibleStateSet

public javax.accessibility.AccessibleStateSet getAccessibleStateSet()
Gets the state set of the JTextComponent. The AccessibleStateSet of an object is composed of a set of unique AccessibleState's. A change in the AccessibleStateSet of an object will cause a PropertyChangeEvent to be fired for the AccessibleContext.ACCESSIBLE_STATE_PROPERTY property.

Overrides:
getAccessibleStateSet in class JComponent.AccessibleJComponent
Returns:
an instance of AccessibleStateSet containing the current state set of the object
See Also:
AccessibleStateSet, AccessibleState, JComponent.AccessibleJComponent.addPropertyChangeListener(java.beans.PropertyChangeListener)

getAccessibleRole

public javax.accessibility.AccessibleRole getAccessibleRole()
Gets the role of this object.

Overrides:
getAccessibleRole in class JComponent.AccessibleJComponent
Returns:
an instance of AccessibleRole describing the role of the object (AccessibleRole.TEXT)
See Also:
AccessibleRole

getAccessibleText

public javax.accessibility.AccessibleText getAccessibleText()
Get the AccessibleText associated with this object. In the implementation of the Java Accessibility API for this class, return this object, which is responsible for implementing the AccessibleText interface on behalf of itself.

Returns:
this object

getIndexAtPoint

public int getIndexAtPoint(Point p)
Given a point in local coordinates, return the zero-based index of the character under that Point. If the point is invalid, this method returns -1.

Specified by:
getIndexAtPoint in interface javax.accessibility.AccessibleText
Parameters:
p - the Point in local coordinates
Returns:
the zero-based index of the character under Point p.

getRootEditorRect

Rectangle getRootEditorRect()
Gets the editor's drawing rectangle. Stolen from the unfortunately named BasicTextUI.getVisibleEditorRect()

Returns:
the bounding box for the root view

getCharacterBounds

public Rectangle getCharacterBounds(int i)
Determines the bounding box of the character at the given index into the string. The bounds are returned in local coordinates. If the index is invalid a null rectangle is returned. The screen coordinates returned are "unscrolled coordinates" if the JTextComponent is contained in a JScrollPane in which case the resulting rectangle should be composed with the parent coordinates. A good algorithm to use is: Accessible a: AccessibleText at = a.getAccessibleText(); AccessibleComponent ac = a.getAccessibleComponent(); Rectangle r = at.getCharacterBounds(); Point p = ac.getLocation(); r.x += p.x; r.y += p.y; Note: the JTextComponent must have a valid size (e.g. have been added to a parent container whose ancestor container is a valid top-level window) for this method to be able to return a meaningful (non-null) value.

Specified by:
getCharacterBounds in interface javax.accessibility.AccessibleText
Parameters:
i - the index into the String >= 0
Returns:
the screen coordinates of the character's bounding box

getCharCount

public int getCharCount()
Returns the number of characters (valid indices)

Specified by:
getCharCount in interface javax.accessibility.AccessibleText
Returns:
the number of characters >= 0

getCaretPosition

public int getCaretPosition()
Returns the zero-based offset of the caret. Note: The character to the right of the caret will have the same index value as the offset (the caret is between two characters).

Specified by:
getCaretPosition in interface javax.accessibility.AccessibleText
Returns:
the zero-based offset of the caret.

getCharacterAttribute

public AttributeSet getCharacterAttribute(int i)
Returns the AttributeSet for a given character (at a given index).

Specified by:
getCharacterAttribute in interface javax.accessibility.AccessibleText
Parameters:
i - the zero-based index into the text
Returns:
the AttributeSet of the character

getSelectionStart

public int getSelectionStart()
Returns the start offset within the selected text. If there is no selection, but there is a caret, the start and end offsets will be the same. Return 0 if the text is empty, or the caret position if no selection.

Specified by:
getSelectionStart in interface javax.accessibility.AccessibleText
Returns:
the index into the text of the start of the selection >= 0

getSelectionEnd

public int getSelectionEnd()
Returns the end offset within the selected text. If there is no selection, but there is a caret, the start and end offsets will be the same. Return 0 if the text is empty, or the caret position if no selection.

Specified by:
getSelectionEnd in interface javax.accessibility.AccessibleText
Returns:
the index into teh text of the end of the selection >= 0

getSelectedText

public String getSelectedText()
Returns the portion of the text that is selected.

Specified by:
getSelectedText in interface javax.accessibility.AccessibleText
Returns:
the text, null if no selection

getAtIndex

public String getAtIndex(int part,
                         int index)
Specified by:
getAtIndex in interface javax.accessibility.AccessibleText

getAfterIndex

public String getAfterIndex(int part,
                            int index)
Specified by:
getAfterIndex in interface javax.accessibility.AccessibleText

getBeforeIndex

public String getBeforeIndex(int part,
                             int index)
Specified by:
getBeforeIndex in interface javax.accessibility.AccessibleText

getAtIndex

private String getAtIndex(int part,
                          int index,
                          int direction)
Gets the word, sentence, or character at index. If direction is non-null this will find the next/previous word/sentence/character.


getParagraphElement

private Element getParagraphElement(int index)

getParagraphElementText

private JTextComponent.AccessibleJTextComponent.IndexedSegment getParagraphElementText(int index)
                                                                                throws BadLocationException
Throws:
BadLocationException

getSegmentAt

private JTextComponent.AccessibleJTextComponent.IndexedSegment getSegmentAt(int part,
                                                                            int index)
                                                                     throws BadLocationException
Returns the Segment at index representing either the paragraph or sentence as identified by part, or null if a valid paragraph/sentence can't be found. The offset will point to the start of the word/sentence in the array, and the modelOffset will point to the location of the word/sentence in the model.

Throws:
BadLocationException

getAccessibleEditableText

public javax.accessibility.AccessibleEditableText getAccessibleEditableText()
Returns the AccessibleEditableText interface for this text component.

Returns:
the AccessibleEditableText interface

setTextContents

public void setTextContents(String s)
Sets the text contents to the specified string.

Specified by:
setTextContents in interface javax.accessibility.AccessibleEditableText
Parameters:
s - the string to set the text contents

insertTextAtIndex

public void insertTextAtIndex(int index,
                              String s)
Inserts the specified string at the given index

Specified by:
insertTextAtIndex in interface javax.accessibility.AccessibleEditableText
Parameters:
index - the index in the text where the string will be inserted
s - the string to insert in the text

getTextRange

public String getTextRange(int startIndex,
                           int endIndex)
Returns the text string between two indices.

Specified by:
getTextRange in interface javax.accessibility.AccessibleEditableText
Parameters:
startIndex - the starting index in the text
endIndex - the ending index in the text
Returns:
the text string between the indices

delete

public void delete(int startIndex,
                   int endIndex)
Deletes the text between two indices

Specified by:
delete in interface javax.accessibility.AccessibleEditableText
Parameters:
startIndex - the starting index in the text
endIndex - the ending index in the text

cut

public void cut(int startIndex,
                int endIndex)
Cuts the text between two indices into the system clipboard.

Specified by:
cut in interface javax.accessibility.AccessibleEditableText
Parameters:
startIndex - the starting index in the text
endIndex - the ending index in the text

paste

public void paste(int startIndex)
Pastes the text from the system clipboard into the text starting at the specified index.

Specified by:
paste in interface javax.accessibility.AccessibleEditableText
Parameters:
startIndex - the starting index in the text

replaceText

public void replaceText(int startIndex,
                        int endIndex,
                        String s)
Replaces the text between two indices with the specified string.

Specified by:
replaceText in interface javax.accessibility.AccessibleEditableText
Parameters:
startIndex - the starting index in the text
endIndex - the ending index in the text
s - the string to replace the text between two indices

selectText

public void selectText(int startIndex,
                       int endIndex)
Selects the text between two indices.

Specified by:
selectText in interface javax.accessibility.AccessibleEditableText
Parameters:
startIndex - the starting index in the text
endIndex - the ending index in the text

setAttributes

public void setAttributes(int startIndex,
                          int endIndex,
                          AttributeSet as)
Sets attributes for the text between two indices.

Specified by:
setAttributes in interface javax.accessibility.AccessibleEditableText
Parameters:
startIndex - the starting index in the text
endIndex - the ending index in the text
as - the attribute set
See Also:
AttributeSet

getAccessibleAction

public javax.accessibility.AccessibleAction getAccessibleAction()

getAccessibleActionCount

public int getAccessibleActionCount()
Returns the number of accessible actions available in this object If there are more than one, the first one is considered the "default" action of the object.

Specified by:
getAccessibleActionCount in interface javax.accessibility.AccessibleAction
Returns:
the zero-based number of Actions in this object

getAccessibleActionDescription

public String getAccessibleActionDescription(int i)
Returns a description of the specified action of the object.

Specified by:
getAccessibleActionDescription in interface javax.accessibility.AccessibleAction
Parameters:
i - zero-based index of the actions
Returns:
a String description of the action
See Also:
getAccessibleActionCount()

doAccessibleAction

public boolean doAccessibleAction(int i)
Performs the specified Action on the object

Specified by:
doAccessibleAction in interface javax.accessibility.AccessibleAction
Parameters:
i - zero-based index of actions
Returns:
true if the action was performed; otherwise false.
See Also:
getAccessibleActionCount()