2011年3月28日月曜日

GWTで手動でイベントを発動する。

GWTで手動でイベント処理を実行しようとする場合の方法についてのメモ。

いろいろ調べてみて結果、

というのを使えばいいようです。
サンプルコードは下記のリンクより。


ポイントだけ書くと

class OurChangeEvent extends ChangeEvent {} 

と書いて

 textBox.fireEvent(new OurChangeEvent()); 

と書くと、OnChangeイベントが呼び出せるという感じです。

2011年3月9日水曜日

GWTでTextBoxの横にPopUpを出すサンプル

テキストボックスの横にポップアップを出してみる。

こんな感じで書けばいけます。


===================================================

     final TextBox tb = new TextBox();
     tb.addKeyPressHandler(new KeyPressHandler() {
      public void onKeyPress(KeyPressEvent event) {
       if (event.getCharCode()==' '){
        MyPopPuPanel pop = new MyPopPuPanel();
        pop.setPopupPosition(tb.getOffsetWidth(), tb.getAbsoluteTop());
        pop.setAutoHideEnabled(true);
        pop.show();
        event.preventDefault();
       }
      }

GWTでセッション管理

GWTにて、サーバがTomcatなどの普通のAPサーバの場合
セッション管理を行う場合のコーディングメモ。
参考にしたのは、下記のページ。

http://code.google.com/p/bastian/source/browse/bastian-buchholz/src/java/de/bastian/server/rpc/RemoteServiceServlet.java?spec=svn202&r=202

ポイントは、getThreadLocalRequestという関数。

getThreadLocalRequest().getSession(true);

Cookieへの追加は

getThreadLocalResponse().addCookie(cookie);

を使うことによってできる。

2011年3月7日月曜日

Vaardinでファイルダウンロード

Vaardinの場合はファイルダウンロードロジックを書こうとすると
すごく簡単に書ける。

GWTの場合には、サーバのロジックとクライアント側のコードを両方書かなくてはいけないが。

例えば、ダウンロードボタンを押すと、サーバ側のファイル(下記の例では、「C:\\Users\\2006.pdf"」)
をダウンロードするという例だと、下記のように書けば完了。

とても簡単にかけていまいます。

package com.example.myufirstvaadin;

import java.io.File;

import com.vaadin.Application;
import com.vaadin.terminal.ExternalResource;
import com.vaadin.terminal.FileResource;
import com.vaadin.terminal.gwt.server.WebApplicationContext;
import com.vaadin.ui.*;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;

public class MyufirstvaadinApplication extends Application {
 @Override
 public void init() {
  Window mainWindow = new Window("Myufirstvaadin Application");
  Label label = new Label("Hello Vaadin user");
  mainWindow.addComponent(label);
  Button dounloadButton = new Button("ダウンロード");
  mainWindow.addComponent(dounloadButton);
  dounloadButton.addListener(new ClickListener() {
   
   /**
    * 
    */
   private static final long serialVersionUID = 1L;

   public void buttonClick(ClickEvent event) {
    event.getButton().getWindow().open(new FileResource(new File("C:\\Users\\2006.pdf"),MyufirstvaadinApplication.this));
   }
  });
  setMainWindow(mainWindow);
 }

}
 

2011年3月5日土曜日

Vaardinのサンプル集

Vaardinのサンプル集。

ここでは、GWTのshowcaseのようにサンプルのコンポーネントと
サンプルに使われているソースコードを見ることができます。

ファイルのアップロードなんかも、GWTよりも簡単にできそう。

最初は、GWTとどこら辺が違うのかがイメージつかなかったけど、
見てみると、確かにいろいろと楽は楽そうです。

http://demo.vaadin.com/sampler

RIAってどれが主流なんだろうか

最近のトレンドであるRIA(リッチインターネットアプリケーション)ってどれが
主流になっていくんだろうか。

最近、個人的に注目し始めたのが、Vaadinというフレームワーク。

その中にこれらのRIAテクノロジの比較が載るっていた。
Vaadinのサイトだから当然ながらVaadinが言いように見えるけど、
確かによくできたフレームワークだと思う。

http://vaadin.com/comparison

実際に動かしてみて感じたことは、GWTとの比較で書いてみると、
GWTは、サーバロジックとクライアントロジックをしっかり分けて
書く必要があるが、vaadinはあまり、境目を意識しなくても
コードがかけてしまうということ。

また、vaardinの場合には、ブラウザでリロードしても直前の
エディットの状態やチェックボックスの状態が保存されたままになっている。
どこで管理してるんだろうか。
セッション管理もフレームワーク側で管理されてる感じ。

また、GWTはコンパイル時にJavaScriptを生成するのに対して、
Vaadinはおそらく、実行時にJavaScriptを生成しているというように見受けられる。
そのせいか、Vaadinは動かした感じ、若干のもっさり感があるような気がする。

ちなみに、下記はVaadinの開発環境をゼロから作成するためのメモ。

1.Tomcatのインストール(実際は、他のものでもいい)
http://tomcat.apache.org/

2.Eclipse IDE for Java EE Developersのインストール
http://www.eclipse.org/downloads/

3.1.のアプリケーションサーバをeclipseに設定。
(Window→Preference→Serverから追加)

4.vaadinプラグインのインストール
http://vaadin.com/eclipse

でできると思います。

ここまで行くと、下記の動画チュートリアルが実行できるようになる。



そして、入門書もきちんとbook形式で公開されている。
http://vaadin.com/book