在自定义 Eclipse 透视图中显示视图

Posted

技术标签:

【中文标题】在自定义 Eclipse 透视图中显示视图【英文标题】:Display views in custom eclipse perspective 【发布时间】:2019-01-31 13:47:50 【问题描述】:

我有一个观点,我希望能够在这个观点上展示一堆观点。如果我去 Window -> Show View -> Other 然后选择我的视图它工作正常。但是,我想在打开透视图时默认显示一个视图,并将其放置在项目浏览器通常所在的位置。

但我所做的一切似乎都没有改变,我找不到任何理由。 我一直在使用此代码尝试更改此视图的位置,但默认情况下它甚至不会打开该视图。有人可以为我指出如何在默认情况下打开视图并将其放置在项目浏览器通常所在的位置的正确方向吗?

public class PerspectiveFactory1 implements IPerspectiveFactory 
    public void createInitialLayout(IPageLayout layout) 
        layout.addView("VIEW_ID_HERE", IPageLayout.LEFT,
            IPageLayout.RATIO_MAX, IPageLayout.ID_PROJECT_EXPLORER);
   

提前致谢

这是我的 plugin.xml

<plugin>
   <extension
         point="org.eclipse.ui.perspectives">
      <perspective
            class="packageName.PerspectiveFactory1"
            fixed="true"
            id="PerspectiveID"
            name="Software Application">
      </perspective>
   </extension>
   <extension
         point="org.eclipse.ui.perspectiveExtensions">
      <perspectiveExtension
            targetID="PerspectiveID">
         <view
               class="packageName.ShowApplications"
               icon="icons/sample.gif"
               id="packageName.ShowApplications"
                   minimized="false"
                   moveable="false"
                   name="listApps"
                   ratio="0.5"
                   relationship="left"
                   visible="true">
             </view>

【问题讨论】:

【参考方案1】:

由于您在该透视图中没有项目资源管理器,因此您无法在 addView 的引用 id 参数中使用其 id。而是使用始终允许的编辑器区域 ID:

layout.addView("view id", IPageLayout.LEFT,
    0.3f, layout.getEditorArea());

如果之前已打开透视图,您可能还必须重置透视图以获取新布局(窗口 > 透视图 > 重置透视图)。

必须使用org.eclipse.ui.views 扩展点定义视图。

您也可以使用org.eclipse.ui.perspectiveExtensions 来定义视图在透视图中的位置,而不是使用透视工厂——但这仍然需要使用org.eclipse.ui.views 定义视图。

【讨论】:

如果我使用像 IPageLayout.ID_PROJECT_EXPLORER 这样的 Eclipse 默认视图作为 id,你的代码会很好。但是,当我输入我的字符串 ID 时,它不会显示任何内容。目前,我认为的 ID 与班级相同,例如包名.views.className。我需要以不同的方式引用它吗? 不,它始终只是视图 ID。 edit 您的问题,并在您的 plugin.xml 中向我们展示您的视图的 org.eclipse.ui.views 定义 这应该是你所追求的。 这是一个透视扩展,它没有定义一个视图,它只是说明了将现有视图放置在透视图中的什么位置。 classicon 实际上在那里无效。您必须使用org.eclipse.ui.views 来实际定义视图。 所以我不需要perspectiveExtension?

以上是关于在自定义 Eclipse 透视图中显示视图的主要内容,如果未能解决你的问题,请参考以下文章