public interface ThemeProvider
ThemeURIHandler
and the configuration
(the theme-uri
elements in web.xml).
When a desktop is about to be rendered, getThemeURIs(org.zkoss.zk.ui.Execution, java.util.List<java.lang.Object>)
will
be called to allow developer to rename, add or remove CSS/WCS files.
When loading each WCS (Widget CSS descriptor) file (excluding CSS files), beforeWCS(org.zkoss.zk.ui.Execution, java.lang.String)
will be called to allow developer to rename or remove the WCS file.
When a WCS file is about to load the CSS file of a widget,
beforeWidgetCSS(org.zkoss.zk.ui.Execution, java.lang.String)
will be called to allow developer to rename
or remove the CSS file associated with a widget.
To allow the client to cache the WCS file, you can inject a special
fragment into the URI of the WCS file such that a different URI represents
a different theme. To inject, you can use @{link Aide#injectURI} when
preprocessing URIs in getThemeURIs(org.zkoss.zk.ui.Execution, java.util.List<java.lang.Object>)
.
Therefore, we can retrieve the injected fragment in beforeWCS(org.zkoss.zk.ui.Execution, java.lang.String)
by use of ThemeProvider.Aide.decodeURI(java.lang.String)
.
Modifier and Type | Interface and Description |
---|---|
static class |
ThemeProvider.Aide
Utilities to help the implementation of
ThemeProvider
to manipulate the URI such that it is able to use a different URI
for a different theme. |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
beforeWCS(Execution exec,
java.lang.String uri)
Called when a WCS (Widget CSS descriptor) file is about to be loaded.
|
java.lang.String |
beforeWidgetCSS(Execution exec,
java.lang.String uri)
Called when a WCS (Widget CSS descriptor) file is about to load the CSS file associated
with a widget.
|
java.util.Collection<java.lang.Object> |
getThemeURIs(Execution exec,
java.util.List<java.lang.Object> uris)
Returns a list of the theme's URIs of the specified execution,
or null if no theme shall be generated.
|
int |
getWCSCacheControl(Execution exec,
java.lang.String uri)
Returns the number of hours that the specified WCS
(Widget CSS descriptor) file won't be changed.
|
java.util.Collection<java.lang.Object> getThemeURIs(Execution exec, java.util.List<java.lang.Object> uris)
String
or StyleSheet
.
If you want to specify the media
attribute, use StyleSheet
.
It is called when a desktop is about to be rendered. It is called only once for each desktop.
Notice that StyleSheet
is allowed since 5.0.3.
exec
- the current execution (never null), where you can retrieve
the desktop, request and response.
Note: if your Web application supports multiple devices, you have
to check Desktop.getDevice()
.uris
- the default set of theme's URIs,
i.e., the themes defined in language definitions (lang.xml and lang-addon.xml)
and the configuration (the theme-uri
elements in web.xml).
Each URI is an instance of of either String
or StyleSheet
.
Notice that, unless it is customized by application specific lang-addon,
all URIs are, by default, String instances.String
or StyleSheet
.int getWCSCacheControl(Execution exec, java.lang.String uri)
uri
- the URI of the WCS file, e.g., ~./zul/css/zk.wcsjava.lang.String beforeWCS(Execution exec, java.lang.String uri)
uri
parameter.
If you want to change the font size, you can set the attributes of the execution accordingly as follows.
For example,
String beforeWCS(Execution exec, String uri) {
exec.setAttribute("fontSizeM", "15px");
return uri;
}
exec
- the current execution (never null), where you can retrieve
the request and response. However, unlike
getThemeURIs(org.zkoss.zk.ui.Execution, java.util.List<java.lang.Object>)
, the desktop might not be available when this
method is called.uri
- the URI of the WCS file, e.g., ~./zul/css/zk.wcsjava.lang.String beforeWidgetCSS(Execution exec, java.lang.String uri)
uri
parameter.
This method is usually overridden to load the CSS files from a different directory. For example,
String beforeWidgetCSS(Execution exec, String uri) {
return uri.startsWith("~./") ? "~./foo/" + uri.substring(3): uri;
}
exec
- the current execution (never null), where you can retrieve
the request ad response. However, unlike
getThemeURIs(org.zkoss.zk.ui.Execution, java.util.List<java.lang.Object>)
, the desktop might not be available when this
method is called.uri
- the URI of the CSS file associated with a widget, e.g.,
~./js/zul/wgt/css/a.css.dspCopyright © 2005-2023 Potix Corporation. All Rights Reserved.