Existe-t-il un moyen d'exécuter une mise au point sur une page d'éditeur de classe à chaque fois, quelque chose comme un message d'invite lorsqu'une source de classe a été modifiée en dehors d'Eclipse? Un éditeur ou une extension de plug-in peut-il faire ce travail?Comment exécuter une classe à chaque fois qu'une page d'éditeur reçoit le focus sur Eclipse?
Répondre
La FAQ « How do I find out what view or editor is selected? » peut vous aider à appeler votre classe lorsque l'éditeur est actif (qui est quand vous pouvez tester si elle a le focus aussi bien), par using a IPartService
:
Deux types d'auditeurs peuvent être ajouté au service de la pièce:
IPartListener
- et poorly named
IPartListener2
.
Vous devriez toujours utiliser ce second comme il peut gérer les événements de changement partiel sur les pièces qui n'ont pas encore été créés parce qu'ils sont cachés dans une pile derrière une autre partie.
Cet écouteur aussi vous dire quand une partie est rendue visible ou cachée ou lorsque l'entrée d'un éditeur est modifié:
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);
Note: IWorkbenchPage
outils IPartService
directement.
Vous pouvez également accéder à un service d'activation par using IWorkbenchWindow.getPartService()
.
Je suis cliquez sur Barre d'outils ou bouton pour obtenir mise au point qui vue ou de l'éditeur en cours de travail sur Eclipse RCP
//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;
}
}
@luiz cette réponse est ... USEFULL ont une belle journée –