在定制Eclipse SWT组件中实现MVC
发布时间:2006-02-09 11:08:54 来源:ibm 网友评论 0 条 创建字段(视图)
Field 是一个抽象类,它定义了包含各种用户界面控件的方法,还有全局地识别这些控件的相关 ID。每个用户界面控件都是 Field 的子类,并向内容提供者提供了读写能力。清单 6 用工厂模式,在 Layout 类中创建了 Field。
清单 6. 用 Field 类创建文本对象
简化内容提供者(模型)
ExampleViewContentProvider 充当模型侦听器,后者扩展自 IStructuredContentProvider。它是 Eclipse API 的简单实现,提供了用于检索数据的回调。每个请求数据的条目都基于视图创建时在布局中为条目定义的惟一 ID。
方法调用会返回与每个定义的全局 ID 关联的数据。在 清单 7 所示的内容提供者中,可以使用适配器从 XML 文件或数据库检索数据。
清单 7. 在定制的 ContentProvider 中实现方法
创建了控件并初始化布局之后,表单会用控件 ID 要求内容提供者用数据填充表单控件。
清单 8. 初始化布局并填充控件的表单
结束语
Web 应用程序是 MVC 架构样式的早期实现者。但是,随着像 Eclipse 这样的简单而强大的开发平台的到来,程序员可以轻易地用更短的时间和最小的复杂程度,开发出更丰富的用户界面。
Field 是一个抽象类,它定义了包含各种用户界面控件的方法,还有全局地识别这些控件的相关 ID。每个用户界面控件都是 Field 的子类,并向内容提供者提供了读写能力。清单 6 用工厂模式,在 Layout 类中创建了 Field。
清单 6. 用 Field 类创建文本对象
public class TextField extends Field { /** * @param control * @param id */ public TextField(Control control, int id) { super(control, id); } /* Based on the ID of the widget, values retrieved from * the content provider are set. */ public void readFromContent(IExampleContentProvider content) { String newText = (String )content.getElement(getId()); if (newText != null) ((Text )_control).setText(newText); } /* Based on the ID of the widget, values retrieved from widget are * sent back to the content provider. */ public void writeToContent(IExampleContentProvider content) { String newText = ((Text )_control).getText(); content.setElement(getId(), newText); } } |
简化内容提供者(模型)
ExampleViewContentProvider 充当模型侦听器,后者扩展自 IStructuredContentProvider。它是 Eclipse API 的简单实现,提供了用于检索数据的回调。每个请求数据的条目都基于视图创建时在布局中为条目定义的惟一 ID。
方法调用会返回与每个定义的全局 ID 关联的数据。在 清单 7 所示的内容提供者中,可以使用适配器从 XML 文件或数据库检索数据。
清单 7. 在定制的 ContentProvider 中实现方法
public Object getElement(int iIndex) { switch (iIndex) { case FIRST_INDEX: return "developer@ibm.com"; case SECOND_INDEX : return new Integer(1); case FOURTH_INDEX : return new Boolean(true); case THIRD_INDEX: return new Boolean(false); case FIFTH_INDEX: return new Boolean(false); } return null; } |
创建了控件并初始化布局之后,表单会用控件 ID 要求内容提供者用数据填充表单控件。
清单 8. 初始化布局并填充控件的表单
public Form (Composite parent, int style, FieldMode mode, ExampleViewContentProvider content) { super(parent, style); _content = content; _style = style; setMode(mode); init(style); } private void init(int style) { createControls(style); controlsCreated(); } protected void controlsCreated() { readFromContent(); } |
结束语
Web 应用程序是 MVC 架构样式的早期实现者。但是,随着像 Eclipse 这样的简单而强大的开发平台的到来,程序员可以轻易地用更短的时间和最小的复杂程度,开发出更丰富的用户界面。
- 推荐阅讯
- AJAX in Action
- OpenGL编程轻松入门之使用光照和材质
- Web2.0公司所要做的就是撕掉Web2.0标签
- 怎样才能限制SQL Server只能让指定的机器连
- AJAX中JavaScript类的三种成员
- 固步自封 Borland焉能不败
- OpenGL编程轻松入门之使用颜色
- 为什么要用UML建模之面向对象建模
- RPG游戏设计快速入门之初始篇
- 你的代码真的很健壮吗
- 阅读排行
- 1..net页面间的参数传递简单实例
- 2.VC++与Matlab混合编程之引擎操作详解
- 3.Oracle数据库数据对象分析
- 4.Eclipse3.2+Tomcat5.5.17+Oracle9配置
- 5.Oracle数据库中索引的维护
- 6.在Oracle的网络结构中解决连接问题
- 7.Oracle数据安全面面观
- 8.Oracle数据库的ORA-00257故障解决过程
- 9.Oracle数据库备份与恢复的三种方法
- 10.Oracle与SQL Server在企业应用中的比较
- 专题教程
- Windows Server-Windows Server文档-Windows Server新闻-Windows Ser PostgreSQL-PostgreSQL文档-PostgreSQL新闻-PostgreSQL专家
- WebLogic-WebLogic文档-WebLogic新闻-WebLogic专家 FreeBSD-FreeBSD文档-FreeBSD新闻-FreeBSD专家
- Linux-内核 GUI KDE Gnome DNS FTP 安全 安装-Linux专区 Windows-AD IIS ServerCore 虚拟化 安全 HPC-Windows专区
- 大话G游 专题:手机病毒揭密
- ARP攻击防范与解决方案 路由故障处理手册
