UIBinderとMVPを使用してGWTウィジェットを作成しています。ウィジェットのデフォルトのスタイルは、TheWidgetView.ui.xmlで定義されています。
<ui:style type="com.widgetlib.spinner.display.TheWidgetView.MyStyle">
.textbox {
border: 1px solid #red;
}
.important {
font-weight: bold;
}
</ui:style>
ウィジェットのCssResourceインターフェースは、TheWidgetView.javaで定義されています。
public class TheWidgetView extends HorizontalPanel implements TheWidgetPresenter.Display {
// ... some code
@UiField MyStyle style;
public interface MyStyle extends CssResource {
String textbox();
String important();
}
// ... more code
}
このウィジェットのコンシューマーがウィジェットのスタイルの一部をカスタマイズできるようにし、これをMyExample.ui.xmlに含めることができるようにしたいと思います。
<ui:style type="com.consumer.MyExample.MyStyle">
.textbox {
border: 2px solid #black;
}
</ui:style>
そしてこれは彼らのMyExample.javaです:
public class MyExample extends Composite {
// ... some code
@UiField MyStyle style;
interface MyStyle extends TheWidgetView.MyStyle{
String textbox();
}
// ... more code
}
ウィジェットにデフォルトのスタイルを設定できるが、ウィジェットのコンシューマーがそれらの1つをオーバーライドできる方法はありますか?インターフェイスがTheWidgetView.MyStyleを拡張する場合、ウィジェットコンシューマーのは、その親インターフェイスにリストされているすべてのスタイルを定義する必要があります。一部のウィジェットライブラリでは、ウィジェットのコンストラクターがClientBundleをパラメーターとして取り込んでいるのを見てきました。これは、CssResourceに適用できると思います。ただし、UIBinderによって呼び出されるコンストラクターでこのスタイルオブジェクトをどのように渡すかはわかりません。
よろしくお願いします!