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?
Antworten
Zu viele Anzeigen?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:
IPartListener
- und die schlecht benannt
IPartListener2
.
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()
.
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;
}
}