29
08
2008
Release Candidate now available: the Google API Libraries for Google Web Toolkit
GWTで
Gears,Gadgets,Google AJAX Search API
を使うためのAPIです。
またまた、js離れがw
このタイトルは、今回で終わりにしようと思います。
MVC以外にもチョロチョロと書きたいことがあるので。。。
というわけで
最後は、イベント駆動について補足です。
1.同じViewに配置されているコンポーネント間のデータの受け渡しは、
イベントよりはsetXXXXで十分事足りる。
スマン、省略。。。
2.複数のView間でのデータの受け渡しは、
イベント駆動を使うと楽。
例えば、Tableの1レコードがCar(extends BaseTreeModel)で、
選択状態が変わった場合のイベント発火の手順
TableBinder<Car> binder = new TableBinder<Car>(table, store);
binder.addSelectionChangedListener(new SelectionChangedListener<ModelData>() {
public void selectionChanged(SelectionChangedEvent se) {
Car c=(Car) se.getSelectedItem();
if (c!=null) {
//EVENT_FOOというイベントに選択されているCarオブジェクトを積んだイベントオブジェクトを生成
AppEvent evt = new AppEvent(App.EVENT_FOO, c);
//また、複数のオブジェクトをイベントに積んでみたいという場合、
//AppEvent#setDataメソッドを使うと、キーに対してCarオブジェクトを設定することができます。
evt.setData("abc", c);
//そして、イベント発火
fireEvent(evt);
}
}
});
受け取り側でのデータの取り出し方は、View#handleEventの中で
public class XXXXView extends View {
protected void handleEvent(AppEvent event) {
if (event.type == App.EVENT_FOO) {
//こういう方法や
Car dataCar = (Car) event.data;
//こういう感じ
Car abcCar = (Car) event.getData("abc");
//とりだしたCarでViewに配置しているコンポーネントを更新する
その6まで引っ張ってしまいましたが、
ExtGWTを使うことで
(自分の中での)今、一番、柔軟なソフトウェア設計である
MVC+非同期イベント駆動モデル
が簡単に実装できることを感じてもらえればいいなかな。
と思っています。