如何在编辑器页面关注Eclipse的同时运行类?

时间:2010-11-28 00:48:59

标签: eclipse eclipse-plugin

有没有办法在每次编辑器页面获得焦点时运行一个类,比如类源在eclipse之外发生变化时的提示消息?插件编辑器或扩展程序可以执行此操作吗?

2 个答案:

答案 0 :(得分:4)

常见问题解答“How do I find out what view or editor is selected?”可以帮助您在编辑器处于活动状态时调用您的课程(这时您可以测试它是否具有焦点),using a IPartService

  

可以将两种类型的侦听器添加到零件服务中:

  

您应始终使用第二个,因为它可以处理尚未创建的零件上的零件更改事件,因为它们隐藏在另一个零件后面的堆栈中。   此侦听器还会告诉您何时使某个部件可见或隐藏,或者当编辑器的输入发生更改时:

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;
    }
}