标签: e4

Eclipse RCP - 在编辑器区域打开视图(3.8/e4混合)

我正在研究3.8-e4混合(即我们有Luna依赖,但我们还没有使用Application.e4xmi).所以我们基本上运行了紧凑的图层.

话虽如此,找到一种e4编程方式将这些讨厌的视图堆叠到编辑器文件夹上会很不错.


1.)问题

我想在编辑器区域中放置一个通用视图文件夹,以便在那里打开在运行时打开的每个视图.

查看编辑器文件夹

(图片从这个问题中被盗)


2.1)可能的修复1:使用plugin.xml

创建透视扩展,并将每个可能的视图添加到该扩展,并将关系堆栈放在相对的org.eclipse.ui.editorss上.如果你有太多的视图要打开,并且项目可以快速扩展,那么这有点不方便.我还注意到通配符视图ID在这里不起作用.

带有透视扩展的plugin.xml的SS

如果您发现自己有时间将每个可能的视图添加到透视图扩展中,那就可以了.虽然,如果您打开一个未在此处添加的视图(即:在另一个文件夹中打开),则每个后续打开的视图将在上一个文件夹中打开,而不是在编辑器区域中打开(如果不是,请查询更多说明)得到它).


2.2)可能的修复2:在透视工厂中使用代码

IPerspectiveFactory,我们有权访问IPageLayout,恰好是org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout(e4的东西).

现在,这种ModeledPageLayout实现是合理的,但也没有文档和奇怪的公共API.这个可以将视图叠加在任何其他亲属上

modeledPageLayout.stackView("newView0", IPageLayout.ID_EDITOR_AREA);
Run Code Online (Sandbox Code Playgroud)

这将是2.1的程序化版本.此外,这里出现同样的问题.如果在其他地方打开视图,则上面的代码变得无用.

有趣的是,stackViewAPI不支持通配符(而其他的如此addView).


2.3)可能的解决方案3:解决方法yaaay!

我有很多观点,每个都有很多不同的文件夹.一切都准确无误.

由于Eclipse提供的API可以从系统周围的任何地方获取所有视图ID,因此我希望按照透视图执行以下操作:未添加到特定文件夹的每个视图ID都将附加到编辑器区域(即编辑器文件夹) ,编辑堆栈).

这将是我的最后手段,除非有人提供更方便和省时的解决方案.

请记住,e4程序化替代方案更灵活!


3.)相关问题

这些将在e4版本中弃用.


4.)Eclipse Bugzilla上的相关错误:

我最近打开的这个错误附带了一个小型SSCCE.此评论中描述了重现此步骤的步骤,因此我不打算将它们复制粘贴到此处.

java eclipse-plugin eclipse-rcp e4 eclipse-luna

105
推荐指数
1
解决办法
4319
查看次数

我无法在Eclipse中更改package explorer的字体大小

我尝试从菜单窗口首选项常规外观中更改Eclipse中的包浏览器的字体大小,但我无法更改字体大小.我怎样才能做到这一点?我在Windows 7上使用Eclipse v4.2(Juno).

css eclipse e4

28
推荐指数
6
解决办法
3万
查看次数

Eclipse 4 RCP(又名E4)文档

除了Vogella的教程和他的书之外,至少还有其他任何内容吗?完全基于这些内容?他的回购中的例子往往是不完整/未完成/不会运行,这些例子实际上甚至与本书不匹配..
我想找到至少一些javadoc这个,因为任何一步到一边我'我完全迷失了如何完成不同的任务和可用的功能.

eclipse rcp eclipse-rcp e4

18
推荐指数
2
解决办法
4222
查看次数

如何创建自己的shell来替换e4 RCP中MTrimmedWindow中创建的shell?

有没有办法用一个用户定义的窗口替换由Eclipse RCP为MTrimmedWindow生成的shell?

Eclipse创建一个具有特定样式类型的shell,只能在创建时提供.我想从为MTrimmedWindow创建的shell元素中删除最大化并调整大小.如果有人对上述问题有解决方案,请回复.

eclipse-plugin eclipse-rcp e4

7
推荐指数
1
解决办法
1342
查看次数

将e3x属性视图与EMF模型中的e4 Selection服务一起使用

我构建了一个小的e4 RCP应用程序,其中包含由emf生成的模型代码(使用ComposedAdapterFactory)和"e3属性视图"填充的"e4 xmi"树视图.

尝试使用"dirksmetric教程"在application.e4xmi(共享元素)中显示具有空属性视图的属性视图.

为了获得在我的属性表(IItemPropertySource)中显示的树的选定元素,我做了以下事情:

  • 在我的e4 treeviewer端,我使用#createComposite中的e4选择服务:

    //将查看器注册为选择提供程序(由属性视图使用...)viewer.addSelectionChangedListener(new ISelectionChangedListener(){@ Override public void selectionChanged(SelectionChangedEvent event){IStructuredSelection selection =(IStructuredSelection)event.getSelection( ); //将选择设置为服务selectionService.setSelection(selection.size()== 1?selection.getFirstElement():selection.toArray());}});

  • 在e3"经典"属性表方面,我定义了几个方面:

    1. 我在ApplicationWorkbenchAdvisor#initialize中调用了IDE.registerAdapters.
    2. 我在plugin.xml中声明了我的属性源适配器:

    extension point ="org.eclipse.core.runtime.adapters"> factory adaptableType ="org.eclipse.emf.ecore.EObject"class ="myappmodeler.properties.ModelPropertiesAdapter"> adapter type ="org.eclipse.ui.views .properties.IPropertySource">

    1. 我的ModelPropertiesAdapter#getAdapter返回一个属性来源:

    public Object getAdapter(Object adaptableObject,Class adapterType){if(adapterType == IPropertySource.class && adaptableObject instanceof EObject){emfGlobalFactory = new ComposedAdapterFactory(); emfGlobalFactory.addAdapterFactory(new RepositorystructureItemProviderAdapterFactory()); emfGlobalFactory.addAdapterFactory(new ApplicationItemProviderAdapterFactory()); emfGlobalFactory.addAdapterFactory(new ServiceItemProviderAdapterFactory()); 返回新的AdapterFactoryContentProvider(emfGlobalFactory).getPropertySource(adaptableObject); } return null; }

