[Eclipse RCP + EJB Container + DS]对象窗口组件核心

[Eclipse RCP + EJB Container + DS]对象窗口组件核心

对象窗口核心组件位于多层结构的表现层,与Sun公司提出的Core J2EE Patterns在业务层的“业务代表”配合使用。

对象窗口由一下部分构成:
  1. 一个工具栏
  2. 一个表格
  3. 一组操作
  4. 一个适配器工厂
  5. 一组适配器
  6. 一个对象展示对话框
  7. 一个下拉菜单
    •  
组成,用于用户对“对象”集合和对象个体的各种操作。
实例图:


图片附件: [观感示例1] 1.JPG (2008-3-22 22:08, 32.39 K)




图片附件: [观感示例2] 2.JPG (2008-3-22 22:08, 43.63 K)




图片附件: [观感示例3] 3.JPG (2008-3-22 22:08, 32.72 K)




图片附件: [观感示例4] 4.JPG (2008-3-22 22:08, 37.23 K)


核心组件jar包


下图展示了对象窗口核心部分的类图:


图片附件: [对象窗口核心类图] DataWindowCoreClassDiagram.gif (2008-3-22 20:11, 22.68 K)


对象窗口的创建对象窗口方法的时序图:


图片附件: [创建对象窗口方法时序图] DataWindowCoreSequanceDiagram.gif (2008-3-22 20:21, 40.29 K)





对象窗口核心组件使用方法



一、               继承AbstractDataWindow


a)      实现public void setTableColumn()方法,为数据窗口添加列;


b)      实现public void setCheckboxTableViewerProviders()方法,为数据窗口添加各种适配器:标签适配器(必选)、内容适配器等(必选)、排序器(可选)、过滤器(可选)、编辑器(可选)、修改器(可选);


示例代码如下:


public class UserDataWindow extends AbstractDataWindow {


    public UserDataWindow(Composite parent){


       super(parent);


    }


    public void setTableColumn() {


       // TODO Auto-generated method stub


       final TableColumn userIDColumnTableColumn = new TableColumn(super.dataTable,SWT.CENTER);


       userIDColumnTableColumn.setAlignment(SWT.CENTER);


       userIDColumnTableColumn.setWidth(100);


       userIDColumnTableColumn.setText("User ID");



       final TableColumn userColumnTableColumn = new TableColumn(super.dataTable,


              SWT.NONE);


       userColumnTableColumn.setWidth(100);


       userColumnTableColumn.setText("User Name");



       final TableColumn userPasswordColumnTableColumn = new TableColumn(


              super.dataTable, SWT.NONE);


       userPasswordColumnTableColumn.setWidth(100);


       userPasswordColumnTableColumn.setText("User Password");


    }


    public void setCheckboxTableViewerProviders() {


       // TODO Auto-generated method stub


       ctv.setContentProvider(new UserContentProvider());


       ctv.setLabelProvider(new UserLabelProvider());


    }


}


c)      实现内容器:


示例代码如下:


public class UserContentProvider implements IStructuredContentProvider {


    public void dispose() {}


    public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}


    public Object[] getElements(Object inputElement) {


       if(inputElement instanceof List){


           return ((List)inputElement).toArray();


       }


       else if(inputElement instanceof Collection){


           return ((Collection)inputElement).toArray();


       }else


           return new Object[0];


    }


}


d)      实现标签器:


示例代码如下:


public class UserLabelProvider implements ITableLabelProvider {


    public Image getColumnImage(Object element, int columnIndex) { return null;}



    public String getColumnText(Object element, int columnIndex) {


       if(element instanceof UserTO){


           UserTO uto = (UserTO)element;


           if(columnIndex == 0)


              return uto.getUserID();


           else if(columnIndex == 1){


              return uto.getUserName();


           }


           else


           {


              return uto.getUserPassword();


           }


       }


       return "";


    }



    public void addListener(ILabelProviderListener listener) {}



    public void dispose() {}



    public boolean isLabelProperty(Object element, String property) {


              return false;


    }


      


    public void removeListener(ILabelProviderListener listener) {}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值