Eclipse插件,在编辑器中弹出菜单发生了什么?

时间:2014-05-18 12:04:31

标签: java eclipse eclipse-plugin

我正在为域特定语言编写eclipse插件。我已经创建了子编辑器并且工作正常。

我想添加一个弹出菜单,以便我可以进行自己的重构。我已经使用org.eclipse.ui.popupmenus来添加popupmenu,当你右键单击编辑器时,它会提供菜单,可以点击它,然后点击执行以下方法:

  public void run(IAction action) {
    MessageDialog.openInformation(shell, "SyntaxColoringCSharp", "refactorA was executed.");
  }

我的问题是我不知道编辑器在哪里发生了点击 - 因此我很难获得正确的文件位以执行重构。光标不会移动到发生单击的位置。

如何找到弹出菜单点击发生在编辑器中的哪个位置? (即Java重构如何获取此信息?)

这是我正在使用的基础课程:

package arteditor.popup.actions;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.editors.text.TextEditor;

import editoractions.EditorActions;

public class refactorA implements IObjectActionDelegate {

  private Shell shell;

  /**
   * Constructor for Action1.
   */
  public refactorA() {
    super();
  }

  /**
   * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart)
   */
  public void setActivePart(IAction action, IWorkbenchPart targetPart) {
    shell = targetPart.getSite().getShell();
  }

  /**
   * @see IActionDelegate#run(IAction)
   */
  public void run(IAction action) {
    MessageDialog.openInformation(shell, "SyntaxColoringCSharp", "refactorA was executed.");
  }

  /**
   * @see IActionDelegate#selectionChanged(IAction, ISelection)
   */
  public void selectionChanged(IAction action, ISelection selection) {

   }
}

1 个答案:

答案 0 :(得分:1)

使用右键单击操作的游标(插入符号)位置是正常的 - 这就是Java重构在Java编辑器上下文菜单中的作用。

StyledText小部件有多种方法可以返回插入位置。