この場合、Java コードから UiBinder に定義したスタイルにアクセスする必要があります。
例として、UiBinder で enabled, disabled というスタイルを定義したとします。
- <<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'>
- <ui:style type='com.my.app.MyFoo.MyStyle'>
- .redBox { background-color:pink; border: 1px solid red; }
- .enabled { color:black; }
- .disabled { color:gray; }
- </ui:style>
- <div class='{style.redBox} {style.enabled}'>I'm a red box widget.</div>
- </ui:UiBinder>
ここで定義したスタイルに Java コードからアクセスするには、
1. UiBinder の
2. owner class でインタフェースを定義します。このインタフェースには UiBinder で定義したスタイル名のメソッドを持たせる
メソッドの戻り値は文字列で、この文字列がスタイル名を表す
3. @UiField アノテーションを付けて、インタフェースクラスの style という名前を変数を定義
4. style 変数を使って、メソッドを呼び出してスタイル名を取得し、addClassName() や removeClassName(), setStyleName() の引数に指定
- public class MyFoo extends Widget {
- interface MyStyle extends CssResource {
- String enabled();
- String disabled();
- }
- @UiField MyStyle style;
- /* ... */
- void setEnabled(boolean enabled) {
- getElement().addClassName(enabled ? style.enabled() : style.disabled());
- getElement().removeClassName(enabled ? style.disabled() : style.enabled());
- }
- }
0 件のコメント:
コメントを投稿