在库中设置GWT小部件样式的最佳方法

hel*_*ios 7 css java gwt widget

我正在开发一些小部件进入一个库,供我工作的公司内部使用.

我不知道为小部件设置样式的推荐方法是什么.

至少有以下几种方式:

  • 使用Widget.setPrimaryStyleName并让用户提供外部css.我们使用maven原型来构建应用程序,因此我们可以提供默认样式.无论如何我不太喜欢它.

  • 使用GWT 2.0 CssResourceBundle.因此我们可以将CSS编译到模块中并对其进行优化(并且它也可以依赖于浏览器).

  • 提供具有样式的模块.类似于默认的GWT主题.但我不知道这究竟是如何运作的.

我想要:

  • 尽可能地使组件具有内聚性(不依赖于外部包含的css)
  • 打开门来修改样式(如果我想改变一些小部件在具体应用程序中的外观).

你对这个主题有什么经验?

注意:如果您正在寻找明确的答案,请查看所有答案和评论.有不同的想法和所有好的想法.然后选择最适合你的:)

mar*_*vic 4

我认为最好的方法是在模块中提供样式。这样您就可以轻松地重新设计样式,或为控件添加“主题”。

我正在做一个类似的项目,托管在 github ( http://github.com/markovuksanovic/gwt-styles ) 上,所以你可能想检查一下。您可以下载 jar 文件,将其包含在您的项目中,并在您的模块 xml 中指定您想要使用该样式.. 类似

<inherits name='gwt.theme.flick.Flick'/>
Run Code Online (Sandbox Code Playgroud)

我建议您为您的样式使用新模块,以便您可以轻松地在样式之间切换...(只需更改继承标签)。因此,例如,如果您的一个小部件使用了 css 类“my-widget”,那么您将有一个“样式”模块(或多个模块)来定义该 css 类(在 css 文件中) - 这样您就可以实现该 css 类的多个模块并在它们之间切换就像更改继承标记中的模块名称一样简单。这样你就可以得到一个很好的解耦代码——样式将独立于小部件的技术实现。如果您还有其他问题,请随时提问。

PS 我忘了上面提到 - 密切注意样式模块是如何构建的(build.xml),这有点棘手。您可以在以下位置找到有关创建模块的更多信息:http://developerlife.com/tutorials/? p=229