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
?????
???????