Плагин Eclipse, где в редакторе появилось всплывающее меню?

1

Я пишу плагин eclipse для определенного для домена языка. Я подклассифицировал редактор, и все работает нормально.

Я бы хотел добавить всплывающее меню, чтобы я мог выполнять свои собственные рефакторинги. Я использовал org.eclipse.ui.popupmenus для добавления popupmenu, который при щелчке правой кнопкой мыши по редактору предоставляет меню, его можно щелкнуть, а щелчок выполняет следующий метод:

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

Моя проблема заключается в том, что я не знаю, где в редакторе щелчок произошел - так что мне трудно получить нужную часть файла для выполнения рефакторинга. Курсор не перемещается туда, где произошел щелчок.

Как узнать, где в редакторе произошел щелчок popupmenu? (например, как рефакторинг 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
    Для действия щелчка правой кнопкой мыши обычно используется позиция курсора (каретки) - это то, что рефакторинг Java делает в контекстном меню редактора Java.
  • 0
    Сын ружья, так оно и есть!
Теги:
eclipse-plugin

1 ответ

1
Лучший ответ

Нормально использовать позицию курсора (каретки) для действия правой кнопки мыши - это то, что рефакторинг Java выполняет в контекстном меню редактора Java.

Виджет StyledText имеет различные методы для возврата позиции каретки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню