[英]Best way to style GWT widgets in a library
我正在開發一些小部件進入一個庫,供我工作的公司內部使用。
我不知道為小部件設置樣式的推薦方法是什么。
至少有以下幾種方式:
使用Widget.setPrimaryStyleName並讓用戶提供外部css。 我們使用maven原型來構建應用程序,因此我們可以提供默認樣式。 無論如何我不太喜歡它。
使用GWT 2.0 CssResourceBundle。 因此我們可以將CSS編譯到模塊中並進行優化(並且它也可以依賴於瀏覽器)。
提供具有樣式的模塊。 類似於默認的GWT主題。 但我不知道這究竟是如何運作的。
我想要:
你對這個主題有什么經驗?
注意:如果您正在尋找明確的答案,請查看所有答案和評論。 有不同的想法和所有好的想法。 然后選擇最適合你的:)
我認為最好的方法是在模塊中提供樣式。 這樣您就可以輕松地重新設置或為控件添加“主題”。
我正在做一個類似的項目,它托管在github上( http://github.com/markovuksanovic/gwt-styles ),所以你可能想要檢查一下。 你可以下載jar文件,將它包含在你的項目中,並在你的模塊xml中指定你想要使用那種風格..就像
<inherits name='gwt.theme.flick.Flick'/>
我建議你為你的風格使用新模塊,這樣你就可以輕松切換樣式......(只需更改繼承標簽)。 所以,例如,如果你的一個小部件使用css類“my-widget”,你將有一個“樣式”模塊(或多個模塊)來定義那個css類(在css文件中) - 這樣你就可以擁有實現該css類並在它們之間切換的多個模塊就像在inherits標記中更改模塊名一樣簡單。 這樣你就可以很好地解耦代碼 - 樣式將獨立於小部件的技術實現。 如果您還有其他問題,請隨時提出。
PS我忘記在上面提到了 - 密切關注如何構建樣式模塊(build.xml),這有點棘手。 您可以在以下網址http://developerlife.com/tutorials/?p=229找到有關創建模塊的更多信息
如果您只是編寫一個新的小部件並希望人們能夠自定義其CSS,那么我使用的一個模式是:
public class MyWidget extends Composite {
public interface MyCss extends CssResource {
...
}
private static MyCss defaultStyle;
private static MyCss ensureDefaultStyle() {
if (defaultStyle == null) {
defaultStyle = GWT.create(DefaultResourceBundle.class).css();
}
return defaultStyle;
}
/** If you want to use default style, call this */
public MyWidget() {
this(ensureDefaultStyle());
}
/** If you want to use your custom style, call this */
public MyWidget(MyCss css) {
...
}
}
因此,您的窗口小部件庫可以提供CSS接口,並為其提供默認實現。 如果您的用戶想要自定義它,他可以將CSS接口綁定到他自己選擇的css文件中,並使用第二個構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.