You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2017/09/17 12:29:36 UTC
[myfaces-trinidad] 02/04: Merging original exhibition onto new
branch created from the recent trunk
This is an automated email from the ASF dual-hosted git repository.
deki pushed a commit to branch exhibition_branch
in repository https://gitbox.apache.org/repos/asf/myfaces-trinidad.git
commit 6323eb8bb52ecf327ec68778cd3773a8dc9a232c
Author: Andrew Robinson <ar...@apache.org>
AuthorDate: Tue Jul 29 03:23:48 2008 +0000
Merging original exhibition onto new branch created from the recent trunk
---
pom.xml | 1 +
trinidad-examples/pom.xml | 1 +
trinidad-examples/trinidad-exhibition/api/pom.xml | 71 +++++
.../trinidadexhibition/util/UtilFunctions.java | 44 +++
.../trinidad-exhibition/build/pom.xml | 61 ++++
.../maven-faces-plugin/components/ViewSource.xml | 46 +++
.../maven-faces-plugin/renderers/ViewSource.xml | 38 +++
trinidad-examples/trinidad-exhibition/impl/pom.xml | 73 +++++
trinidad-examples/trinidad-exhibition/pom.xml | 241 ++++++++++++++++
trinidad-examples/trinidad-exhibition/web/pom.xml | 164 +++++++++++
.../trinidadexhibition/metadata/MetaDataUtils.java | 159 +++++++++++
.../metadata/facescontext/Component.java | 176 ++++++++++++
.../metadata/facescontext/FacesConfigData.java | 49 ++++
.../metadata/facescontext/Facet.java | 77 +++++
.../metadata/facescontext/Property.java | 111 ++++++++
.../trinidadexhibition/metadata/tld/Attribute.java | 108 +++++++
.../trinidadexhibition/metadata/tld/Tag.java | 91 ++++++
.../metadata/tld/TagLibrary.java | 61 ++++
.../myfaces/trinidadexhibition/util/Functions.java | 22 ++
.../webapp/ComponentIndexBean.java | 42 +++
.../trinidadexhibition/webapp/MenusBean.java | 40 +++
.../trinidadexhibition/webapp/MetaDataBean.java | 153 ++++++++++
.../trinidadexhibition/webapp/PreferencesBean.java | 63 +++++
.../webapp/SourceCodeServlet.java | 74 +++++
.../trinidadexhibition/BundleMessages.properties | 35 +++
.../WEB-INF/facelets/templates/component.xhtml | 38 +++
.../webapp/WEB-INF/facelets/templates/main.xhtml | 161 +++++++++++
.../web/src/main/webapp/WEB-INF/faces-config.xml | 115 ++++++++
.../web/src/main/webapp/WEB-INF/trfn.taglib.xml | 11 +
.../src/main/webapp/WEB-INF/trinidad-config.xml | 30 ++
.../web/src/main/webapp/WEB-INF/trinidad-skins.xml | 35 +++
.../web/src/main/webapp/WEB-INF/web.xml | 194 +++++++++++++
.../web/src/main/webapp/components/index.xhtml | 54 ++++
.../web/src/main/webapp/index.xhtml | 57 ++++
.../src/main/webapp/skins/demo-skin/demo-skin.css | 8 +
.../web/src/main/webapp/skins/test-myfaces/README | 9 +
trinidad-skins/myfaces-skin/pom.xml | 62 ++++
.../resource/MyFacesSkinImageResourceLoader.java | 48 ++++
.../resource/MyFacesSkinResourceLoader.java | 17 ++
.../myfaces/trinidad/skins/MyFacesSkinLoader.java | 63 +++++
.../main/resources/META-INF/images/bg-fade-1.png | Bin 0 -> 1270 bytes
.../main/resources/META-INF/images/bg-fade-2.png | Bin 0 -> 1355 bytes
.../main/resources/META-INF/images/bg-fade-3.png | Bin 0 -> 1289 bytes
.../resources/META-INF/images/brown-bullet.gif | Bin 0 -> 59 bytes
.../resources/META-INF/images/dialog-close.png | Bin 0 -> 1027 bytes
.../resources/META-INF/images/external-link.png | Bin 0 -> 230 bytes
.../main/resources/META-INF/images/footer-bg.png | Bin 0 -> 178 bytes
.../main/resources/META-INF/images/menu-expand.gif | Bin 0 -> 101 bytes
.../META-INF/images/myfaces-logo-small.png | Bin 0 -> 3039 bytes
.../images/myfaces-logo-with-text-small.png | Bin 0 -> 4842 bytes
.../images/myfaces-logo-with-text-watermark.png | Bin 0 -> 12378 bytes
.../META-INF/images/myfaces-logo-with-text.png | Bin 0 -> 16195 bytes
.../resources/META-INF/images/myfaces-logo.png | Bin 0 -> 11878 bytes
.../resources/META-INF/images/orange-bullet.gif | Bin 0 -> 59 bytes
.../META-INF/images/panel-box-dark-bottom-left.png | Bin 0 -> 444 bytes
.../images/panel-box-dark-bottom-right.png | Bin 0 -> 449 bytes
.../META-INF/images/panel-box-dark-bottom.png | Bin 0 -> 176 bytes
.../META-INF/images/panel-box-dark-center.png | Bin 0 -> 184 bytes
.../META-INF/images/panel-box-dark-left.png | Bin 0 -> 656 bytes
.../META-INF/images/panel-box-dark-right.png | Bin 0 -> 677 bytes
.../META-INF/images/panel-box-dark-top-left.png | Bin 0 -> 451 bytes
.../META-INF/images/panel-box-dark-top-right.png | Bin 0 -> 485 bytes
.../META-INF/images/panel-box-dark-top.png | Bin 0 -> 186 bytes
.../images/panel-box-light-bottom-left.png | Bin 0 -> 334 bytes
.../images/panel-box-light-bottom-right.png | Bin 0 -> 334 bytes
.../META-INF/images/panel-box-light-bottom.png | Bin 0 -> 171 bytes
.../META-INF/images/panel-box-light-center.png | Bin 0 -> 166 bytes
.../META-INF/images/panel-box-light-left.png | Bin 0 -> 381 bytes
.../META-INF/images/panel-box-light-right.png | Bin 0 -> 385 bytes
.../META-INF/images/panel-box-light-top-left.png | Bin 0 -> 332 bytes
.../META-INF/images/panel-box-light-top-right.png | Bin 0 -> 365 bytes
.../META-INF/images/panel-box-light-top.png | Bin 0 -> 173 bytes
.../images/panel-box-medium-bottom-left.png | Bin 0 -> 385 bytes
.../images/panel-box-medium-bottom-right.png | Bin 0 -> 386 bytes
.../META-INF/images/panel-box-medium-bottom.png | Bin 0 -> 176 bytes
.../META-INF/images/panel-box-medium-center.png | Bin 0 -> 185 bytes
.../META-INF/images/panel-box-medium-left.png | Bin 0 -> 495 bytes
.../META-INF/images/panel-box-medium-right.png | Bin 0 -> 501 bytes
.../META-INF/images/panel-box-medium-top-left.png | Bin 0 -> 397 bytes
.../META-INF/images/panel-box-medium-top-right.png | Bin 0 -> 428 bytes
.../META-INF/images/panel-box-medium-top.png | Bin 0 -> 185 bytes
.../resources/META-INF/images/title-bg-fade.png | Bin 0 -> 11568 bytes
.../main/resources/META-INF/images/title-bg.png | Bin 0 -> 1310 bytes
...org.apache.myfaces.trinidad.config.Configurator | 1 +
.../servlets/resources/myfaces_skin.resources | 1 +
.../resources/META-INF/style/myfaces-desktop.css | 315 +++++++++++++++++++++
.../main/resources/META-INF/style/myfaces-pda.css | 1 +
.../myfaces-skin/src/main/svg/dark-panel-box.svg | 164 +++++++++++
.../myfaces-skin/src/main/svg/light-panel-box.svg | 158 +++++++++++
.../myfaces-skin/src/main/svg/medium-panel-box.svg | 164 +++++++++++
trinidad-skins/pom.xml | 48 ++++
91 files changed, 3755 insertions(+)
diff --git a/pom.xml b/pom.xml
index e804630..1503019 100644
--- a/pom.xml
+++ b/pom.xml
@@ -321,6 +321,7 @@
<module>trinidad-build</module>
<module>trinidad-api</module>
<module>trinidad-impl</module>
+ <module>trinidad-skins</module>
</modules>
<build>
diff --git a/trinidad-examples/pom.xml b/trinidad-examples/pom.xml
index d46cd88..533431e 100644
--- a/trinidad-examples/pom.xml
+++ b/trinidad-examples/pom.xml
@@ -83,6 +83,7 @@
<modules>
<module>trinidad-blank</module>
<module>trinidad-demo</module>
+ <module>trinidad-exhibition</module>
</modules>
<profiles>
diff --git a/trinidad-examples/trinidad-exhibition/api/pom.xml b/trinidad-examples/trinidad-exhibition/api/pom.xml
new file mode 100644
index 0000000..6829698
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/api/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-api</artifactId>
+
+ <name>Trinidad Exhibition API</name>
+ <description>
+ Trinidad exhibition API. This contains the "API" classes for the components,
+ utility and other artifacts that are used only for this demonstration project and
+ are not made for reuse in the Trinidad core project.
+ </description>
+
+ <parent>
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-parent</artifactId>
+ <!-- TODO: change version to match Trinidad after moving to the trunk -->
+ <version>1.2.8-SNAPSHOT</version>
+ </parent>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.myfaces.trinidadbuild</groupId>
+ <artifactId>maven-faces-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-components</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-exhibition-build</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ </dependencies>
+</project>
diff --git a/trinidad-examples/trinidad-exhibition/api/src/main/java/org/apache/myfaces/trinidadexhibition/util/UtilFunctions.java b/trinidad-examples/trinidad-exhibition/api/src/main/java/org/apache/myfaces/trinidadexhibition/util/UtilFunctions.java
new file mode 100644
index 0000000..6efcb55
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/api/src/main/java/org/apache/myfaces/trinidadexhibition/util/UtilFunctions.java
@@ -0,0 +1,44 @@
+/**
+ *
+ */
+package org.apache.myfaces.trinidadexhibition.util;
+
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
+
+import javax.faces.context.FacesContext;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public final class UtilFunctions
+{
+ private UtilFunctions() {}
+
+ public static String getBundleString(String key, Object... parms)
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ ResourceBundle bundle = facesContext.getApplication().getResourceBundle(facesContext, "msgs");
+
+ String str = bundle.getString(key);
+ if (parms != null && parms.length > 0)
+ {
+ str = MessageFormat.format(str, parms);
+ }
+ return str;
+ }
+
+ public static Object evaluateEl(String el)
+ {
+ return evaluateEl(el, Object.class);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T> T evaluateEl(String el, Class<T> returnType)
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ return (T)facesContext.getApplication().getExpressionFactory().createValueExpression(el, returnType)
+ .getValue(facesContext.getELContext());
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/build/pom.xml b/trinidad-examples/trinidad-exhibition/build/pom.xml
new file mode 100644
index 0000000..156f48d
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/build/pom.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-build</artifactId>
+
+ <name>Trinidad Exhibition Build</name>
+ <description>
+ Trinidad exhibition build files for the maven-faces-plugin to generate the JSF artifacts for
+ the custom components that the exhibition uses that are specific to this demonstration that
+ are not made for reuse in the Trinidad core project.
+ </description>
+
+ <parent>
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-parent</artifactId>
+ <!-- TODO: change version to match Trinidad after moving to the trunk -->
+ <version>1.2.8-SNAPSHOT</version>
+ </parent>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.myfaces.trinidadbuild</groupId>
+ <artifactId>maven-faces-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-master-faces-config</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/trinidad-examples/trinidad-exhibition/build/src/main/resources/META-INF/maven-faces-plugin/components/ViewSource.xml b/trinidad-examples/trinidad-exhibition/build/src/main/resources/META-INF/maven-faces-plugin/components/ViewSource.xml
new file mode 100644
index 0000000..15be469
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/build/src/main/resources/META-INF/maven-faces-plugin/components/ViewSource.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<faces-config
+ version="1.2"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:tre="http://myfaces.apache.org/trinidad/exhibition"
+ xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin"
+ xmlns:mafp="http://myfaces.apache.org/maven-trinidad-plugin"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ <component>
+ <description>
+ <![CDATA[Link to view the source of the current view in the demo.]]>
+ </description>
+ <component-type>org.apache.myfaces.trinidad.exhibition.ViewSource</component-type>
+ <component-class>org.apache.myfaces.trinidad.exhibition.component.ViewSource</component-class>
+ <component-extension>
+ <mfp:component-family>org.apache.myfaces.trinidad.exhibition.ViewSource</mfp:component-family>
+ <mfp:component-supertype>org.apache.myfaces.trinidad.component.core.nav.CoreGoLink</mfp:component-supertype>
+ <mfp:renderer-type>org.apache.myfaces.trinidad.exhibition.ViewSource</mfp:renderer-type>
+ <mfp:tag-class>org.apache.myfaces.trinidadinternal.exhibition.taglib.ViewSourceTag</mfp:tag-class>
+ <mfp:tag-name>tre:viewSource</mfp:tag-name>
+ <mfp:component-metadata>
+ <mfp:favorite-property>id</mfp:favorite-property>
+ </mfp:component-metadata>
+ </component-extension>
+ </component>
+</faces-config>
\ No newline at end of file
diff --git a/trinidad-examples/trinidad-exhibition/build/src/main/resources/META-INF/maven-faces-plugin/renderers/ViewSource.xml b/trinidad-examples/trinidad-exhibition/build/src/main/resources/META-INF/maven-faces-plugin/renderers/ViewSource.xml
new file mode 100644
index 0000000..3ff5e87
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/build/src/main/resources/META-INF/maven-faces-plugin/renderers/ViewSource.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<faces-config
+ version="1.2"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:mfp="http://myfaces.apache.org/maven-faces-plugin">
+ <render-kit>
+ <render-kit-id>org.apache.myfaces.trinidadinternal.core</render-kit-id>
+ <renderer>
+ <component-family>org.apache.myfaces.trinidad.exhibition.ViewSource</component-family>
+ <renderer-type>org.apache.myfaces.trinidad.exhibition.ViewSource</renderer-type>
+ <renderer-class>
+ org.apache.myfaces.trinidadinternal.exhibition.renderkit.xhtml.ViewSourceRenderer
+ </renderer-class>
+ <renderer-extension>
+ <mfp:component-type>org.apache.myfaces.trinidad.exhibition.ViewSource</mfp:component-type>
+ </renderer-extension>
+ </renderer>
+ </render-kit>
+</faces-config>
diff --git a/trinidad-examples/trinidad-exhibition/impl/pom.xml b/trinidad-examples/trinidad-exhibition/impl/pom.xml
new file mode 100644
index 0000000..33b1bd6
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/impl/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-impl</artifactId>
+
+ <name>Trinidad Exhibition IMPL</name>
+ <description>
+ Trinidad exhibition implementation library. This contains the "private" classes
+ for the components, utility and other artifacts that are used only for this
+ demonstration project and are not made for reuse in the Trinidad core project.
+ </description>
+
+ <parent>
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-parent</artifactId>
+ <!-- TODO: change version to match Trinidad after moving to the trunk -->
+ <version>1.2.8-SNAPSHOT</version>
+ </parent>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.myfaces.trinidadbuild</groupId>
+ <artifactId>maven-faces-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-faces-config</goal>
+ <goal>generate-facelets-taglibs</goal>
+ <goal>generate-renderer-map</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-exhibition-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ </dependencies>
+</project>
diff --git a/trinidad-examples/trinidad-exhibition/pom.xml b/trinidad-examples/trinidad-exhibition/pom.xml
new file mode 100644
index 0000000..c976390
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/pom.xml
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-parent</artifactId>
+ <version>1.2.8-SNAPSHOT</version>
+
+ <name>Trinidad Exhibition</name>
+ <description>
+ Trinidad exhibition parent and aggregator Maven POM file. This builds all the projects
+ necessary for the Trinidad exhibition war deployment.
+ </description>
+
+ <parent>
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-example</artifactId>
+ <!-- TODO: change version to match Trinidad after moving to the trunk -->
+ <version>1.2.8-SNAPSHOT</version>
+ </parent>
+
+ <packaging>pom</packaging>
+
+ <modules>
+ <module>build</module>
+ <module>api</module>
+ <module>impl</module>
+ <module>web</module>
+ </modules>
+
+ <build>
+ <plugins>
+ <plugin>
+ <inherited>true</inherited>
+ <groupId>org.apache.myfaces.trinidadbuild</groupId>
+ <artifactId>maven-faces-plugin</artifactId>
+ <configuration>
+ <taglibs>
+ <tre>http://myfaces.apache.org/trinidad/exhibition</tre>
+ </taglibs>
+ <faceletHandlerClass>
+ org.apache.myfaces.trinidadinternal.facelets.TrinidadComponentHandler
+ </faceletHandlerClass>
+ <typePrefix>org.apache</typePrefix>
+ <renderKitPrefix>org.apache</renderKitPrefix>
+ <packageContains>org.apache</packageContains>
+ <removeRenderers>true</removeRenderers>
+ <jsfVersion>1.2</jsfVersion>
+ <force>false</force>
+ <excludes>
+ <exclude>**/includes/**</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>apache-snapshots</id>
+ <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+ <snapshots>
+ <updatePolicy>${snapshotUpdatePolicy}</updatePolicy>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <repositories>
+ <repository>
+ <id>apache-snapshots</id>
+ <url>http://people.apache.org/repo/m2-snapshot-repository</url>
+ <snapshots>
+ <updatePolicy>${snapshotUpdatePolicy}</updatePolicy>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <dependencyManagement>
+ <!--
+ Any dependencies that are not needed by all the trinidad-exhibition
+ sub projects:
+ -->
+ <dependencies>
+
+ </dependencies>
+ </dependencyManagement>
+
+ <!--
+ Any dependencies that are common to all the trinidad-exhibition sub projects:
+ -->
+ <dependencies>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-api</artifactId>
+ <version>${trinidad-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-impl</artifactId>
+ <version>${trinidad-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.sun.facelets</groupId>
+ <artifactId>jsf-facelets</artifactId>
+ <version>1.1.14</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- force removal of commons logging in favor of slf4j -->
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging-api</artifactId>
+ <version>1.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- the slf4j commons-logging replacement -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>jcl104-over-slf4j</artifactId>
+ <version>${slf4j-version}</version>
+ </dependency>
+
+ <!-- the other slf4j jars -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j-version}</version>
+ </dependency>
+
+ <!-- using log4j as backend -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4j-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+
+ <!-- JSF Impl libraries -->
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-api</artifactId>
+ <version>${myfaces-version}</version>
+ <scope>${myfaces-scope}</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-impl</artifactId>
+ <version>${myfaces-version}</version>
+ <scope>${myfaces-scope}</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>${jsf-ri-version}</version>
+ <scope>${jsf-ri-scope}</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <version>${jsf-ri-version}</version>
+ <scope>${jsf-ri-scope}</scope>
+ </dependency>
+
+ <!-- Test scope -->
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <version>5.6</version>
+ <classifier>jdk15</classifier>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <properties>
+ <jsf-ri-scope>provided</jsf-ri-scope>
+ <jsf-ri-version>1.2_07</jsf-ri-version>
+ <myfaces-scope>compile</myfaces-scope>
+ <trinidad-version>1.2.8-SNAPSHOT</trinidad-version>
+ <myfaces-version>1.2.2</myfaces-version>
+ <slf4j-version>1.4.3</slf4j-version>
+ <snapshotUpdatePolicy>daily</snapshotUpdatePolicy>
+ </properties>
+
+</project>
diff --git a/trinidad-examples/trinidad-exhibition/web/pom.xml b/trinidad-examples/trinidad-exhibition/web/pom.xml
new file mode 100644
index 0000000..09b7cea
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/pom.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition</artifactId>
+ <packaging>war</packaging>
+
+ <name>Trinidad Exhibition Web Project</name>
+ <description>
+ Apache MyFaces Trinidad exhibition web project. This is the actual web project
+ that can be run from within a servlet container to demonstrate aspects of the
+ Trinidad MyFaces Apache project.
+ </description>
+
+ <parent>
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad-exhibition-parent</artifactId>
+ <!-- TODO: change version to match Trinidad after moving to the trunk -->
+ <version>1.2.8-SNAPSHOT</version>
+ </parent>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-exhibition-impl</artifactId>
+ <version>${pom.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-exhibition-build</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet.jsp</groupId>
+ <artifactId>jsp-api</artifactId>
+ <version>2.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-myfaces-skin</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>sandbox-impl</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-digester</groupId>
+ <artifactId>commons-digester</artifactId>
+ <version>1.8</version>
+ </dependency>
+
+ <!-- For SourceCodeServlet -->
+ <dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>jettyConfig</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <version>6.1.9</version>
+ <configuration>
+ <scanIntervalSeconds>10</scanIntervalSeconds>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <!-- By default the war examples use myfaces! :) -->
+ <profile>
+ <id>myfaces</id>
+ <activation>
+ <property>
+ <name>!jsf</name>
+ </property>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-api</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-impl</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+ </profile>
+
+ <!-- To use the examples using the Sun's JSF Reference Implementation: -Djsf=ri -->
+ <profile>
+ <id>jsfri</id>
+ <activation>
+ <property>
+ <name>jsf</name>
+ <value>ri</value>
+ </property>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>1.2_07</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <version>1.2_07</version>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+
+ <properties>
+ <jsf_implementation>JSF-RI</jsf_implementation>
+ </properties>
+ </profile>
+ </profiles>
+</project>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/MetaDataUtils.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/MetaDataUtils.java
new file mode 100644
index 0000000..962f226
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/MetaDataUtils.java
@@ -0,0 +1,159 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Properties;
+
+import org.apache.commons.digester.Digester;
+import org.apache.myfaces.trinidad.component.UIXComponent;
+import org.apache.myfaces.trinidadexhibition.metadata.facescontext.Component;
+import org.apache.myfaces.trinidadexhibition.metadata.facescontext.FacesConfigData;
+import org.apache.myfaces.trinidadexhibition.metadata.facescontext.Facet;
+import org.apache.myfaces.trinidadexhibition.metadata.facescontext.Property;
+import org.apache.myfaces.trinidadexhibition.metadata.tld.Attribute;
+import org.apache.myfaces.trinidadexhibition.metadata.tld.Tag;
+import org.apache.myfaces.trinidadexhibition.metadata.tld.TagLibrary;
+import org.xml.sax.SAXException;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public final class MetaDataUtils
+{
+ private MetaDataUtils() {}
+
+ public static String getVersion()
+ throws IOException
+ {
+ Properties pomProps = new Properties();
+
+ InputStream stream = MetaDataUtils.class.getClassLoader().getResourceAsStream(
+ "/META-INF/maven/org.apache.myfaces.trinidad/trinidad-exhibition/pom.properties");
+
+ // the file will not be found when using jetty in-place from maven, so attempt to get the value
+ // from the api library instead
+ stream = UIXComponent.class.getClassLoader().getResourceAsStream(
+ "/META-INF/maven/org.apache.myfaces.trinidad/trinidad-api/pom.properties");
+
+ pomProps.load(stream);
+ return pomProps.getProperty("version");
+ }
+
+ public static TagLibrary getTagLibrary(String name)
+ throws IOException, SAXException
+ {
+ String path = new StringBuilder("/META-INF/").append(name).append(".tld").toString();
+ // first look in the Trinidad-impl
+ InputStream stream = MetaDataUtils.class.getResourceAsStream(path);
+ if (stream == null)
+ {
+ return null;
+ }
+
+ Digester digester = new Digester();
+ digester.setValidating(false);
+
+ digester.addObjectCreate("taglib", TagLibrary.class);
+ digester.addBeanPropertySetter("taglib/short-name", "shortName");
+
+ digester.addObjectCreate("taglib/tag", Tag.class);
+ digester.addBeanPropertySetter("taglib/tag/name");
+ digester.addBeanPropertySetter("taglib/tag/tag-class", "tagClass");
+ digester.addBeanPropertySetter("taglib/tag/description");
+ digester.addSetNext("taglib/tag", "addTag");
+
+ digester.addObjectCreate("taglib/tag/attribute", Attribute.class);
+ digester.addBeanPropertySetter("taglib/tag/attribute/name");
+ digester.addBeanPropertySetter("taglib/tag/attribute/description");
+ digester.addBeanPropertySetter("taglib/tag/attribute/required");
+ digester.addBeanPropertySetter("taglib/tag/attribute/deferred-value/type", "deferredValueType");
+ digester.addBeanPropertySetter("taglib/tag/attribute/deferred-value/method-signature",
+ "deferredValueMethod");
+
+ digester.addSetNext("taglib/tag/attribute", "addAttribute");
+
+ return (TagLibrary)digester.parse(stream);
+ }
+
+ public static FacesConfigData getFacesConfigData()
+ throws IOException, SAXException
+ {
+ FacesConfigData data = new FacesConfigData();
+ for (Enumeration<URL> e = Thread.currentThread().getContextClassLoader().getResources(
+ "META-INF/faces-config.xml"); e.hasMoreElements(); )
+ {
+ FacesConfigData d = getFacesConfigData(e.nextElement().openStream());
+ if (d != null)
+ {
+ data.addData(d);
+ }
+ }
+
+ return data;
+ }
+
+ private static FacesConfigData getFacesConfigData(InputStream stream)
+ throws IOException, SAXException
+ {
+ Digester digester = new Digester();
+ digester.setValidating(false);
+
+ digester.addObjectCreate("faces-config", FacesConfigData.class);
+
+ digester.addObjectCreate("faces-config/component", Component.class);
+ digester.addBeanPropertySetter("faces-config/component/description");
+ digester.addBeanPropertySetter("faces-config/component/component-type", "componentType");
+ digester.addBeanPropertySetter("faces-config/component/component-clas", "componentClass");
+ digester.addBeanPropertySetter("faces-config/component/component-extension/accepts-child-components",
+ "accepts-child-components");
+ digester.addBeanPropertySetter("faces-config/component/component-extension/component-family",
+ "family");
+ digester.addBeanPropertySetter("faces-config/component/component-extension/renderer-type",
+ "rendererType");
+ digester.addBeanPropertySetter(
+ "faces-config/component/component-extension/component-metadata/preferred-children",
+ "preferredChildren");
+ digester.addSetNext("faces-config/component", "addComponent");
+
+ digester.addObjectCreate("faces-config/component/facet", Facet.class);
+ digester.addBeanPropertySetter("faces-config/component/facet/facet-name", "name");
+ digester.addBeanPropertySetter("faces-config/component/facet/description");
+ digester.addBeanPropertySetter(
+ "faces-config/component/facet/facet-extension/facet-metadata/preferred-children",
+ "preferredChildren");
+ digester.addSetNext("faces-config/component/facet", "addFacet");
+
+ digester.addObjectCreate("faces-config/component/property", Property.class);
+ digester.addBeanPropertySetter("faces-config/component/property/property-name", "name");
+ digester.addBeanPropertySetter("faces-config/component/property/property-class", "propertyClass");
+ digester.addBeanPropertySetter("faces-config/component/property/description");
+ digester.addBeanPropertySetter("faces-config/component/property/default-value", "defaultValue");
+ digester.addBeanPropertySetter(
+ "faces-config/component/property/property-extension/property-metadata/attribute-values",
+ "attributeValues");
+ digester.addSetNext("faces-config/component/property", "addProperty");
+
+ return (FacesConfigData)digester.parse(stream);
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Component.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Component.java
new file mode 100644
index 0000000..385a76c
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Component.java
@@ -0,0 +1,176 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata.facescontext;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Andrew Robinson
+ */
+public class Component
+{
+ private String _componentType;
+ private String _description;
+ private String _componentClass;
+ private String _rendererType;
+ private String _family;
+ private String _preferredChildren;
+ private boolean _acceptsChildComponents;
+ private Map<String, Facet> _facets = new HashMap<String, Facet>();
+ private Map<String, Property> _properties = new HashMap<String, Property>();
+
+ /**
+ * @return the preferredChildren
+ */
+ public String getPreferredChildren()
+ {
+ return _preferredChildren;
+ }
+
+ /**
+ * @param preferredChildren the preferredChildren to set
+ */
+ public void setPreferredChildren(String preferredChildren)
+ {
+ _preferredChildren = preferredChildren;
+ }
+
+ /**
+ * @return the acceptsChildComponents
+ */
+ public boolean isAcceptsChildComponents()
+ {
+ return _acceptsChildComponents;
+ }
+
+ /**
+ * @param acceptsChildComponents the acceptsChildComponents to set
+ */
+ public void setAcceptsChildComponents(boolean acceptsChildComponents)
+ {
+ _acceptsChildComponents = acceptsChildComponents;
+ }
+
+ /**
+ * @return the rendererType
+ */
+ public String getRendererType()
+ {
+ return _rendererType;
+ }
+
+ /**
+ * @param rendererType the rendererType to set
+ */
+ public void setRendererType(String rendererType)
+ {
+ _rendererType = rendererType;
+ }
+
+ /**
+ * @return the family
+ */
+ public String getFamily()
+ {
+ return _family;
+ }
+
+ /**
+ * @param family the family to set
+ */
+ public void setFamily(String family)
+ {
+ _family = family;
+ }
+
+ /**
+ * @return the type
+ */
+ public String getComponentType()
+ {
+ return _componentType;
+ }
+
+ /**
+ * @param componentType the type to set
+ */
+ public void setComponentType(String componentType)
+ {
+ _componentType = componentType;
+ }
+
+ /**
+ * @return the description
+ */
+ public String getDescription()
+ {
+ return _description;
+ }
+
+ /**
+ * @param description the description to set
+ */
+ public void setDescription(String description)
+ {
+ _description = description;
+ }
+
+ /**
+ * @return the componentClass
+ */
+ public String getComponentClass()
+ {
+ return _componentClass;
+ }
+
+ /**
+ * @param componentClass the componentClass to set
+ */
+ public void setComponentClass(String componentClass)
+ {
+ _componentClass = componentClass;
+ }
+
+ /**
+ * @return the facets
+ */
+ public Map<String, Facet> getFacets()
+ {
+ return _facets;
+ }
+
+ /**
+ * @return the properties
+ */
+ public Map<String, Property> getProperties()
+ {
+ return _properties;
+ }
+
+ public void addFacet(Facet facet)
+ {
+ _facets.put(facet.getName(), facet);
+ }
+
+ public void addProperty(Property prop)
+ {
+ _properties.put(prop.getName(), prop);
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/FacesConfigData.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/FacesConfigData.java
new file mode 100644
index 0000000..d89120a
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/FacesConfigData.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata.facescontext;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public class FacesConfigData
+{
+ private Map<String, Component> _components = new HashMap<String, Component>();
+
+ public void addData(FacesConfigData data)
+ {
+ _components.putAll(data.getComponents());
+ }
+
+ public void addComponent(Component comp)
+ {
+ _components.put(comp.getComponentType(), comp);
+ }
+
+ /**
+ * @return the components
+ */
+ public Map<String, Component> getComponents()
+ {
+ return _components;
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Facet.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Facet.java
new file mode 100644
index 0000000..2352e17
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Facet.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata.facescontext;
+
+/**
+ * @author Andrew Robinson
+ */
+public class Facet
+{
+ private String _name;
+ private String _preferredChildren;
+ private String _description;
+
+ /**
+ * @return the name
+ */
+ public String getName()
+ {
+ return _name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ _name = name;
+ }
+
+ /**
+ * @return the preferredChildren
+ */
+ public String getPreferredChildren()
+ {
+ return _preferredChildren;
+ }
+
+ /**
+ * @param preferredChildren the preferredChildren to set
+ */
+ public void setPreferredChildren(String preferredChildren)
+ {
+ _preferredChildren = preferredChildren;
+ }
+
+ /**
+ * @return the description
+ */
+ public String getDescription()
+ {
+ return _description;
+ }
+
+ /**
+ * @param description the description to set
+ */
+ public void setDescription(String description)
+ {
+ _description = description;
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Property.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Property.java
new file mode 100644
index 0000000..5386212
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/facescontext/Property.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata.facescontext;
+
+/**
+ * @author Andrew Robinson
+ */
+public class Property
+{
+ private String _name;
+ private String _propertyClass;
+ private String _description;
+ private String _defaultValue;
+ private String _attributeValues;
+
+ /**
+ * @return the name
+ */
+ public String getName()
+ {
+ return _name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ _name = name;
+ }
+
+ /**
+ * @return the propertyClass
+ */
+ public String getPropertyClass()
+ {
+ return _propertyClass;
+ }
+
+ /**
+ * @param propertyClass the propertyClass to set
+ */
+ public void setPropertyClass(String propertyClass)
+ {
+ _propertyClass = propertyClass;
+ }
+
+ /**
+ * @return the description
+ */
+ public String getDescription()
+ {
+ return _description;
+ }
+
+ /**
+ * @param description the description to set
+ */
+ public void setDescription(String description)
+ {
+ _description = description;
+ }
+
+ /**
+ * @return the defaultValue
+ */
+ public String getDefaultValue()
+ {
+ return _defaultValue;
+ }
+
+ /**
+ * @param defaultValue the defaultValue to set
+ */
+ public void setDefaultValue(String defaultValue)
+ {
+ _defaultValue = defaultValue;
+ }
+
+ /**
+ * @return the attributeValues
+ */
+ public String getAttributeValues()
+ {
+ return _attributeValues;
+ }
+
+ /**
+ * @param attributeValues the attributeValues to set
+ */
+ public void setAttributeValues(String attributeValues)
+ {
+ _attributeValues = attributeValues;
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/Attribute.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/Attribute.java
new file mode 100644
index 0000000..47d2651
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/Attribute.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata.tld;
+
+public class Attribute
+{
+ private String _name;
+ private String _description;
+ private String _deferredValueType;
+ private String _deferredValueMethod;
+ private boolean _required;
+
+ /**
+ * @return the name
+ */
+ public String getName()
+ {
+ return _name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ _name = name;
+ }
+
+ /**
+ * @return the description
+ */
+ public String getDescription()
+ {
+ return _description;
+ }
+
+ /**
+ * @param description the description to set
+ */
+ public void setDescription(String description)
+ {
+ _description = description;
+ }
+
+ /**
+ * @return the deferredValueType
+ */
+ public String getDeferredValueType()
+ {
+ return _deferredValueType;
+ }
+
+ /**
+ * @param deferredValueType the deferredValueType to set
+ */
+ public void setDeferredValueType(String deferredValueType)
+ {
+ _deferredValueType = deferredValueType;
+ }
+
+ /**
+ * @return the deferredValueMethod
+ */
+ public String getDeferredValueMethod()
+ {
+ return _deferredValueMethod;
+ }
+
+ /**
+ * @param deferredValueMethod the deferredValueMethod to set
+ */
+ public void setDeferredValueMethod(String deferredValueMethod)
+ {
+ _deferredValueMethod = deferredValueMethod;
+ }
+
+ /**
+ * @return the required
+ */
+ public boolean isRequired()
+ {
+ return _required;
+ }
+
+ /**
+ * @param required the required to set
+ */
+ public void setRequired(boolean required)
+ {
+ _required = required;
+ }
+}
\ No newline at end of file
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/Tag.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/Tag.java
new file mode 100644
index 0000000..b362683
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/Tag.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata.tld;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Tag
+{
+ private String _name;
+ private String _description;
+ private String _tagClass;
+ private Map<String, Attribute> _attributes = new HashMap<String, Attribute>();
+
+ /**
+ * @return the tagClass
+ */
+ public String getTagClass()
+ {
+ return _tagClass;
+ }
+
+ /**
+ * @param tagClass the tagClass to set
+ */
+ public void setTagClass(String tagClass)
+ {
+ _tagClass = tagClass;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName()
+ {
+ return _name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name)
+ {
+ _name = name;
+ }
+
+ /**
+ * @return the description
+ */
+ public String getDescription()
+ {
+ return _description;
+ }
+
+ /**
+ * @param description the description to set
+ */
+ public void setDescription(String description)
+ {
+ _description = description;
+ }
+
+ /**
+ * @return the attributes
+ */
+ public Map<String, Attribute> getAttributes()
+ {
+ return _attributes;
+ }
+
+ public void addAttribute(Attribute attr)
+ {
+ _attributes.put(attr.getName(), attr);
+ }
+}
\ No newline at end of file
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/TagLibrary.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/TagLibrary.java
new file mode 100644
index 0000000..95cc400
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/metadata/tld/TagLibrary.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.metadata.tld;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public class TagLibrary
+{
+ private String _shortName;
+ private Map<String, Tag> _tags = new HashMap<String, Tag>();
+
+ /**
+ * @return the shortName
+ */
+ public String getShortName()
+ {
+ return _shortName;
+ }
+
+ /**
+ * @param shortName the shortName to set
+ */
+ public void setShortName(String shortName)
+ {
+ _shortName = shortName;
+ }
+
+ public void addTag(Tag tag)
+ {
+ _tags.put(tag.getName(), tag);
+ }
+
+ /**
+ * @return the tags
+ */
+ public Map<String, Tag> getTags()
+ {
+ return _tags;
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/util/Functions.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/util/Functions.java
new file mode 100644
index 0000000..c5c6663
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/util/Functions.java
@@ -0,0 +1,22 @@
+/**
+ *
+ */
+package org.apache.myfaces.trinidadexhibition.util;
+
+import javax.faces.context.FacesContext;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public final class Functions
+{
+ private Functions() {}
+
+ public static String getActionURL(String viewId)
+ {
+ FacesContext facesContext = FacesContext.getCurrentInstance();
+ return facesContext.getApplication().getViewHandler().getActionURL(
+ facesContext, viewId);
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/ComponentIndexBean.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/ComponentIndexBean.java
new file mode 100644
index 0000000..b63c5a4
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/ComponentIndexBean.java
@@ -0,0 +1,42 @@
+/**
+ *
+ */
+package org.apache.myfaces.trinidadexhibition.webapp;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.myfaces.trinidadexhibition.util.UtilFunctions;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public class ComponentIndexBean
+{
+ private Map<String, Integer> _numRowsMap = null;
+
+ /**
+ * @return the numRowsMap
+ */
+ public Map<String, Integer> getNumRowsMap()
+ {
+ if (_numRowsMap == null)
+ {
+ synchronized (this)
+ {
+ if (_numRowsMap == null)
+ {
+ _numRowsMap = new HashMap<String, Integer>(3);
+ MetaDataBean metaData = UtilFunctions.evaluateEl("#{metaData}", MetaDataBean.class);
+ for (String str : new String[] { "tr", "trh", "trs" })
+ {
+ int count = metaData.getTagLibraries().get(str).getTags().size();
+ _numRowsMap.put(str, (int)Math.ceil(count / 3f));
+ }
+ }
+ }
+ }
+ return _numRowsMap;
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/MenusBean.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/MenusBean.java
new file mode 100644
index 0000000..ef69aa2
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/MenusBean.java
@@ -0,0 +1,40 @@
+/**
+ *
+ */
+package org.apache.myfaces.trinidadexhibition.webapp;
+
+import javax.faces.model.SelectItem;
+
+import org.apache.myfaces.trinidadexhibition.util.UtilFunctions;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public class MenusBean
+{
+ private final SelectItem[] _mainMenuItems;
+
+ public MenusBean()
+ {
+ _mainMenuItems = new SelectItem[] {
+ buildItem("menus_component_demo"),
+ buildItem("menus_feature_demo"),
+ buildItem("menus_example_apps"),
+ buildItem("menus_resources"),
+ };
+ }
+
+ /**
+ * @return the mainMenuItems
+ */
+ public SelectItem[] getMainMenuItems()
+ {
+ return _mainMenuItems;
+ }
+
+ private SelectItem buildItem(String key)
+ {
+ return new SelectItem(key, UtilFunctions.getBundleString(key));
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/MetaDataBean.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/MetaDataBean.java
new file mode 100644
index 0000000..f3cbbf7
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/MetaDataBean.java
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.webapp;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.faces.FacesException;
+import javax.servlet.jsp.tagext.JspTag;
+
+import org.apache.myfaces.trinidad.webapp.UIXComponentTag;
+import org.apache.myfaces.trinidadexhibition.metadata.MetaDataUtils;
+import org.apache.myfaces.trinidadexhibition.metadata.facescontext.FacesConfigData;
+import org.apache.myfaces.trinidadexhibition.metadata.tld.Tag;
+import org.apache.myfaces.trinidadexhibition.metadata.tld.TagLibrary;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public class MetaDataBean
+{
+ private String _version;
+ private Map<String, TagLibrary> _tagLibraries;
+ private FacesConfigData _facesConfigData;
+ private Map<String, String> _componentTypeToTagName = new HashMap<String, String>();
+ private Map<String, String> _tagNameToComponentType = new HashMap<String, String>();
+
+ public String getVersion()
+ throws IOException
+ {
+ if (_version == null)
+ {
+ synchronized (this)
+ {
+ if (_version == null)
+ {
+ _version = MetaDataUtils.getVersion();
+ }
+ }
+ }
+ return _version;
+ }
+
+ /**
+ * @return the tagLibraries
+ */
+ public Map<String, TagLibrary> getTagLibraries()
+ {
+ initTagLibraries();
+ return _tagLibraries;
+ }
+
+ /**
+ * @return the facesConfigData
+ */
+ public FacesConfigData getFacesConfigData()
+ {
+ initFacesConfigData();
+ return _facesConfigData;
+ }
+
+ /**
+ * @return the componentTypeToTagName
+ */
+ public Map<String, String> getComponentTypeToTagName()
+ {
+ return _componentTypeToTagName;
+ }
+
+ /**
+ * @return the tagNameToComponentType
+ */
+ public Map<String, String> getTagNameToComponentType()
+ {
+ return _tagNameToComponentType;
+ }
+
+ private void initFacesConfigData()
+ {
+ if (_facesConfigData != null) return;
+ synchronized (this)
+ {
+ if (_facesConfigData != null) return;
+
+ try
+ {
+ _facesConfigData = MetaDataUtils.getFacesConfigData();
+ }
+ catch (Exception ex)
+ {
+ throw new FacesException("Failed to parse faces-config data", ex);
+ }
+ }
+ }
+
+ private void initTagLibraries()
+ {
+ if (_tagLibraries != null) return;
+ synchronized (this)
+ {
+ if (_tagLibraries != null) return;
+ _tagLibraries = new HashMap<String, TagLibrary>();
+
+ try
+ {
+ _tagLibraries.put("tr", MetaDataUtils.getTagLibrary("tr"));
+ _tagLibraries.put("trh", MetaDataUtils.getTagLibrary("trh"));
+ _tagLibraries.put("trs", MetaDataUtils.getTagLibrary("trs"));
+
+ for (TagLibrary library : _tagLibraries.values())
+ {
+ for (Tag tag : library.getTags().values())
+ {
+ @SuppressWarnings("unchecked")
+ Class<JspTag> tagClass = (Class<JspTag>)Class.forName(tag.getTagClass());
+
+ if (UIXComponentTag.class.isAssignableFrom(tagClass))
+ {
+ UIXComponentTag jspTag = (UIXComponentTag)tagClass.newInstance();
+ String tagName = new StringBuilder(library.getShortName())
+ .append(':').append(tag.getName()).toString();
+ String compType = jspTag.getComponentType();
+ _componentTypeToTagName.put(compType, tagName);
+ _tagNameToComponentType.put(tagName, compType);
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new FacesException("Failed to parse TLD information", ex);
+ }
+ }
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/PreferencesBean.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/PreferencesBean.java
new file mode 100644
index 0000000..f6d6c66
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/PreferencesBean.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.webapp;
+
+
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public class PreferencesBean
+{
+ private String _skinFamily = "demo-skin";
+ private String _accessibilityMode;
+
+ /**
+ * @return the skinFamily
+ */
+ public String getSkinFamily()
+ {
+ return _skinFamily;
+ }
+
+ /**
+ * @param skinFamily the skinFamily to set
+ */
+ public void setSkinFamily(String skinFamily)
+ {
+ _skinFamily = skinFamily;
+ }
+
+ /**
+ * @return the accessibilityMode
+ */
+ public String getAccessibilityMode()
+ {
+ return _accessibilityMode;
+ }
+
+ /**
+ * @param accessibilityMode the accessibilityMode to set
+ */
+ public void setAccessibilityMode(String accessibilityMode)
+ {
+ _accessibilityMode = accessibilityMode;
+ }
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/SourceCodeServlet.java b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/SourceCodeServlet.java
new file mode 100644
index 0000000..309ec2b
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/java/org/apache/myfaces/trinidadexhibition/webapp/SourceCodeServlet.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
+ * or agreed to in writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.apache.myfaces.trinidadexhibition.webapp;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+
+public class SourceCodeServlet
+ extends HttpServlet
+{
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse res)
+ throws IOException, ServletException
+ {
+ String webPage = req.getServletPath();
+
+ // remove the '*.source' suffix that maps to this servlet
+ int source = webPage.indexOf(".source");
+ webPage = webPage.substring(0, source);
+
+ // remove "/faces" mapping if present
+ webPage = StringUtils.remove(webPage, "/faces");
+
+ // get the actual file location of the requested resource
+ String realPath =
+ getServletConfig().getServletContext().getRealPath(webPage);
+
+ // output an HTML page
+ res.setContentType("text/plain");
+
+ // print some html
+ ServletOutputStream out = res.getOutputStream();
+
+ // print the file
+ InputStream in = null;
+ try
+ {
+
+ in = new BufferedInputStream(new FileInputStream(realPath));
+ int ch;
+ while ((ch = in.read()) != -1)
+ {
+ out.print((char)ch);
+ }
+ }
+ finally
+ {
+ if (in != null)
+ in.close(); // very important
+ }
+ }
+
+}
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/resources/org/apache/myfaces/trinidadexhibition/BundleMessages.properties b/trinidad-examples/trinidad-exhibition/web/src/main/resources/org/apache/myfaces/trinidadexhibition/BundleMessages.properties
new file mode 100644
index 0000000..c320e47
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/resources/org/apache/myfaces/trinidadexhibition/BundleMessages.properties
@@ -0,0 +1,35 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+template_main_about_link=About
+template_main_about_title=About - Trinidad Exhibition
+template_main_about_version=Version:
+template_main_main_menu_text=Jump To
+
+template_component_view_source=View Source
+
+copyright=� 2008 The Apache Software Foundation
+
+menus_component_demo=Component Demonstration
+menus_feature_demo=Feature Demonstration
+menus_example_apps=Example Applications
+menus_resources=External Resource Links
+
+# /components/index.xhtml
+component_index_tab_tr=Trinidad Core
+component_index_tab_trh=Trinidad HTML
+component_index_tab_trs=Trinidad Sandbox
\ No newline at end of file
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/facelets/templates/component.xhtml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/facelets/templates/component.xhtml
new file mode 100644
index 0000000..fe4d0c2
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/facelets/templates/component.xhtml
@@ -0,0 +1,38 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<html
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:tr="http://myfaces.apache.org/trinidad"
+ xmlns:trh="http://myfaces.apache.org/trinidad/html"
+ xmlns:tre="http://myfaces.apache.org/trinidad/exhibition">
+ <body>
+ <ui:composition template="/WEB-INF/facelets/templates/main.xhtml">
+ <ui:define name="globalLinksStart">
+ <tre:viewSource text="#{msgs.template_component_view_source}" />
+ </ui:define>
+ </ui:composition>
+ </body>
+</html>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/facelets/templates/main.xhtml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/facelets/templates/main.xhtml
new file mode 100644
index 0000000..4c4221d
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/facelets/templates/main.xhtml
@@ -0,0 +1,161 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<tr:document
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:tr="http://myfaces.apache.org/trinidad"
+ xmlns:trh="http://myfaces.apache.org/trinidad/html"
+ xmlns:tre="http://myfaces.apache.org/trinidad/exhibition"
+ inlineStyle="height: 100%; width: 100%; margin: 0px; padding: 0px;">
+ <f:facet name="metaContainer">
+ <tr:group>
+ <ui:insert name="head" />
+ <style type="text/css">
+HTML,
+BODY,
+FORM {
+ height: 100%;
+ width: 100%;
+ margin: 0px;
+ padding: 0px;
+ overflow: auto;
+}
+DIV.templateBody {
+ position: absolute;
+ height: 100%;
+ width: 100%;
+ overflow: auto;
+}
+.aboutLabel,
+.aboutValue {
+ text-align: left;
+ vertical-align: top;
+}
+.aboutLabel {
+ font-weight: bold;
+}
+.aboutValue {
+ width: 100%;
+}
+ </style>
+ </tr:group>
+ </f:facet>
+ <tr:form id="mainForm">
+ <tr:panelBorderLayout
+ id="templateFrame"
+ layout="positioned"
+ inlineStyle="height: 99.9%; width: 99.9%; position: absolute; top: 0px; left: 0px;"
+ topHeight="45px"
+ rightWidth="225px"
+ bottomHeight="30px"
+ innerTopHeight="6px"
+ innerRightWidth="6px"
+ innerBottomHeight="6px"
+ innerLeftWidth="6px">
+ <f:facet name="top">
+ <tr:panelBorderLayout
+ layout="positioned"
+ inlineStyle="height: 100%; width: 100%; position: absolute; top: 0px; left: 0px;"
+ leftWidth="114px"
+ rightWidth="150px">
+ <f:facet
+ name="left">
+ <tr:group>
+ <div class="AFTitleBarLogo">
+ <h:outputText value=" " escape="false" />
+ </div>
+ </tr:group>
+ </f:facet>
+ <f:facet
+ name="right">
+ <tr:panelGroupLayout
+ inlineStyle="white-space: nowrap; display: block; overflow: hidden;
+ height: 100%; position: relative; padding-right: 6px;"
+ styleClass="AFTitleBar">
+ <f:facet name="separator">
+ <tr:outputText value=" | " escape="false" />
+ </f:facet>
+ <tr:panelPopup
+ triggerType="hover"
+ text="#{msgs.template_main_main_menu_text}">
+ <tr:iterator
+ var="_item"
+ value="#{menus.mainMenuItems}">
+ <tr:commandLink
+ partialSubmit="true"
+ immediate="true"
+ text="#{_item.label}"
+ action="#{_item.value}"
+ styleClass="popupMenuLink" />
+ </tr:iterator>
+ </tr:panelPopup>
+ <tr:panelPopup
+ id="aboutDialog"
+ text="#{msgs.template_main_about_link}"
+ modal="true"
+ width="450"
+ position="centered"
+ triggerType="click"
+ title="#{msgs.template_main_about_title}">
+ <h:panelGrid
+ columns="2"
+ columnClasses="aboutLabel, aboutValue"
+ styleClass="AFLogoWatermark"
+ style="height: 200px; width: 100%;">
+ <tr:outputText
+ value="#{msgs.template_main_about_version}" />
+ <tr:outputText
+ value="#{metaData.version}" />
+ </h:panelGrid>
+ </tr:panelPopup>
+ </tr:panelGroupLayout>
+ </f:facet>
+ <div class="AFTitleBarFade">
+ <tr:icon name="AFTitleBarFadeIcon" />
+ </div>
+ </tr:panelBorderLayout>
+ </f:facet>
+ <f:facet name="right">
+ <tr:group>
+ <div class="templateRight">
+ <ui:insert name="right" />
+ </div>
+ </tr:group>
+ </f:facet>
+ <f:facet name="innerTop"><tr:outputText value=" " escape="false" /></f:facet>
+ <f:facet name="innerRight"><tr:outputText value=" " escape="false" /></f:facet>
+ <f:facet name="innerBottom"><tr:outputText value=" " escape="false" /></f:facet>
+ <f:facet name="innerLeft"><tr:outputText value=" " escape="false" /></f:facet>
+ <f:facet name="bottom">
+ <tr:outputText
+ value="#{msgs.copyright}"
+ inlineStyle="display: block; padding-left: 8px;"
+ styleClass="AFPageFooter"/>
+ </f:facet>
+ <div
+ class="templateBody">
+ <ui:insert name="body" />
+ </div>
+ </tr:panelBorderLayout>
+ </tr:form>
+</tr:document>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/faces-config.xml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/faces-config.xml
new file mode 100644
index 0000000..f3bb6c0
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/faces-config.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<!DOCTYPE faces-config PUBLIC
+ "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
+ "http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >
+<faces-config>
+ <application>
+ <!-- Use the Trinidad RenderKit -->
+ <default-render-kit-id>
+ org.apache.myfaces.trinidad.core
+ </default-render-kit-id>
+
+ <locale-config>
+ <default-locale>en</default-locale>
+ <!-- TODO: add translations -->
+ </locale-config>
+
+ <message-bundle>
+ org.apache.myfaces.trinidadexhibition.BundleMessages
+ </message-bundle>
+
+ <resource-bundle>
+ <base-name>org.apache.myfaces.trinidadexhibition.BundleMessages</base-name>
+ <var>msgs</var>
+ </resource-bundle>
+ </application>
+
+ <managed-bean>
+ <description>
+ Bean for collecting faces meta data for use in the demo pages.
+ </description>
+ <managed-bean-name>metaData</managed-bean-name>
+ <managed-bean-class>
+ org.apache.myfaces.trinidadexhibition.webapp.MetaDataBean
+ </managed-bean-class>
+ <managed-bean-scope>application</managed-bean-scope>
+ </managed-bean>
+
+ <managed-bean>
+ <description>
+ Bean for managing the exhibition menus
+ </description>
+ <managed-bean-name>menus</managed-bean-name>
+ <managed-bean-class>
+ org.apache.myfaces.trinidadexhibition.webapp.MenusBean
+ </managed-bean-class>
+ </managed-bean>
+
+ <managed-bean>
+ <description>
+ Bean for storing the application preferences
+ </description>
+ <managed-bean-name>prefs</managed-bean-name>
+ <managed-bean-class>
+ org.apache.myfaces.trinidadexhibition.webapp.PreferencesBean
+ </managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+
+ <managed-bean>
+ <description>
+ Bean for the component index page
+ </description>
+ <managed-bean-name>componentIndex</managed-bean-name>
+ <managed-bean-class>
+ org.apache.myfaces.trinidadexhibition.webapp.ComponentIndexBean
+ </managed-bean-class>
+ <managed-bean-scope>application</managed-bean-scope>
+ </managed-bean>
+
+ <navigation-rule>
+ <!-- Global rules -->
+
+ <!-- Main menu -->
+ <navigation-case>
+ <from-outcome>menus_component_demo</from-outcome>
+ <to-view-id>/components/index.xhtml</to-view-id>
+ <redirect/>
+ </navigation-case>
+ <navigation-case>
+ <from-outcome>menus_feature_demo</from-outcome>
+ <to-view-id>/features/index.xhtml</to-view-id>
+ <redirect/>
+ </navigation-case>
+ <navigation-case>
+ <from-outcome>menus_example_apps</from-outcome>
+ <to-view-id>/examples/index.xhtml</to-view-id>
+ <redirect/>
+ </navigation-case>
+ <navigation-case>
+ <from-outcome>menus_resources</from-outcome>
+ <to-view-id>resources.xhtml</to-view-id>
+ <redirect/>
+ </navigation-case>
+ </navigation-rule>
+
+</faces-config>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trfn.taglib.xml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trfn.taglib.xml
new file mode 100644
index 0000000..1d51aff
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trfn.taglib.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE facelet-taglib
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN" "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
+<facelet-taglib xmlns="http://java.sun.com/JSF/Facelet">
+ <namespace>http://myfaces.apache.org/trinidad/exhibition/functions</namespace>
+ <function>
+ <function-name>getActionURL</function-name>
+ <function-class>org.apache.myfaces.trinidadexhibition.util.Functions</function-class>
+ <function-signature>java.lang.String getActionURL(java.lang.String)</function-signature>
+ </function>
+</facelet-taglib>
\ No newline at end of file
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trinidad-config.xml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trinidad-config.xml
new file mode 100644
index 0000000..9353b6a
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trinidad-config.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">
+ <debug-output>true</debug-output>
+ <!-- Uncomment to switch back to ALERT style client-side validation,
+ or set to DISABLED to disable it altogether
+ <client-validation>ALERT</client-validation>
+ -->
+ <accessibility-mode>#{prefs.accessibilityMode}</accessibility-mode>
+ <skin-family>#{prefs.skinFamily}</skin-family>
+
+</trinidad-config>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trinidad-skins.xml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trinidad-skins.xml
new file mode 100644
index 0000000..33e98ed
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/trinidad-skins.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<skins xmlns="http://myfaces.apache.org/trinidad/skin">
+ <skin>
+ <id>test-myfaces.desktop</id>
+ <family>test-myfaces</family>
+ <extends>simple.desktop</extends>
+ <render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id>
+ <style-sheet-name>skins/test-myfaces/test-myfaces.css</style-sheet-name>
+ </skin>
+ <skin>
+ <id>demo-skin.desktop</id>
+ <family>demo-skin</family>
+ <extends>test-myfaces.desktop</extends>
+ <render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id>
+ <style-sheet-name>skins/demo-skin/demo-skin.css</style-sheet-name>
+ </skin>
+</skins>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/web.xml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..0af0796
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,194 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1'?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+
+ <context-param>
+ <param-name>facelets.LIBRARIES</param-name>
+ <param-value>/WEB-INF/trfn.taglib.xml</param-value>
+ </context-param>
+
+ <!-- Use client-side state saving. In Trinidad, it is an
+ optimized, token-based mechanism that is almost always a
+ better choice than the standard JSF server-side state saving. -->
+ <context-param>
+ <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+ <param-value>client</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
+ <param-value>.xhtml</param-value>
+ </context-param>
+
+ <!-- Parameter to set the maximum number of client view state tokens.
+ Uncomment this to test low-token-count scenarios.
+ <context-param>
+ <param-name>org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS</param-name>
+ <param-value>3</param-value>
+ </context-param>
+ -->
+
+ <!-- Trinidad by default uses an optimized client-side state saving
+ mechanism. To disable that, uncomment the following -->
+ <!--context-param>
+ <param-name>org.apache.myfaces.trinidad.CLIENT_STATE_METHOD</param-name>
+ <param-value>all</param-value>
+ </context-param-->
+
+ <!-- Trinidad also supports an optimized strategy for caching some
+ view state at an application level, which significantly improves
+ scalability. However, it makes it harder to develop (updates to
+ pages will not be noticed until the server is restarted), and in
+ some rare cases cannot be used for some pages (see Trinidad
+ documentation for more information) -->
+ <context-param>
+ <param-name>org.apache.myfaces.trinidad.USE_APPLICATION_VIEW_CACHE</param-name>
+ <param-value>false</param-value>
+ </context-param>
+
+ <!-- Comment this if you are not debugging skinning and want the
+ styleclasses to not be compressed -->
+ <context-param>
+ <param-name>org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <!-- If this parameter is enabled, Trinidad will automatically
+ check the modification date of your JSPs, and discard saved
+ state when they change. Trinidad will also automatically check
+ if your skinning css files have changed without having to restart
+ the server; this makes development easier,
+ but adds overhead that should be avoided when your application
+ is deployed. -->
+ <context-param>
+ <param-name>org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <!-- Enables Change Persistence at a session scope. By default,
+ Change Persistence is entirely disabled. The ChangeManager is
+ an API, which can persist component modifications (like,
+ is a showDetail or tree expanded or collapsed). For providing
+ a custom Change Persistence implementation inherit from the
+ Trinidad API's ChangeManager class. As the value you have
+ to use the fullqualified class name. -->
+ <!--context-param>
+ <param-name>org.apache.myfaces.trinidad.CHANGE_PERSISTENCE</param-name>
+ <param-value>session</param-value>
+ </context-param-->
+
+ <context-param>
+ <param-name>org.apache.myfaces.trinidad.resource.DEBUG</param-name>
+ <param-value>false</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <!-- With setting this parameter you are able to specify the logical
+ outcome prefix to launch the dialog framework. If not set, the
+ default value (dialog:) is used. -->
+ <!--context-param>
+ <param-name>org.apache.myfaces.trinidad.DIALOG_NAVIGATION_PREFIX</param-name>
+ <param-value>userInputHere:</param-value>
+ </context-param-->
+
+ <context-param>
+ <param-name>org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER</param-name>
+ <param-value>com.sun.facelets.FaceletViewHandler</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>facelets.VIEW_MAPPINGS</param-name>
+ <param-value>*.xhtml</param-value>
+ </context-param>
+
+ <context-param>
+ <param-name>facelets.SKIP_COMMENTS</param-name>
+ <param-value>true</param-value>
+ </context-param>
+
+ <filter>
+ <filter-name>trinidad</filter-name>
+ <filter-class>org.apache.myfaces.trinidad.webapp.TrinidadFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>trinidad</filter-name>
+ <servlet-name>faces</servlet-name>
+ </filter-mapping>
+
+ <!-- Faces Servlet -->
+ <servlet>
+ <servlet-name>faces</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ </servlet>
+
+ <!-- resource loader servlet -->
+ <servlet>
+ <servlet-name>resources</servlet-name>
+ <servlet-class>org.apache.myfaces.trinidad.webapp.ResourceServlet</servlet-class>
+ </servlet>
+
+ <!-- source code servlet -->
+ <servlet>
+ <servlet-name>source</servlet-name>
+ <servlet-class>
+ org.apache.myfaces.trinidadexhibition.webapp.SourceCodeServlet
+ </servlet-class>
+ </servlet>
+
+ <!-- Faces Servlet Mappings -->
+ <servlet-mapping>
+ <servlet-name>faces</servlet-name>
+ <url-pattern>/faces/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>faces</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>resources</servlet-name>
+ <url-pattern>/adf/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>resources</servlet-name>
+ <url-pattern>/myfaces_skin/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>source</servlet-name>
+ <url-pattern>*.source</url-pattern>
+ </servlet-mapping>
+
+ <!-- Welcome Files -->
+ <welcome-file-list>
+ <welcome-file>index.jsf</welcome-file>
+ </welcome-file-list>
+</web-app>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/components/index.xhtml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/components/index.xhtml
new file mode 100644
index 0000000..029a586
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/components/index.xhtml
@@ -0,0 +1,54 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<html
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:tr="http://myfaces.apache.org/trinidad"
+ xmlns:trh="http://myfaces.apache.org/trinidad/html"
+ xmlns:tre="http://myfaces.apache.org/trinidad/exhibition"
+ xmlns:trfn="http://myfaces.apache.org/trinidad/exhibition/functions">
+ <body>
+ <ui:composition template="/WEB-INF/facelets/templates/main.xhtml">
+ <ui:define name="body">
+ <tr:panelTabbed>
+ <tr:showDetailItem
+ text="#{msgs.component_index_tab_tr}">
+ <tr:panelList
+ rows="#{componentIndex.numRowsMap['tr']}">
+ <tr:goLink
+
+ </tr:panelList>
+ </tr:showDetailItem>
+ <tr:showDetailItem
+ text="#{msgs.component_index_tab_trh}">
+ </tr:showDetailItem>
+ <tr:showDetailItem
+ text="#{msgs.component_index_tab_trs}">
+ </tr:showDetailItem>
+ </tr:panelTabbed>
+ </ui:define>
+ </ui:composition>
+ </body>
+</html>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/index.xhtml b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/index.xhtml
new file mode 100644
index 0000000..fb6cc71
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/index.xhtml
@@ -0,0 +1,57 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<html
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:c="http://java.sun.com/jstl/core"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:fn="http://java.sun.com/jsp/jstl/functions"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:tr="http://myfaces.apache.org/trinidad"
+ xmlns:trh="http://myfaces.apache.org/trinidad/html"
+ xmlns:tre="http://myfaces.apache.org/trinidad/exhibition">
+ <body>
+ <ui:composition template="/WEB-INF/facelets/templates/main.xhtml">
+ <ui:define name="body">
+ Tree: <tr:outputText value="#{metaData.tagLibraries['tr'].tags['tree'].description}" escape="false" /><br/>
+ Tree component:
+ <tr:outputText
+ value="#{metaData.facesConfigData.components['org.apache.myfaces.trinidad.CoreTree'].description}"
+ escape="false" /><br/>
+ forEach: <tr:outputText value="#{metaData.tagLibraries['tr'].tags['forEach'].description}" escape="false" /><br/>
+
+ <tr:panelBox background="dark">
+ Test1
+ </tr:panelBox>
+ <tr:panelBox background="medium">
+ Test2
+ </tr:panelBox>
+ <tr:panelBox background="light">
+ Test3
+ </tr:panelBox>
+ <tr:panelBox background="transparent">
+ Test4
+ </tr:panelBox>
+ #{prefs.skinFamily}
+ </ui:define>
+ </ui:composition>
+ </body>
+</html>
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/skins/demo-skin/demo-skin.css b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/skins/demo-skin/demo-skin.css
new file mode 100644
index 0000000..16a39e1
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/skins/demo-skin/demo-skin.css
@@ -0,0 +1,8 @@
+/* This file holds the extensions to the myfaces skin that are specific to the demo */
+
+.OraLink.popupMenuLink {
+ display: block;
+ white-space: nowrap;
+ padding: 0px 8px;
+ padding-top: 2px;
+}
\ No newline at end of file
diff --git a/trinidad-examples/trinidad-exhibition/web/src/main/webapp/skins/test-myfaces/README b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/skins/test-myfaces/README
new file mode 100644
index 0000000..b07c543
--- /dev/null
+++ b/trinidad-examples/trinidad-exhibition/web/src/main/webapp/skins/test-myfaces/README
@@ -0,0 +1,9 @@
+This is not a real skin, but a way for developers to change and test the myfaces skin
+without having to re-deploy the skin jar over and over again.
+
+To use, execute this command from the trinidad-exhibition working copy directory on a Linux OS:
+(cd web/src/main/webapp/skins/test-myfaces/ && \
+ln -snf ../../../../../../../../trinidad-skins/myfaces-skin/src/main/resources/META-INF/style/myfaces-desktop.css \
+test-myfaces.css)
+
+Now all changes to this test skin will be made to the real one.
\ No newline at end of file
diff --git a/trinidad-skins/myfaces-skin/pom.xml b/trinidad-skins/myfaces-skin/pom.xml
new file mode 100644
index 0000000..c976915
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/pom.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>trinidad-myfaces-skin</artifactId>
+
+ <name>Apache MyFaces Trinidad MyFaces Skin</name>
+ <description>
+ Skin to make Trinidad resemble the look and feel of the MyFaces site
+ </description>
+
+ <parent>
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad</artifactId>
+ <version>1.2.8-SNAPSHOT</version>
+ </parent>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-api</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
+ <artifactId>trinidad-impl</artifactId>
+ <version>${pom.version}</version>
+ </dependency>
+ </dependencies>
+
+</project>
+
diff --git a/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/resource/MyFacesSkinImageResourceLoader.java b/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/resource/MyFacesSkinImageResourceLoader.java
new file mode 100644
index 0000000..3efc385
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/resource/MyFacesSkinImageResourceLoader.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidad.resource;
+
+import java.io.IOException;
+import java.net.URL;
+
+/**
+ * Loads images for the MyFaces skin
+ */
+public class MyFacesSkinImageResourceLoader
+ extends ClassLoaderResourceLoader
+{
+ public MyFacesSkinImageResourceLoader()
+ {
+ super("META-INF/images");
+ }
+
+ /**
+ * @see org.apache.myfaces.trinidad.resource.ClassLoaderResourceLoader#findResource(
+ * java.lang.String)
+ */
+ @Override
+ protected URL findResource(String path) throws IOException
+ {
+ if (path != null && path.startsWith("/myfaces_skin"))
+ {
+ path = path.substring(13);
+ }
+ return super.findResource(path);
+ }
+}
diff --git a/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/resource/MyFacesSkinResourceLoader.java b/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/resource/MyFacesSkinResourceLoader.java
new file mode 100644
index 0000000..ce82dda
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/resource/MyFacesSkinResourceLoader.java
@@ -0,0 +1,17 @@
+/**
+ *
+ */
+package org.apache.myfaces.trinidad.resource;
+
+/**
+ *
+ * @author Andrew Robinson
+ */
+public class MyFacesSkinResourceLoader
+ extends RegexResourceLoader
+{
+ public MyFacesSkinResourceLoader()
+ {
+ register("(/.*\\.(jgp|gif|png|jpeg|cur))", new MyFacesSkinImageResourceLoader());
+ }
+}
diff --git a/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/skins/MyFacesSkinLoader.java b/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/skins/MyFacesSkinLoader.java
new file mode 100644
index 0000000..ad4fab7
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/java/org/apache/myfaces/trinidad/skins/MyFacesSkinLoader.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.trinidad.skins;
+
+import javax.faces.context.ExternalContext;
+
+import org.apache.myfaces.trinidad.config.Configurator;
+import org.apache.myfaces.trinidad.skin.SkinFactory;
+import org.apache.myfaces.trinidadinternal.skin.SkinExtension;
+
+/**
+ * Loads the skins into the skin factory
+ *
+ * @author Andrew Robinson
+ */
+public class MyFacesSkinLoader
+ extends Configurator
+{
+ /**
+ * @see org.apache.myfaces.trinidad.config.Configurator#init(javax.faces.context.ExternalContext)
+ */
+ @Override
+ public void init(ExternalContext externalContext)
+ {
+ super.init(externalContext);
+
+ SkinFactory skinFactory = SkinFactory.getFactory();
+
+ SkinExtension skin = new SkinExtension(
+ skinFactory.getSkin(null, "simple.desktop"),
+ "myfaces.desktop",
+ "myfaces",
+ "org.apache.myfaces.trinidad.desktop",
+ "META-INF/style/myfaces-desktop.css");
+
+ skinFactory.addSkin(skin.getId(), skin);
+
+ skin = new SkinExtension(
+ skinFactory.getSkin(null, "simple.pda"),
+ "myfaces.pda",
+ "myfaces",
+ "org.apache.myfaces.trinidad.pda",
+ "META-INF/style/myfaces-pda.css");
+
+ skinFactory.addSkin(skin.getId(), skin);
+ }
+}
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-1.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-1.png
new file mode 100644
index 0000000..cb82ada
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-1.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-2.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-2.png
new file mode 100644
index 0000000..3effe10
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-2.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-3.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-3.png
new file mode 100644
index 0000000..e9d793d
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/bg-fade-3.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/brown-bullet.gif b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/brown-bullet.gif
new file mode 100644
index 0000000..a4357cb
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/brown-bullet.gif differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/dialog-close.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/dialog-close.png
new file mode 100644
index 0000000..edf5f76
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/dialog-close.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/external-link.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/external-link.png
new file mode 100644
index 0000000..3f999fc
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/external-link.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/footer-bg.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/footer-bg.png
new file mode 100644
index 0000000..5e3f9cd
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/footer-bg.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/menu-expand.gif b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/menu-expand.gif
new file mode 100644
index 0000000..b964caf
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/menu-expand.gif differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-small.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-small.png
new file mode 100644
index 0000000..b8c532b
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-small.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text-small.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text-small.png
new file mode 100644
index 0000000..361192c
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text-small.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text-watermark.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text-watermark.png
new file mode 100644
index 0000000..318314c
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text-watermark.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text.png
new file mode 100644
index 0000000..a401785
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo-with-text.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo.png
new file mode 100644
index 0000000..43e4a48
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/myfaces-logo.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/orange-bullet.gif b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/orange-bullet.gif
new file mode 100644
index 0000000..a23c02b
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/orange-bullet.gif differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom-left.png
new file mode 100644
index 0000000..07b0acf
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom-right.png
new file mode 100644
index 0000000..5d85cab
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom.png
new file mode 100644
index 0000000..1fd108a
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-bottom.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-center.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-center.png
new file mode 100644
index 0000000..355358c
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-center.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-left.png
new file mode 100644
index 0000000..d8e774b
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-right.png
new file mode 100644
index 0000000..14378bb
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top-left.png
new file mode 100644
index 0000000..60fe49b
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top-right.png
new file mode 100644
index 0000000..3e29bae
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top.png
new file mode 100644
index 0000000..df7d42e
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-dark-top.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom-left.png
new file mode 100644
index 0000000..dbc7029
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom-right.png
new file mode 100644
index 0000000..9e72eb6
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom.png
new file mode 100644
index 0000000..303496d
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-bottom.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-center.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-center.png
new file mode 100644
index 0000000..82deaec
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-center.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-left.png
new file mode 100644
index 0000000..670b3b5
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-right.png
new file mode 100644
index 0000000..ca4fbdc
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top-left.png
new file mode 100644
index 0000000..c8cb777
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top-right.png
new file mode 100644
index 0000000..856a33c
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top.png
new file mode 100644
index 0000000..3ac7050
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-light-top.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom-left.png
new file mode 100644
index 0000000..dcaf41e
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom-right.png
new file mode 100644
index 0000000..062e5ae
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom.png
new file mode 100644
index 0000000..a4b529f
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-bottom.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-center.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-center.png
new file mode 100644
index 0000000..627bfa1
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-center.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-left.png
new file mode 100644
index 0000000..a700996
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-right.png
new file mode 100644
index 0000000..9a20e10
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top-left.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top-left.png
new file mode 100644
index 0000000..7a66b8a
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top-left.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top-right.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top-right.png
new file mode 100644
index 0000000..763a000
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top-right.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top.png
new file mode 100644
index 0000000..44f5d2d
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/panel-box-medium-top.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/title-bg-fade.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/title-bg-fade.png
new file mode 100644
index 0000000..f0edab9
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/title-bg-fade.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/title-bg.png b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/title-bg.png
new file mode 100644
index 0000000..7b41b40
Binary files /dev/null and b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/images/title-bg.png differ
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.Configurator b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.Configurator
new file mode 100644
index 0000000..9e40c1f
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/services/org.apache.myfaces.trinidad.config.Configurator
@@ -0,0 +1 @@
+org.apache.myfaces.trinidad.skins.MyFacesSkinLoader
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/servlets/resources/myfaces_skin.resources b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/servlets/resources/myfaces_skin.resources
new file mode 100644
index 0000000..03bc138
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/servlets/resources/myfaces_skin.resources
@@ -0,0 +1 @@
+org.apache.myfaces.trinidad.resource.MyFacesSkinResourceLoader
\ No newline at end of file
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/style/myfaces-desktop.css b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/style/myfaces-desktop.css
new file mode 100644
index 0000000..d602da0
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/style/myfaces-desktop.css
@@ -0,0 +1,315 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+.AFBackgroundLightGradientStart:alias {
+ background-color: #ecf2e4;
+}
+.AFBackgroundLightGradientEnd:alias {
+ background-color: #dae5cb;
+}
+.AFLightTextColor:alias {
+ color: #669900;
+}
+.AFLightTextDisabledColor:alias {
+ color: #8c9973
+}
+.AFDarkTextColor:alias {
+ color: #705F38;
+}
+.AFDarkTextDisabledColor:alias {
+ color: #706b5f;
+}
+.AFTextColorHover:alias {
+ color: #FF9900;
+}
+.AFLightElementBorder:alias {
+ border: 1px solid #669900;
+}
+
+.AFDefaultLink:alias {
+ text-decoration: none;
+ -tr-rule-ref:selector(".AFLightTextColor:alias");
+}
+.AFDefaultLinkHover:alias {
+ text-decoration: none;
+ -tr-rule-ref:selector(".AFTextColorHover:alias");
+}
+.AFDefaultLinkDisabled:alias {
+ text-decoration: none;
+ -tr-rule-ref:selector(".AFLightTextDisabledColor:alias");
+}
+
+.AFLinkAccessKeyStyle:alias {
+ text-decoration: underline;
+}
+.OraLink,
+.OraLink:link,
+.OraLinkText,
+.OraLink:visited,
+.p_OraTreeRow A,
+.p_OraTreeRow A:link,
+.p_OraTreeRow A:visited,
+.OraNavBarActiveLink {
+ -tr-rule-ref:selector(".AFDefaultLink:alias");
+ -tr-rule-ref:selector(".AFDefaultFont:alias");
+}
+.OraLink:hover,
+.p_OraTreeRow A:hover,
+.OraNavBarActiveLink:hover {
+ -tr-rule-ref:selector(".AFDefaultLinkHover:alias");
+}
+.OraLinkDisabled,
+.OraLinkDisabled:hover {
+ -tr-rule-ref:selector(".AFDefaultLinkDisabled:alias");
+}
+
+.AFFormControlContent {
+ width: 150px;
+ background-position: top;
+ background-repeat: repeat-x;
+}
+af|inputText::content {
+ -tr-rule-ref:selector(".AFFormControlContent:alias");
+ -tr-rule-ref:selector(".AFLightElementBorder:alias");
+ /*background-image: TODO */
+}
+
+.AFRequiredIcon:alias {
+ content: '*';
+}
+.AFTitleBar,
+.AFTitleBar .OraLink,
+.AFTitleBar .OraLink:link,
+.AFTitleBar .OraLink:visited {
+ color: white;
+}
+.AFTitleBar .OraLink:hover {
+ text-decoration: underline;
+}
+
+.AFTitleBar {
+ background-image: url(/myfaces_skin/title-bg.png);
+ background-position: top;
+ background-repeat: repeat-x;
+ height: 45px;
+ line-height: 45px;
+ text-align: right;
+}
+.AFTitleBarLogo {
+ background-image: url(/myfaces_skin/myfaces-logo-with-text-small.png);
+ background-position: top left;
+ background-repeat: no-repeat;
+ height: 45px;
+ line-height: 45px;
+ width: 114px;
+}
+.AFTitleBarFade IMG {
+ /* Use an indirect selector as percentages are not allowed for icons */
+ height: 45px;
+ width: 100%;
+}
+.AFTitleBarFadeIcon:alias {
+ content: url(/myfaces_skin/title-bg-fade.png);
+}
+.AFLogoWatermark {
+ background-image: url(/myfaces_skin/myfaces-logo-with-text-watermark.png);
+ background-position: center;
+ background-repeat: no-repeat;
+ background-attachment: fixed;
+ background-color: white;
+ color: black;
+}
+.AFPageFooter {
+ height: 30px;
+ line-height: 30px;
+ background-image: url(/myfaces_skin/footer-bg.png);
+ background-position: bottom;
+ background-repeat: repeat-x;
+ color: white;
+ font-size: x-small;
+}
+
+/* af|panelPopup */
+af|panelPopup::title-bar {
+ background-color: #51822c;
+ border-width: 0px;
+}
+af|panelPopup::title-text {
+ font-weight: bold;
+ color: white;
+}
+af|panelPopup::content {
+ background-color: white;
+}
+af|panelPopup::container {
+ -tr-rule-ref:selector('.AFLightElementBorder:alias');
+}
+af|panelPopup::close-icon {
+ content: url(/myfaces_skin/dialog-close.png);
+}
+
+/* af|panelBox */
+.AFPanelBoxCorner:alias {
+ width: 10px;
+ height: 10px;
+ background-repeat: no-repeat;
+}
+.AFPanelBoxTopBottom:alias {
+ height: 10px;
+ background-repeat: repeat-x;
+}
+.AFPanelBoxLeftRight:alias {
+ width: 10px;
+ background-repeat: repeat-y;
+ background-position: top;
+}
+.AFPanelBoxCenter:alias {
+ background-position: top;
+ background-repeat: repeat-x;
+}
+af|panelBox::dark af|panelBox::body {
+ background-image: url(/myfaces_skin/panel-box-dark-center.png);
+ color: white;
+ -tr-rule-ref:selector('.AFPanelBoxCenter:alias');
+}
+af|panelBox::dark af|panelBox::top-start:ltr,
+af|panelBox::dark af|panelBox::top-end:rtl {
+ background-image: url(/myfaces_skin/panel-box-dark-top-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::dark af|panelBox::top-end:ltr,
+af|panelBox::dark af|panelBox::top-start:rtl {
+ background-image: url(/myfaces_skin/panel-box-dark-top-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::dark af|panelBox::bottom-start:ltr,
+af|panelBox::dark af|panelBox::bottom-end:rtl {
+ background-image: url(/myfaces_skin/panel-box-dark-bottom-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::dark af|panelBox::bottom-end:ltr,
+af|panelBox::dark af|panelBox::bottom-start:rtl {
+ background-image: url(/myfaces_skin/panel-box-dark-bottom-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::dark af|panelBox::top {
+ background-image: url(/myfaces_skin/panel-box-dark-top.png);
+ -tr-rule-ref:selector('.AFPanelBoxTopBottom:alias');
+}
+af|panelBox::dark af|panelBox::bottom {
+ background-image: url(/myfaces_skin/panel-box-dark-bottom.png);
+ -tr-rule-ref:selector('.AFPanelBoxTopBottom:alias');
+}
+af|panelBox::dark af|panelBox::start:ltr,
+af|panelBox::dark af|panelBox::end:rtl {
+ background-image: url(/myfaces_skin/panel-box-dark-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxLeftRight:alias');
+}
+af|panelBox::dark af|panelBox::end:ltr,
+af|panelBox::dark af|panelBox::start:rtl {
+ background-image: url(/myfaces_skin/panel-box-dark-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxLeftRight:alias');
+}
+af|panelBox::medium af|panelBox::body {
+ background-image: url(/myfaces_skin/panel-box-medium-center.png);
+ color: black;
+ background-color: #f4f1ea;
+ -tr-rule-ref:selector('.AFPanelBoxCenter:alias');
+}
+af|panelBox::medium af|panelBox::top-start:ltr,
+af|panelBox::medium af|panelBox::top-end:rtl {
+ background-image: url(/myfaces_skin/panel-box-medium-top-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::medium af|panelBox::top-end:ltr,
+af|panelBox::medium af|panelBox::top-start:rtl {
+ background-image: url(/myfaces_skin/panel-box-medium-top-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::medium af|panelBox::bottom-start:ltr,
+af|panelBox::medium af|panelBox::bottom-end:rtl {
+ background-image: url(/myfaces_skin/panel-box-medium-bottom-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::medium af|panelBox::bottom-end:ltr,
+af|panelBox::medium af|panelBox::bottom-start:rtl {
+ background-image: url(/myfaces_skin/panel-box-medium-bottom-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::medium af|panelBox::top {
+ background-image: url(/myfaces_skin/panel-box-medium-top.png);
+ -tr-rule-ref:selector('.AFPanelBoxTopBottom:alias');
+}
+af|panelBox::medium af|panelBox::bottom {
+ background-image: url(/myfaces_skin/panel-box-medium-bottom.png);
+ -tr-rule-ref:selector('.AFPanelBoxTopBottom:alias');
+}
+af|panelBox::medium af|panelBox::start:ltr,
+af|panelBox::medium af|panelBox::end:rtl {
+ background-image: url(/myfaces_skin/panel-box-medium-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxLeftRight:alias');
+}
+af|panelBox::medium af|panelBox::end:ltr,
+af|panelBox::medium af|panelBox::start:rtl {
+ background-image: url(/myfaces_skin/panel-box-medium-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxLeftRight:alias');
+}
+af|panelBox::light af|panelBox::body {
+ background-image: url(/myfaces_skin/panel-box-light-center.png);
+ color: black;
+ background-color: #fafafa;
+ -tr-rule-ref:selector('.AFPanelBoxCenter:alias');
+}
+af|panelBox::light af|panelBox::top-start:ltr,
+af|panelBox::light af|panelBox::top-end:rtl {
+ background-image: url(/myfaces_skin/panel-box-light-top-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::light af|panelBox::top-end:ltr,
+af|panelBox::light af|panelBox::top-start:rtl {
+ background-image: url(/myfaces_skin/panel-box-light-top-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::light af|panelBox::bottom-start:ltr,
+af|panelBox::light af|panelBox::bottom-end:rtl {
+ background-image: url(/myfaces_skin/panel-box-light-bottom-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::light af|panelBox::bottom-end:ltr,
+af|panelBox::light af|panelBox::bottom-start:rtl {
+ background-image: url(/myfaces_skin/panel-box-light-bottom-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxCorner:alias');
+}
+af|panelBox::light af|panelBox::top {
+ background-image: url(/myfaces_skin/panel-box-light-top.png);
+ -tr-rule-ref:selector('.AFPanelBoxTopBottom:alias');
+}
+af|panelBox::light af|panelBox::bottom {
+ background-image: url(/myfaces_skin/panel-box-light-bottom.png);
+ -tr-rule-ref:selector('.AFPanelBoxTopBottom:alias');
+}
+af|panelBox::light af|panelBox::start:ltr,
+af|panelBox::light af|panelBox::end:rtl {
+ background-image: url(/myfaces_skin/panel-box-light-left.png);
+ -tr-rule-ref:selector('.AFPanelBoxLeftRight:alias');
+}
+af|panelBox::light af|panelBox::end:ltr,
+af|panelBox::light af|panelBox::start:rtl {
+ background-image: url(/myfaces_skin/panel-box-light-right.png);
+ -tr-rule-ref:selector('.AFPanelBoxLeftRight:alias');
+}
\ No newline at end of file
diff --git a/trinidad-skins/myfaces-skin/src/main/resources/META-INF/style/myfaces-pda.css b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/style/myfaces-pda.css
new file mode 100644
index 0000000..48e70a7
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/resources/META-INF/style/myfaces-pda.css
@@ -0,0 +1 @@
+/* TODO */
\ No newline at end of file
diff --git a/trinidad-skins/myfaces-skin/src/main/svg/dark-panel-box.svg b/trinidad-skins/myfaces-skin/src/main/svg/dark-panel-box.svg
new file mode 100644
index 0000000..ca9e51d
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/svg/dark-panel-box.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="200"
+ height="200"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="dark-panel-box.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/anrobins/development/trinidad/branches/exhibition/trinidad-skins/myfaces-skin/src/main/svg/light-panel-box.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4410">
+ <stop
+ style="stop-color:#a4bf7a;stop-opacity:1;"
+ offset="0"
+ id="stop4412" />
+ <stop
+ id="stop4502"
+ offset="0.76664793"
+ style="stop-color:#a4bf7a;stop-opacity:1;" />
+ <stop
+ style="stop-color:#7baf55;stop-opacity:1;"
+ offset="1"
+ id="stop4414" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4410"
+ id="linearGradient4416"
+ x1="186.06427"
+ y1="431.15625"
+ x2="186.27887"
+ y2="244"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter4498">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.5075"
+ id="feGaussianBlur4500" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6153845"
+ inkscape:cx="99.99999"
+ inkscape:cy="100.68715"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:snap-guide="true"
+ inkscape:window-width="1149"
+ inkscape:window-height="741"
+ inkscape:window-x="13"
+ inkscape:window-y="1070" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Outer blur"
+ transform="translate(-82.35714,-237.57646)"
+ style="display:inline">
+ <rect
+ rx="19.54303"
+ ry="19.54303"
+ y="237.07646"
+ x="82.85714"
+ height="200"
+ width="200"
+ id="rect2411"
+ style="opacity:0.45;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#7baf55;stroke-width:0.99984616000000004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4498);stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(0.9701492,0,0,0.9701493,4.9584221,10.562004)" />
+ </g>
+ <g
+ inkscape:label="Outer border"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="opacity:1;display:inline"
+ transform="translate(-82.35714,-237.57646)">
+ <rect
+ style="fill:#7baf55;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.49302216999999998px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.59793814"
+ id="rect2403"
+ width="191.50697"
+ height="191.50697"
+ x="86.603653"
+ y="241.82297"
+ ry="16.692278"
+ rx="16.692278" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="White border"
+ style="display:inline">
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="-2.1797111"
+ inkscape:original="M 103.28125 241.8125 C 94.033728 241.8125 86.59375 249.25246 86.59375 258.5 L 86.59375 416.625 C 86.59375 425.87252 94.03373 433.34373 103.28125 433.34375 L 261.40625 433.34375 C 270.65377 433.34375 278.125 425.87252 278.125 416.625 L 278.125 258.5 C 278.125 249.25248 270.65379 241.8125 261.40625 241.8125 L 103.28125 241.8125 z "
+ xlink:href="#rect2403"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.49302217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ id="path4389"
+ inkscape:href="#rect2403"
+ d="M 103.28125,244 C 95.202831,244 88.78125,250.42156 88.78125,258.5 L 88.78125,416.625 C 88.78125,424.70341 95.207742,431.15623 103.28125,431.15625 L 261.40625,431.15625 C 269.47975,431.15625 275.9375,424.6985 275.9375,416.625 L 275.9375,258.5 C 275.9375,250.42649 269.48469,244 261.40625,244 L 103.28125,244 z"
+ transform="matrix(1.0045083,0,0,1.0045083,-83.181499,-239.10002)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer8"
+ inkscape:label="Inner"
+ style="display:inline">
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="0"
+ inkscape:original="M 103.28125 244 C 95.202831 244 88.78125 250.42156 88.78125 258.5 L 88.78125 416.625 C 88.78125 424.70341 95.207742 431.15623 103.28125 431.15625 L 261.40625 431.15625 C 269.47975 431.15625 275.9375 424.6985 275.9375 416.625 L 275.9375 258.5 C 275.9375 250.42649 269.48469 244 261.40625 244 L 103.28125 244 z "
+ xlink:href="#path4389"
+ style="opacity:1;fill:url(#linearGradient4416);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4407"
+ inkscape:href="#path4389"
+ d="M 103.28125,244 C 95.202831,244 88.78125,250.42156 88.78125,258.5 L 88.78125,416.625 C 88.78125,424.70341 95.207742,431.15623 103.28125,431.15625 L 261.40625,431.15625 C 269.47975,431.15625 275.9375,424.6985 275.9375,416.625 L 275.9375,258.5 C 275.9375,250.42649 269.48469,244 261.40625,244 L 103.28125,244 z"
+ transform="matrix(0.9805527,0,0,0.9805527,-78.812975,-231.01312)"
+ inkscape:export-xdpi="49.040001"
+ inkscape:export-ydpi="49.040001" />
+ </g>
+</svg>
diff --git a/trinidad-skins/myfaces-skin/src/main/svg/light-panel-box.svg b/trinidad-skins/myfaces-skin/src/main/svg/light-panel-box.svg
new file mode 100644
index 0000000..88ffcf7
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/svg/light-panel-box.svg
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="200"
+ height="200"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="light-panel-box.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/anrobins/development/trinidad/branches/exhibition/trinidad-skins/myfaces-skin/src/main/svg/light-panel-box.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4410">
+ <stop
+ style="stop-color:#cccccc;stop-opacity:1;"
+ offset="0"
+ id="stop4412" />
+ <stop
+ style="stop-color:#aaaaaa;stop-opacity:1;"
+ offset="1"
+ id="stop4414" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4410"
+ id="linearGradient4416"
+ x1="186.06427"
+ y1="431.15625"
+ x2="186.27887"
+ y2="244"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter4498">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.5075"
+ id="feGaussianBlur4500" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6153845"
+ inkscape:cx="99.99999"
+ inkscape:cy="99.999964"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:snap-guide="true"
+ inkscape:window-width="1149"
+ inkscape:window-height="741"
+ inkscape:window-x="0"
+ inkscape:window-y="1050" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Outer blur"
+ transform="translate(-82.35714,-237.57646)"
+ style="display:inline">
+ <rect
+ rx="19.54303"
+ ry="19.54303"
+ y="237.07646"
+ x="82.85714"
+ height="200"
+ width="200"
+ id="rect2411"
+ style="opacity:0.1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4498)"
+ transform="matrix(0.9701492,0,0,0.9701493,4.9584221,10.562004)" />
+ </g>
+ <g
+ inkscape:label="Gray border"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="opacity:1;display:inline"
+ transform="translate(-82.35714,-237.57646)">
+ <rect
+ style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.49302216999999998px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.75"
+ id="rect2403"
+ width="191.50697"
+ height="191.50697"
+ x="86.603653"
+ y="241.82297"
+ ry="16.692278"
+ rx="16.692278" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="White border"
+ style="display:inline">
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="-2.1797111"
+ inkscape:original="M 103.28125 241.8125 C 94.033728 241.8125 86.59375 249.25246 86.59375 258.5 L 86.59375 416.625 C 86.59375 425.87252 94.03373 433.34373 103.28125 433.34375 L 261.40625 433.34375 C 270.65377 433.34375 278.125 425.87252 278.125 416.625 L 278.125 258.5 C 278.125 249.25248 270.65379 241.8125 261.40625 241.8125 L 103.28125 241.8125 z "
+ xlink:href="#rect2403"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.49302217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ id="path4389"
+ inkscape:href="#rect2403"
+ d="M 103.28125,244 C 95.202831,244 88.78125,250.42156 88.78125,258.5 L 88.78125,416.625 C 88.78125,424.70341 95.207742,431.15623 103.28125,431.15625 L 261.40625,431.15625 C 269.47975,431.15625 275.9375,424.6985 275.9375,416.625 L 275.9375,258.5 C 275.9375,250.42649 269.48469,244 261.40625,244 L 103.28125,244 z"
+ transform="matrix(1.0045083,0,0,1.0045083,-83.181499,-239.10002)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer8"
+ inkscape:label="Inner"
+ style="display:inline">
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="0"
+ inkscape:original="M 103.28125 244 C 95.202831 244 88.78125 250.42156 88.78125 258.5 L 88.78125 416.625 C 88.78125 424.70341 95.207742 431.15623 103.28125 431.15625 L 261.40625 431.15625 C 269.47975 431.15625 275.9375 424.6985 275.9375 416.625 L 275.9375 258.5 C 275.9375 250.42649 269.48469 244 261.40625 244 L 103.28125 244 z "
+ xlink:href="#path4389"
+ style="opacity:0.095;fill:url(#linearGradient4416);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4407"
+ inkscape:href="#path4389"
+ d="M 103.28125,244 C 95.202831,244 88.78125,250.42156 88.78125,258.5 L 88.78125,416.625 C 88.78125,424.70341 95.207742,431.15623 103.28125,431.15625 L 261.40625,431.15625 C 269.47975,431.15625 275.9375,424.6985 275.9375,416.625 L 275.9375,258.5 C 275.9375,250.42649 269.48469,244 261.40625,244 L 103.28125,244 z"
+ transform="matrix(0.9805527,0,0,0.9805527,-78.812975,-231.01312)" />
+ </g>
+</svg>
diff --git a/trinidad-skins/myfaces-skin/src/main/svg/medium-panel-box.svg b/trinidad-skins/myfaces-skin/src/main/svg/medium-panel-box.svg
new file mode 100644
index 0000000..b391a9e
--- /dev/null
+++ b/trinidad-skins/myfaces-skin/src/main/svg/medium-panel-box.svg
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="200"
+ height="200"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docname="medium-panel-box.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/anrobins/development/trinidad/branches/exhibition/trinidad-skins/myfaces-skin/src/main/svg/light-panel-box.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs4">
+ <linearGradient
+ id="linearGradient4410">
+ <stop
+ style="stop-color:#f4f1ea;stop-opacity:1;"
+ offset="0"
+ id="stop4412" />
+ <stop
+ id="stop4502"
+ offset="0.76664793"
+ style="stop-color:#f4f1ea;stop-opacity:1;" />
+ <stop
+ style="stop-color:#e5dcce;stop-opacity:1;"
+ offset="1"
+ id="stop4414" />
+ </linearGradient>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient4410"
+ id="linearGradient4416"
+ x1="186.06427"
+ y1="431.15625"
+ x2="186.27887"
+ y2="244"
+ gradientUnits="userSpaceOnUse" />
+ <filter
+ inkscape:collect="always"
+ id="filter4498">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="1.5075"
+ id="feGaussianBlur4500" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ gridtolerance="10000"
+ guidetolerance="10"
+ objecttolerance="10"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.6153845"
+ inkscape:cx="99.99999"
+ inkscape:cy="100.68715"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer2"
+ showgrid="false"
+ inkscape:snap-guide="true"
+ inkscape:window-width="1149"
+ inkscape:window-height="741"
+ inkscape:window-x="102"
+ inkscape:window-y="1066" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Outer blur"
+ transform="translate(-82.35714,-237.57646)"
+ style="display:inline">
+ <rect
+ rx="19.54303"
+ ry="19.54303"
+ y="237.07646"
+ x="82.85714"
+ height="200"
+ width="200"
+ id="rect2411"
+ style="opacity:0.65;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#d9d2c6;stroke-width:0.99984616000000004;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4498);stroke-miterlimit:4;stroke-dasharray:none"
+ transform="matrix(0.9701492,0,0,0.9701493,4.9584221,10.562004)" />
+ </g>
+ <g
+ inkscape:label="Outer border"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="opacity:1;display:inline"
+ transform="translate(-82.35714,-237.57646)">
+ <rect
+ style="fill:#d9d2c6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.49302216999999998px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:1"
+ id="rect2403"
+ width="191.50697"
+ height="191.50697"
+ x="86.603653"
+ y="241.82297"
+ ry="16.692278"
+ rx="16.692278" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="White border"
+ style="display:inline">
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="-2.1797111"
+ inkscape:original="M 103.28125 241.8125 C 94.033728 241.8125 86.59375 249.25246 86.59375 258.5 L 86.59375 416.625 C 86.59375 425.87252 94.03373 433.34373 103.28125 433.34375 L 261.40625 433.34375 C 270.65377 433.34375 278.125 425.87252 278.125 416.625 L 278.125 258.5 C 278.125 249.25248 270.65379 241.8125 261.40625 241.8125 L 103.28125 241.8125 z "
+ xlink:href="#rect2403"
+ style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.49302217px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+ id="path4389"
+ inkscape:href="#rect2403"
+ d="M 103.28125,244 C 95.202831,244 88.78125,250.42156 88.78125,258.5 L 88.78125,416.625 C 88.78125,424.70341 95.207742,431.15623 103.28125,431.15625 L 261.40625,431.15625 C 269.47975,431.15625 275.9375,424.6985 275.9375,416.625 L 275.9375,258.5 C 275.9375,250.42649 269.48469,244 261.40625,244 L 103.28125,244 z"
+ transform="matrix(1.0045083,0,0,1.0045083,-83.181499,-239.10002)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer8"
+ inkscape:label="Inner"
+ style="display:inline">
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="0"
+ inkscape:original="M 103.28125 244 C 95.202831 244 88.78125 250.42156 88.78125 258.5 L 88.78125 416.625 C 88.78125 424.70341 95.207742 431.15623 103.28125 431.15625 L 261.40625 431.15625 C 269.47975 431.15625 275.9375 424.6985 275.9375 416.625 L 275.9375 258.5 C 275.9375 250.42649 269.48469 244 261.40625 244 L 103.28125 244 z "
+ xlink:href="#path4389"
+ style="opacity:1;fill:url(#linearGradient4416);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4407"
+ inkscape:href="#path4389"
+ d="M 103.28125,244 C 95.202831,244 88.78125,250.42156 88.78125,258.5 L 88.78125,416.625 C 88.78125,424.70341 95.207742,431.15623 103.28125,431.15625 L 261.40625,431.15625 C 269.47975,431.15625 275.9375,424.6985 275.9375,416.625 L 275.9375,258.5 C 275.9375,250.42649 269.48469,244 261.40625,244 L 103.28125,244 z"
+ transform="matrix(0.9805527,0,0,0.9805527,-78.812975,-231.01312)"
+ inkscape:export-xdpi="49.040001"
+ inkscape:export-ydpi="49.040001" />
+ </g>
+</svg>
diff --git a/trinidad-skins/pom.xml b/trinidad-skins/pom.xml
new file mode 100644
index 0000000..73737fe
--- /dev/null
+++ b/trinidad-skins/pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>trinidad-skins</artifactId>
+
+ <packaging>pom</packaging>
+ <name>Apache MyFaces Trinidad Skins</name>
+ <description>
+ The parent maven project for the Apache MyFaces Trinidad Skins
+ </description>
+
+ <parent>
+ <groupId>org.apache.myfaces.trinidad</groupId>
+ <artifactId>trinidad</artifactId>
+ <version>1.2.8-SNAPSHOT</version>
+ </parent>
+
+ <modules>
+ <module>myfaces-skin</module>
+ <!-- TODO: move the others out of the demo -->
+ </modules>
+
+</project>
+
--
To stop receiving notification emails like this one, please contact
"commits@myfaces.apache.org" <co...@myfaces.apache.org>.