【问题标题】:How to add perspective listeners如何添加透视监听器
【发布时间】:2012-02-28 00:26:58
【问题描述】:

在我们的应用程序中,我们有 4 个视图(视图 1、2、3 和 4)和 3 个透视图(透视图 1、2 和 3)。

透视图是通过实现IPerspectivefactory 构建的,视图是通过扩展viewPart 构建的。

我们正面临这样一种情况,即我们希望在选择任何视角的情况下将焦点设置到特定视图。

例如,将视图 1 视为将显示在所有 3 个透视图下的通用视图。每当我们选择任何视角时,我们都希望将焦点设置到 View1。

如何在透视图中添加监听器?

我们知道我们必须添加IPerspectiveListerner 来监听透视变化,但我们不确定在哪里添加它,以便我们在IPerspectiveListener 下实现的方法中获得执行控制。

【问题讨论】:

    标签: java eclipse-rcp


    【解决方案1】:

    您可以使用以下代码:

    PlatformUI.getWorkbench().getActiveWorkbenchWindow().addPerspectiveListener(new IPerspectiveListener() {
      @Override
      public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
        try {
          page.showView("...", null, IWorkbenchPage.VIEW_VISIBLE);
        } catch (PartInitException ex) {
          ex.printStackTrace();
        }
      }
    
      @Override
      public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
      }
    });
    

    编辑:由于这与 view1 相关联,您可以将此代码放在 view1 插件的激活器中。当然,在从 view1 插件加载一些代码之前它不会显示。比如:

    Job job = new UIJob("Add Perspective listener") {
        public IStatus runInUIThread(IProgressMonitor monitor) {
            addPerspectiveListener();
            return Status.OK_STATUS;
        }
    };
    job.setSystem(true);
    job.schedule();
    

    【讨论】:

    • 我们尝试使用上述逻辑,但我们无法在实现的方法中获得执行控制。看起来listerner没有注册。我们需要如何添加此侦听器的任何信息?
    • 以上代码已从我们的代码库中提取出来...perspectiveChanged(...) 方法应在视角发生变化时被调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多