もし、ランタイムに実行中の
user、 cookie、locale もしくは他の要因に応じてテーマを選択したいならば、テーマ プロバイダーを実装することが出来ます。
テーマ プロバイダーは
org.zkoss.zk.ui.util.ThemeProvider インターフェースを実装したクラスです。
package my;
public class MyThemeProvider implements ThemeProvder {
public Collection getThemeURIs(Execution exec, List uris) {
for (Iterator it = uris.iterator(); it.hasNext();) {
if ("~./zul/css/norm*.css.dsp*".equals(it.next()))
it.remove(); //remove the default theme
}
HttpServletRequest req = (HttpServletRequest)exec.getNativeRequest();
uris.add(getMyThemeURI(req));
return uris;
}}
そして、 WEB-INF/zk.xml を次の行を追加して構成します。
<desktop-config>
<theme-provider-class>my.MyThemeProvider</theme-provider-class>
</desktop-config>
zkdemo.war 内の org.zkoss.zkdemo.userguide.FontSizeThemeProvider を見てください。これはクッキーをペースにテーマを決めるものです。