Happy Man

mash-uppy

29  08 2008

キーワードの候補

Google 検索ボックスにキーワードの候補が表示されるようになります。

だそうです。
久々に、どうでもいいかなと思ったネタでした。。。


29  08 2008

Google API Libraries

21  08 2008

雨降り

東京は、大雨です。
しかも、帰宅時間ですよ。あーあ


19  08 2008

ExtGWTでMVC (その6)

このタイトルは、今回で終わりにしようと思います。
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+非同期イベント駆動モデル
が簡単に実装できることを感じてもらえればいいなかな。
と思っています。


« Previous PageNext Page »