4 Stimmen

Wie trägt man einen Befehl zu einem Editor-Kontextmenü in Eclipse bei?

Ich möchte einen Befehl in das Kontextmenü eines beliebigen Texteditors einfügen, wenn Text markiert ist. In "alten Zeiten" hätte ich dies mit objectContribution und einer verschachtelten Aktion mit "enablesFor='+'" getan.

Wie kann man dies mit Befehlen statt mit Aktionen erreichen?

2voto

VonC Punkte 1117238

Wenn ich meine Antwort noch einmal überdenke " Eclipse RCP: Aktionen und Befehle ", benötigen Sie einen Command-Handler.

Dieses Thema scheint Ihre Möglichkeiten zusammenzufassen:

  • Ein gängiges Muster besteht darin, den Handler in der Ansicht selbst zu instanziieren und den Handler einfach auf die Ansichtsauswahl schauen zu lassen und seinen eigenen aktivierten Zustand zu steuern.
    Die Handler-API ermöglicht es, ein Ereignis bei aktivierter Änderung auszulösen, siehe org.eclipse.core.commands.AbstractHandler .

  • Die andere Möglichkeit besteht darin, einen Eigenschaftstester zu erstellen, der Ihre Ansichtsauswahl abrufen kann.

IWorkbenchPart p = page.findViewReference("your.id").getPart(false);
if (p!=null) {
  p.getSite().getSelectionProvider().getSelection() ... whatever
}

Ihre Ansicht würde ihre eigenen Auswahländerungsereignisse überwachen und die org.eclipse.ui.services.IEvaluationService.requestEvaluation(String) (Quelle aquí ) für diese Eigenschaft (was dazu führen würde, dass alle Kernausdrücke, die diesen Eigenschaftstester verwenden, neu ausgewertet werden).
Wichtig ist, dass ein einfacher Wechsel der Ansichten keine Neubewertung (und keine Änderung des aktivierten Status) zur Folge hätte.

Sie können den Eigenschaftstester so einrichten, dass er für jede Ansicht, für die Sie ihn benötigen, spezifisch ist, oder einen erstellen com.example.views.localSelection und verwenden args zur Angabe der Ansicht id .

2voto

marc esher Punkte 4691

Ich habe mehr über die Variablen gelesen, die in Befehlsausdrücken verfügbar sind, und bin zu folgenden Ergebnissen gekommen schließen Ich habe versucht, es selbst herauszufinden, bin aber gescheitert. Ich stellte dann eine ähnliche Frage in der Eclipse-Newsgroup und wurde in die richtige Richtung geführt. Hier ist ein Beispiel dafür, wie man das, was ich suchte, am besten macht:

 <command
      commandId="org.marcesher.blogcodeformatter.commands.wikiFormatterCommand"
      tooltip="Format And Copy to Clipboard"
      id="org.marcesher.blogcodeformatter.popup.wikiFormatterCommand">
    <visibleWhen>
       <with variable="selection">
          <instanceof value="org.eclipse.jface.text.ITextSelection"/>
       </with>
    </visibleWhen>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X