Dengues Studio: Google Group:http://groups.google.com/group/dengues; QQ Group:24885404.
          在GEF實現(xiàn)表格的收縮,如下圖:
          伸展的圖:

          按減號收起:

          功能代碼:
          org.dengues.designer.ui.database.figures.DBTableCustomFigure
          的部分實現(xiàn)代碼:
           1 Image image = dbTable.isHidden() ? EXPAND_IMAGE : COLLAPSE_IMAGE;
           2         final Button button = new Button(image);
           3         button.setRolloverEnabled(true);
           4         button.addChangeListener(new ChangeListener() {
           5 
           6             /*
           7              * (non-Javadoc)
           8              * 
           9              * @see org.eclipse.draw2d.ChangeListener#handleStateChanged(org.eclipse.draw2d.ChangeEvent)
          10              */
          11             public void handleStateChanged(ChangeEvent event) {
          12                 if (event.getPropertyName().equals(ButtonModel.PRESSED_PROPERTY)) {
          13                     List children2 = button.getChildren();
          14                     i++;
          15                     for (Object object2 : children2) {
          16                         if (object2 instanceof Label) {
          17                             Label label = (Label) object2;
          18                             if (i % 2 == 0) {
          19                                 if (EXPAND_IMAGE.equals(label.getIcon())) {
          20                                     label.setIcon(COLLAPSE_IMAGE);
          21                                     for (DBColumn column : getColumns()) {
          22                                         column.setHidden(false);
          23                                     }
          24                                 } else {
          25                                     label.setIcon(EXPAND_IMAGE);
          26                                     for (DBColumn column : getColumns()) {
          27                                         column.setHidden(true);
          28                                     }
          29                                 }
          30                                 i = 0;
          31                             }
          32                         }
          33                     }
          34                 }
          35             }
          36         });
          37         titleFigure.add(button);
          org.dengues.designer.ui.database.parts.DBColumnEditPart

           1 public void notifyChanged(Notification notification) {
           2         int type = notification.getEventType();
           3         int id = notification.getFeatureID(DatabasePackage.class);
           4         switch (type) {
           5         case Notification.SET:
           6             switch (id) {
           7             case DatabasePackage.DB_COLUMN__X:
           8             case DatabasePackage.DB_COLUMN__Y:
           9             case DatabasePackage.DB_COLUMN__HEIGHT:
          10             case DatabasePackage.DB_COLUMN__WIDTH:
          11             case DatabasePackage.DB_COLUMN__NAME:
          12             case DatabasePackage.DB_COLUMN__FOREIGN_KEY:
          13             case DatabasePackage.DIAGRAM_CHILD__SELECTED:
          14                 refreshVisuals();
          15                 break;
          16             case DatabasePackage.DB_COLUMN__HIDDEN:
          17                 getCastModel().getTable().setHidden(notification.getNewBooleanValue());
          18                 break;
          19             }

           1 org.dengues.designer.ui.database.parts.DBTableEditPart
           2 //實現(xiàn)代碼
           3 public void notifyChanged(Notification notification) {
           4         int type = notification.getEventType();
           5         int id = notification.getFeatureID(DatabasePackage.class);
           6         switch (type) {
           7         case Notification.SET:
           8             switch (id) {
           9             case DatabasePackage.DB_TABLE__X:
          10             case DatabasePackage.DB_TABLE__Y:
          11             case DatabasePackage.DB_TABLE__HEIGHT:
          12             case DatabasePackage.DB_TABLE__WIDTH:
          13             case DatabasePackage.DB_TABLE__NAME:
          14             case DatabasePackage.DB_TABLE__HIDDEN:
          15                 refreshVisuals();
          16                 break;
           1 protected void refreshVisuals() {
           2         EList columns = getCastModel().getColumns();
           3         int colNum = 0;
           4         for (Object object : columns) {
           5             if (object instanceof DBColumn) {
           6                 if (!((DBColumn) object).isHidden()) {
           7                     colNum++;
           8                 }
           9             }
          10         }
          11         int i = colNum * COLUMN_HEIGHT + TABLE_HEADER;
          12 
          13         Rectangle bounds = new Rectangle(getCastModel().getX(), getCastModel().getY(), getCastModel().getWidth(), i);
          14         customTableFigure.getTableName().setText(getCastModel().getName());
          15         ((GraphicalEditPart) getParent()).setLayoutConstraint(this, getFigure(), bounds);
          16     }
          17 






          Dengues論壇(http://groups.google.com/group/dengues/),一個很好的Eclipse開發(fā)者樂園.

          Feedback

          # re: [Dengues]在GEF中實現(xiàn),表格圖像的收縮.像Tree一樣。  回復(fù)  更多評論   

          2009-03-19 16:02 by defrag_sly
          我作了一個gef tree。跟普通的tree基本沒區(qū)別。喜歡交流的話。請跟我聯(lián)系。
          http://defrag-sly.javaeye.com/admin/blogs/343016

          # re: [Dengues]在GEF中實現(xiàn),表格圖像的收縮.像Tree一樣。  回復(fù)  更多評論   

          2009-06-20 15:38 by Hsieh
          當(dāng)Table被折疊的時候,連線時怎么處理的 ?

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


          網(wǎng)站導(dǎo)航:
           
          Dengues Studio: Google Group:http://groups.google.com/group/dengues; QQ Group:24885404.
          主站蜘蛛池模板: 冷水江市| 太谷县| 石屏县| 永平县| 饶河县| 夏邑县| 苍山县| 确山县| 太仆寺旗| 治县。| 淮安市| 兴城市| 玛多县| 岳池县| 马关县| 新建县| 榆社县| 烟台市| 屏东县| 沂南县| 广安市| 特克斯县| 昭平县| 西安市| 永吉县| 新安县| 略阳县| 天气| 定远县| 商水县| 阳东县| 潮安县| 凤山县| 延津县| 潜江市| 九台市| 天镇县| 琼结县| 中江县| 通化市| 广灵县|