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

标签 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) {

   }
}

最佳答案

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

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

关于java - Eclipse 插件,编辑器中的弹出菜单发生在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23721680/

相关文章:

java - JQGrid 标题不会动态更改

java - 致命异常 : main Android

eclipse - 应用于 Scala 类的 @Test 注释的目的是什么?

linux - Linux Mint 上的 Eclipse 3.8 缺少新软件和插件

java - ANTLR:以编程方式运行解析器时忽略语法错误

java - 你如何在没有事务的情况下使用 Spring Data JPA?

java - 并发读者-作者的行为方式出乎意料

java - 了解 AsyncTask 与 Web 服务器访问

android - 我们如何为 ListView 中的文本提供字体样式

java - 如何向eclipse indigo添加J2C(Java 2 CICS)插件?