GWT

GWT Widgetを拡張する

GWT

GWTのWidgetは階層に基づいたクラス設計がなされている為、簡単に拡張できる。 例) input要素に追加されたplaceholder属性をプロパティとして利用することのできるTextBoxを作る 元々GWTのTextBoxクラス(com.google.gwt.user.client.ui.TextBox)はinput要素…

UiBinderその2

GWT

GWTのUiBinderは単にGUIのレイアウトをXMLで記述することに留まらない素晴らしい機能がある。 AddressBookUi.xml (抜粋) <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"> <g:HTMLPanel> <g:Grid> <g:row> <g:customCell><…</g:customcell></g:row></g:grid></g:htmlpanel></ui:uibinder>

UiBinder

GWT

UiBinder以前、GWTアプリケーションで画面レイアウトを作るにはHTML外では全てJavaコードで書く必要があった。 コードで書くレイアウト private VerticalPanel mainPanel = new VerticalPanel(); private FlexTable stocksFlexTable = new FlexTable(); priv…

ClientBundleのリソースはpublicディレクトリに配置できない

GWT

ClientBundleにアクセサを書く場合、通常はリソースのベース名と同じ名前で定義するが、違う名前のアクセサを定義したい場合は、@Sourceアノテーションを使用してリソースのファイル名を直接書くことができる。 @Sourceアノテーションにファイル名を記述する…

ClientBundle その3

GWT

ClientBundleにより参照されたリソースはGWTコンパイル時にクライアント側(HTML、スクリプト)に埋め込まれてキャッシュされることになるが、その形式により格納の方法が変わる。最も典型的なのはImageResourceであり、前回紹介したスプラッシュのカーソルと…

ClientBundle その2

GWT

ClientBundleも以前に紹介した国際化の時同様に、GWTの様式である1. 用途に合わせた(ClientBundle)インタフェース作成 2. 必要なオブジェクトを取得するためのアクセサ定義 3. アプリケーション中でClientBundleの実体化という手順で使用する。 ClientBundle…

RootPanel

GWT

GWTのRootPanel(com.google.gwt.user.client.ui.RootPanel)クラスはHTML上のbodyタグに相当するGWTパネルオブジェクトでありコンテキスト上に唯一のものと思っていたのだが、そうではないようだ。通常、RootPanelは他のWidgetを追加していくコンテナとしてコ…

Client Bundle

GWT

GWT/Developer's Guide - Client BundleGWTはいろいろな面白い(と私が勝手に思っているだけで、実は合理的)機能がたくさんあるが、ClientBundleもその一つだ。ClientBundleは簡単に言えば クライアント側にキャッシュすべき静的なリソース(イメージ、CSS、デ…

GWTの魅力

GWT

日本では一部を除いて今ひとつ盛り上がっていない※GWTだが、試しに使ってみるととても良い。今まで避けてきたのが恥ずかしく思う位だ。 Javascriptに頼らずブラウザ側のロジックを書ける、HTMLの要素をまるでGUI部品のように扱える、非同期処理(Ajax)が簡単…

起動時のスプラッシュを簡単に実装する

GWT

起動時やサーバにデータを問合せている最中の処理等、比較的長い時間かかる処理の最中にスプラッシュと呼ばれる「処理の経過を示す」ウィジェットを表示する処理は今でこそ当たり前になったが、少し前まではWebアプリケーションでは殆ど実装されていなかった…

GWTの国際化 (その3)

さて、前回から随分と間が空いてしまったが、GWTの国際化、次の方法は「動的な文字列を使った」国際化だ。この方法はGWTが提供する辞書クラス(com.google.gwt.i18n.client.Dictionary)でjavascript中のオブジェクトの定数値を読み込むのだが、、その方法は非…

GWTと遅延バインディング(deferred binding) その2

GWT

さて、昨日の続き。 GWTの遅延バインディングには2つの方法がある。 遅延バインディングの方法 置換 設定可能なルールに応じて型が置換される。 コード生成 ジェネレータの実行により型(コード)が生成される。 置換 置換(Replacement)はgwt.xmlのreplace-wit…

GWTと遅延バインディング(deferred binding) その1

GWT

遅延バインディング(deferred binding) Coding Basics - Deferred Binding GWTは様々なWebブラウザ、ロケールを吸収するためにコンパイル時には複数種類のコードを生成するが、ランタイム時に実際にロードされるのはそのうちの一つだけである。この機能は「…

デフォルトのスタイルシートをオーバライドする

GWT

GWTはそのUI(ユーザインタフェース)に適用される一連のスタイルシートを「テーマ」として管理しており、〜.gwt.xml中のinherits要素で宣言することができるが、ウィザードからプロジェクトを作成した場合、デフォルトで3つのテーマが記述されており、プログ…

GWTアプリケーションの国際化 (その2)

GWT

GWTアプリケーションの国際化 (その1)から少々空いてしまったが、GWTの国際化についての続きを書く。 前回は静的な文字列定数とConstantsインタフェースを使って国際化を行ったが、この方法には拡張された方法がある。実際のアプリケーションではよく使うが…

