?
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的時候,進(jìn)行了如下操作
?????? public void setZoom(double zoom){
????????? setSize(getWidth()*zoom/getZoom(),getHight().zoom/getZoom());
????????? super.setZoom(zoom);
????????? //一下是對里面的點(diǎn)進(jìn)行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 ,所以應(yīng)該把控制器作為事件監(jiān)聽者,注冊在模型中,當(dāng)模型發(fā)生變化,就出發(fā)相應(yīng)的時間給控制器,然后負(fù)責(zé)通知給視圖進(jìn)行更新
3:Design pattern
?? OBSERVER的應(yīng)用http://www.jdon.com/designpatterns/observer.htm這篇文章淺顯易懂,很不錯的
4:所有事件都在VISUAL model里面,再COMMAND里面的EXECUTE來call
?? 所有的時間分布再不同的COMMAND的EXECUTE()里面
?? policy里面會SET COMMMAND,然后MVC會自動調(diào)用里面的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更新完畢之后,有相關(guān)的EDIRPART,來監(jiān)控,就是說OBSERVER來監(jiān)視當(dāng)前的EVENT,如果當(dāng)前EVENT匹配一個
那么會更新一個FIGRUE
?? code : visualVertextPart
?? editpart ===>c他有多個EDITPART,就跟STRUTS有多個ACTION一個道理。
?? GEF肯定也有一個核心的PART,負(fù)責(zé)整體的流裝,但是沒有找到是哪一個類。
?public void update(Observer o,Object arg){
????
??? //if(type ==locaction) then refresh figure;
??? //of course. GEF MVC,已經(jīng)包裝好了,就不用我們考慮了,只需要你去做填鴨就可以了,:)
?? 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已經(jīng)封裝的很好了,發(fā)現(xiàn)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:利用現(xiàn)在的PROPERTIES的view,open properties sheet,ok...
?? OpendataPropertiesViewAction code as follwos
?????
??? 2:新建一個dataPropertiesViewAction
?????
???????
posted on 2006
posted on 2006-04-13 08:56
小小程序程序員混口飯吃 閱讀(185)
評論(0) 編輯 收藏 所屬分類:
java