XML Eclipse插件。如何使用'标签'键作为捷径

时间:2015-07-07 05:20:46

标签: xml eclipse plugins

我目前正在开发Eclipse XML编辑器插件。我目前正在努力实现捷径功能。我希望能够使用tab键,以便在下面的代码片段中的引号之间跳转。我的意思是,输入查询名称,按'标签'然后跳转类型引号。

<query name="" type="" />

我很困惑我应该使用plugin.xml中的哪个扩展名,以及如何一般地实现它。提前谢谢了。

1 个答案:

答案 0 :(得分:0)

假设您的编辑器派生自TextEditor,那么Tab已经有一个定义了动作的处理程序。您应该可以通过覆盖createActions方法来覆盖它:

protected void createActions()
{
  super.createActions();

  IAction action = ..... your IAction to do the tabbing

  // Replace tab handler
  setAction(ITextEditorActionConstants.SHIFT_RIGHT_TAB, action);
}

您的IAction应该延长TextEditorAction。这使您可以访问编辑器。 run方法可能是:

public void run()
{
  ITextEditor ed = getTextEditor();
  if (!(ed instanceof AbstractTextEditor))
    return;

  if (!validateEditorInputState())
    return;

  AbstractTextEditor editor = (AbstractTextEditor)ed;
  ISourceViewer sv = editor.getSourceViewer();
  if (sv == null)
    return;

  IDocument document = sv.getDocument();
  if (document == null)
    return;

  StyledText st = sv.getTextWidget();
  if (st == null || st.isDisposed())
    return;

  int caret = st.getCaretOffset();

  // Offset in document of the caret

  int offset = AbstractTextEditor.widgetOffset2ModelOffset(sv, caret);

  int newOffset  = ... your code to change the position

  // Set caret from new document offset

  int widgetCaret = AbstractTextEditor.modelOffset2WidgetOffset(sv, newOffset);

  st.setSelectionRange(widgetCaret, 0);

(部分来自InsertLineAction)。