我的问题是这个适配器甚至没有执行.

目前使用Eclipse neon(最近更新以同步E3和E4选择服务) https://bugs.eclipse.org/bugs/show_bug.cgi?id=403930

eclipse-rcp eclipse-emf e4

7
推荐指数
1
解决办法
315
查看次数

如何在基于功能的eclipse rcp应用程序中自动启动org.eclipse.gemini.blueprint.extender?

我有一个使用双子座蓝图的eclipse rcp应用程序.它有两个功能,因此是一个基于功能的产品.我们的一些捆绑包依赖于蓝图扩展器创建的服务.但实际上蓝图扩展器仅在启动时解决而未激活.今天我们通过在bundle激活器中执行代码来解决这个问题,它会检查org.eclipse.gemini.blueprint.extenderbundle是否已经启动,如果没有启动它.

将包添加到.product中,起始级别为3且autoStart=true无效.我认为这是因为我们的产品是基于功能的.它是否正确?自动启动扩展器的最佳方法是什么?

osgi eclipse-rcp eclipse-gemini e4

6
推荐指数
1
解决办法
541
查看次数

如何在激活器中获取IEclipseContext

我遇到了Eclipse 4 RCP应用程序的一个问题.我需要记录一些事件.我需要以某种方式获取对记录器的引用.我知道,如何使用IEclipseContext,但我没有找到,如何获得IEclipseContext没有依赖注入,我不能在激活器中使用.你有谁知道,请问如何解决这个问题?

非常感谢

java eclipse-rcp e4

6
推荐指数
2
解决办法
5779
查看次数

在e4应用程序模型中更新Handler交换机上的UI贡献

我已经为我的e4应用程序定义了一个全局命令,即add命令.所以,正如你所看到的那样 我的示例应用程序模型该命令将在整个应用程序(1)中使用,并在上下文切换到resp时激活repsective处理程序.(2)和(3)中的部分.

现在我缺少的是,可以更新所有UI贡献,如(4)分配给命令(1)的信息,如(2)添加联系人,以及切换到(3)添加帐户时的信息.

考虑命令的实际上下文(哪个处理程序处于活动状态等),更新命令的所有UI贡献的一般建议方法是什么.在Eclipse 3.x中,我们有类似IElementUpdater的东西,它负责进行相应的更新.

谢谢你的提示!- 在Eclipse论坛中平行讨论

我一直致力于寻找解决方案,并在我的博客中概述了当前的状态.

java eclipse eclipse-rcp e4

6
推荐指数
1
解决办法
459
查看次数

WorkbenchPage.busyShowView中的NullPointerException

我有一个简单的视图,通常在我的Eclipse插件(4.5.2)中注册,当我使用插件启动Eclipse实例时,它可以正常工作.它仍然适用于相应的测试用例,它具有以下方法:

@Before
public void setUp() throws Exception {
    IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
    for (IViewReference viewReference : activePage.getViewReferences()) {
        activePage.hideView(viewReference);
    }
    activePage.showView("org.acme.MyView");
}
Run Code Online (Sandbox Code Playgroud)

然而,当我使用Tycho(0.22,0.24或0.25)运行相同的测试时,我得到以下异常:

java.lang.NullPointerException: null
    at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1271)
    at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:4238)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4234)
    at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:4214)
    at org.acme.MyViewTest.setUp(MyViewTest.java:39)
Run Code Online (Sandbox Code Playgroud)

第谷代码很简单:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-surefire-plugin</artifactId>
    <configuration>
        <providerHint>junit4</providerHint>
        <useUIHarness>true</useUIHarness>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我发现了这个bug以及更多,但我没有发现任何解释为什么它只会在第谷失败.我找不到任何关于如何解决这个问题.

那我做错了什么?我如何解决它?

eclipse-plugin tycho e4

6
推荐指数
1
解决办法
148
查看次数

在Eclipse 4.4 RCP版本中,"无法获取服务插件转换器".

在更新到最近用于RCP和RAP开发人员的 Eclipse 4.4 IDE Eclipse之后,我们开始在下面为我们的RCP应用程序获取构建错误.这些发生在多个Windows和Mac平台上,在一个没有其他插件的vanilla Eclipse IDE安装中.

  generateFeature:
  [eclipse.generateFeature] The service Plugin converter could not be acquired.
  [eclipse.generateFeature] The service Plugin converter could not be acquired.
  [eclipse.generateFeature] The service Plugin converter could not be acquired.
  ... 
Run Code Online (Sandbox Code Playgroud)

在Eclipse 4.3.2 IDE中构建继续成功.唯一不同的是IDE.(使用"在与工作空间相同的JRE中运行"启动构建,使当前IDE相关.)

谷歌搜索"无法获取插件转换器"导致两个链接,这两个链接都没有特别有用.

如何消除这些错误?

java eclipse-rcp e4

5
推荐指数
1
解决办法
2183
查看次数