超越自我

          一切皆有可能

           

          創(chuàng)建TableViewer

          checkbox.JPG
          1.tableviewer初始化
          TableViewer viewer = new TableViewer(chooseModuleGroup,SWT.FULL_SELECTION|SWT.BORDER);
             Table table=viewer.getTable();
             GridData griddata = new GridData(GridData.FILL_BOTH);
             griddata.horizontalSpan = 2;
             griddata.verticalSpan = 2;
             griddata.heightHint=100;
             table.setLayoutData(griddata);
             TableLayout layout = new TableLayout();
             layout.addColumnData(new ColumnWeightData(120, true));
             layout.addColumnData(new ColumnWeightData(120, true));
             TableColumn column1 = new TableColumn(table,SWT.CENTER);
             column1.setText("choose");
             TableColumn column2 = new TableColumn(table,SWT.CENTER);
             column2.setText("module");
             viewer.setColumnProperties(new String[]{"choose","module"});
             table.setLayout(layout);
             table.setLinesVisible(true);
             table.setHeaderVisible(true);
             viewer.setCellEditors(new CellEditor[] {new CheckboxCellEditor(table) ,new TextCellEditor(table)});
             viewer.setLabelProvider(new CheckBoxLabelProvider());
             viewer.setContentProvider(new CheckBoxContentProvider());
             viewer.setCellModifier(new ModuleSelectionModifier());
             viewer.setInput(selectionList);
             selectionList.collectSelectedModules();
          2.創(chuàng)建ICellModifier
          class ModuleSelectionModifier implements ICellModifier{

             public boolean canModify(Object element, String property) {
              if(property.equals("choose")){
               return true;
              }
              return false;
             }

             public Object getValue(Object element, String property) {
              Object result=null;
              MichelleSelectedModule module=(MichelleSelectedModule)element;
              if(property.equals("choose")){
               return new Boolean(module.getSelected());
              }else if(property.equals("module")){
               return module.getPlugin();
                 }else{
                   return result;
                 }
             }

             public void modify(Object element, String property, Object value) {
              MichelleSelectedModule module=(MichelleSelectedModule)((TableItem) element).getData();
              if(property.equals("choose")){
               module.setSelected(((Boolean)value).booleanValue());
              }
              selectionList.moduleChanged(module);
             }
            }
           }
          3.創(chuàng)建modellist 為tableviewer提供添加 刪除 更新等model的方法
          private ModuleSelectionList selectionList=new ModuleSelectionList();
           class CheckBoxContentProvider implements IStructuredContentProvider,IModuleListViewer{
            public Object[] getElements(Object inputElement) {
             return selectionList.getElements();
            }

            public void dispose() {
             selectionList.removeChangeListener(this);
            }

            public void addModule(MichelleSelectedModule module) {
             viewer.add(module);
            }

            public void removeModule(MichelleSelectedModule module) {
             viewer.remove(module);
            }
            
            public void updateModule(MichelleSelectedModule module) {
             viewer.update(module, null); 
            }

            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
             if (newInput != null)
              ((ModuleSelectionList) newInput).addChangeListener(this);
             if (oldInput != null)
              ((ModuleSelectionList) oldInput).removeChangeListener(this);
            }
           }
          4.創(chuàng)建LabelProvider  (這個LabelProvider 在第一列提供checkbox選項)
          class CheckBoxLabelProvider extends LabelProvider implements ITableLabelProvider{
            private Image getImageByBoolean(boolean selected) {
                return selected?checkImage.createImage():unCheckImage.createImage();
            }
            public Image getColumnImage(Object element, int columnIndex) {
             return (columnIndex == 0) ?   // COMPLETED_COLUMN?
               getImageByBoolean(((MichelleSelectedModule) element).getSelected()) :
               null;
            }

            public String getColumnText(Object element, int columnIndex) {
             String result = "";
             if(element==null)return result;
             MichelleSelectedModule module=(MichelleSelectedModule)element;
             switch (columnIndex) {
              case 0:  // COMPLETED_COLUMN
               break;
              case 1 :
               result =module.getPlugin();
               break;
              default :
               break;  
             }
             return result;
            }
            
           }

          posted on 2005-11-02 13:16 jame 閱讀(1383) 評論(2)  編輯  收藏 所屬分類: SWT/JFace/Draw2d/Swing技術(shù)

          評論

          # re: 創(chuàng)建TableViewer 2006-06-26 15:21 江山

          MichelleSelectedModule
          這個類的代碼沒有么?能不能把代碼給全呢?  回復(fù)  更多評論   

          # re: 創(chuàng)建TableViewer 2006-06-28 09:02 jame

          這個類其實只是一個模型,提示一下我是采用selected (boolean)屬性判斷是否選擇(CheckBox)

          那個類是以前DEMO中截取的代碼片斷,抱歉目前不能給出這個類.

          但是基本的原理我可以寫出來.

          class MichelleSelectedModule{
          ...
          private boolean selected=false
          public void setSelected(boolean selected){
          this.selected=selected;
          }
          public boolean isSelected(){
          return selected;
          }
          ...
          }
          模型是CheckBoxContentProvider 接口提供的
          模型UI修改是通過ModuleSelectionModifier來實現(xiàn)的
          UI展示是通過LabelProvider 來實現(xiàn)的.
          其實很簡單JFace標準結(jié)構(gòu),符合MVC這樣的結(jié)構(gòu)  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          UML

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 寿光市| 清涧县| 马尔康县| 望都县| 子长县| 陕西省| 平阳县| 宜阳县| 玛沁县| 东安县| 邵阳县| 东平县| 洛南县| 同心县| 富民县| 平昌县| 小金县| 明光市| 东宁县| 涞水县| 荣昌县| 新密市| 军事| 五指山市| 大田县| 甘德县| 芜湖市| 镇原县| 临邑县| 平利县| 巨鹿县| 瑞金市| 沾益县| 锡林浩特市| 平谷区| 老河口市| 泸定县| 都江堰市| 呈贡县| 澄城县| 新化县|