博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
E4 - 使用Model Fragments扩展视图
阅读量:5297 次
发布时间:2019-06-14

本文共 3059 字,大约阅读时间需要 10 分钟。

      E4中可以使用简单的POJO类替代3.x的ViewPart子类作为视图对象,这样的话就不能使用org.eclipse.ui.views扩展点指定视图类了。

      其实我个人觉得E4的Model Fragments更灵活,我们将做一个简单例子试用一下。

      测试场景:

  1. 一个主E4工程,比如"vwpolo.demo.client”(包含Application.e4xmi、MainView视图)
  2. 一个附属插件工程”vwpolo.demo.view1”(包含fragment.e4xmi、SimpleView视图)

      测试目的:将SimpleView视图添加到"vwpolo.demo.client”的透视图中(和MainView平级)。

 

创建vwpolo.demo.client

       新建一个E4工程,命名为”vwpolo.demo.client”。再新建一个MainView视图。

package vwpolo.demo.client.views; import javax.inject.Inject; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; public class MainView {
private final Composite parent; @Inject // E4将会注入parent组件到视图中 public MainView(Composite parent) {
this.parent = parent; final GridLayout layout = new GridLayout(2, false); parent.setLayout(layout); createLabel("作者"); createText("vwpolo"); createLabel("日期"); createText("2011-07-22"); } private void createLabel(String text) {
Label label = new Label(parent, SWT.NONE); label.setText(text); GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL); gridData.horizontalIndent = 20; label.setLayoutData(gridData); } private void createText(String text) {
GridData gridData = new GridData(GridData.FILL_HORIZONTAL); Text textField = new Text(parent, SWT.NONE); textField.setText(text); textField.setLayoutData(gridData); } }

      然后将MainView视图注册到Application.e4xmi文件中。

      展开到Part Stack节点,

   为Part Stack指定id:”client.partstack”,并添加子节点:“Part”组件。

然后编辑“Part”组件属性,设置ID、Label属性,在Class URI属性指定MainView视图,

运行看下效果:

 

创建vwpolo.demo.view1

       创建一个空Plug-in Project,命名为”vwpolo.demo.view1”.添加依赖项工程:javax.inject。再添加一个SimpleView视图。

package vwpolo.demo.view1.views; import javax.inject.Inject; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; public class SimpleView {
private final Composite parent; @Inject public SimpleView(Composite parent) {
this.parent = parent; final GridLayout layout = new GridLayout(2, false); parent.setLayout(layout); Button helloWorld = new Button(parent, SWT.NONE); helloWorld.setText("Hello World"); } }

  使用“New Model Fragment”向导生成vwpolo.demo.view1工程的fragment.e4xmi文件

   打开fragment.e4xmi文件,在Model Fragments新增一个”String Model Fragment”节点.

双击打开。

点击“Element Id”后面的”Find…”按钮,选择PartStack。

点击 OK 按钮后,会列出工作区中注册的PartStack组件。选择id为“client.partstack”的Part Stack。

   点击Featurename的“Find…”按钮,选择basic –> PartStack –> children节点。

接下来再添加一个Part组件

   编辑Part组件信息:在Class URI中指定SimpleView视图。

 

增加org.eclipse.e4.workbench.model扩展点

      为插件”vwpolo.demo.view1”增加”org.eclipse.e4.workbench.model”扩展点.

最终:

 

运行测试

    将插件vwpolo.demo.view1加入到vwpolo.demo.client的.product文件中,打开运行配置对话框,添加依赖插件,运行

 

    我们的SimpleView视图被加入到vwpolo.demo.client项目的透视图中了。

    然后发挥你的想象力吧,其他组件可使用同样方式扩展。

转载于:https://www.cnblogs.com/vwpolo/archive/2011/07/22/2113954.html

你可能感兴趣的文章
MVC,MVP 和 MVVM 的图示,区别
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
uva 11468 Substring
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
BootStrap2学习日记2--将固定布局换成响应式布局
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
数据库的高级查询
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>