public abstract class BasicAction
extends javax.swing.text.TextAction
BasicAction
is an abstract class that all editor
actions should extend from. This provides some utility routines
that can be used by subclasses. The primary purpose of this class
is to track the last action executed within the editor. This is
needed as certain actions (particularly Emacs ones) depend on this
information. Modifier and Type | Class and Description |
---|---|
protected static class |
BasicAction.MultiSelectionBehavior |
Modifier and Type | Field and Description |
---|---|
protected BasicAction.MultiSelectionBehavior |
multiSelectionBehavior |
Constructor and Description |
---|
BasicAction(java.lang.String actionName)
Constructs this object with the appropriate action name.
|
BasicAction(java.lang.String actionName,
BasicAction.MultiSelectionBehavior multiSelectionBehavior) |
Modifier and Type | Method and Description |
---|---|
void |
actionPerformed(java.awt.event.ActionEvent event)
The operation to perform when this action is triggered.
|
void |
actionPerformed(java.awt.event.ActionEvent event,
BasicEditorPane editor,
BasicDocument document)
The operation to perform when this action is triggered in
a
BasicEditorPane . |
void |
actionPerformedOnSelection(java.awt.event.ActionEvent event,
BasicEditorPane editor,
BasicDocument document,
oracle.javatools.editor.MultiSelectionSupport.MultiSelection selection,
boolean isPrimarySelection)
If the selection is marked as a multiselection, then this method will be called
once for each multi selection, including once for the main editor selection (flag isPrimarySelection
will be true in this case).
|
void |
actionPerformMulti(java.awt.event.ActionEvent event,
BasicEditorPane editor,
BasicDocument document)
When the action supports multiselect this method is called to initiate the multi select handling.
|
protected void |
actionPerformMultiForSelections(java.awt.event.ActionEvent event,
BasicEditorPane editor,
BasicDocument document)
Cycle through all selections, calling a selection specific actionPerformedOnSelection for each of them.
|
protected boolean |
actionSetup(java.awt.event.ActionEvent event,
BasicEditorPane editor,
BasicDocument document)
Called one time before action performed is called.
|
protected void |
actionTakedown(java.awt.event.ActionEvent event,
BasicEditorPane editor,
BasicDocument document)
Called one time after actionPerformedOnSelection is called.
|
static void |
beep(BasicEditorPane editor)
Utility routine which just emits a beep.
|
static java.lang.String |
buildIndent(boolean useTabs,
int tabSize,
int numColumns)
Utility routine to build a String that can be used to indent a
line by a certain size (not necessarily a single indent.) This
is used for example if the document does use tab characters and
the user indents the line - we may need to convert spaces to tabs
to do the right thing.
|
static int |
getFontHeight(BasicEditorPane editor)
Utility routine which fetches the height of the current font of
the editor.
|
static int |
getIndentSizeProperty(BasicEditorPane editor)
Utility routine to fetch the indent size for the given editor.
|
BasicAction |
getLastAction(BasicEditorPane editor)
Utility routine which retrieves the last action executed (prior
to the current one.) If there was no previous action, null is
returned.
|
static java.awt.Point |
getMagicCaretPosition(BasicEditorPane editor)
Reads the magic caret position from the editor's caret, or if
there is none, the current horizontal position of the cursor.
|
protected static java.awt.Point |
getMagicCaretPosition(BasicEditorPane editor,
oracle.javatools.editor.MultiSelectionSupport.MultiSelection selection)
Reads the magic caret position from the editor's caret, or if
there is none, the current horizontal position of the cursor.
|
protected java.lang.String |
getName()
Utility routine to return the name of this action instance.
|
static SmartIndentProvider |
getSmartIndentProvider(BasicEditorPane editor,
BasicDocument document)
Fetch the SmartIndentProvider for the current document.
|
static java.lang.String |
getSpaces(int numSpaces)
Get a String with the specified number of space characters
|
static java.lang.String |
getTab(boolean useTabs,
int tabSize)
Utility routine to fetch the tab or equivalent spaces to use.
|
static java.lang.String |
getTabs(int numTabs)
Get a String with the specified number of tab characters
|
static int |
getTabSizeProperty(BasicEditorPane editor)
Utility routine to fetch the tab stop size for the given editor.
|
static boolean |
getUseAutoIndentProperty(BasicEditorPane editor)
Utility routine to fetch whether auto-indentation should be done
for the given editor.
|
static boolean |
getUseTabsProperty(BasicEditorPane editor)
Utility routine to fetch whether a tab character should be used
for the given editor.
|
static java.awt.Rectangle |
getVisibleRect(BasicEditorPane editor)
Utility routine to fetch the current visible rectangle of the editor.
|
static boolean |
isEditable(BasicEditorPane editor,
boolean beepIfNotEditable)
Utility routine which checks if the editor is editable, and beeps
if it isn't (if requested.)
|
protected void |
lock(BasicDocument document) |
static void |
setMagicCaretPosition(BasicEditorPane editor,
java.awt.Point magicPosition)
Stores the magic caret position into the editor's caret.
|
protected static void |
setMagicCaretPosition(BasicEditorPane editor,
java.awt.Point magicPosition,
oracle.javatools.editor.MultiSelectionSupport.MultiSelection selection)
Set the magic position for the given selection, or for the main caret if the selection
is null
|
static void |
showMessage(BasicEditorPane editor,
java.lang.String message)
Utility routine to show a feedback message in the editor.
|
static int |
skipLeadingIndent(TextBuffer textBuffer,
int lineStart,
int lineEnd)
Utility routine to find the offset of the first character after
the leading indent (if any), or -1 for an empty line or line
containing only whitespace.
|
protected void |
unlock(BasicDocument document) |
augmentList, getFocusedComponent, getTextComponent
protected final BasicAction.MultiSelectionBehavior multiSelectionBehavior
public BasicAction(java.lang.String actionName)
public BasicAction(java.lang.String actionName, BasicAction.MultiSelectionBehavior multiSelectionBehavior)
actionName
- MultiSelectionSupport
- how this action deals with multi-selectionspublic void actionPerformed(java.awt.event.ActionEvent event, BasicEditorPane editor, BasicDocument document)
BasicEditorPane
. Implementations should override
this method. Implementations are guaranteed that the document
read lock is held for the duration of this call.event
- the action eventeditor
- the editor this action was invoked indocument
- the document associated with the editorpublic void actionPerformed(java.awt.event.ActionEvent event)
event
- the action eventpublic void actionPerformMulti(java.awt.event.ActionEvent event, BasicEditorPane editor, BasicDocument document)
event
- editor
- document
- protected void actionPerformMultiForSelections(java.awt.event.ActionEvent event, BasicEditorPane editor, BasicDocument document)
event
- editor
- document
- public void actionPerformedOnSelection(java.awt.event.ActionEvent event, BasicEditorPane editor, BasicDocument document, oracle.javatools.editor.MultiSelectionSupport.MultiSelection selection, boolean isPrimarySelection)
event
- editor
- document
- selection
- isPrimarySelection
- true if the call is for the main selection, false for multiSelection.protected boolean actionSetup(java.awt.event.ActionEvent event, BasicEditorPane editor, BasicDocument document)
protected void actionTakedown(java.awt.event.ActionEvent event, BasicEditorPane editor, BasicDocument document)
protected void lock(BasicDocument document)
protected void unlock(BasicDocument document)
protected final java.lang.String getName()
public final BasicAction getLastAction(BasicEditorPane editor)
editor
- the editor to check the last action executedpublic static java.awt.Point getMagicCaretPosition(BasicEditorPane editor) throws javax.swing.text.BadLocationException
editor
- the editor in which the vertical navigation occurredjavax.swing.text.BadLocationException
- this is generally unexpected, and
may signal something more seriousprotected static java.awt.Point getMagicCaretPosition(BasicEditorPane editor, oracle.javatools.editor.MultiSelectionSupport.MultiSelection selection) throws javax.swing.text.BadLocationException
editor
- the editor in which the vertical navigation occurredselection
- the selection to get the magic position for, or if null then
get the magic position for the main selection (the caret)javax.swing.text.BadLocationException
- this is generally unexpected, and
may signal something more seriouspublic static void setMagicCaretPosition(BasicEditorPane editor, java.awt.Point magicPosition)
editor
- the editor in which the vertical navigation occurredmagicPosition
- the new magic caret positionprotected static void setMagicCaretPosition(BasicEditorPane editor, java.awt.Point magicPosition, oracle.javatools.editor.MultiSelectionSupport.MultiSelection selection)
editor
- magicPosition
- selection
- the selection to set magic position for, or null to set for the main caret.public static boolean isEditable(BasicEditorPane editor, boolean beepIfNotEditable)
editor
- the editor pane to check editabilitybeepIfNotEditable
- request a beep if the editor is not editablepublic static void beep(BasicEditorPane editor)
editor
- the editor panepublic static int getFontHeight(BasicEditorPane editor)
editor
- the editor panepublic static java.awt.Rectangle getVisibleRect(BasicEditorPane editor)
editor
- the editor panepublic static void showMessage(BasicEditorPane editor, java.lang.String message)
editor
- the editor to show the message formessage
- the message to displaypublic static int getIndentSizeProperty(BasicEditorPane editor)
editor
- the editor panepublic static int getTabSizeProperty(BasicEditorPane editor)
editor
- the editor panepublic static boolean getUseAutoIndentProperty(BasicEditorPane editor)
editor
- the editor panepublic static SmartIndentProvider getSmartIndentProvider(BasicEditorPane editor, BasicDocument document)
editor
- the editor panedocument
- the document being editedpublic static boolean getUseTabsProperty(BasicEditorPane editor)
editor
- the editor panepublic static java.lang.String getTab(boolean useTabs, int tabSize)
useTabs
- whether to use a tab charactertabSize
- the size of the tab stop (if using spaces)public static java.lang.String buildIndent(boolean useTabs, int tabSize, int numColumns)
useTabs
- whether to use tab characterstabSize
- the size of a tab stopnumColumns
- the width of the indent in number of columnspublic static int skipLeadingIndent(TextBuffer textBuffer, int lineStart, int lineEnd)
textBuffer
- the text buffer to uselineStart
- the start of the linelineEnd
- the end of the linepublic static java.lang.String getSpaces(int numSpaces)
numSpaces
- the number of space characterspublic static java.lang.String getTabs(int numTabs)
numTabs
- the number of tab characters