邋遢居

          我的Java天堂

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            61 Posts :: 2 Stories :: 90 Comments :: 0 Trackbacks

          #

          昨天(2005-12-16 20:20)給遠方的她打了一個電話。當時她還在回家的路上。隨便聊了一些東西。挺happy。
          posted @ 2005-12-17 10:01 Jet Geng 閱讀(407) | 評論 (2)編輯 收藏

                                                                  RCP學習筆記(一) Viewer合作類的模式

          Viewer是邏輯對象(或叫做領域模型)和顯示對象之間的一個橋梁。他的主要的任務就是根據(jù)邏輯對象來填充窗體組件。一般需要三個類來完成Business Object 在窗體組件中的顯示。我們這里同過使用TableView來演示這部分的功能。

          TableViewer的責任是用特定的對象填充到Table窗體組件中。是我們最終在窗體要看到的對象。如下圖所示的一部分:
          tableviewer.gif

          IStructuredContentProviderITableLabelProvider的實現(xiàn)類是用來幫助TableViewer來完成這個任務的。

          1、  IStructuredContentProvider的任務是“根據(jù)給定的對象,返回一個對應的領域?qū)ο蟆?/span>1。是通過:public Object[] getElements(Object arg0)2方法實現(xiàn)的。

          2、  ITableLabelProvider 的任務是“返回展現(xiàn)領域?qū)ο蟮乃璧膱D標和文字”。這兩個任務分別是通過public Image getColumnImage(Object element, int columnIndex);

          public String getColumnText(Object element, int columnIndex);這兩個方法實現(xiàn)的。他們的傳入?yún)?shù)都是:Object element, int columnIndexElement表示當前行所要展現(xiàn)的數(shù)據(jù)對象,columnIndex表示的當前處理的列號,他是從零開始記的。

          知道了他們之間分配的職能后,我們就可以看看他們是怎么協(xié)作的了。在TableView的需要顯示的輸入對象改變了(調(diào)用了setInput方法可以觸發(fā)待顯示領域?qū)ο蟮母淖儯@就會觸發(fā)TableViewInputChange事件,這時候TableView就會去調(diào)用他本身的refresh3方法。最終會在getRawChildren方法中調(diào)用IStructuredContentProvider實現(xiàn)類中的getElements方法或的一個Object[]。供以后創(chuàng)建Item時使用。整個調(diào)用過程可以用下面的strack圖來表示:
          gettreetrack.gif
          通過調(diào)用IStructuredContentProvider獲的了一個對象數(shù)組后,就會根據(jù)對象數(shù)組來創(chuàng)建顯示的Item。我們可以先看一下ITableLabelProviderTableLabelProviderITableLabelProvider的一個實現(xiàn)類)。createItem.gif

          在更新Item的時候提供每個TableView需要的TextImage就好了。他們最終在TableViewerdoUpdateItem方法中調(diào)用ITableLabelProvidergetColumnTextgetColumnImage方法。

           

          要實現(xiàn)一個在TableView中顯示特定對象只需要實現(xiàn)IStructuredContentProvider實現(xiàn)類的getElements方法。和ITableLabelProvidergetColumnText方法。

          下面是我示例中的代碼:

          TableLabelPrivatetablelable.gif

          TableContentPrivate
          contentprivate.gif




          Viewer也都是采用ContentProvideLabelProvide的協(xié)作方式來工作。

          其他的

          參考文獻:

          1、  Contributing to Eclipse 中文版 Page 290

          2、  org.eclipse.jface.viewers. IStructuredContentProvider.java

          3、  這個方法繼承自StructuredViewer。可參考StructuredViewer.java



          posted @ 2005-12-11 11:24 Jet Geng 閱讀(1824) | 評論 (0)編輯 收藏

          僅列出標題
          共7頁: 上一頁 1 2 3 4 5 6 7 
          主站蜘蛛池模板: 安吉县| 镇安县| 贞丰县| 榆树市| 富锦市| 南宁市| 鹿泉市| 布拖县| 岢岚县| 大洼县| 兴业县| 镇远县| 黄龙县| 鲁甸县| 克拉玛依市| 抚松县| 宜兴市| 柳河县| 宁津县| 哈尔滨市| 潜江市| 临邑县| 肃北| 天等县| 安图县| 井研县| 遂平县| 通辽市| 博罗县| 文安县| 佛山市| 手游| 万宁市| 高雄市| 濮阳市| 黄大仙区| 汪清县| 庆安县| 福安市| 信阳市| 上栗县|