【问题标题】:How to get active perspective name in Eclipse plugin development如何在 Eclipse 插件开发中获取活动透视名称
【发布时间】:2012-04-07 22:45:28
【问题描述】:

我对 Eclipse 插件开发非常陌生。我想使用 Java 获取(访问)活动透视名称。我该怎么做?

【问题讨论】:

    标签: eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:
    IWorkbench wb = PlatformUI.getWorkbench();
    
    IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
    
    IWorkbenchPage page = win.getActivePage();
    
    IPerspectiveDescriptor perspective = page.getPerspective();
    
    String label = perspective.getLabel();
    

    您还可以使用 IPerspectiveDescriptor 上的方法访问透视图的描述和 ID。

    【讨论】:

    • 看起来不错,但我认为是 getActivePage() 而不是 getActiveWorkbenchPage()。
    • 你是对的,我是在wiki上检查的,而不是在javadocs上检查的,这里提到了不正确的方法wiki.eclipse.org/FAQ_How_do_I_find_the_active_workbench_page%3F我已经更新了我的答案
    • 当心——如果从错误的上下文中调用,其中一些方法似乎可以返回 null
    • 有没有 e4 方法可以做到这一点?
    【解决方案2】:

    看看"Using Perspectives in the Eclipse UI"。

    如果您有权访问IWorkbenchWindow 类型的对象:

    window.getActivePage().getPerspective().getLabel()
    

    【讨论】:

    • 有没有 e4 方法可以做到这一点?
    【解决方案3】:

    新的 E4 方式依赖于EModelService

    简单来说:

    import javax.inject.Inject;
    import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
    import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
    import org.eclipse.e4.ui.workbench.modeling.EModelService;
    
    @Inject EModelService modelService;    
    @Inject MWindow window;
    
    MPerspective p =  modelService.getActivePerspective(window);
    System.out.println("ACTIVE PERSPECTIVE: " + p.getLabel());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      相关资源
      最近更新 更多