2016-07-01 8 views
0

GWTジェネレータをインターフェイスマーカーの代わりに注釈で使用するにはどうすればよいですか?カスタムアノテーションにGWTジェネレータを使用する

例:私はボタンとテキストボックスのようないくつかのUIフィールドを持つビューを持っています。今私は注釈@Hide( "true")を持つフィールドは、 "setVisible(false)"メソッドによって隠されています。

GWTモジュールのxmlファイルで、代わりに注釈タイプを使用する必要がありますか?または、私はすべての私のビュークラスを生成し、それを解析し、注釈をチェックし、コンストラクタでsetVisible(true)を呼び出すと新しいビューを生成する必要がありますか?あるいは、これを行うための他の方法がありますか?

答えて

1

GWTジェネレータは、(GWT.create()に渡された)型によってトリガされるため、一致アノテーションによって呼び出すことができますが、そのアノテーションはフィールド上ではなく型自体になければなりません。また、さらに重要なのは、それが起こることはないだろう。そのgenerateAndBindUiメソッドがあるときhttps://github.com/gwtproject/gwt/issues/9172

をIMO、あなたはどのように生成さUiBinderサンプルメッセージに似て適切なフィールドにsetVisibleを呼び出すヘルパークラスを生成する注釈プロセッサを使用する必要があるフィールドを設定しますと呼ばれる。だから、あなたはそれを使用する場合UiBinderを呼び出し、あなたの生成されたヘルパークラスを呼び出します(またはおそらくヘルパークラスはあなたのためのUiBinderビットを処理する)。

+0

返信ありがとうございます。私はヘルパークラスの存在を隠すことができないように見えます、そして、私はそれをprogrammaticalyと呼ぶ必要があります。 – RocketBoom

+0

技術的には、おそらくそれを隠すことができます:オリジナルのUiBinderジェネレータがバインドされているマーカーインターフェイスを拡張する新しいUiBinderインターフェイスを生成するUiBinder用のジェネレータ(そのことを前提とします)と、GWT .create()は生成されたインタフェースを呼び出し、必要に応じて 'setVisible'を呼び出します。私の好みにあまりにも多くの "魔法"、それの価値はない;しかしYMMV。 –

1

GWT 3.0を楽しみにして、ジェネレータの代わりに注釈プロセッサを記述して、そのジョブを実行するようお勧めします。

あなたにそれがどのように動作するかのアイデアを与えるために、あなたはここで見てみることができます。

https://github.com/FrankHossfeld/gwt-editor-apt

をこれはアノテーションで、エディタ・ジェネレータを交換する概念の、準備ができて、小さなまだ証拠ですプロセッサ。

+0

ご協力いただきありがとうございます。プロセッサーは余分なコードを必要とせず、注釈を直接傍受することができるように見えます。私が理解しているように、それはGWTコンパイルの間に始まった、同様のジェネレータをmavenから呼び出すだけです。私が間違っているなら、私を修正してください。 – RocketBoom

+0

あなたは正しいです。アノテーション・プロセッサは、ビルド・プロセス中に呼び出され、GWTコンパイル中にはジェネレータは呼び出されません。しかし、GWTジェネレータによって提供されるツールは、アノテーションプロセッサを搭載したツールよりはるかに強力です。 –