2012年7月22日日曜日

GWTのCellTableで行選択をする

GWTのCellTableで行選択をする方法。 SelectionModelをCellTableに割り当てるという方法をとる
final SelectionModel gsm=new SingleSelectionModel();
celtable.setSelectionModel(gsm);
もしも複数選択可能なタイプならばSingleSelectionModelではなく MultiSelectionModelを利用する。
final SelectionModel gsm=new MultiSelectionModel();
celtable.setSelectionModel(gsm);
その後、プログラム内で選択行にするには下記のような感じになる。
//giはCellTableに表示されたオブジェクトをさします。
gsm.setSelected(gi, true);

GWTで終了時にメッセージを出す

GWTで終了時(またはページ移動時)にメッセージを出す方法のサンプル たとえば、変更を保存する前に終了させてしまった場合にメッセージを出すような場合に 下記のように書く。
 Window.ClosingHandler  closingHandler = new Window.ClosingHandler(){
   @Override
   public void onWindowClosing(ClosingEvent event) {
     if (isModified()){
       event.setMessage("変更した内容が保存されていません。");
     }else{
       event.setMessage(null);
     }
           
   };
 };
Window.addWindowClosingHandler(closingHandler);

GWT Cell Tableで値を直接編集するときの扱い

GWT Cell Tableを用いたときEditTextCellを用いると
Cell上で直接編集できるようになる。
ここで編集した値をオブジェクトに更新を書けるためには、FieldUpdaterという仕組みを用いる必要がある。

サンプルとしては下記のように記述することになる


//CellTableにカラムを追加する。
Column col = new Column(new EditTextCell()) {
        @Override
        public String getValue(GridInfo object) {
                return object.getColValue();
        }
};
dataGrid.addColumn(col, "カラム");
//追加したカラムにFieldUpdaterを設定する。
col.setFieldUpdater(new FieldUpdater() {
        @Override
        public void update(int index, GridInfo object, String value) {
           object.setColValue(value);
        }
});
これでCellTableに対応するオブジェクトのGridInfoに値をセットすることができる。