当前位置: 首页 > 知识库问答 >
问题:

在eclipse rcp中分离视图并以编程方式显示/隐藏它

杜俊晤
2023-03-14

我需要一个视图添加到eclipse rcp应用程序中,该应用程序被分离并最初隐藏。在用户操作之后,如果它不可见,我想显示/打开它。

我设法将视图添加到我的perpective插件中。xml。但我无法通过插件隐藏或分离它。xml或代码。

我正在使用eclipse/rcp 3。

有什么想法吗?

插件。xml

   <extension point="org.eclipse.ui.perspectiveExtensions">
      <perspectiveExtension
            targetID="a.company.infop.rcp.fahrplan.ui.perspectives.fahrplanPerspective">
         <view 
               closeable="true"
               id="a.company.infop.rcp.fahrplan.ui.views.verkehrsAnalyseView"
               minimized="false"
               ratio="0.5f"
               relationship="top"
               relative="org.eclipse.ui.editorss">
         </view>
      </perspectiveExtension>
   </extension>

   <extension point="org.eclipse.ui.views">
      <category
            id="a.company.infop.rcp.fahrplan.ui.fahrplanCategory"
            name="%fahrplan">
      </category>
      <view 
            category="a.company.infop.rcp.fahrplan.ui.fahrplanCategory"
            class="a.company.infop.rcp.fahrplan.internal.ui.views.VerkehrsanalyseView"
            icon="icons/suchergbnisse.png"
            id="a.company.infop.rcp.fahrplan.ui.views.verkehrsAnalyseView"
            name="%verkehrsanalyse"
            restorable="true">
      </view>
   </extension>

代码:

public class FahrplanPerspective implements IPerspectiveFactory {

    @Override
    public void createInitialLayout(IPageLayout layout) {
        IWorkbenchPage iWorkbenchPage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
        IViewPart verkehrsAnalyseView = iWorkbenchPage.findView("a.company.infop.rcp.fahrplan.ui.views.verkehrsAnalyseView");
        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().hideView(verkehrsAnalyseView);
    }

}

共有1个答案

何建中
2023-03-14

我之前实现了这种类型的东西,看看这是否有用。https://exploreeclipse.blogspot.com/2014/08/opening-eclipse-editor-or-view-in.html

为此,您需要有e4工作台插件,它提供org.eclipse.e4.ui.workbench.modelingAPI服务。

IWorkbench workbench = ActivatorPlugin.getDefault().getWorkbench();

//get editorpart somehow which you wanted to open it.
EditorPart openEditor = /*IDE.openEditor(workbench.getActiveWorkbenchWindow().getActivePage(), module, MyEditorID, false); */

//get editor site
IWorkbenchPartSite site = openEditor.getSite();

//get model service for editor site
EModelService modelService = (EModelService) site.getService(EModelService.class);
MPartSashContainerElement  mpartService = (MPart) site.getService(MPart.class);

//invoke detach on model service with coordinates.
modelService.detach(mpartService, 100, 100, 700, 700);


For view:

//Get view part
IViewPart view = workbench.getActiveWorkbenchWindow().getActivePage().findView(MyPerspective.ExplorerView_ID);

//get site for view

//invoke detach
 类似资料:
  • 问题内容: 在我的应用程序中,我彼此之间有2 的权利。通过菜单选项,我希望能够使最下面的一个消失,并使最上面的一个消失。 问题是,我不知道如何在Java中执行此操作。 它不必设置动画,我想在时隐藏另一个活动(菜单)的返回内容。菜单上设置了一个我要签入的菜单,并根据其值确定是否需要隐藏或显示底部: 谁能给我一个提示或链接,告诉我该怎么做? 问题答案: 如果要从布局中删除它,可以致电。 或者,如果您只

  • 问题内容: 首先,我已经看到了该线程。我尝试了那里给出的可接受的方法。 我的应用程序中有两个屏幕。 第一个有2个EditText,一个是用户名,另一个是密码 第二个有一个ListView和一个EditText-过滤listView 在我的第一个屏幕中,我希望用户名EditText专注于启动,并且Keyboard应该可见。这是我的实现(通过删除不必要的/不相关的代码进行简化)。 app_login.

  • 问题内容: 在Android中,每个子类都有一个方法,可让您修改对象的可见性 设置可见性有3个选项: 可见:在布局内渲染可见 看不见:隐藏,但留下的间隙等于可见时将占据的间隙 消失:隐藏,并将其完全从布局中删除。这是因为如果它和人 Flutter中的小部件是否具有与上述等同的功能? 快速参考:https : //developer.android.com/reference/android/vie

  • 在Android中,每个子类都有一个方法,它允许您修改对象的可见性 设置可见性有3个选项: 可见:在布局中呈现可见 invisible:隐藏,但会留下一个间隙,该间隙相当于在可见时所占的位置 gone:隐藏并将其完全从布局中删除。就好像它的和是 Flutter中的Widgets是否有与上面等价的东西? 有关快速参考:https://developer.android.com/reference/a

  • 在Android中,每个子类都有一个方法,允许您修改对象的可见性 设置可见性有3个选项: 可见:呈现布局内部可见的 Flutter中的小部件是否有与上述相同的功能? 快速参考:https://developer.android.com/reference/android/view/View.html#attr_android:visibility

  • 我可以使用EPartService打开视图或零件(请参见此处)。 这将把最后一个零件堆栈中的零件作为新选项卡显示。 我如何在分离模式下打开该部分?