Отключить представление в eclipse rcp и показать / скрыть его программно - PullRequest
0 голосов
/ 08 октября 2018

Мне нужен вид, добавленный в приложение eclipse rcp, которое отключено и изначально скрыто.После действия пользователя я хочу показать / открыть его, если он не виден.

Мне удалось добавить представление к моему мнению в plugin.xml.Но я не могу спрятать или отключить его через plugin.xml или код.

Я использую eclipse / rcp 3.

Есть идеи?

plugin.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 Ответ

0 голосов
/ 18 октября 2018

Я реализовал нечто подобное ранее, посмотрим, полезно ли это.https://exploreeclipse.blogspot.com/2014/08/opening-eclipse-editor-or-view-in.html

Для этого вам необходим плагин e4 workbench, который предоставляет org.eclipse.e4.ui.workbench.modeling API-сервисы.

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
...