3 Stimmen

Wie wird eine Klasse ausgeführt, wenn eine Editorseite in Eclipse den Fokus erhält?

Gibt es eine Möglichkeit, eine Klasse jedes Mal Editor-Seite erhalten Fokus, so etwas wie Prompt-Nachricht, wenn eine Klasse Quelle außerhalb von Eclipse geändert hat, ausführen? Kann ein Plug-in-Editor oder eine Erweiterung diese Arbeit erledigen?

4voto

VonC Punkte 1117238

Die FAQ " Wie kann ich herausfinden, welche Ansicht oder welcher Editor ausgewählt ist? " kann Ihnen helfen, Ihre Klasse aufzurufen, wenn der Editor aktiv ist (dann können Sie auch testen, ob er den Fokus hat), indem Sie unter Verwendung einer IPartService :

Dem Teiledienst können zwei Arten von Zuhörern hinzugefügt werden:

Sie sollten immer die zweite Variante zu verwenden, da sie Teileänderungsereignisse für Teile verarbeiten kann, die noch nicht erstellt wurden, weil sie in einem Stapel hinter einem anderen Teil verborgen sind .
Dieser Listener teilt Ihnen auch mit, wenn ein Teil sichtbar oder unsichtbar gemacht wird oder wenn die Eingabe eines Bearbeiters geändert wird:

IWorkbenchPage page = ...;
   //the active part
   IWorkbenchPart active = page.getActivePart();
   //adding a listener
   IPartListener2 pl = new IPartListener2() {
      public void partActivated(IWorkbenchPartReference ref)
         System.out.println("Active: "+ref.getTitle());
      }
      ... other listener methods ...
   };
   page.addPartListener(pl);

Nota: IWorkbenchPage implementiert IPartService direkt.
Sie können auch auf einen Aktivierungsdienst zugreifen, indem Sie mit IWorkbenchWindow.getPartService() .

0voto

Chetan Bhagat Punkte 552

Ich bin klicken Sie auf Symbolleiste oder Schaltfläche, um den Fokus zu erhalten, die Ansicht oder Editor aktuelle Arbeit auf RCP Eclipse

//class:Current_Workbech  extends AbstractHandler to execute() method

public class Current_Workbech  extends AbstractHandler{

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        IPartService service = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService();

        //MessageDialog box open to get title which view or editor focus and current working

        MessageDialog.openInformation(HandlerUtil.getActiveWorkbenchWindow(
                event).getShell(), "Current Workbench Window", service.getActivePart().getTitle()+"");

        return null;
    }
}

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