快速业务通道

在定制SWT组件中实现MVC - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
图提供数据。例如,您可以实现 IStructuredContentProvider 或 ITreeContentProvider 查看器。

请在 ContentProvider 代码中实现以下一个方法,把 ContentProvider 与 Viewer 相关联:

getElements(Object parent)

getChildren(Object element)

注意:JFace 框架将调用这些方法。

清单 2. 创建定制的 ContentProvider

public class ExampleViewContentprovide implements ITreeContentProvide {

MVC 架构通常包含多个视图和一个数据源。目前在 Eclipse 平台上,只能把 一个视图与一个模型相关联。但是,也可以创建多个视图,用适配器视图访问同 一数据。只要把 inputChanged() 方法包含在 ContentProvider 类中即可。只 要 Viewer 有新的输入集,就会使用 inputChanged() 方法通知 ContentProvider。inputChanged() 方法接受 Viewer 作为输入参数,所以多个 视图可以使用一个 ContentProvider。

在定制SWT组件中实现MVC(3)

时间:2011-09-09 Tejas R Parajia

清单 3. 将 inputChanged 方法用于不同的查看器

/** * Register content provider with model. */ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { if (newInput != null)      { this.viewer = viewer; this.model = (ExampleDelegate)newInput; this.model.addModelListener(this); } }

与 Eclipse SWT 结合使用 MVC

在多数常见 GUI 应用程序中,创建布局来显示请求的数据,或完成表单(例 如用户界面)来添加或修改数据。图 1 的示例应用程序演示了如何在定制表单 中,用只读和可编写模式显示来自 XML 存储的数据。它还解释了每个组件相对 于 MVC 架构的角色。

图 1. 示例应用程序

在定制SWT组件中实现MVC - 编程入门网

图 2 显示了应用程序的类图,有助于更好地理解整体架构。

图 2. 示例应用程序的类图

在定制SWT组件中实现MVC - 编程入门网

在定制SWT组件中实现MVC(4)

时间:2011-09-09 Tejas R Parajia

创建控件

ExampleView 充当整个应用程序的容器。它将在 createPartControl 方法中 初始化应用程序。

清单 4. CreatePartControl 方法初始化布局

public void createPartControl(Composite parent) { ExampleEditLayout _layout = new   ExampleEditLayout (parent,SWT.NONE,FieldMode.Read,new ExampleViewContentProvider());     }

创建表单和布局

基本布局类定义了不同的表单应用程序使用的全局方法和声明。有些充当回 调机制的容器事件,也注册到了这里。

清单 5. 布局的 CreateControl 方法

public void createControls(int style) { GridData   gridData; Text        textFld, subjectFld; Control       toLabel, ccLabel, bccLabel; Control       fromDateTime; Control      control; Button durationText; Button submit; GridLayout layout = new GridLayout (2, false); layout.marginWidth = 0; layout.marginHeight = 4; setLayout(layout); //Label gridData = new GridData (GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER); gridData.horizontalIndent = 10; LabelFactory.create(this,  Messages.getString ("ExampleEditLayout.Title"), gridData); //$NON-NLS-1$ gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER); gridData.horizontalIndent = 40; LabelFactory.create(this, "", gridData); //Text gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER); gridData.horizontalIndent = 10; control = LabelFactory.create(this,  Messages.getString ("ExampleEditLayout

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号