<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Feeling

        三人行,必有我師焉

       ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
      185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks
    DataSet Joint
    一個簡單的Dataset Joint Example

    一般來說,Eclipse插件開發用到GEF的機會并不是很多,大概也就是結構設計,數據管理,流程控制等應用罷了。看了一下網上的例子,大部分都是基于數據庫管理的,我想這應該是因為數據庫設計的Dataset Joint是程序開發最常見的吧。

    GEF的一個簡單Example可以參加GEF自帶的例子Logic,功能非常強大,了解了Logic,就能夠了解相應的GEF開發。在網上這方面的教程并不多,我也基本上沒開,我個人始終認為看書不如看代碼。當然我以前也沒有接觸過GEF,畢竟要完全掌握這個東西并非一日之功,要想在上面有所造詣不通過一個大型項目的加強是不可能的。上面的這個小東西也是我花了半個月,還請教了一些人幫忙debug才研究出來的,還是花費了相當功夫。

    不過GEF是一套框架,上面的這個小東西,麻雀雖小,五臟俱全,而且基本上可以算一個不依賴于Eclipse平臺的小應用程序。不過GEF(Ver 3.3)這個項目依賴于Eclipse OSGI,如果想完全獨立于Eclipse,需要自己做一些小小的改變,也不算太麻煩。最后基本上SWT+JFACE+GEF基本上就可以自己做應用了。

    獨立于Eclipse的GEF簡單教程可以參見:
    http://www13.plala.or.jp/observe/GEF/GEF_StandAlone.html
    http://www13.plala.or.jp/observe/GEF/GEF_Tool_StandAlone.html

    日文寫的,我看不懂,只看代碼。

    這里我只說幾點:
    1、如果面板需要滾動條,并且能夠自由伸縮,顯示的話,請選擇ScrollingGraphicalViewer,相應的RootEditPart請選擇ScalableFreeformRootEditPart。

    2、GraphicalViewer是通過EditPartFactory拿到子EditPart的,有些類似于JFace TreeViewer的ContentProvider,根據特定的Element拿到對應的EditPart,不同于TreeViewer的是,GEF的getChildren方式是寫在EditPart里的,每一個EditPart都要實現 protected List getModelChildren( ) 方法,而TreeViewer的getChilder是在ContentProvider內部實現的。因此EditPart更為靈活,因為EditPart還可以通過EditPartFactory拿到上下文環境,而TreeViewer ContentProvider脫離了Viewer本身,只能通過Model來取,這樣當Model和Viewer不一致的時候,GEF游刃有余,而TreeViewer卻舉步維艱。

    3、EditPart的FeedBack Figure的背景顏色是和它的背景取異或操作的,因次再拖動EditPart的時候,如果FeedBack Figure覆蓋EditPart的時候,Figure的顏色很難看,解決這個問題的辦法就是設置GraphicalViewer的背景顏色為白色。

    4、希望EditPart能夠拖動,需要實現getDragTracker( )方法:

        public DragTracker getDragTracker( Request req )
        {
            DragEditPartsTracker track 
    = new DragEditPartsTracker( this );
            
    return track;
        }


    5、刷新EditPart的顯示需要覆寫protected void refreshVisuals( )方法,當Model的模型改變,需要刷新View的時候可以通過事件監聽來顯示的調用該方法。

    6、設置EditPart在父親EditPart的位置調用( (GraphicalEditPart) getParent( ) ). setLayoutConstraint(EditPart arg0, IFigure arg1, Object arg2)方法。 

    7、如果是XYLayoutEditPolicy,內部EditPart位置的改變會調用XYLayoutEditPolicy的protected Command createChangeConstraintCommand( EditPart child,
       Object constraint )方法,需要記錄EditPart位置可以在這里進行。

    8、EditPart的Selection事件需要注冊SelectionEditPolicy,你可以針對不同的EditPart實現不同的SelectionEditPolicy。

    9、內部有自由布局的EditPart需要注冊LayoutEditPolicy的子類。而該EditPart的Figure需要設置對應的LayoutManager。

    10、GraphicalViewer監聽Key操作需要setKeyHandler(new KeyHandler(viewer))。

    11、進行連接操作的源EditPart需要實現protected List getModelSourceConnections( )方法,目標EditPart需要實現protected List getModelTargetConnections( )方法,創建一個連接需要使用ConnectionDragCreationTool。連接圖形的EditPart必須繼承AbstractConnectionEditPart。實際上每個連接會被創建出2個EditPart,只有這2個EditPart的Model相等的時候,一個連接才會成立。

    12、如果需要連接,需要注冊GraphicalNodeEditPolicy,并且實現protected org.eclipse.gef.commands.Command getConnectionCompleteCommand(
       CreateConnectionRequest request )和protected org.eclipse.gef.commands.Command getConnectionCreateCommand(
       CreateConnectionRequest request )方法。注冊代碼:

    installEditPolicy( EditPolicy.GRAPHICAL_NODE_ROLE,
                    
    new ConnectionCreationEditPolicy( ) );


     先寫到這兒,慢慢再補。

    posted on 2007-04-30 18:35 三人行,必有我師焉 閱讀(3703) 評論(4)  編輯  收藏

    評論

    # re: GEF開發入門要點(個人經驗) 2007-11-20 09:20 lordtan
    沒人頂啊 ?
    我來頂一個  回復  更多評論
      

    # re: GEF開發入門要點(個人經驗) 2008-05-13 16:13 gef
    能不能把你的source code貼上來看看啊  回復  更多評論
      

    # re: GEF開發入門要點(個人經驗) 2008-07-22 00:59 路人
    支持一下   回復  更多評論
      

    # re: GEF開發入門要點(個人經驗) 2009-11-12 18:54 chunchong
    wang99567@163.com
    發份代碼學習一下吧  回復  更多評論
      


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


    網站導航:
     
    GitHub |  開源中國社區 |  maven倉庫 |  文件格式轉換 
    主站蜘蛛池模板: 又粗又大又猛又爽免费视频| 亚洲人成无码网WWW| 亚洲国产精品美女久久久久| 国产高清在线免费| 野花香高清在线观看视频播放免费| 亚洲成aⅴ人在线观看| 免费久久精品国产片香蕉| 日韩免费电影网站| 亚洲成av人无码亚洲成av人| 亚洲色婷婷综合久久| 岛国av无码免费无禁网站| 大妹子影视剧在线观看全集免费| 亚洲婷婷天堂在线综合| 久久久久亚洲AV无码专区桃色| 成年人视频免费在线观看| 国产高潮久久免费观看| 亚洲伦理中文字幕| 国产成人A亚洲精V品无码| 成人免费淫片在线费观看| 久久免费观看国产精品88av| 久久久亚洲精华液精华液精华液| 亚洲国产一区二区a毛片| 亚洲国产主播精品极品网红 | 一级毛片免费不卡| 亚洲人成电影网站| 亚洲精品国产精品乱码不99| 四虎AV永久在线精品免费观看| 亚洲w码欧洲s码免费| 在线观看免费播放av片| 国产亚洲美女精品久久久久| 亚洲人成日本在线观看| 亚洲成AV人片在线观看WWW| 亚洲A∨精品一区二区三区| 成年18网站免费视频网站| 最近2018中文字幕免费视频| 丝瓜app免费下载网址进入ios| 亚洲国产成人无码AV在线| 亚洲av日韩av无码av| 亚洲精品美女在线观看| 亚洲AV中文无码字幕色三| 亚洲中文字幕久久精品无码APP|