1 建立轉(zhuǎn)發(fā)器? 即控制層??
Controller.控制層主要是有兩個類來實現(xiàn)。一個是dispatcher、controller。兩者是一個一對多的關(guān)系。一個
dispatcher中有多個controller。dispatcher通過addController方法來添加控制器。我們一般在new
controller的時候,把相應(yīng)需要添加的事件轉(zhuǎn)發(fā)添加進去,采用的是registerEventTypes(AppEvents.INIT);方
法。即controller中存在一個LIST來維護所有需要處理的事件。
???????????????
?? 2. 轉(zhuǎn)發(fā)調(diào)用時候。
??????????? 3.1 采用dispatcher的dispatch(int appEvent)。該方法就從自身維護的控制器集合中取得對應(yīng)appEvent的controller(控制器),并調(diào)用他的handEvent方法,最后觀察者會將該事件取消。
??????????? 3.2 進入crontoller的handEvent方法。這個方法需要我們子類來覆蓋,一般是根據(jù)該controller的不同事件(在構(gòu)造時候加入的事 件),調(diào)用不同的方法。比如說onInit()方法,在此方法中我們一般需要調(diào)用的是controller類的
??????????? 3.3 forwardToView(appView, event);這個方法就是要我們來展現(xiàn)頁面了。傳入的appView就是需要我們定義的頁面來展現(xiàn).
??????????? 3.4 這個forwardToView方法首先會調(diào)用view的初始化方法 initialize(),所以對頁面的是初始化操作可以在該方法中進行。最后調(diào)用view的handView方法。這個方法就是我們最后的操作了。
???????????
??????????? 例如:
???????????????? viewport = new Viewport();
??????? viewport.setLayout(new BorderLayout());
???????
??????? createNorth();
??????? createWest();
??????? createCenter();
??????? createSouth();
???????
??????? Registry.register("viewport", viewport);
??????? Registry.register("north", north);
??????? Registry.register("south", south);
??????? Registry.register("west", west);
??????? Registry.register("center", center);
???????
??????? viewport.sinkEvents(Events.OnKeyDown);
??????? viewport.addListener(Events.OnKeyDown, new AppKeyNav());
???????
??????? RootPanel.get().add(viewport);??????? //這就是把頁面給展現(xiàn)出來。
???????????????
?? 2. 轉(zhuǎn)發(fā)調(diào)用時候。
??????????? 3.1 采用dispatcher的dispatch(int appEvent)。該方法就從自身維護的控制器集合中取得對應(yīng)appEvent的controller(控制器),并調(diào)用他的handEvent方法,最后觀察者會將該事件取消。
??????????? 3.2 進入crontoller的handEvent方法。這個方法需要我們子類來覆蓋,一般是根據(jù)該controller的不同事件(在構(gòu)造時候加入的事 件),調(diào)用不同的方法。比如說onInit()方法,在此方法中我們一般需要調(diào)用的是controller類的
??????????? 3.3 forwardToView(appView, event);這個方法就是要我們來展現(xiàn)頁面了。傳入的appView就是需要我們定義的頁面來展現(xiàn).
??????????? 3.4 這個forwardToView方法首先會調(diào)用view的初始化方法 initialize(),所以對頁面的是初始化操作可以在該方法中進行。最后調(diào)用view的handView方法。這個方法就是我們最后的操作了。
???????????
??????????? 例如:
???????????????? viewport = new Viewport();
??????? viewport.setLayout(new BorderLayout());
???????
??????? createNorth();
??????? createWest();
??????? createCenter();
??????? createSouth();
???????
??????? Registry.register("viewport", viewport);
??????? Registry.register("north", north);
??????? Registry.register("south", south);
??????? Registry.register("west", west);
??????? Registry.register("center", center);
???????
??????? viewport.sinkEvents(Events.OnKeyDown);
??????? viewport.addListener(Events.OnKeyDown, new AppKeyNav());
???????
??????? RootPanel.get().add(viewport);??????? //這就是把頁面給展現(xiàn)出來。