To use multiple skin files in an ADF application, follow the below procedure.
- Create different css files
for the application. (In this example, I have created css files under the
folder css)
- Configure all these skins in trinidad-skins.xml file. The file would be like below
<?xml version=”1.0″
encoding=”windows-1252″?> <skins
xmlns=”http://myfaces.apache.org/trinidad/skin”> <skin>
<id>skin.desktop</id>
<family>abc</family> <extends>blafplus-medium.desktop</extends> <render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id> <style-sheet-name>css/style.css</style-sheet-name> </skin>
<skin>
<id>skin1.desktop</id>
<family>xyz</family> <extends>blafplus-medium.desktop</extends> <render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id> <style-sheet-name>css/style1.css</style-sheet-name> </skin>
<skin>
<id>test.desktop</id> <family>test</family> <extends>blafplus-medium.desktop</extends> <render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id> <style-sheet-name>css/test.css</style-sheet-name> </skin>
</skins>
|
- Make an entry in the trinidad-config.xml file as below with
a variable to replace skin family name. Here “currentSkin” is a String
variable configured in adfc-config.xml under session scope. In this
example, skin-family is provided a default value “test”. If no value is
passed to the variable “currentSkin” then the page will be loaded by the
skin “test”.
<?xml version=”1.0″
encoding=”windows-1252″?> <trinidad-config
xmlns=”http://myfaces.apache.org/trinidad/config”> <skin-family>#{sessionScope.currentSkin!=null?sessionScope.currentSkin : “test”}</skin-family> <skin-version>default</skin-version> </trinidad-config>
|
- And write a method in a
manage bean and define with below java code. In this example, the new skin
value is taken from a value change listener.
public void valueChangeListener(ValueChangeEvent
valueChangeEvent) { /*Code to change the skin value in session variable*/
String
currentSkin=valueChangeEvent.getNewValue().toString(); FacesContext
context = FacesContext.getCurrentInstance(); Map
sessionMap = context.getExternalContext().getSessionMap(); sessionMap.put(“currentSkin”, currentSkin); /*Code to refresh the page with new affects*/
String currentView = context.getViewRoot().getViewId(); ViewHandler vh = context.getApplication().getViewHandler(); UIViewRoot viewRoot = vh.createView(context,currentView); context.setViewRoot(viewRoot);
}
|
No Comments