Я разрабатываю режим совместимости Eclipse RCP на основе Neon.
В плагине я добавляю новую перспективу через fragment.e4xmi
следующим образом.
<?xml version="1.0" encoding="ASCII"?>
<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmi:id="_BxaXACerEeWxCPrV0pAZQQ">
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_j2XU0CE8EeicB9o_IvsRpg" featurename="snippets" parentElementId="org.eclipse.e4.legacy.ide.application">
<elements xsi:type="advanced:Perspective" xmi:id="_-awZgCE8EeicB9o_IvsRpg" elementId="net.my.editor.ui.perspective.editing" selectedElement="_HyeW0CE9EeicB9o_IvsRpg" label="Editing Perspective">
<children xsi:type="basic:PartSashContainer" xmi:id="_HyeW0CE9EeicB9o_IvsRpg" elementId="net.my.editor.ui.partsashcontainer.0" selectedElement="_KOMLUCE9EeicB9o_IvsRpg" horizontal="true">
<children xsi:type="basic:PartStack" xmi:id="_iprjYCH5EeilmepNhpTrFQ" elementId="net.my.editor.ui.partstack.navigation" containerData="20">
<children xsi:type="advanced:Placeholder" xmi:id="_RcRHECH3EeilmepNhpTrFQ" elementId="net.my.plugin.views.navigation" ref="_F0GUoCH4EeilmepNhpTrFQ" closeable="true"/>
</children>
<children xsi:type="basic:PartStack" xmi:id="_KOMLUCE9EeicB9o_IvsRpg" elementId="net.my.editor.ui.partstack.editing" containerData="80" selectedElement="_0KJQ0CH2EeilmepNhpTrFQ">
<children xsi:type="basic:Part" xmi:id="_0KJQ0CH2EeilmepNhpTrFQ" elementId="net.my.editor.ui.part.splitter" contributionURI="bundleclass://net.my.editor.ui/net.my.editor.ui.parts.SplitterView" label="splitter" iconURI="platform:/plugin/net.my.editor.ui/icons/Sample.png" closeable="true"/>
<children xsi:type="basic:Part" xmi:id="_LXR6UCE9EeicB9o_IvsRpg" elementId="net.my.editor.ui.parts.MyEditor.static" contributionURI="bundleclass://net.my.editor.ui/net.my.editor.ui.parts.MyEditor" label="Editor" iconURI="platform:/plugin/net.my.editor.ui/icons/Sample.png">
</children>
</children>
</children>
</elements>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_HSMw4FS4Eeacy4vmBL0tEQ" featurename="sharedElements" parentElementId="IDEWindow">
<elements xsi:type="basic:Part" xmi:id="_F0GUoCH4EeilmepNhpTrFQ" elementId="net.my.plugin.views.navigation" contributionURI="bundleclass://org.eclipse.ui.workbench/org.eclipse.ui.internal.e4.compatibility.CompatibilityView"/>
</fragments>
</fragment:ModelFragments>
Перспектива работает нормально, и я могу открыть ее с помощью панели инструментов "Перспектива".
Я хочу предоставить пункт меню в главном меню, который программно открывает перспективу. Именно здесь я сталкиваюсь с проблемами.
Я добавил пункт меню, команду и обработчик для программного открытия перспективы. В нем EModelService
не может найти перспективу, если она не была открыта заранее.
То есть, modelService.find(perspectiveId, application)
возвращает null
, если перспектива не была ранее открыта через панель инструментов перспективы (в этот момент ее значок также появляется на панели инструментов для себя).
Отсюда мой вопрос: Есть ли способ «предварительно загрузить» перспективу, чтобы она была доступна в модели во время обработки входа в меню, даже если перспектива не была открыта раньше?< /сильный>
EPartService.switchPerspective
? - person greg-449   schedule 07.03.2018!ENTRY org.eclipse.e4.ui.workbench 4 0 2018-03-07 13:40:23.420 !MESSAGE Perspective with ID ... not found in the current window.
. Хотите знать, является ли причиной этого определение перспективы вsnippets
, и должен ли я прикрепить ее где-то еще (на основе окна приложения)? Приложениеorg.eclipse.e4.legacy.ide.application
. - person s.d   schedule 07.03.2018EPartService.switchPerspective(String ID)
не работает. Я тоже столкнулся с проблемой. - person Denis Kalinin   schedule 08.05.2018