Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse插件,在编辑器中弹出菜单发生在哪里?_Java_Eclipse_Eclipse Plugin - Fatal编程技术网

Java Eclipse插件,在编辑器中弹出菜单发生在哪里?

Java Eclipse插件,在编辑器中弹出菜单发生在哪里?,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我正在为特定领域的语言编写一个eclipse插件。我已经对编辑器进行了子类化,一切正常 我想添加一个弹出菜单,这样我就可以自己进行重构了。我使用org.eclipse.ui.popupmenus添加了popupmenu,当您右键单击编辑器时,它确实提供了菜单,可以单击它,单击执行以下方法: public void run(IAction action) { MessageDialog.openInformation(shell, "SyntaxColoringCSharp", "re

我正在为特定领域的语言编写一个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) {

   }
}

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


StyledText
小部件有各种方法返回插入符号位置。

右键单击操作使用光标(插入符号)位置是正常的-这就是Java重构在Java编辑器上下文菜单中所做的。狗娘养的,就是这样!