隨筆-109  評論-187  文章-25  trackbacks-0
          ?

          1:zoom是如何使用在里面的

          ??? (1)ZoomManager extends ZoomManager
          ?????? 為visualgroup 增加了zoom
          ?????? ===constructor
          ????? public GraphZoomManager(ScalableFigure pane,ViewPoint viewPoint,VisualGroup visualGroup){
          ??????? super(pane,viewpoint);
          ??????? this.visualGroup = visualGroup;
          ????? }
          ??? (2)override method
          ?????? protected void primSetZoom(double zoom){
          ????????? super.primSetZoom(zoom);
          ????????? getScalableFigure().setScale(1);
          ????????? visualGroup.setZoom(zoom);
          ????? }
          ???? (3)在visualGroup setZoom的時候,進行了如下操作
          ?????? public void setZoom(double zoom){
          ????????? setSize(getWidth()*zoom/getZoom(),getHight().zoom/getZoom());
          ????????? super.setZoom(zoom);
          ????????? //一下是對里面的點進行zoom
          ????????? for(Iterator iter = getVisualVertexList().iterator();iter.hasNext();){
          ???????????????? VisualVertext vertext = (VisualVertext)iter.next();
          ???????????????? vertext.setZoom(zoom);
          ?????????? }


          2:gef mvc

          ?GEF model iteract with controller only,to let controller know model's change ,所以應該把控制器作為事件監聽者,注冊在模型中,當模型發生變化,就出發相應的時間給控制器,然后負責通知給視圖進行更新

          3:Design pattern
          ?? OBSERVER的應用http://www.jdon.com/designpatterns/observer.htm這篇文章淺顯易懂,很不錯的


          4:所有事件都在VISUAL model里面,再COMMAND里面的EXECUTE來call
          ?? 所有的時間分布再不同的COMMAND的EXECUTE()里面

          ?? policy里面會SET COMMMAND,然后MVC會自動調用里面的EXECUTE方法

          ?? 然后去刷新FIGURE
          5:orpha

          6:ervery visual model -->every visual part-->every visual figure -->one or more policy -->one or more command
          7:figure是在MODEL更新完畢之后,有相關的EDIRPART,來監控,就是說OBSERVER來監視當前的EVENT,如果當前EVENT匹配一個
          那么會更新一個FIGRUE
          ?? code : visualVertextPart
          ?? editpart ===>c他有多個EDITPART,就跟STRUTS有多個ACTION一個道理。
          ?? GEF肯定也有一個核心的PART,負責整體的流裝,但是沒有找到是哪一個類。
          ?public void update(Observer o,Object arg){
          ????
          ??? //if(type ==locaction) then refresh figure;
          ??? //of course. GEF MVC,已經包裝好了,就不用我們考慮了,只需要你去做填鴨就可以了,:)
          ?? if (VisualGraphConstant.LOCATION.equals(type))
          ??????? {
          ??????????? IFigure figure = getFigure();
          ??????????? VisualVertex visualVertex = getVisualVertex();
          ??????????? figure.setLocation(new Point(visualVertex.getX(), visualVertex
          ??????????????????? .getY()));
          ??????? }

          }
          8;property 和outline是怎么加上去的??放在明天看吧


          9:toolbar跟 MENU是怎么加上去的:
          ?? toobar 是在PLUGIN.XML的ContributorClass 中加上去的,可以先看一下

          ?? extends ActionBarContributor
          ?? TOOLbar的東西ECLIPSE已經封裝的很好了,發現GEF真是了不起啊

          ?? menu是如何加上去的

          ?? 都是在EDITOR里面的CREATEACTIONS里面加上去的,OVERRIDES createActions method()

          ?? code as following
          ???? pretected void createActions(){
          ??????? super.createActions();
          ??????? IAction zoomInAction = new ZoomInAction(getZoomManager());
          ??????? IAction zoomOutAction = new ZoomOutAction(getZoomManager());
          ??????? addAction(zoomInAction());
          ??????? addAction(zoomOutAction());
          ??????? addAction(new OpenPropertiesViewAction());
          ???? }

          ?? OpenPropertiesViewActions code as follows

          ??? 1:利用現在的PROPERTIES的view,open properties sheet,ok...


          ?? OpendataPropertiesViewAction code as follwos
          ?????
          ??? 2:新建一個dataPropertiesViewAction

          ?????
          ???????

          posted on 2006
          posted on 2006-04-13 08:56 小小程序程序員混口飯吃 閱讀(186) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 九江市| 延寿县| 确山县| 嵩明县| 西林县| 兰州市| 鄂伦春自治旗| 北碚区| 峨眉山市| 阿巴嘎旗| 杭锦后旗| 武山县| 香港| 永靖县| 青铜峡市| 仁化县| 定远县| 临洮县| 武陟县| 北辰区| 镇安县| 兰西县| 广汉市| 开鲁县| 蚌埠市| 庄浪县| 无极县| 洪洞县| 忻城县| 英德市| 德江县| 丹棱县| 英吉沙县| 仙游县| 静安区| 朔州市| 朝阳县| 海兴县| 清徐县| 壤塘县| 灵山县|