正 文

在定制Eclipse SWT组件中实现MVC


www.7dspace.com  更新日期:2006-2-9 10:05:46  七度空间


  创建字段(视图)

  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 这样的简单而强大的开发平台的到来,程序员可以轻易地用更短的时间和最小的复杂程度,开发出更丰富的用户界面。

3页,页码:[1] [2] [3] 

上一篇:非常漂亮的Yahoo Widget系列图标集
下一篇:微软大礼包 挖掘XP安装盘中的系统工具
标题:在定制Eclipse SWT组件中实现MVC 作者:Tejas R Parajia 来源:ibm
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