有没有办法在每次编辑器页面获得焦点时运行一个类,比如类源在eclipse之外发生变化时的提示消息?插件编辑器或扩展程序可以执行此操作吗?
答案 0 :(得分:4)
常见问题解答“How do I find out what view or editor is selected?”可以帮助您在编辑器处于活动状态时调用您的课程(这时您可以测试它是否具有焦点),using a IPartService
:
可以将两种类型的侦听器添加到零件服务中:
IPartListener
IPartListener2
。 您应始终使用第二个,因为它可以处理尚未创建的零件上的零件更改事件,因为它们隐藏在另一个零件后面的堆栈中。 此侦听器还会告诉您何时使某个部件可见或隐藏,或者当编辑器的输入发生更改时:
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);
注意:IWorkbenchPage
直接实施IPartService
您还可以using IWorkbenchWindow.getPartService()
访问激活服务。
答案 1 :(得分:0)
我点击工具栏或按钮以获得关注哪个视图或编辑器当前正在使用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;
}
}