Class RTextAreaUI
- All Implemented Interfaces:
ViewFactory
- Direct Known Subclasses:
RSyntaxTextAreaUI
RTextArea
. This UI takes into
account all the "extras" involved in an RTextArea
, including
having a special caret (for insert and overwrite), background images,
highlighting the current line, etc.- Version:
- 0.5
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) class
Registered in the ActionMap.Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicTextUI
BasicTextUI.BasicCaret, BasicTextUI.BasicHighlighter
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
The Nimbus LAF (and any Synth laf might have similar issues) doesn't set many UIManager properties that BasicLAF UI's look for.Creates the view for an element.protected Caret
Returns the default caret for anRTextArea
.protected Highlighter
protected Keymap
Creates the keymap for this text area.protected ActionMap
Creates a default action map.static ComponentUI
createUI
(JComponent textArea) Creates a UI for an RTextArea.protected String
Returns the name to use to cache/fetch the shared action map.Fetches the EditorKit for the UI.Returns the text area for which we are the UI.private ActionMap
Returns an action map to use by a text area.protected InputMap
Get the InputMap to use for the UI.protected Rectangle
Gets the allocation to give the root View.protected void
protected void
void
Installs this UI to the given text component.protected void
protected void
paintCurrentLineHighlight
(Graphics g, Rectangle visibleRect) Paints the highlighted current line, if it is enabled.protected void
Paints editor augmentations added by RTextArea: highlighted lines, current line highlight, and margin line.protected void
Paints any line highlights.protected void
paintMarginLine
(Graphics g, Rectangle visibleRect) Draws the "margin line" if enabled.protected void
int
yForLine
(int line) Returns the y-coordinate of the specified line.int
yForLineContaining
(int offs) Returns the y-coordinate of the line containing an offset.Methods inherited from class javax.swing.plaf.basic.BasicTextAreaUI
getBaseline, getBaselineResizeBehavior, getMinimumSize, getPreferredSize, getPropertyPrefix, propertyChange
Methods inherited from class javax.swing.plaf.basic.BasicTextUI
create, damageRange, damageRange, getComponent, getKeymapName, getMaximumSize, getNextVisualPositionFrom, getRootView, getToolTipText, installListeners, modelChanged, modelToView, modelToView, modelToView2D, paint, setView, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI, update, viewToModel, viewToModel, viewToModel2D
Methods inherited from class javax.swing.plaf.TextUI
getToolTipText2D
Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount
-
Field Details
-
SHARED_ACTION_MAP_NAME
- See Also:
-
SHARED_INPUT_MAP_NAME
- See Also:
-
textArea
-
DEFAULT_KIT
-
DEFAULT_TRANSFER_HANDLER
-
RTEXTAREA_KEYMAP_NAME
- See Also:
-
-
Constructor Details
-
RTextAreaUI
Constructor.- Parameters:
textArea
- An instance ofRTextArea
.- Throws:
IllegalArgumentException
- IftextArea
is not an instance ofRTextArea
.
-
-
Method Details
-
createUI
Creates a UI for an RTextArea.- Parameters:
textArea
- A text area.- Returns:
- The UI.
-
correctNimbusDefaultProblems
The Nimbus LAF (and any Synth laf might have similar issues) doesn't set many UIManager properties that BasicLAF UI's look for. This causes problems for custom Basic-based UI's such as RTextAreaUI. This method attempts to detect if Nimbus has been installed, and if so, sets proper values for some editor properties.- Parameters:
editor
- The text area.
-
create
Creates the view for an element. Returns a WrappedPlainView or PlainView.- Specified by:
create
in interfaceViewFactory
- Overrides:
create
in classBasicTextAreaUI
- Parameters:
elem
- The element.- Returns:
- The view.
-
createCaret
Returns the default caret for anRTextArea
. This caret is capable of displaying itself differently for insert/overwrite modes.- Overrides:
createCaret
in classBasicTextUI
- Returns:
- The caret.
-
createHighlighter
- Overrides:
createHighlighter
in classBasicTextUI
-
createKeymap
Creates the keymap for this text area. This takes the super class's keymap, but sets the default keystroke to be RTextAreaEditorKit's DefaultKeyTypedAction. This must be done to override the default keymap's default key-typed action.- Overrides:
createKeymap
in classBasicTextUI
- Returns:
- The keymap.
-
createRTextAreaActionMap
Creates a default action map. This action map contains actions for all basic text area work - cut, copy, paste, select, caret motion, etc.This isn't named
createActionMap()
because there is a package-private member by that name inBasicTextAreaUI
, and some compilers will give warnings that we are not overriding that method since it is package-private.- Returns:
- The action map.
-
getActionMapName
Returns the name to use to cache/fetch the shared action map. This should be overridden by subclasses if the subclass has its own custom editor kit to install, so its actions get picked up.- Returns:
- The name of the cached action map.
-
getEditorKit
Fetches the EditorKit for the UI.- Overrides:
getEditorKit
in classBasicTextUI
- Parameters:
tc
- the text component for which this UI is installed- Returns:
- the editor capabilities
- See Also:
-
getRTextArea
Returns the text area for which we are the UI.- Returns:
- The text area.
-
getRTextAreaActionMap
Returns an action map to use by a text area.This method is not named
getActionMap()
because there is a package-private method inBasicTextAreaUI
with that name. Thus, creating a new method with that name causes certain compilers to issue warnings that you are not actually overriding the original method (since it is package-private).- Returns:
- The action map.
- See Also:
-
getRTextAreaInputMap
Get the InputMap to use for the UI.This method is not named
getInputMap()
because there is a package-private method inBasicTextAreaUI
with that name. Thus, creating a new method with that name causes certain compilers to issue warnings that you are not actually overriding the original method (since it is package-private). -
getVisibleEditorRect
Gets the allocation to give the root View. Due to an unfortunate set of historical events this method is inappropriately named. The Rectangle returned has nothing to do with visibility. The component must have a non-zero positive size for this translation to be computed.- Overrides:
getVisibleEditorRect
in classBasicTextUI
- Returns:
- the bounding box for the root view
-
installDefaults
protected void installDefaults()- Overrides:
installDefaults
in classBasicTextAreaUI
-
installKeyboardActions
protected void installKeyboardActions()- Overrides:
installKeyboardActions
in classBasicTextUI
-
installUI
Installs this UI to the given text component.- Overrides:
installUI
in classBasicTextUI
-
paintBackground
- Overrides:
paintBackground
in classBasicTextUI
-
paintCurrentLineHighlight
Paints the highlighted current line, if it is enabled.- Parameters:
g
- The graphics context with which to paint.visibleRect
- The visible rectangle of the text area.
-
paintEditorAugmentations
Paints editor augmentations added by RTextArea: highlighted lines, current line highlight, and margin line.- Parameters:
g
- The graphics context with which to paint.
-
paintLineHighlights
Paints any line highlights.- Parameters:
g
- The graphics context.
-
paintMarginLine
Draws the "margin line" if enabled.- Parameters:
g
- The graphics context to paint with.visibleRect
- The visible rectangle of this text area.
-
paintSafely
- Overrides:
paintSafely
in classBasicTextUI
-
yForLine
Returns the y-coordinate of the specified line.The default implementation is equivalent to:
int startOffs = textArea.getLineStartOffset(line); return yForLineContaining(startOffs);
Subclasses that can calculate this value more quickly than traditionalBasicTextUI.modelToView(JTextComponent, int)
calls should override this method to do so. This method may be used when the entire bounding box isn't needed, to speed up rendering.- Parameters:
line
- The line number.- Returns:
- The y-coordinate of the top of the line, or
-1
if this text area doesn't yet have a positive size or the line is hidden (i.e. from folding). - Throws:
BadLocationException
- Ifline
isn't a valid line number for this document.
-
yForLineContaining
Returns the y-coordinate of the line containing an offset.The default implementation is equivalent to:
int line = textArea.getLineOfOffset(offs); int startOffs = textArea.getLineStartOffset(line); return modelToView(startOffs).y;
Subclasses that can calculate this value more quickly than traditionalBasicTextUI.modelToView(JTextComponent, int)
calls should override this method to do so. This method may be used when the entire bounding box isn't needed, to speed up rendering.- Parameters:
offs
- The offset info the document.- Returns:
- The y-coordinate of the top of the offset, or
-1
if this text area doesn't yet have a positive size or the line is hidden (i.e. from folding). - Throws:
BadLocationException
- Ifoffs
isn't a valid offset into the document.
-