下面列出了怎么用javax.swing.text.TextAction的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected Action[] createActions() {
Action[] superActions = super.createActions();
return TextAction.augmentList(superActions, new Action[] {
new GspDeleteCharAction(deletePrevCharAction, false),
new GspDefaultKeyTypedAction(),
CslActions.createSelectCodeElementAction(true),
CslActions.createSelectCodeElementAction(false),
CslActions.createCamelCasePositionAction(findAction(superActions, nextWordAction), true),
CslActions.createCamelCasePositionAction(findAction(superActions, previousWordAction), false),
CslActions.createSelectCamelCasePositionAction(findAction(superActions, selectionNextWordAction), true),
CslActions.createSelectCamelCasePositionAction(findAction(superActions, selectionPreviousWordAction), false),
CslActions.createDeleteToCamelCasePositionAction(findAction(superActions, removeNextWordAction), true),
CslActions.createDeleteToCamelCasePositionAction(findAction(superActions, removePreviousWordAction), false),
CslActions.createInstantRenameAction()
});
}
/**
* Fetches the text component that currently has focus. It delegates to
* TextAction.getFocusedComponent().
* @return the component
*/
public static JTextComponent getFocusedComponent() {
/** Fake action for getting the focused component */
class FocusedComponentAction extends TextAction {
FocusedComponentAction() {
super("focused-component"); // NOI18N
}
/** adding this method because of protected final getFocusedComponent */
JTextComponent getFocusedComponent2() {
return getFocusedComponent();
}
public @Override void actionPerformed(ActionEvent evt){}
}
if (focusedComponentAction == null) {
focusedComponentAction = new FocusedComponentAction();
}
return ((FocusedComponentAction)focusedComponentAction).getFocusedComponent2();
}
protected @Override Action[] createActions() {
Action[] myActions = new Action[] {
new BraceCompletionInsertAction (),
new BraceCompletionDeleteAction (),
//new IndentAction (),
new InstantRenameAction(),
new LanguagesGenerateFoldPopupAction (),
new org.netbeans.modules.languages.features.ToggleCommentAction(),
new org.netbeans.modules.languages.features.CodeCommentAction(),
new org.netbeans.modules.languages.features.CodeUncommentAction()
};
return TextAction.augmentList (
super.createActions (),
myActions
);
}
private MainPanel() {
super(new BorderLayout());
JTextArea textArea = new JTextArea(TEXT);
textArea.getActionMap().put(DefaultEditorKit.selectWordAction, new TextAction(DefaultEditorKit.selectWordAction) {
@Override public void actionPerformed(ActionEvent e) {
JTextComponent target = getTextComponent(e);
if (target != null) {
try {
int offs = target.getCaretPosition();
int begOffs = TextUtils.getWordStart(target, offs);
int endOffs = TextUtils.getWordEnd(target, offs);
target.setCaretPosition(begOffs);
target.moveCaretPosition(endOffs);
} catch (BadLocationException ex) {
UIManager.getLookAndFeel().provideErrorFeedback(target);
}
}
}
});
JSplitPane split = new JSplitPane();
split.setResizeWeight(.5);
split.setLeftComponent(makeTitledPanel("Default", new JTextArea(TEXT)));
split.setRightComponent(makeTitledPanel("Break words: _ and -", textArea));
add(split);
setPreferredSize(new Dimension(320, 240));
}
private static ActionEvent createActionEvent (Action action) {
Object evSource = null;
int evId = ActionEvent.ACTION_PERFORMED;
// text (editor) actions
if (action instanceof TextAction) {
EditorCookie ec = Utilities.actionsGlobalContext().lookup(EditorCookie.class);
if (ec == null) {
return null;
}
JEditorPane[] editorPanes = ec.getOpenedPanes();
if (editorPanes == null || editorPanes.length <= 0) {
return null;
}
evSource = editorPanes[0];
}
if (evSource == null) {
evSource = TopComponent.getRegistry().getActivated();
}
if (evSource == null) {
evSource = WindowManager.getDefault().getMainWindow();
}
return new ActionEvent(evSource, evId, null);
}
private static String getName (Object action) {
if (action instanceof TextAction)
return (String) ((TextAction) action).getValue (Action.SHORT_DESCRIPTION);
if (action instanceof Action)
return (String) ((Action) action).getValue (Action.NAME);
return action.toString ();
}
@Override
protected Action[] getDeclaredActions() {
Action swa = new TextAction("") {
@Override
public void actionPerformed(ActionEvent evt) {
selectWordCalled = true;
}
};
swa.putValue(Action.NAME, BaseKit.selectWordAction);
Action[] actions = new Action[] {
swa
};
return TextAction.augmentList(super.createActions(), actions);
}
protected @Override Action[] createActions() {
ArrayList<Action> actions = new ArrayList<Action>();
actions.add(new ExtDefaultKeyTypedAction());
// XXX: remove
// if (!ExtCaret.NO_HIGHLIGHT_BRACE_LAYER) {
// actions.add(new MatchBraceAction(matchBraceAction, false));
// actions.add(new MatchBraceAction(selectionMatchBraceAction, true));
// }
actions.add(new CommentAction()); // to make ctrl-shift-T in Netbeans55 profile work
actions.add(new UncommentAction()); // to make ctrl-shift-D in Netbeans55 profile work
return TextAction.augmentList(super.createActions(), actions.toArray(new Action[actions.size()]));
}
@Override
protected Action[] createActions() {
Action[] superActions = super.createActions();
Language language = LanguageRegistry.getInstance().getLanguageByMimeType(mimeType);
ArrayList<Action> actions = new ArrayList<Action>(30);
actions.add(new GsfDefaultKeyTypedAction());
actions.add(new GsfInsertBreakAction());
actions.add(new GsfDeleteCharAction(deletePrevCharAction, false));
// The php needs to handle special cases of toggle comment. There has to be
// registered ToggleBlockCommentAction in PHP that handles these special cases,
// but the current way, how the actions are registered, doesn't allow to overwrite the action
// registered here.
// See issue #204616. This hack can be removed, when issue #204616 will be done.
if (!mimeType.equals("text/x-php5")) {
actions.add(new ToggleBlockCommentAction());
}
actions.add(new GenerateFoldPopupAction());
actions.add(new InstantRenameAction());
actions.add(CslActions.createGoToDeclarationAction());
actions.add(new GenericGenerateGoToPopupAction());
actions.add(new SelectCodeElementAction(SelectCodeElementAction.selectNextElementAction, true));
actions.add(new SelectCodeElementAction(SelectCodeElementAction.selectPreviousElementAction, false));
if (language == null) {
LOG.log(Level.WARNING, "Language missing for MIME type {0}", mimeType);
} else if (language.hasOccurrencesFinder()) {
actions.add(new GoToMarkOccurrencesAction(false));
actions.add(new GoToMarkOccurrencesAction(true));
}
return TextAction.augmentList(superActions,
actions.toArray(new Action[actions.size()]));
}
@Override
protected Action[] createActions() {
Action[] actions = new Action[] {
new ToggleCommentAction("#"), //NOI18N
};
return TextAction.augmentList(super.createActions(), actions);
}
/**
* Provide XML related actions.
*/
protected @Override Action[] createActions() {
Action[] actions = new Action[] {
new XMLCommentAction(),
new XMLUncommentAction(),
new ToggleBlockCommentAction(new XmlCommentHandler()),
new TestAction(),
};
return TextAction.augmentList(super.createActions(), actions);
}
@Override
protected Action[] createActions() {
Action[] HtmlActions = new Action[]{
CslActions.createSelectCodeElementAction(true),
CslActions.createSelectCodeElementAction(false),
CslActions.createInstantRenameAction(),
CslActions.createToggleBlockCommentAction(),
new ExtKit.CommentAction(""), //NOI18N
new ExtKit.UncommentAction(""), //NOI18N
CslActions.createGoToMarkOccurrencesAction(false),
CslActions.createGoToMarkOccurrencesAction(true),
CslActions.createGoToDeclarationAction()
};
return TextAction.augmentList(super.createActions(), HtmlActions);
}
protected Action[] createActions() {
Action[] javaActions = new Action[] {
new JavaDefaultKeyTypedAction(),
new PrefixMakerAction(makeGetterAction, "get", getSetIsPrefixes), // NOI18N
new PrefixMakerAction(makeSetterAction, "set", getSetIsPrefixes), // NOI18N
new PrefixMakerAction(makeIsAction, "is", getSetIsPrefixes), // NOI18N
new AbbrevDebugLineAction(),
};
return TextAction.augmentList(super.createActions(), javaActions);
}
protected @Override Action[] createActions() {
Action[] nbEditorActions = new Action[] {
nbUndoActionDef,
nbRedoActionDef,
new GenerateFoldPopupAction(),
new NavigationHistoryBackAction(),
new NavigationHistoryForwardAction(),
// new ToggleToolbarAction(),
// new NbToggleLineNumbersAction(),
new NbGenerateGoToPopupAction(),
};
return TextAction.augmentList(super.createActions(), nbEditorActions);
}
public TextAction getAction(String key) {
if(key.equals("FIND") ) {
return findDialogAction;
} else if(key.equals("REPLACE")) {
return findDialogAction;
} else if(key.equals("FIND_NEXT")) {
return findNextAction;
} else {
throw new IllegalArgumentException("Bad Action: " + key);
}
}
/**
* Add keyboard actions to this control using the Configuration we have
* @param map
* @param prefix
*/
public void addSyntaxActions(Keymap map, String prefix) {
// look at all keys that either start with prefix.Action, or
// that start with Action.
Pattern splitter = CONFIG.getValueSeparator(prefix);
Configuration actionsConf = CONFIG.subConfig(prefix, "Action.");
for (String actionName : actionsConf.stringPropertyNames()) {
String[] values = splitter.split(
actionsConf.getProperty(actionName));
String actionClass = values[0];
SyntaxAction action = editorActions.get(actionClass);
if (action == null) {
action = createAction(actionClass);
action.config(CONFIG, prefix, actionName);
}
String keyStrokeString = values[1];
KeyStroke ks = KeyStroke.getKeyStroke(keyStrokeString);
// KeyEvent.VK_QUOTEDBL
if (ks == null) {
throw new IllegalArgumentException("Invalid KeyStroke: " +
keyStrokeString);
}
TextAction ta = action.getAction(actionName);
if(ta == null) {
throw new IllegalArgumentException("Invalid ActionName: " +
actionName);
}
map.addActionForKeyStroke(ks, ta);
}
}
@Override
protected Action[] createActions() {
return TextAction.augmentList(super.createActions(), new Action[] {
new ToggleBlockCommentAction(),
CslActions.createInstantRenameAction()});
}
@Override
protected Action[] createActions() {
return TextAction.augmentList(super.createActions(), new Action[] {
new ToggleBlockCommentAction(),
CslActions.createInstantRenameAction()});
}
protected Action[] createActions() {
Action[] HTMLActions = new Action[] {
new HTMLShiftBreakAction()
};
return TextAction.augmentList(super.createActions(), HTMLActions);
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getAction(String key) {
return this;
}
public TextAction getFindDialogAction() {
return findDialogAction;
}
public TextAction getFindNextAction() {
return findNextAction;
}