<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倉庫 |  文件格式轉換 
    主站蜘蛛池模板: 夜夜嘿视频免费看| 国产在线观看片a免费观看| 亚洲AV无码乱码在线观看性色扶| 亚洲人成777在线播放| 久久WWW色情成人免费观看| 亚洲剧场午夜在线观看| 日本三级2019在线观看免费| 亚洲人成电影在线观看青青| 7723日本高清完整版免费| 亚洲成a人片在线观看精品| 日韩国产免费一区二区三区| 最新亚洲卡一卡二卡三新区| 在线看片人成视频免费无遮挡| 亚洲AV香蕉一区区二区三区| 亚洲成人国产精品| 大地影院MV在线观看视频免费| 久久久亚洲AV波多野结衣| 免费无码AV电影在线观看| 亚洲av无码一区二区三区在线播放 | 无码免费一区二区三区免费播放| 久久久无码精品亚洲日韩蜜臀浪潮 | 美女被吸屁股免费网站| 国产亚洲精久久久久久无码AV| 国产成人无码区免费网站| 亚洲国产日韩在线成人蜜芽| 黄网址在线永久免费观看| 三上悠亚电影全集免费 | 精品女同一区二区三区免费站| 亚洲日本中文字幕天天更新| 亚洲AV无码成H人在线观看| 久热免费在线视频| 亚洲欧美国产国产综合一区| 国产一区二区三区在线免费 | 亚洲精品成人图区| 永久黄网站色视频免费观看| 中出五十路免费视频| 亚洲免费人成视频观看| 亚洲第一区在线观看| 99re6热视频精品免费观看| 亚洲AⅤ男人的天堂在线观看| 亚洲精品无码鲁网中文电影|