GWTとChrome

これはGWTで開発しているアプリケーションをChromeで実行した後にChromeの「デベロッパーツール」を起動して、HTML要素を検証しているスクリーンショットだ。GWTはJavaコードからJavascriptコードを生成して様々な機能を実現しているが、肝心のスクリプトコ…

Google Plugin for Eclipse 2.3

先日紹介したGoogle Web Toolkit 2.3アップデートだが、変更点に合わせてEclipseのプラグインも同様の機能を使用できるように修正されている。 Google API統合サポート 同プラグインのボタンより"Add Google APIs"を選択することで、使用可能なGoogle APIを…

Google Web Toolkit(GWT) 2.3

Google Web Tool Kitが2.3にアップデートされた。 Developer's Guide - Google Web Toolkit 2.3 - Google Code主な変更点は以下の通り。 Google Maps オーバレイ, Buzz ストリーム, Google Docs 等のGoogle API統合サポート拡充 Google Project Hosting 統合…

GWTアプリケーションの国際化 (その1)

GWT

GWTは国際化のための仕組みがあるが、大きく二つ方法に分類できる。・静的な文字列(定数)を使った国際化 ・動的な文字列を使った国際化まずは馴染みの深い静的な文字列を使った国際化の方法をメモする。 静的な文字列(定数)を使った国際化 インタフェースを…

Language support

GWT

前回、GWT Designerで"NoClassDefFoundError"が発生する件だが、いろいろ試した結果、国際化リソース※をロードするためのインタフェースをロードするのに失敗していることが判った。 AddressInfoComposite static IAddressBookConstants constants = (IAddre…

GWT Designerでカスタムウィジェットの初期化に失敗する

EclipseのGWTプラグインには"GWT Designer"と呼ばれるGUIのデザイナがあり、JFC/SwingやSWTのようにWISYWIGで画面の設定ができる GWT Designer User Guide - Google Web Toolkit - Google CodeこのGWT Designer、とても便利なのだが先日作ったCompositeをベ…

nocache.jsが見つからない

GWT

GWTアプリケーションを作成する際にEclipseプラグインを使ってウィザードから一気に作る場合は問題ないのだが、モジュール作成 → エントリポイントクラス作成 → HTMLページ作成 と順を追ってアプリケーション要素を追加した後に実行すると、以下のエラーが出…

IE9でGWTを実行するとDOM Exceptionが発生する

GWTアプリケーションをDevmodeで起動し、最近インストールしたInternet Exploler 9で実行すると、以下のように例外が発生して止まってしまう。 デバッガで見てみると、Document.createElementでエラーが発生しているようだ。 この問題に関しては同GWTのBlog…

GWTアプリケーションをTomcatにデプロイする

さぞかし面倒なのかと思ったのだが、全然っ簡単だった。※以下手順 1. GWTコンパイルを実行する 単なるJavaのビルドではなく、GWTのコンパイル(javascript変換)を実行する。 GWTコンパイルはAntスクリプト又はEclipseのツールバーボタンかプロジェクトのメニ…

GWT Composite

GWT

GWTのWidgetはHTMLのDOM要素に対応したクラスが用意されているが、他のGUIツールキットのようにそれらを組み合わせて大きな一つのGUIコンポーネントを作ることができる。それには複数の方法があるのだが、そのひとつはCompositeクラスを利用することだ。Comp…

gwt.xml

gwt.xml gwt.xmlはGWTアプリケーションにおいて非常に重要な設定ファィルである。 EclipseからGWTのプロジェクトを作成すると プロジェクト名.gwt.xmlという名前のXMLファイルが生成される。 TestEcho.gwt.xml <module rename-to='testecho'> <inherits name='com.google.gwt.user.User'/> </inherits></module>

GWTの基本

GWT

最初にGWTを見たときにはASP.NET/WebFormsのGoogle版なのだろう思ったのだが(だからこそスルーした)、実際に少し触ってみるとどうもそうではないようだ。 GWTで書くJavaクラスは実行時にレンダリングされるWebページと透過なものではなく、HTMLのDOM要素にGW…

GWT実行時のJVMプロキシ設定

GWTの初期化時にエラーが発生しているようだ。 例外(Eclipseのログより) Initializing AppEngine server Unable to access http://appengine.google.com/api/updatecheck?runtime=java&releas e=1.4.3&timestamp=1300990822&api_versions=['1.0'] java.net.C…

GWT 事始め2

インストールが済んだので次はプラグインのウィザードに沿ってプロジェクトを作って、実際に実行してみよう。 プロジェクトの作成 ツールバーに出来たボタン又は、ナビゲータの「新規作成」から「新規プロジェクト」→「Google」と辿り 「Web Application Pro…

GWT事始め

Google Web Toolkit Google Web Toolkit - Google Code Google Web Toolkitは通常であればhtmlに加えてjavascriptやCSS(cascading style sheet)を組み合わせて作ることを強制される動的なページ、リッチなUIを持つページをjava言語により記述することができ…