3
08
2008
ExtGWTでMVC (その2)
登場するクラスは、
App.java(EntryPointです)
AppController.java
AppView.java
Modelは登場しません。
起動すると、alertのダイアログが2つ表示されます。
また
コントローラーやビュー、イベントを追加した場合、
どんな感じかとか試してみるといいかと思います。
App.java
package com.gethapp.sample.mvc.client;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.google.gwt.core.client.EntryPoint;
public class App implements EntryPoint {
public static final int EVENT_INIT = 0;
public void onModuleLoad() {
Dispatcher dispatcher = Dispatcher.get();
//Appに登場するコントローラーを登録しておく
//複数ある場合は、それぞれのコントローラーをaddControllerしておく
dispatcher.addController(new AppController());
//起動時はApp.EVENT_INITを発火しておく
dispatcher.dispatch(App.EVENT_INIT);
}
}
AppController.java
package com.gethapp.sample.mvc.client;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.google.gwt.user.client.Window;
public class AppController extends Controller {
//AppControllerが起動するView
private AppView v;
public AppController() {
//AppControllerが監視しているイベントを登録しておく
//イベントが複数ある場合は、それぞれregisterEventTypesしておく
registerEventTypes(App.EVENT_INIT);
}
protected void initialize() {
v = new AppView(this);
}
//イベントごとにハンドラーを記述
//サンプルではApp.EVENT_INITだけ。。。
public void handleEvent(AppEvent event) {
switch (event.type) {
case App.EVENT_INIT:
Window.alert("AppControllerのEVENT_INIT");
//Viewを起動
//複数のViewを起動したい場合は、それぞれViewごとにforwardToViewする
forwardToView(v, event);
break;
}
}
}
AppView.java
package com.gethapp.sample.mvc.client;
import com.extjs.gxt.ui.client.mvc.AppEvent;
import com.extjs.gxt.ui.client.mvc.Controller;
import com.extjs.gxt.ui.client.mvc.View;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Viewport;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
public class AppView extends View {
private Viewport v;
private ContentPanel cp;
public AppView(Controller controller) {
super(controller);
}
protected void initialize() {
v=new Viewport();
cp=new ContentPanel();
v.add(cp);
RootPanel.get().add(v);
}
//このAppViewが処理する必要があるイベントごとにハンドラを記述する
protected void handleEvent(AppEvent event) {
switch (event.type) {
case App.EVENT_INIT:
Window.alert("AppViewのEVENT_INIT");
break;
}
}
}
Leave a Reply