gatein SVN: r6809 - epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/groovy/portal/webui/component.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-07-04 11:13:37 -0400 (Mon, 04 Jul 2011)
New Revision: 6809
Modified:
epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/groovy/portal/webui/component/UILogoPortlet.gtmpl
Log:
JBEPP-900 Chrome - processAction methods are called twice when url is empty in logo portlet
Modified: epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/groovy/portal/webui/component/UILogoPortlet.gtmpl
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/groovy/portal/webui/component/UILogoPortlet.gtmpl 2011-07-04 13:55:57 UTC (rev 6808)
+++ epp/portal/branches/EPP_5_2_Branch/portlet/web/src/main/webapp/groovy/portal/webui/component/UILogoPortlet.gtmpl 2011-07-04 15:13:37 UTC (rev 6809)
@@ -18,7 +18,15 @@
<div class="UILogoPortlet ClearFix" id="$uicomponent.id" >
<%if( _ctx.getRequestContext().getApplicationMode() == PortletMode.VIEW) {%>
<!-- LOGO IMAGE -->
- <a href="#" class="Img"><image src="<%=uicomponent.getURL()%>" alt="" /></a>
+ <a href="#" class="Img">
+ <%
+ String imgURL = uicomponent.getURL();
+ if (imgURL != "")
+ {
+ print """<img src="$imgURL" />""";
+ }
+ %>
+ </a>
<div class="BannerTitle">$navTitle</div>
<!-- ACTIONs -->
<% if(prContext.getRemoteUser() == null) { %>
13 years, 5 months
gatein SVN: r6808 - epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein.ear/META-INF.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-07-04 09:55:57 -0400 (Mon, 04 Jul 2011)
New Revision: 6808
Modified:
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml
Log:
JBEPP-942 login module config
Modified: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml 2011-07-04 13:44:45 UTC (rev 6807)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein.ear/META-INF/gatein-jboss-beans.xml 2011-07-04 13:55:57 UTC (rev 6808)
@@ -2,6 +2,10 @@
<application-policy xmlns="urn:jboss:security-beans:1.0" name="gatein-domain">
<authentication>
+ <login-module code="org.gatein.wci.security.WCILoginModule" flag="optional">
+ <module-option name="portalContainerName">portal</module-option>
+ <module-option name="realmName">gatein-domain</module-option>
+ </login-module>
<login-module code="org.exoplatform.web.security.PortalLoginModule" flag="required">
<module-option name="portalContainerName">portal</module-option>
<module-option name="realmName">gatein-domain</module-option>
13 years, 5 months
gatein SVN: r6807 - epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/exoplatform/portal/config.
by do-not-reply@jboss.org
Author: theute
Date: 2011-07-04 09:44:45 -0400 (Mon, 04 Jul 2011)
New Revision: 6807
Modified:
epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/exoplatform/portal/config/UserACL.java
Log:
JBEPP-974: Upgrade to eXo JCR 1.14.0.CR2
Upgrading core led to not being able to access the register page or anything restricted to /platform/guests as shown in GTNPORTAL-1879
Modified: epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/exoplatform/portal/config/UserACL.java
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/exoplatform/portal/config/UserACL.java 2011-07-04 08:57:47 UTC (rev 6806)
+++ epp/portal/branches/EPP_5_2_Branch/component/portal/src/main/java/org/exoplatform/portal/config/UserACL.java 2011-07-04 13:44:45 UTC (rev 6807)
@@ -29,6 +29,7 @@
import org.exoplatform.services.log.Log;
import org.exoplatform.services.security.ConversationState;
import org.exoplatform.services.security.Identity;
+import org.exoplatform.services.security.IdentityConstants;
import org.exoplatform.services.security.MembershipEntry;
import java.io.Serializable;
@@ -483,7 +484,7 @@
Permission permission = new Permission();
permission.setPermissionExpression(expPerm);
String groupId = permission.getGroupId();
- if (currentUser == null && groupId.equals(guestGroup_))
+ if ((currentUser == null || currentUser.equals(IdentityConstants.ANONIM)) && groupId.equals(guestGroup_))
{
return true;
}
13 years, 5 months
gatein SVN: r6806 - in epp/portal/branches/EPP_5_2_Branch: distribution/jboss-epp/examples/src and 5 other directories.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-07-04 04:57:47 -0400 (Mon, 04 Jul 2011)
New Revision: 6806
Added:
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/main/
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/main/resources/
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/main/resources/gatein-sample-portal-ds.xml
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/META-INF/
epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/META-INF/context.xml
Removed:
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml
Modified:
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/pom.xml
epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/assemble.xml
Log:
JBEPP-942 examples
Modified: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/pom.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/pom.xml 2011-07-04 08:14:37 UTC (rev 6805)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/pom.xml 2011-07-04 08:57:47 UTC (rev 6806)
@@ -18,22 +18,40 @@
<!-- Examples -->
<dependency>
- <groupId>org.jboss.portletbridge.examples.seam.booking</groupId>
- <artifactId>seamBooking-ear</artifactId>
- <version>${portletbridge.version}</version>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>gatein-sample-extension</artifactId>
+ <version>${project.version}</version>
<type>ear</type>
+ <exclusions>
+ <exclusion>
+ <groupId>org.hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>org.jboss.portal.examples</groupId>
- <artifactId>JSFRIPortlet</artifactId>
- <version>${portletbridge.version}</version>
- <type>war</type>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>gatein-sample-portal</artifactId>
+ <version>${project.version}</version>
+ <type>ear</type>
+ <exclusions>
+ <exclusion>
+ <groupId>org.hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>org.jboss.portal.examples</groupId>
- <artifactId>richFacesPortlet</artifactId>
- <version>${portletbridge.version}</version>
+ <groupId>org.gatein.portal.examples.skins</groupId>
+ <artifactId>gatein-sample-skin</artifactId>
+ <version>${project.version}</version>
<type>war</type>
+ <exclusions>
+ <exclusion>
+ <groupId>org.hsqldb</groupId>
+ <artifactId>hsqldb</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
</dependencies>
Modified: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/assemble.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/assemble.xml 2011-07-04 08:14:37 UTC (rev 6805)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/assemble.xml 2011-07-04 08:57:47 UTC (rev 6806)
@@ -7,10 +7,16 @@
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>src/main/resources</directory>
+ <outputDirectory></outputDirectory>
+ </fileSet>
+ </fileSets>
<dependencySets>
<dependencySet>
<outputDirectory></outputDirectory>
- <outputFileNameMapping>${artifact.artifactId}-${artifact.version}.${artifact.extension}</outputFileNameMapping>
+ <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
<unpack>false</unpack>
<useTransitiveDependencies>false</useTransitiveDependencies>
</dependencySet>
Copied: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/main/resources/gatein-sample-portal-ds.xml (from rev 6781, epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/main/resources/gatein-sample-portal-ds.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/examples/src/main/resources/gatein-sample-portal-ds.xml 2011-07-04 08:57:47 UTC (rev 6806)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2009, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<datasources>
+ <no-tx-datasource>
+ <jndi-name>gatein-jcr_sample-portal</jndi-name>
+ <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-localDB</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>20</max-pool-size>
+ <idle-timeout-minutes>0</idle-timeout-minutes>
+ <prepared-statement-cache-size>32</prepared-statement-cache-size>
+ </no-tx-datasource>
+
+ <no-tx-datasource>
+ <jndi-name>gatein-idm_sample-portal</jndi-name>
+ <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-idm-localDB</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>20</max-pool-size>
+ <idle-timeout-minutes>0</idle-timeout-minutes>
+ <prepared-statement-cache-size>32</prepared-statement-cache-size>
+ </no-tx-datasource>
+
+</datasources>
Deleted: epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml 2011-07-04 08:14:37 UTC (rev 6805)
+++ epp/portal/branches/EPP_5_2_Branch/distribution/jboss-epp/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml 2011-07-04 08:57:47 UTC (rev 6806)
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ JBoss, a division of Red Hat ~
- ~ Copyright 2009, Red Hat Middleware, LLC, and individual ~
- ~ contributors as indicated by the @authors tag. See the ~
- ~ copyright.txt in the distribution for a full listing of ~
- ~ individual contributors. ~
- ~ ~
- ~ This is free software; you can redistribute it and/or modify it ~
- ~ under the terms of the GNU Lesser General Public License as ~
- ~ published by the Free Software Foundation; either version 2.1 of ~
- ~ the License, or (at your option) any later version. ~
- ~ ~
- ~ This software is distributed in the hope that it will be useful, ~
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
- ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
- ~ Lesser General Public License for more details. ~
- ~ ~
- ~ You should have received a copy of the GNU Lesser General Public ~
- ~ License along with this software; if not, write to the Free ~
- ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
- ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<datasources>
- <no-tx-datasource>
- <jndi-name>gatein-jcr_sample-portal</jndi-name>
- <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-localDB</connection-url>
- <driver-class>org.hsqldb.jdbcDriver</driver-class>
- <user-name>sa</user-name>
- <password></password>
-
- <min-pool-size>5</min-pool-size>
- <max-pool-size>20</max-pool-size>
- <idle-timeout-minutes>0</idle-timeout-minutes>
- <prepared-statement-cache-size>32</prepared-statement-cache-size>
- </no-tx-datasource>
-
- <no-tx-datasource>
- <jndi-name>gatein-idm_sample-portal</jndi-name>
- <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-idm-localDB</connection-url>
- <driver-class>org.hsqldb.jdbcDriver</driver-class>
- <user-name>sa</user-name>
- <password></password>
-
- <min-pool-size>5</min-pool-size>
- <max-pool-size>20</max-pool-size>
- <idle-timeout-minutes>0</idle-timeout-minutes>
- <prepared-statement-cache-size>32</prepared-statement-cache-size>
- </no-tx-datasource>
-
-</datasources>
Copied: epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/META-INF/context.xml (from rev 6683, portal/trunk/web/portal/src/main/webapp/META-INF/context.xml)
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/META-INF/context.xml (rev 0)
+++ epp/portal/branches/EPP_5_2_Branch/web/portal/src/main/webapp/META-INF/context.xml 2011-07-04 08:57:47 UTC (rev 6806)
@@ -0,0 +1,31 @@
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<Context path='/portal' docBase='portal' debug='0' reloadable='true' crossContext='true' privileged='true'>
+ <Realm className='org.apache.catalina.realm.JAASRealm'
+ appName='gatein-domain'
+ userClassNames='org.exoplatform.services.security.jaas.UserPrincipal'
+ roleClassNames='org.exoplatform.services.security.jaas.RolePrincipal'
+ debug='0' cache='false'/>
+ <Valve
+ className='org.apache.catalina.authenticator.FormAuthenticator'
+ characterEncoding='UTF-8'/>
+</Context>
13 years, 5 months
gatein SVN: r6805 - in epp/portal/branches/EPP_5_2_Branch/component: test/core/src/main/resources/conf and 1 other directory.
by do-not-reply@jboss.org
Author: theute
Date: 2011-07-04 04:14:37 -0400 (Mon, 04 Jul 2011)
New Revision: 6805
Modified:
epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties
epp/portal/branches/EPP_5_2_Branch/component/test/core/src/main/resources/conf/portal-configuration.xml
Log:
JBEPP-970 configuration changes
- Removed failing transaction service in tests
- Removed duplicate gatein.jcr.index.changefilterclass key
Modified: epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties 2011-07-04 05:34:41 UTC (rev 6804)
+++ epp/portal/branches/EPP_5_2_Branch/component/common/src/main/java/conf/configuration-jboss.properties 2011-07-04 08:14:37 UTC (rev 6805)
@@ -39,7 +39,6 @@
# IDM
gatein.idm.datasource.name=java:gatein-idm
-gatein.jcr.index.changefilterclass=org.exoplatform.services.jcr.impl.core.query.DefaultChangesFilter
# EMail
gatein.email.smtp.username=
Modified: epp/portal/branches/EPP_5_2_Branch/component/test/core/src/main/resources/conf/portal-configuration.xml
===================================================================
--- epp/portal/branches/EPP_5_2_Branch/component/test/core/src/main/resources/conf/portal-configuration.xml 2011-07-04 05:34:41 UTC (rev 6804)
+++ epp/portal/branches/EPP_5_2_Branch/component/test/core/src/main/resources/conf/portal-configuration.xml 2011-07-04 08:14:37 UTC (rev 6805)
@@ -25,22 +25,6 @@
xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
<component>
- <key>org.jboss.cache.transaction.TransactionManagerLookup</key>
- <type>org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup</type>
- </component>
-
- <component>
- <key>org.exoplatform.services.transaction.TransactionService</key>
- <type>org.exoplatform.services.transaction.jbosscache.ArjunaTransactionService</type>
- <init-params>
- <value-param>
- <name>timeout</name>
- <value>300</value>
- </value-param>
- </init-params>
- </component>
-
- <component>
<key>org.exoplatform.services.naming.InitialContextInitializer</key>
<type>org.exoplatform.services.naming.InitialContextInitializer</type>
<init-params>
13 years, 5 months
gatein SVN: r6804 - in portal/trunk: component/web/resources/src/main/java/org/exoplatform/portal/resource and 20 other directories.
by do-not-reply@jboss.org
Author: hoang_to
Date: 2011-07-04 01:34:41 -0400 (Mon, 04 Jul 2011)
New Revision: 6804
Added:
portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java
portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java
portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockResourceRenderer.java
portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockServletContext.java
portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkinService.java
portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java
portal/trunk/component/web/resources/src/test/resources/conf/skin-service-configuration.xml
portal/trunk/component/web/resources/src/test/resources/mockwebapp/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css
portal/trunk/component/web/resources/src/test/resources/skin/
portal/trunk/component/web/resources/src/test/resources/skin/test_1.css
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java
Removed:
portal/trunk/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/
portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css
portal/trunk/component/web/resources/src/test/resources/skin/test_1.css
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java
Modified:
portal/trunk/
portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java
portal/trunk/component/web/security/src/main/java/org/exoplatform/web/CacheUserProfileFilter.java
portal/trunk/docs/reference-guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
portal/trunk/docs/user-guide/en-US/images/EditPortal2.6New.png
portal/trunk/docs/user-guide/en-US/images/PortalSetting2.5.png
portal/trunk/docs/user-guide/en-US/images/Skin1.png
portal/trunk/docs/user-guide/en-US/modules/portal/Manage_Portals.xml
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UICategorySelector.java
portal/trunk/testsuite/webuibasedsamples/src/main/java/org/exoplatform/sample/webui/component/UISampleUIForm.java
portal/trunk/testsuite/webuibasedsamples/src/main/webapp/WEB-INF/conf/sample/webui/configuration.xml
portal/trunk/web/pom.xml
portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UIFormCheckBoxInput.java
portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/login/UIResetPassword.java
Log:
GTNPORTAL-1921: Merge branch of sprint 54 & 55 back into trunk
Property changes on: portal/trunk
___________________________________________________________________
Modified: svn:mergeinfo
- /portal/branches/branch-GTNPORTAL-1790:5864-5919
/portal/branches/branch-GTNPORTAL-1822:5938-5991
/portal/branches/branch-GTNPORTAL-1832:5993-6105
/portal/branches/branch-GTNPORTAL-1872:6327-6594
/portal/branches/decoupled-webos:6214-6243
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/branches/wsrp-extraction:5828-6031
+ /portal/branches/branch-GTNPORTAL-1790:5864-5919
/portal/branches/branch-GTNPORTAL-1822:5938-5991
/portal/branches/branch-GTNPORTAL-1832:5993-6105
/portal/branches/branch-GTNPORTAL-1872:6327-6594
/portal/branches/branch-GTNPORTAL-1921:6597-6803
/portal/branches/decoupled-webos:6214-6243
/portal/branches/global-portlet-metadata:6298-6384
/portal/branches/site-describability:6171-6235
/portal/branches/wsrp-extraction:5828-6031
Copied: portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java)
===================================================================
--- portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java (rev 0)
+++ portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/CommentBlockHandler.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.resource;
+
+import java.io.IOException;
+
+/**
+ * Designed to plugged into SkipCommentReader for custom handling of comment block
+ *
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/28/11
+ */
+public abstract class CommentBlockHandler
+{
+
+ public abstract void handle(CharSequence commentBlock, SkipCommentReader reader) throws IOException;
+
+
+ /**
+ * A handler that push back content of comment block into the cache
+ * if content of comment block is
+ *
+ * orientation=lt or orientation=rt
+ */
+ public static class OrientationCommentBlockHandler extends CommentBlockHandler
+ {
+
+ private static final String LT = "orientation=lt";
+
+ private static final String RT = "orientation=rt";
+
+ @Override
+ public void handle(CharSequence commentBlock, SkipCommentReader reader) throws IOException
+ {
+ if(findInterestingContentIn(commentBlock))
+ {
+ reader.pushback(commentBlock);
+ reader.setNumberOfCommingEscapes(commentBlock.length()); /* The comment block won't be skipped */
+ }
+ }
+
+ /**
+ * Return true if content of comment block is either
+ *
+ * orientation=lt or orientation=rt
+ *
+ * @param commentBlock
+ * @return
+ */
+ private boolean findInterestingContentIn(CharSequence commentBlock)
+ {
+
+ int indexOfFirstO = 0;
+
+ while(indexOfFirstO < commentBlock.length())
+ {
+ if(commentBlock.charAt(indexOfFirstO) == 'o')
+ {
+ break;
+ }
+ else
+ {
+ indexOfFirstO++;
+ }
+ }
+
+ if(commentBlock.length() <= (indexOfFirstO + LT.length()))
+ {
+ return false;
+ }
+ for(int i = 0; i < LT.length(); i++)
+ {
+ if(commentBlock.charAt(indexOfFirstO + i) != LT.charAt(i) && i != (LT.length() -2))
+ {
+ return false;
+ }
+ }
+ return commentBlock.charAt(indexOfFirstO + LT.length() - 2) == 'l'
+ || commentBlock.charAt(indexOfFirstO + LT.length() - 2) == 'r';
+ }
+
+ }
+}
Modified: portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java
===================================================================
--- portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkinService.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -725,7 +725,7 @@
{
throw new RenderingException("No skin resolved for path " + skin.getResourcePath());
}
- BufferedReader reader = new BufferedReader(tmp);
+ BufferedReader reader = new SkipCommentReader(tmp, new CommentBlockHandler.OrientationCommentBlockHandler());
try
{
while ((line = reader.readLine()) != null)
Copied: portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java)
===================================================================
--- portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java (rev 0)
+++ portal/trunk/component/web/resources/src/main/java/org/exoplatform/portal/resource/SkipCommentReader.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.resource;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ *
+ * A subclass of BufferedReader which skip the comment block
+ *
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/27/11
+ */
+public class SkipCommentReader extends BufferedReader
+{
+
+ private final StringBuilder pushbackCache;
+
+ private final static int EOF = -1;
+
+ private State cursorState;
+
+ private CommentBlockHandler commentBlockHandler;
+
+ /* The number of next comming characters that won't be skipped even if they are in a comment block */
+ private int numberOfCommingEscapes;
+
+ public SkipCommentReader(Reader reader)
+ {
+ this(reader, null);
+ }
+
+ public SkipCommentReader(Reader reader, CommentBlockHandler handler)
+ {
+ super(reader);
+ pushbackCache = new StringBuilder();
+ cursorState = State.ENCOUNTING_ORDINARY_CHARACTER;
+ this.commentBlockHandler = handler;
+ }
+
+ /**
+ * Recursive method that read a single character from underlying reader. Encountered comment block
+ * is escaped automatically.
+ *
+ * @return
+ * @throws IOException
+ */
+ public int readSingleCharacter() throws IOException
+ {
+ int readingChar = readLikePushbackReader();
+ if(readingChar == EOF)
+ {
+ return EOF;
+ }
+
+ if(numberOfCommingEscapes > 0)
+ {
+ numberOfCommingEscapes--;
+ return readingChar;
+ }
+
+ switch (readingChar)
+ {
+ case '/':
+ int nextCharToRead = read();
+ if (nextCharToRead == '*')
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_OPENING_TAG;
+ advanceToEscapeCommentBlock();
+ return readSingleCharacter();
+ }
+ else
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH;
+ pushbackCache.append((char)nextCharToRead);
+ return '/';
+ }
+
+ case '*':
+ if (this.cursorState == SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH)
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_OPENING_TAG;
+ advanceToEscapeCommentBlock();
+ return readSingleCharacter();
+ }
+ else
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_ASTERIK;
+ return '*';
+ }
+
+ default:
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER;
+ return readingChar;
+ }
+
+ }
+
+ /**
+ * Read from the pushback cache first, then underlying reader
+ */
+ private int readLikePushbackReader() throws IOException
+ {
+ if(pushbackCache.length() > 0)
+ {
+ int readingChar = pushbackCache.charAt(0);
+ pushbackCache.deleteCharAt(0);
+ return readingChar;
+ }
+ return read();
+ }
+
+ /**
+ * Advance in comment block until we reach a comment block closing tag
+ */
+ private void advanceToEscapeCommentBlock() throws IOException
+ {
+ if(cursorState != SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_OPENING_TAG)
+ {
+ throw new IllegalStateException("This method should be invoked only if we are entering a comment block");
+ }
+
+ int readingChar = read();
+ StringBuilder commentBlock = new StringBuilder("/*");
+
+ LOOP:
+ while(readingChar != EOF)
+ {
+ commentBlock.append((char)readingChar);
+ if(readingChar == '/')
+ {
+ if(this.cursorState == SkipCommentReader.State.ENCOUNTING_ASTERIK)
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_COMMENT_BLOCK_CLOSING_TAG;
+ break LOOP; //We 've just escaped the comment block
+ }
+ else
+ {
+ this.cursorState = SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH;
+ }
+ }
+ else
+ {
+ this.cursorState = (readingChar == '*')? SkipCommentReader.State.ENCOUNTING_ASTERIK : SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER;
+ }
+ readingChar = read();
+ }
+
+ if(commentBlockHandler != null)
+ {
+ commentBlockHandler.handle(commentBlock, this);
+ }
+ }
+
+ @Override
+ public String readLine() throws IOException
+ {
+ StringBuilder builder = new StringBuilder();
+ int nextChar = readSingleCharacter();
+ if(nextChar == EOF)
+ {
+ return null;
+ }
+
+ while(nextChar != EOF)
+ {
+ if(nextChar == '\n' || nextChar == '\r')
+ {
+ break;
+ }
+ builder.append((char)nextChar);
+ nextChar = readSingleCharacter();
+ }
+
+ return builder.toString().trim();
+ }
+
+ /**
+ * Used for JUnit tests
+ * @return
+ */
+ public State getCursorState()
+ {
+ return this.cursorState;
+ }
+
+ public void setCommentBlockHandler(CommentBlockHandler commentBlockHandler)
+ {
+ this.commentBlockHandler = commentBlockHandler;
+ }
+
+ public void setNumberOfCommingEscapes(int numberOfCommingEscapes)
+ {
+ this.numberOfCommingEscapes = numberOfCommingEscapes;
+ }
+
+ public void pushback(CharSequence sequence)
+ {
+ this.pushbackCache.append(sequence);
+ }
+
+ public enum State
+ {
+ ENCOUNTING_FORWARD_SLASH,
+
+ ENCOUNTING_ASTERIK,
+
+ ENCOUNTING_COMMENT_BLOCK_OPENING_TAG,
+
+ ENCOUNTING_COMMENT_BLOCK_CLOSING_TAG,
+
+ ENCOUNTING_ORDINARY_CHARACTER
+ }
+}
Copied: portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockResourceRenderer.java (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockResourceRenderer.java)
===================================================================
--- portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockResourceRenderer.java (rev 0)
+++ portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockResourceRenderer.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.resource;
+
+import org.exoplatform.commons.utils.BinaryOutput;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+
+/**
+ * A simple ResourceRenderer used in JUnit tests of SkinService
+ *
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/29/11
+ */
+public class MockResourceRenderer implements ResourceRenderer
+{
+
+ private final BinaryOutput output;
+
+ private final static Charset UTF_8 = Charset.forName("UTF-8");
+
+ public MockResourceRenderer(final OutputStream out)
+ {
+ this.output = new BinaryOutput()
+ {
+ public Charset getCharset()
+ {
+ return UTF_8;
+ }
+
+ public void write(byte b) throws IOException
+ {
+ out.write(b);
+ }
+
+ public void write(byte[] bytes) throws IOException
+ {
+ out.write(bytes);
+ }
+
+ public void write(byte[] bytes, int off, int len) throws IOException
+ {
+ out.write(bytes, off, len);
+ }
+ };
+ }
+
+ public BinaryOutput getOutput() throws IOException
+ {
+ return output;
+ }
+
+ public void setExpiration(long seconds)
+ {
+ }
+}
Copied: portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockServletContext.java (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockServletContext.java)
===================================================================
--- portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockServletContext.java (rev 0)
+++ portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/MockServletContext.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.resource;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.Set;
+import javax.servlet.RequestDispatcher;
+import javax.servlet.Servlet;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+
+/**
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/29/11
+ */
+public class MockServletContext implements ServletContext
+{
+
+ private String contextName;
+
+ private ClassLoader loader;
+
+ public MockServletContext(String contextName, ClassLoader loader)
+ {
+ this.contextName = contextName;
+ this.loader = loader;
+ }
+
+ public String getContextPath()
+ {
+ return "/" + contextName;
+ }
+
+ public ServletContext getContext(String s)
+ {
+ return null;
+ }
+
+ public int getMajorVersion()
+ {
+ return 0;
+ }
+
+ public int getMinorVersion()
+ {
+ return 0;
+ }
+
+ public String getMimeType(String s)
+ {
+ return null;
+ }
+
+ public Set getResourcePaths(String s)
+ {
+ return null;
+ }
+
+ public URL getResource(String s) throws MalformedURLException
+ {
+ return loader.getResource(contextName + s);
+ }
+
+ public InputStream getResourceAsStream(String s)
+ {
+ return loader.getResourceAsStream(contextName + s);
+ }
+
+ public RequestDispatcher getRequestDispatcher(String s)
+ {
+ return null;
+ }
+
+ public RequestDispatcher getNamedDispatcher(String s)
+ {
+ return null;
+ }
+
+ public Servlet getServlet(String s) throws ServletException
+ {
+ return null;
+ }
+
+ public Enumeration getServlets()
+ {
+ return null;
+ }
+
+ public Enumeration getServletNames()
+ {
+ return null;
+ }
+
+ public void log(String s)
+ {
+ }
+
+ public void log(Exception e, String s)
+ {
+ }
+
+ public void log(String s, Throwable throwable)
+ {
+ }
+
+ public String getRealPath(String s)
+ {
+ return null;
+ }
+
+ public String getServerInfo()
+ {
+ return null;
+ }
+
+ public String getInitParameter(String s)
+ {
+ return null;
+ }
+
+ public Enumeration getInitParameterNames()
+ {
+ return null;
+ }
+
+ public Object getAttribute(String s)
+ {
+ return null;
+ }
+
+ public Enumeration getAttributeNames()
+ {
+ return null;
+ }
+
+ public void setAttribute(String s, Object o)
+ {
+ }
+
+ public void removeAttribute(String s)
+ {
+ }
+
+ public String getServletContextName()
+ {
+ return contextName;
+ }
+}
Copied: portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkinService.java (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkinService.java)
===================================================================
--- portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkinService.java (rev 0)
+++ portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkinService.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.resource;
+
+import org.exoplatform.commons.xml.DocumentSource;
+import org.exoplatform.component.test.AbstractKernelTest;
+import org.exoplatform.component.test.ConfigurationUnit;
+import org.exoplatform.component.test.ConfiguredBy;
+import org.exoplatform.component.test.ContainerScope;
+import org.exoplatform.container.PortalContainer;
+import org.exoplatform.portal.resource.config.xml.SkinConfigParser;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.net.URL;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import javax.servlet.ServletContext;
+
+/**
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/29/11
+ */
+@ConfiguredBy(
+ {
+ @ConfigurationUnit(scope = ContainerScope.PORTAL, path = "conf/skin-service-configuration.xml")
+ }
+)
+public class TestSkinService extends AbstractKernelTest
+{
+ private PortalContainer portalContainer;
+
+ private SkinService skinService;
+
+ private ServletContext mockServletContext;
+
+ private volatile boolean initSkinService = true;
+
+ /** A cache of Method in SkinService, served for reflect invocation **/
+ private Map<String, Method> methodsOfSkinService = new HashMap<String, Method>();
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ if(initSkinService)
+ {
+ initSkinService = false;
+
+ portalContainer = getContainer();
+ skinService = (SkinService)portalContainer.getComponentInstanceOfType(SkinService.class);
+ mockServletContext = new MockServletContext("mockwebapp", portalContainer.getPortalClassLoader());
+ skinService.registerContext(mockServletContext);
+
+ processSkinConfiguration("/gatein-resources.xml");
+ }
+ }
+
+ private void processSkinConfiguration(String configResource) throws Exception
+ {
+ URL url = mockServletContext.getResource(configResource);
+ SkinConfigParser.processConfigResource(DocumentSource.create(url), skinService, mockServletContext);
+ }
+
+ public void testInitService()
+ {
+ assertNotNull(portalContainer);
+ assertEquals("portal", portalContainer.getName());
+ assertNotNull(skinService);
+ }
+
+ public void testInitSkinModules()
+ {
+ assertNotNull(skinService.getAvailableSkinNames());
+ assertTrue(skinService.getAvailableSkinNames().contains("TestSkin"));
+ }
+
+ public void testInitThemes()
+ {
+
+ }
+
+ public void testDeployedSkinModules()
+ {
+ assertNotNull(skinService.getAvailableSkinNames());
+ assertTrue(skinService.getAvailableSkinNames().contains("TestSkin"));
+
+ Collection<SkinConfig> skinConfigs = skinService.getPortalSkins("TestSkin");
+ assertNotNull(skinConfigs);
+
+ SkinConfig portalSkin = null;
+ for(SkinConfig config : skinConfigs)
+ {
+ if("TestSkin".equals(config.getName()))
+ {
+ portalSkin = config;
+ break;
+ }
+ }
+ assertNotNull(portalSkin);
+ assertEquals(mockServletContext.getContextPath() + "/skin/Stylesheet.css", portalSkin.getCSSPath());
+
+ SkinConfig firstPortletSkin = skinService.getSkin("mockwebapp/FirstPortlet", "TestSkin");
+ assertNotNull(firstPortletSkin);
+ assertEquals(mockServletContext.getContextPath() + "/skin/portlet/FirstPortlet/Stylesheet.css", firstPortletSkin.getCSSPath());
+ }
+
+ public void testDeployedThemes()
+ {
+
+ }
+
+ public void testRenderLT_CSS() throws Exception
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ ResourceRenderer renderer = new MockResourceRenderer(out);
+
+ skinService.renderCSS(renderer, "/mockwebapp/skin/Stylesheet-lt.css");
+
+ //TODO: Check the array of bytes in out
+ }
+
+ public void testRenderRT_CSS() throws Exception
+ {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ ResourceRenderer renderer = new MockResourceRenderer(out);
+
+ skinService.renderCSS(renderer, "/mockwebapp/skin/Stylesheet-rt.css");
+
+ //TODO: Check the array of bytes in out
+ }
+
+ public void testBackground() throws Exception
+ {
+ }
+
+ public void testServiceCache() throws Exception
+ {
+ }
+
+ public void testSkinPriority() throws Exception
+ {
+ }
+
+ public void testUndeploySkinConfig() throws Exception
+ {
+ //TODO: Fork the work of GateInSkinConfigRemoval here
+ }
+
+ /**
+ * Designed to invoke reflectively private methods of SkinService. That facilitate
+ * writting JUnit tests
+ *
+ * @param methodName
+ * @param arguments
+ */
+ private void invokeMethodOfSkinService(String methodName, Object... arguments)
+ {
+ StringBuilder methodSignature = new StringBuilder(methodName);
+ Class<?>[] paramTypes = new Class<?>[arguments.length];
+ for(int i =0; i < arguments.length; i++)
+ {
+ paramTypes[i] = arguments[i].getClass();
+ methodSignature.append("_");
+ methodSignature.append(paramTypes[i].getName());
+ }
+ //First we look at the cache
+ Method method = methodsOfSkinService.get(methodSignature.toString());
+
+ //Find method by reflection
+ if(method == null)
+ {
+ try
+ {
+ method = skinService.getClass().getDeclaredMethod(methodName, paramTypes);
+ if(method != null)
+ {
+ method.setAccessible(true);
+ methodsOfSkinService.put(methodSignature.toString(), method);
+ }
+ else
+ {
+ return;
+ }
+ }
+ catch (NoSuchMethodException ex)
+ {
+ }
+ }
+
+ try
+ {
+ if(Modifier.isStatic(method.getModifiers()))
+ {
+ method.invoke(null, arguments);
+ }
+ else
+ {
+ method.invoke(skinService, arguments);
+ }
+ }
+ catch(Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ }
+}
Copied: portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java)
===================================================================
--- portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java (rev 0)
+++ portal/trunk/component/web/resources/src/test/java/org/exoplatform/portal/resource/TestSkipCommentReader.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.portal.resource;
+
+import junit.framework.TestCase;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+
+/**
+ * @author <a href="hoang281283(a)gmail.com">Minh Hoang TO</a>
+ * @date 6/28/11
+ */
+public class TestSkipCommentReader extends TestCase
+{
+
+ private SkipCommentReader skipCommentReader;
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ }
+
+ @Override
+ protected void tearDown() throws Exception
+ {
+ if(skipCommentReader != null)
+ {
+ skipCommentReader.close();
+ }
+ }
+
+ private void initiateReader(String relativePath)
+ {
+ InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(relativePath);
+ skipCommentReader = new SkipCommentReader(new InputStreamReader(in));
+ }
+
+ private void initiateReader(Reader reader)
+ {
+ skipCommentReader = new SkipCommentReader(reader);
+ }
+
+ public void testFirstCSSFile() throws IOException
+ {
+ initiateReader("skin/test_1.css");
+ skipCommentReader.setCommentBlockHandler(new CommentBlockHandler.OrientationCommentBlockHandler());
+
+ for(int i =0; i < 30; i++)
+ {
+ String line = skipCommentReader.readLine();
+ System.out.println(line);
+ line = skipCommentReader.readLine();
+ }
+ }
+
+ public void testSkipCommentBlock() throws IOException
+ {
+ Reader reader = new StringReader("abcdefgh/* comment block */ijklmn");
+ initiateReader(reader);
+
+ String line = skipCommentReader.readLine();
+ assertEquals("abcdefghijklmn", line);
+ }
+
+ public void testSkipMultipleCommentBlocks() throws IOException
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("1.abcdefgh/* comment block */ijklmn\n");
+ builder.append("2.abcdefgh/* comment block */ijklmn\n");
+ builder.append("3.abcdefgh/* comment block */ijklmn\n");
+ builder.append("4.abcdefgh/* comment block */ijklmn\n");
+
+ Reader reader = new StringReader(builder.toString());
+ initiateReader(reader);
+
+ String line = skipCommentReader.readLine();
+ assertEquals("1.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("2.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("3.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("4.abcdefghijklmn", line);
+ }
+
+ public void testSkipCommentBlocksWithHandler() throws IOException
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append("1.abcdefgh/* orientation=lt */ijklmn\n");
+ builder.append("2.abcdefgh/* comment block */ijklmn\n");
+ builder.append("3.abcdefgh/* orientation=rt */ijklmn\n");
+ builder.append("4.abcdefgh/* comment block */ijklmn\n");
+
+ Reader reader = new StringReader(builder.toString());
+ initiateReader(reader);
+ skipCommentReader.setCommentBlockHandler(new CommentBlockHandler.OrientationCommentBlockHandler());
+
+ String line = skipCommentReader.readLine();
+ assertEquals("1.abcdefgh/* orientation=lt */ijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("2.abcdefghijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("3.abcdefgh/* orientation=rt */ijklmn", line);
+
+ line = skipCommentReader.readLine();
+ assertEquals("4.abcdefghijklmn", line);
+ }
+
+ public void testNumberOfCommingEscapes() throws IOException
+ {
+ String COMMENT_BLOCK = "/*COMMENT BLOCK*/";
+
+ StringBuilder builder = new StringBuilder();
+ builder.append(COMMENT_BLOCK).append("1.abcdefghijklmn\n");
+ builder.append("2.abcdefghijklmn\n");
+ builder.append("3.").append(COMMENT_BLOCK).append("abcdefghijklmn\n");
+
+ Reader reader = new StringReader(builder.toString());
+ initiateReader(reader);
+
+ skipCommentReader.setNumberOfCommingEscapes(COMMENT_BLOCK.length());
+ String firstLine = skipCommentReader.readLine();
+ assertEquals(COMMENT_BLOCK + "1.abcdefghijklmn", firstLine);
+
+ String secondLine = skipCommentReader.readLine();
+ assertEquals("2.abcdefghijklmn", secondLine);
+
+ skipCommentReader.setNumberOfCommingEscapes(2 + COMMENT_BLOCK.length());
+ String thirdLine = skipCommentReader.readLine();
+ assertEquals("3." + COMMENT_BLOCK + "abcdefghijklmn", thirdLine);
+ }
+
+ public void testCursorState() throws IOException
+ {
+ Reader reader = new StringReader("0123456//*xxxx*/*789");
+ initiateReader(reader);
+
+ assertEquals(SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER, skipCommentReader.getCursorState());
+ for(int i = 0; i < 7; i++)
+
+ {
+ int readChar = skipCommentReader.readSingleCharacter();
+ assertEquals(SkipCommentReader.State.ENCOUNTING_ORDINARY_CHARACTER, skipCommentReader.getCursorState());
+ }
+
+ skipCommentReader.readSingleCharacter();
+ assertEquals(SkipCommentReader.State.ENCOUNTING_FORWARD_SLASH, skipCommentReader.getCursorState());
+
+ skipCommentReader.readSingleCharacter();//The comment block is automatically skipped
+ assertEquals(SkipCommentReader.State.ENCOUNTING_ASTERIK, skipCommentReader.getCursorState());
+ }
+}
Copied: portal/trunk/component/web/resources/src/test/resources/conf/skin-service-configuration.xml (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/conf/skin-service-configuration.xml)
===================================================================
--- portal/trunk/component/web/resources/src/test/resources/conf/skin-service-configuration.xml (rev 0)
+++ portal/trunk/component/web/resources/src/test/resources/conf/skin-service-configuration.xml 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+
+<configuration
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_1.xsd http://www.exoplaform.org/xml/ns/kernel_1_1.xsd"
+ xmlns="http://www.exoplaform.org/xml/ns/kernel_1_1.xsd">
+
+ <component>
+ <key>org.exoplatform.portal.resource.compressor.ResourceCompressor</key>
+ <type>org.exoplatform.portal.resource.compressor.impl.ResourceCompressorService</type>
+ <component-plugins>
+ <component-plugin>
+ <name>MockCompressorPlugin</name>
+ <set-method>registerCompressorPlugin</set-method>
+ <type>org.exoplatform.portal.resource.compressor.MockCompressorPlugin</type>
+ <init-params>
+ <value-param>
+ <name>plugin.priority</name>
+ <value>5</value>
+ </value-param>
+ </init-params>
+ </component-plugin>
+
+ <component-plugin>
+ <name>JSMinCompressorPlugin</name>
+ <set-method>registerCompressorPlugin</set-method>
+ <type>org.exoplatform.portal.resource.compressor.impl.JSMinCompressorPlugin</type>
+ <init-params>
+ <value-param>
+ <name>plugin.priority</name>
+ <value>9</value>
+ </value-param>
+ </init-params>
+ </component-plugin>
+
+ <component-plugin>
+ <name>YUICSSCompressorPlugin</name>
+ <set-method>registerCompressorPlugin</set-method>
+ <type>org.exoplatform.portal.resource.compressor.css.YUICSSCompressorPlugin</type>
+ <init-params>
+ <value-param>
+ <name>plugin.priority</name>
+ <value>1</value>
+ </value-param>
+ <value-param>
+ <name>line.break.position</name>
+ <value>100</value>
+ </value-param>
+ </init-params>
+ </component-plugin>
+ </component-plugins>
+ </component>
+
+ <component>
+ <key>org.exoplatform.portal.resource.SkinService</key>
+ <type>org.exoplatform.portal.resource.SkinService</type>
+ </component>
+</configuration>
Deleted: portal/trunk/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml
===================================================================
--- portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml 2011-07-04 05:34:41 UTC (rev 6804)
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Copyright (C) 2009 eXo Platform SAS.
-
- This is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of
- the License, or (at your option) any later version.
-
- This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this software; if not, write to the Free
- Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- 02110-1301 USA, or see the FSF site: http://www.fsf.org.
-
--->
-<gatein-resources
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_resources_1_1 http://www.gatein.org/xml/ns/gatein_resources_1_1"
- xmlns="http://www.gatein.org/xml/ns/gatein_resources_1_1">
-
- <portal-skin>
- <skin-name>TestSkin</skin-name>
- <css-path>/skin/Stylesheet.css</css-path>
- </portal-skin>
-
- <portlet-skin>
- <application-name>mockwebapp</application-name>
- <portlet-name>FirstPortlet</portlet-name>
- <skin-name>TestSkin</skin-name>
- <css-path>/skin/portlet/FirstPortlet/Stylesheet.css</css-path>
- </portlet-skin>
-
- <!-- Simple window style -->
- <window-style>
- <style-name>Simple</style-name>
- <style-theme>
- <theme-name>SimpleBlue</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>SimpleViolet</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>SimpleOrange</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>SimplePink</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>SimpleGreen</theme-name>
- </style-theme>
- </window-style>
-
- <!-- RoundConer window style -->
- <window-style>
- <style-name>RoundConer</style-name>
- <style-theme>
- <theme-name>RoundConerBlue</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>RoundConerViolet</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>RoundConerOrange</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>RoundConerPink</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>RoundConerGreen</theme-name>
- </style-theme>
- </window-style>
-
- <!-- Shadow window style -->
- <window-style>
- <style-name>Shadow</style-name>
- <style-theme>
- <theme-name>ShadowBlue</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>ShadowViolet</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>ShadowOrange</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>ShadowPink</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>ShadowGreen</theme-name>
- </style-theme>
- </window-style>
-
- <!-- MacStyle window style -->
- <window-style>
- <style-name>MacStyle</style-name>
- <style-theme>
- <theme-name>MacTheme</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>MacGray</theme-name>
- </style-theme>
- <style-theme>
- <theme-name>MacGreenSteel</theme-name>
- </style-theme>
- </window-style>
-
- <!-- VistaStyle window style -->
- <window-style>
- <style-name>VistaStyle</style-name>
- <style-theme>
- <theme-name>VistaTheme</theme-name>
- </style-theme>
- </window-style>
-
-</gatein-resources>
Copied: portal/trunk/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml)
===================================================================
--- portal/trunk/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml (rev 0)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/gatein-resources.xml 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Copyright (C) 2009 eXo Platform SAS.
+
+ This is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of
+ the License, or (at your option) any later version.
+
+ This software is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this software; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+
+-->
+<gatein-resources
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.gatein.org/xml/ns/gatein_resources_1_1 http://www.gatein.org/xml/ns/gatein_resources_1_1"
+ xmlns="http://www.gatein.org/xml/ns/gatein_resources_1_1">
+
+ <portal-skin>
+ <skin-name>TestSkin</skin-name>
+ <css-path>/skin/Stylesheet.css</css-path>
+ </portal-skin>
+
+ <portlet-skin>
+ <application-name>mockwebapp</application-name>
+ <portlet-name>FirstPortlet</portlet-name>
+ <skin-name>TestSkin</skin-name>
+ <css-path>/skin/portlet/FirstPortlet/Stylesheet.css</css-path>
+ </portlet-skin>
+
+ <!-- Simple window style -->
+ <window-style>
+ <style-name>Simple</style-name>
+ <style-theme>
+ <theme-name>SimpleBlue</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>SimpleViolet</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>SimpleOrange</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>SimplePink</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>SimpleGreen</theme-name>
+ </style-theme>
+ </window-style>
+
+ <!-- RoundConer window style -->
+ <window-style>
+ <style-name>RoundConer</style-name>
+ <style-theme>
+ <theme-name>RoundConerBlue</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>RoundConerViolet</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>RoundConerOrange</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>RoundConerPink</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>RoundConerGreen</theme-name>
+ </style-theme>
+ </window-style>
+
+ <!-- Shadow window style -->
+ <window-style>
+ <style-name>Shadow</style-name>
+ <style-theme>
+ <theme-name>ShadowBlue</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>ShadowViolet</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>ShadowOrange</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>ShadowPink</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>ShadowGreen</theme-name>
+ </style-theme>
+ </window-style>
+
+ <!-- MacStyle window style -->
+ <window-style>
+ <style-name>MacStyle</style-name>
+ <style-theme>
+ <theme-name>MacTheme</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>MacGray</theme-name>
+ </style-theme>
+ <style-theme>
+ <theme-name>MacGreenSteel</theme-name>
+ </style-theme>
+ </window-style>
+
+ <!-- VistaStyle window style -->
+ <window-style>
+ <style-name>VistaStyle</style-name>
+ <style-theme>
+ <theme-name>VistaTheme</theme-name>
+ </style-theme>
+ </window-style>
+
+</gatein-resources>
Deleted: portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css
===================================================================
--- portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -1,30 +0,0 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-.LeftBlock {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
-}
-/* blah blah */
-aaaaaa
-@import url(portal/TestSkin/Stylesheet.css); /* blah blah */
-bbbbbb
-.RightBlock {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
-}
\ No newline at end of file
Copied: portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css)
===================================================================
--- portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css (rev 0)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/Stylesheet.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,30 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+.LeftBlock {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+}
+/* blah blah */
+aaaaaa
+@import url(portal/TestSkin/Stylesheet.css); /* blah blah */
+bbbbbb
+.RightBlock {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+}
\ No newline at end of file
Deleted: portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css
===================================================================
--- portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -1,21 +0,0 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-.LeftBlock {
- float: left; /* orientation=lt */ float: right; /* orientation=rt */
-}
\ No newline at end of file
Copied: portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css)
===================================================================
--- portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css (rev 0)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portal/TestSkin/Stylesheet.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,21 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+.LeftBlock {
+ float: left; /* orientation=lt */ float: right; /* orientation=rt */
+}
\ No newline at end of file
Deleted: portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css
===================================================================
--- portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -1,27 +0,0 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-.LeftBlock {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
-}
-/* blah blah */
-.RightBlock {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
-}
\ No newline at end of file
Copied: portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css)
===================================================================
--- portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css (rev 0)
+++ portal/trunk/component/web/resources/src/test/resources/mockwebapp/skin/portlet/Stylesheet.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,27 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+.LeftBlock {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+}
+/* blah blah */
+.RightBlock {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+}
\ No newline at end of file
Deleted: portal/trunk/component/web/resources/src/test/resources/skin/test_1.css
===================================================================
--- portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/skin/test_1.css 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/component/web/resources/src/test/resources/skin/test_1.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -1,3320 +0,0 @@
-/**
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-/*-------------------------- DefaultTheme ---------------------------*/
-
-.DefaultTheme .WindowBarCenter .WindowPortletInfo {
- margin-right: 80px; /* orientation=lt */
- margin-left: 80px; /* orientation=rt */
-}
-
-.DefaultTheme .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 24px;
- height: 17px;
- cursor: pointer;
- background-image: url('background/DefaultTheme.png');
-}
-
-.DefaultTheme .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.DefaultTheme .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.DefaultTheme .MinimizedIcon {
- background-position: center 44px;
-}
-
-.DefaultTheme .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.DefaultTheme .MaximizedIcon {
- background-position: center 68px;
-}
-
-.DefaultTheme .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.DefaultTheme .RestoreIcon {
- background-position: center 92px;
-}
-
-.DefaultTheme .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.DefaultTheme .NormalIcon {
- background-position: center 92px;
-}
-
-.DefaultTheme .OverNormalIcon {
- background-position: center 188px;
-}
-
-.DefaultTheme .Information {
- height: 18px; line-height: 18px;
- vertical-align: middle; font-size: 10px;
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
-}
-
-.DefaultTheme .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
- line-height: 16px;
-}
-
-.DefaultTheme .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.DefaultTheme .WindowBarLeft {
- padding-left: 12px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: left -148px;
-}
-
-.DefaultTheme .WindowBarRight {
- padding-right: 11px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: right -119px;
-}
-
-.DefaultTheme .WindowBarCenter {
- background-image: url('background/DefaultTheme.png');
- background-repeat: repeat-x;
- background-position: left -90px;
-}
-
-.DefaultTheme .WindowBarCenter .FixHeight {
- height: 21px;
- padding-top: 8px;
-}
-
-.DefaultTheme .MiddleDecoratorLeft {
- padding-left: 12px;
- background: url('background/MDefaultTheme.png') repeat-y left;
-}
-
-.DefaultTheme .MiddleDecoratorRight {
- padding-right: 11px;
- background: url('background/MDefaultTheme.png') repeat-y right;
-}
-
-.DefaultTheme .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.DefaultTheme .BottomDecoratorLeft {
- padding-left: 12px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.DefaultTheme .BottomDecoratorRight {
- padding-right: 11px;
- background-image: url('background/DefaultTheme.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.DefaultTheme .BottomDecoratorCenter {
- background-image: url('background/DefaultTheme.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.DefaultTheme .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*-------------------------- MacTheme ---------------------------*/
-
-.MacTheme .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacTheme .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacTheme .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacTheme .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacTheme .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacTheme.png');
-}
-
-.MacTheme .ArrowDownIcon {
- background-position: center 18px;
-}
-
-.MacTheme .OverArrowDownIcon {
- background-position: center 98px;
-}
-
-.MacTheme .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacTheme .OverMinimizedIcon {
- background-position: center 118px;
-}
-
-.MacTheme .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacTheme .OverMaximizedIcon {
- background-position: center 138px;
-}
-
-.MacTheme .NormalIcon {
- background-position: center 78px;
-}
-
-.MacTheme .OverNormalIcon {
- background-position: center 158px;
-}
-
-.MacTheme .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacTheme .OverRestoreIcon {
- background-position: center 158px;
-}
-
-.MacTheme .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacTheme .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px;
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacTheme .MiddleDecoratorLeft {
- background: url('background/MMacTheme.png') repeat-y left;
- padding: 0px 0px 0px 5px;
-}
-
-.MacTheme .MiddleDecoratorRight {
- padding: 0px 5px 0px 0px;
- background: url('background/MMacTheme.png') repeat-y right;
-}
-
-.MacTheme .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .MacTheme .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.MacTheme .BottomDecoratorLeft {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: left -46px;
- padding: 0px 0px 0px 5px;
-}
-
-.MacTheme .BottomDecoratorRight {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: right -23px;
- padding: 0px 5px 0px 0px;
-}
-
-.MacTheme .BottomDecoratorCenter {
- background-image: url('background/MacTheme.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.MacTheme .BottomDecoratorCenter .FixHeight {
- height: 23px; line-height: 23px;
-}
-
-.MacTheme .WindowBarLeft {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: left -115px;
- padding: 0px 0px 0px 12px;
-}
-
-.MacTheme .WindowBarRight {
- background-image: url('background/MacTheme.png');
- background-repeat: no-repeat;
- background-position: right -92px;
- padding: 0px 12px 0px 0px;
-}
-
-.MacTheme .WindowBarCenter {
- background-image: url('background/MacTheme.png');
- background-repeat: repeat-x;
- background-position: center -69px;
-}
-
-.MacTheme .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------- MacGray ---------------------------*/
-
-.MacGray .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacGray .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacGray .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacGray .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacGray .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacGray.png');
-}
-
-.MacGray .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.MacGray .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.MacGray .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacGray .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.MacGray .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacGray .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.MacGray .NormalIcon {
- background-position: center 78px;
-}
-
-.MacGray .OverNormalIcon {
- background-position: center 160px;
-}
-
-.MacGray .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacGray .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.MacGray .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacGray .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacGray .MiddleDecoratorLeft {
- background: url('background/MMacGray.png') repeat-y left;
- padding: 0px 0px 0px 8px;
-}
-
-.MacGray .MiddleDecoratorRight {
- padding: 0px 8px 0px 0px;
- background: url('background/MMacGray.png') repeat-y right;
-}
-
-.MacGray .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.MacGray .MiddleDecoratorCenter {
- height:100%;
-}
-
-.MacGray .BottomDecoratorLeft {
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding: 0px 0px 0px 9px;
-}
-
-.MacGray .BottomDecoratorRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: right -24px;
-}
-
-.MacGray .BottomDecoratorCenter {
- background-image: url('background/MacGray.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.MacGray .BottomDecoratorCenter .FixHeight {
- height: 24px; line-height: 24px;
-}
-
-.MacGray .WindowBarLeft {
- padding: 0px 0px 0px 9px;
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: left -118px;
-}
-
-.MacGray .WindowBarRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGray.png');
- background-repeat: no-repeat;
- background-position: right -95px;
-}
-
-.MacGray .WindowBarCenter {
- background-image: url('background/MacGray.png');
- background-repeat: repeat-x;
- background-position: center -72px;
-}
-
-.MacGray .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------- MacBlack ---------------------------*/
-
-.MacBlack .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacBlack .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacBlack .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacBlack .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacBlack .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacBlack.png');
-}
-
-.MacBlack .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.MacBlack .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.MacBlack .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacBlack .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.MacBlack .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacBlack .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.MacBlack .NormalIcon {
- background-position: center 78px;
-}
-
-.MacBlack .OverNormalIcon {
- background-position: center 160px;
-}
-
-.MacBlack .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacBlack .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.MacBlack .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacBlack .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacBlack .MiddleDecoratorLeft {
- background: url('background/MMacBlack.png') repeat-y left;
- padding: 0px 0px 0px 8px;
-}
-
-.MacBlack .MiddleDecoratorRight {
- padding: 0px 8px 0px 0px;
- background: url('background/MMacBlack.png') repeat-y right;
-}
-
-.MacBlack .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .MacBlack .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.MacBlack .BottomDecoratorLeft {
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding: 0px 0px 0px 9px;
-}
-
-.MacBlack .BottomDecoratorRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: right -24px;
-}
-
-.MacBlack .BottomDecoratorCenter {
- background-image: url('background/MacBlack.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.MacBlack .BottomDecoratorCenter .FixHeight {
- height: 24px; line-height: 24px;
-}
-
-.MacBlack .WindowBarLeft {
- padding: 0px 0px 0px 9px;
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: left -118px;
-}
-
-.MacBlack .WindowBarRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacBlack.png');
- background-repeat: no-repeat;
- background-position: right -95px;
-}
-
-.MacBlack .WindowBarCenter {
- background-image: url('background/MacBlack.png');
- background-repeat: repeat-x;
- background-position: center -72px;
-}
-
-.MacBlack .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------- MacGreenSteel ---------------------------*/
-
-.MacGreenSteel .WindowBarCenter .WindowPortletInfo {
- margin: 0px 70px 0px 0px; /* orientation=lt */
- margin: 0px 0px 0px 70px; /* orientation=rt */
-}
-
-.MacGreenSteel .WindowBarCenter .WindowPortletIcon {
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.MacGreenSteel .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 17px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.MacGreenSteel .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
- background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
-}
-
-.MacGreenSteel .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 21px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/MacGreen.png');
-}
-
-.MacGreenSteel .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.MacGreenSteel .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.MacGreenSteel .MinimizedIcon {
- background-position: center 37px;
-}
-
-.MacGreenSteel .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.MacGreenSteel .MaximizedIcon {
- background-position: center 57px;
-}
-
-.MacGreenSteel .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.MacGreenSteel .NormalIcon {
- background-position: center 78px;
-}
-
-.MacGreenSteel .OverNormalIcon {
- background-position: center 160px;
-}
-
-.MacGreenSteel .RestoreIcon {
- background-position: center 78px;
-}
-
-.MacGreenSteel .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.MacGreenSteel .BackgroundIcon {
- float: left; /* orientation=lt */
- float: right; /* orientation=rt */
- margin: 4px 2px 0px 2px;
-}
-
-.MacGreenSteel .Information {
- height: 16px; line-height: 14px; vertical-align: middle;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.MacGreenSteel .MiddleDecoratorLeft {
- background: url('background/MMacGreen.png') repeat-y left;
- padding: 0px 0px 0px 8px;
-}
-
-.MacGreenSteel .MiddleDecoratorRight {
- padding: 0px 8px 0px 0px;
- background: url('background/MMacGreen.png') repeat-y right;
-}
-
-.MacGreenSteel .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .MacGreenSteel .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.MacGreenSteel .BottomDecoratorLeft {
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding: 0px 0px 0px 9px;
-}
-
-.MacGreenSteel .BottomDecoratorRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: right -24px;
-}
-
-.MacGreenSteel .BottomDecoratorCenter {
- background-image: url('background/MacGreen.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.MacGreenSteel .BottomDecoratorCenter .FixHeight {
- height: 24px; line-height: 24px;
-}
-
-.MacGreenSteel .WindowBarLeft {
- padding: 0px 0px 0px 9px;
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: left -118px;
-}
-
-.MacGreenSteel .WindowBarRight {
- padding: 0px 9px 0px 0px;
- background-image: url('background/MacGreen.png');
- background-repeat: no-repeat;
- background-position: right -95px;
-}
-
-.MacGreenSteel .WindowBarCenter {
- background-image: url('background/MacGreen.png');
- background-repeat: repeat-x;
- background-position: center -72px;
-}
-
-.MacGreenSteel .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 4px;
-}
-
-/*-------------------------------- VistaTheme -----------------------------*/
-
-.VistaTheme .WindowBarCenter .WindowPortletInfo {
- margin-right: 95px; /* orientation=lt */
- margin-left: 95px; /* orientation=rt */
-
-}
-
-.VistaTheme .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 22px;
-}
-
-.VistaTheme .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
-}
-
-.VistaTheme .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 30px;
- height: 20px;
- cursor: pointer;
- background-image: url('background/VistaTheme.png'); /* orientation=lt */
- background-image: url('background/VistaTheme-rt.png'); /* orientation=rt */
-}
-
-.VistaTheme .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.VistaTheme .OverArrowDownIcon {
- background-position: center 100px;
-}
-
-.VistaTheme .MinimizedIcon {
- background-position: center 40px;
-}
-
-.VistaTheme .OverMinimizedIcon {
- background-position: center 120px;
-}
-
-.VistaTheme .MaximizedIcon {
- background-position: center 60px;
-}
-
-.VistaTheme .OverMaximizedIcon {
- background-position: center 140px;
-}
-
-.VistaTheme .NormalIcon {
- background-position: center 80px;
-}
-
-.VistaTheme .OverNormalIcon {
- background-position: center 160px;
-}
-
-.VistaTheme .RestoreIcon {
- background-position: center 80px;
-}
-
-.VistaTheme .OverRestoreIcon {
- background-position: center 160px;
-}
-
-.VistaTheme .Information {
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
- height: 18px; line-height: 18px;
- font-size: 10px;
-}
-
-.VistaTheme .MiddleDecoratorCenter {
- background: #ffffff;
- border: solid 1px #717171;
-}
-
-.VistaTheme .MiddleDecoratorLeft {
- padding-left:12px;
- background: url('background/MVistaTheme.png') repeat-y left;
-}
-
-.VistaTheme .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MVistaTheme.png') repeat-y right;
-}
-
-.UIPageBody .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.VistaTheme .BottomDecoratorLeft {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: left -48px;
- padding-left: 12px;
-}
-
-.VistaTheme .BottomDecoratorRight {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: right -24px;
- padding-right: 13px;
-}
-
-.VistaTheme .BottomDecoratorCenter {
- background-image: url('background/VistaTheme.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.VistaTheme .BottomDecoratorCenter .FixHeight {
- height: 24px;
-}
-
-.VistaTheme .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 22px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.VistaTheme .WindowBarLeft {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: left -130px;
- padding-left: 12px;
-}
-
-.VistaTheme .WindowBarRight {
- background-image: url('background/VistaTheme.png');
- background-repeat: no-repeat;
- background-position: right -101px;
- padding-right: 16px;
-}
-
-.VistaTheme .WindowBarCenter {
- background-image: url('background/VistaTheme.png');
- background-repeat: repeat-x;
- background-position: left -72px;
-}
-
-.VistaTheme .WindowBarCenter .FixHeight {
- height: 24px;
- padding-top: 5px;
-}
-
-/*-------------------------------- VistaBlue -----------------------------*/
-
-.VistaBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 95px; /* orientation=lt */
- margin-left: 95px; /* orientation=rt */
-
-}
-
-.VistaBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 20px;
-}
-
-.VistaBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- line-height: 22px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.VistaBlue .WindowBarCenter .PortletIcon {
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
- background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
-}
-
-.VistaBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 30px; height: 19px;
- cursor: pointer;
- background-image: url('background/VistaBlue.png');
-}
-
-.VistaBlue .ArrowDownIcon {
- background-position: center 19px;
-}
-
-.VistaBlue .OverArrowDownIcon {
- background-position: center 99px;
-}
-
-.VistaBlue .MinimizedIcon {
- background-position: center 39px;
-}
-
-.VistaBlue .OverMinimizedIcon {
- background-position: center 119px;
-}
-
-.VistaBlue .MaximizedIcon {
- background-position: center 59px;
-}
-
-.VistaBlue .OverMaximizedIcon {
- background-position: center 139px;
-}
-
-.VistaBlue .NormalIcon {
- background-position: center 79px;
-}
-
-.VistaBlue .OverNormalIcon {
- background-position: center 159px;
-}
-
-.VistaBlue .RestoreIcon {
- background-position: center 79px;
-}
-
-.VistaBlue .OverRestoreIcon {
- background-position: center 159px;
-}
-
-.VistaBlue .Information {
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
- height: 18px; line-height: 18px;
- font-size: 10px;
-}
-
-.VistaBlue .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .VistaBlue .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.VistaBlue .MiddleDecoratorLeft {
- padding-left: 15px;
- background: url('background/MVistaBlue.png') repeat-y left;
-}
-
-.VistaBlue .MiddleDecoratorRight {
- padding-right: 18px;
- background: url('background/MVistaBlue.png') repeat-y right;
-}
-
-.UIPortlet .VistaBlue .MiddleDecoratorRight {
- padding-right: 16px;
-}
-
-.VistaBlue .BottomDecoratorLeft {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: left -54px;
- padding-left: 15px;
-}
-
-.VistaBlue .BottomDecoratorRight {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: right -27px;
- padding-right: 15px;
-}
-
-.VistaBlue .BottomDecoratorCenter {
- background-image: url('background/VistaBlue.png');
- background-repeat: repeat-x;
- background-position: left top;
-}
-
-.VistaBlue .BottomDecoratorCenter .FixHeight {
- height: 27px;
-}
-
-.VistaBlue .WindowBarLeft {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: left -151px;
- padding-left: 15px;
-}
-
-.VistaBlue .WindowBarRight {
- background-image: url('background/VistaBlue.png');
- background-repeat: no-repeat;
- background-position: right -116px;
- padding-right: 15px;
-}
-
-.VistaBlue .WindowBarCenter {
- background-image: url('background/VistaBlue.png');
- background-repeat: repeat-x;
- background-position: left -81px;
-}
-
-.VistaBlue .WindowBarCenter .FixHeight {
- height: 27px;
- padding-top: 8px;
-}
-
-/*-------------------------- RoundConerBlue ---------------------------*/
-
-.RoundConerBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-
-}
-
-.RoundConerBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundCornerBlue.png');
-}
-
-.RoundConerBlue .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerBlue .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerBlue .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerBlue .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerBlue .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerBlue .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerBlue .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerBlue .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerBlue .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerBlue .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerBlue .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerBlue .WindowBarLeft {
- padding-left: 12px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: left -154px;
-}
-
-.RoundConerBlue .WindowBarRight {
- padding-right: 12px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: right -122px;
-}
-
-.RoundConerBlue .WindowBarCenter {
- background: url('background/RoundCornerBlue.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerBlue .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.RoundConerBlue .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerBlue.png') repeat-y left;
-}
-
-.RoundConerBlue .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerBlue.png') repeat-y right;
-}
-
-.RoundConerBlue .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerBlue .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerBlue .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerBlue .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundCornerBlue.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerBlue .BottomDecoratorCenter {
- background: url('background/RoundCornerBlue.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerBlue .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------ RoundConerViolet -----------------*/
-
-.RoundConerViolet .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-
-}
-
-.RoundConerViolet .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerViolet.png');
-}
-
-.RoundConerViolet .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- padding-left: 5px;
- margin-right: 18px;
-}
-
-.RoundConerViolet .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerViolet .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerViolet .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerViolet .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerViolet .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerViolet .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerViolet .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerViolet .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerViolet .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerViolet .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerViolet .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerViolet .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerViolet .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerViolet .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerViolet .WindowBarCenter {
- background: url('background/RoundConerViolet.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerViolet .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerViolet .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerViolet .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerViolet.png') repeat-y left;
-}
-
-.RoundConerViolet .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerViolet.png') repeat-y right;
-}
-
-.RoundConerViolet .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerViolet .MiddleDecoratorCenter {
- height:100%;
-}
-
-.RoundConerViolet .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerViolet .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerViolet.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerViolet .BottomDecoratorCenter {
- background: url('background/RoundConerViolet.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerViolet .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------------------- RoundConerOrange ----------------------------------*/
-
-.RoundConerOrange .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.RoundConerOrange .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerOrange.png');
-}
-
-.RoundConerOrange .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerOrange .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerOrange .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerOrange .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerOrange .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerOrange .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerOrange .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerOrange .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerOrange .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerOrange .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerOrange .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerOrange .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerOrange .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerOrange .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerOrange .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerOrange .WindowBarCenter {
- background: url('background/RoundConerOrange.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerOrange .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerOrange .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerOrange .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerOrange.png') repeat-y left;
-}
-
-.RoundConerOrange .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerOrange.png') repeat-y right;
-}
-
-.RoundConerOrange .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerOrange .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerOrange .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerOrange .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerOrange.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerOrange .BottomDecoratorCenter {
- background: url('background/RoundConerOrange.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerOrange .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------------------- RoundConerPink ----------------------------------*/
-
-.RoundConerPink .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.RoundConerPink .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerPink.png');
-}
-
-.RoundConerPink .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerPink .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerPink .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerPink .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerPink .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerPink .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerPink .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerPink .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerPink .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerPink .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerPink .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerPink .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerPink .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerPink .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerPink .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerPink .WindowBarCenter {
- background: url('background/RoundConerPink.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerPink .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerPink .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerPink .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerPink.png') repeat-y left;
-}
-
-.RoundConerPink .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerPink.png') repeat-y right;
-}
-
-.RoundConerPink .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerPink .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerPink .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerPink .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerPink.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerPink .BottomDecoratorCenter {
- background: url('background/RoundConerPink.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerPink .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*------------------------------- RoundConerGreen ----------------------------------*/
-
-.RoundConerGreen .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.RoundConerGreen .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/RoundConerGreen.png');
-}
-
-.RoundConerGreen .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.RoundConerGreen .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.RoundConerGreen .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 19px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.RoundConerGreen .ArrowDownIcon {
- background-position: center 21px;
-}
-
-.RoundConerGreen .OverArrowDownIcon {
- background-position: center 117px;
-}
-
-.RoundConerGreen .MinimizedIcon {
- background-position: center 45px;
-}
-
-.RoundConerGreen .OverMinimizedIcon {
- background-position: center 141px;
-}
-
-.RoundConerGreen .MaximizedIcon {
- background-position: center 69px;
-}
-
-.RoundConerGreen .OverMaximizedIcon {
- background-position: center 165px;
-}
-
-.RoundConerGreen .RestoreIcon {
- background-position: center 93px;
-}
-
-.RoundConerGreen .OverRestoreIcon {
- background-position: center 189px;
-}
-
-.RoundConerGreen .NormalIcon {
- background-position: center 93px;
-}
-
-.RoundConerGreen .OverNormalIcon {
- background-position: center 189px;
-}
-
-.RoundConerGreen .WindowBarLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: left -153px;
-}
-
-.RoundConerGreen .WindowBarRight {
- padding-right: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: right -121px;
-}
-
-.RoundConerGreen .WindowBarCenter {
- background: url('background/RoundConerGreen.png') repeat-x;
- background-position: left -90px;
-}
-
-.RoundConerGreen .WindowBarCenter .FixHeight {
- height: 22px;
- padding-top: 10px;
-}
-
-.UIPortlet .RoundConerGreen .WindowBarCenter {
- height: 31px;
-}
-
-.RoundConerGreen .MiddleDecoratorLeft {
- padding-left: 13px;
- background: url('background/MRoundConerGreen.png') repeat-y left;
-}
-
-.RoundConerGreen .MiddleDecoratorRight {
- padding-right: 13px;
- background: url('background/MRoundConerGreen.png') repeat-y right;
-}
-
-.RoundConerGreen .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .RoundConerGreen .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.RoundConerGreen .BottomDecoratorLeft {
- padding-left: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: left -60px;
-}
-
-.RoundConerGreen .BottomDecoratorRight {
- padding-right: 13px;
- background-image: url('background/RoundConerGreen.png');
- background-repeat: no-repeat;
- background-position: right -30px;
-}
-
-.RoundConerGreen .BottomDecoratorCenter {
- background: url('background/RoundConerGreen.png') repeat-x;
- background-position: top;
-}
-
-.RoundConerGreen .BottomDecoratorCenter .FixHeight {
- height: 30px;
-}
-
-/*-------------------------- ShadowBlue ---------------------------*/
-
-.ShadowBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowBlue.png');
-}
-
-.ShadowBlue .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowBlue .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowBlue .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowBlue .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowBlue .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowBlue .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowBlue .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowBlue .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowBlue .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowBlue .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowBlue .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowBlue .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowBlue .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowBlue .WindowBarCenter {
- background-image: url('background/ShadowBlue.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowBlue .WindowBarCenter .FixHeight {
- height: 20px;
- padding-top: 9px;
-}
-
-.ShadowBlue .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowBlue.png') repeat-y left;
-}
-
-.ShadowBlue .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowBlue.png') repeat-y right;
-}
-
-.ShadowBlue .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowBlue .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowBlue .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowBlue .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowBlue.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowBlue .BottomDecoratorCenter {
- background-image: url('background/ShadowBlue.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowBlue .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowViolet -----------------------------------*/
-
-.ShadowViolet .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowViolet .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowViolet.png');
-}
-
-.ShadowViolet .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowViolet .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowViolet .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowViolet .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowViolet .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowViolet .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowViolet .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowViolet .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowViolet .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowViolet .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowViolet .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowViolet .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowViolet .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowViolet .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowViolet .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowViolet .WindowBarCenter {
- background-image: url('background/ShadowViolet.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowViolet .WindowBarCenter .FixHeight {
- height: 20px;
- padding-top: 9px;
-}
-
-.ShadowViolet .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowViolet.png') repeat-y left;
-}
-
-.ShadowViolet .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowViolet.png') repeat-y right;
-}
-
-.ShadowViolet .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowViolet .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowViolet .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowViolet .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowViolet.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowViolet .BottomDecoratorCenter {
- background-image: url('background/ShadowViolet.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowViolet .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowOrange -----------------------------------*/
-
-.ShadowOrange .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowOrange .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowOrange.png');
-}
-
-.ShadowOrange .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowOrange .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowOrange .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowOrange .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowOrange .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowOrange .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowOrange .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowOrange .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowOrange .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowOrange .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowOrange .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowOrange .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowOrange .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowOrange .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowOrange .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowOrange .WindowBarCenter {
- background-image: url('background/ShadowOrange.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowOrange .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 10px;
-}
-
-.ShadowOrange .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowOrange.png') repeat-y left;
-}
-
-.ShadowOrange .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowOrange.png') repeat-y right;
-}
-
-.ShadowOrange .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowOrange .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowOrange .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowOrange .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowOrange.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowOrange .BottomDecoratorCenter {
- background-image: url('background/ShadowOrange.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowOrange .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowPink -----------------------------------*/
-
-
-.ShadowPink .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowPink .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowPink.png');
-}
-
-.ShadowPink .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowPink .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowPink .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowPink .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowPink .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowPink .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowPink .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowPink .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowPink .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowPink .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowPink .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowPink .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowPink .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowPink .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowPink .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowPink .WindowBarCenter {
- background-image: url('background/ShadowPink.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowPink .WindowBarCenter .FixHeight {
- height: 19px;
- padding-top: 10px;
-}
-
-.ShadowPink .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowPink.png') repeat-y left;
-}
-
-.ShadowPink .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowPink.png') repeat-y right;
-}
-
-.ShadowPink .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowPink .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowPink .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowPink .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowPink.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowPink .BottomDecoratorCenter {
- background-image: url('background/ShadowPink.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowPink .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ ShadowGreen -----------------------------------*/
-
-
-.ShadowGreen .WindowBarCenter .WindowPortletInfo {
- margin-right: 70px; /* orientation=lt */
- margin-left: 70px; /* orientation=rt */
-}
-
-.ShadowGreen .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 20px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
- background-image: url('background/ShadowGreen.png');
-}
-
-.ShadowGreen .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.ShadowGreen .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.ShadowGreen .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- line-height: 16px;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.ShadowGreen .ArrowDownIcon {
- background-position: center 20px;
-}
-
-.ShadowGreen .OverArrowDownIcon {
- background-position: center 116px;
-}
-
-.ShadowGreen .MinimizedIcon {
- background-position: center 44px;
-}
-
-.ShadowGreen .OverMinimizedIcon {
- background-position: center 140px;
-}
-
-.ShadowGreen .MaximizedIcon {
- background-position: center 68px;
-}
-
-.ShadowGreen .OverMaximizedIcon {
- background-position: center 164px;
-}
-
-.ShadowGreen .RestoreIcon {
- background-position: center 92px;
-}
-
-.ShadowGreen .OverRestoreIcon {
- background-position: center 188px;
-}
-
-.ShadowGreen .NormalIcon {
- background-position: center 92px;
-}
-
-.ShadowGreen .OverNormalIcon {
- background-position: center 188px;
-}
-
-.ShadowGreen .WindowBarLeft {
- padding-left: 11px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: left -142px;
-}
-
-.ShadowGreen .WindowBarRight {
- padding-right: 10px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: right -113px;
-}
-
-.ShadowGreen .WindowBarCenter {
- background-image: url('background/ShadowGreen.png');
- background-repeat: repeat-x;
- background-position: center -84px;
-}
-
-.ShadowGreen .WindowBarCenter .FixHeight {
- height: 20px;
- padding-top: 9px;
-}
-
-.ShadowGreen .MiddleDecoratorLeft {
- padding-left: 11px;
- background: url('background/MShadowGreen.png') repeat-y left;
-}
-
-.ShadowGreen .MiddleDecoratorRight {
- padding-right: 10px;
- background: url('background/MShadowGreen.png') repeat-y right;
-}
-
-.ShadowGreen .MiddleDecoratorCenter {
- background: #ffffff;
-}
-
-.UIPortlet .ShadowGreen .MiddleDecoratorCenter {
- height: 100%;
-}
-
-.ShadowGreen .BottomDecoratorLeft {
- padding-left: 11px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: left -56px;
-}
-
-.ShadowGreen .BottomDecoratorRight {
- padding-right: 10px;
- background-image: url('background/ShadowGreen.png');
- background-repeat: no-repeat;
- background-position: right -28px;
-}
-
-.ShadowGreen .BottomDecoratorCenter {
- background-image: url('background/ShadowGreen.png');
- background-repeat: repeat-x;
- background-position: center top;
-}
-
-.ShadowGreen .BottomDecoratorCenter .FixHeight {
- height: 28px;
-}
-
-/*------------------------------ SimpleBlue -----------------------------------*/
-
-.SimpleBlue .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleBlue .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleBlue .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleBlue .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleBlue .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleBlue .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 16px;
-}
-
-.SimpleBlue .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 16px;
-}
-
-.SimpleBlue .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 32px;
-}
-
-.SimpleBlue .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 32px;
-}
-
-.SimpleBlue .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 48px;
-}
-
-.SimpleBlue .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 48px;
-}
-
-.SimpleBlue .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 64px;
-}
-
-.SimpleBlue .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 64px;
-}
-
-.SimpleBlue .NormalIcon {
- background: url('background/SimpleStyle.gif') left 64px;
-}
-
-.SimpleBlue .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 64px;
-}
-
-.SimpleBlue .WindowBarLeft {
- border: 1px solid #3d589d;
- border-bottom: none;
-}
-
-.SimpleBlue .WindowBarRight {
- border: 1px solid #d7e5f2;
-}
-
-.SimpleBlue .WindowBarCenter {
- background: #b0c0f5;
-}
-
-.SimpleBlue .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-
-.SimpleBlue .MiddleDecoratorLeft {
- border-left: 1px solid #3d589d;
- border-right: 1px solid #3d589d;
-}
-
-.SimpleBlue .MiddleDecoratorRight {
- border: 2px solid #d7e5f2;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleBlue .MiddleDecoratorCenter {
- border: 1px solid #4a67b1;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimpleBlue .BottomDecoratorLeft {
- border-left: 1px solid #3d589d;
- border-right: 1px solid #3d589d;
- border-bottom: 1px solid #3d589d;
-}
-
-.SimpleBlue .BottomDecoratorRight {
- border: 2px solid #d7e5f2;
- border-top: none;
-}
-
-.SimpleBlue .BottomDecoratorCenter {
- border: 1px solid #4a67b1;
- border-top: none;
- background: white url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleBlue .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-/*------------------------------ SimpleViolet -----------------------------------*/
-
-.SimpleViolet .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleViolet .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleViolet .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleViolet .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleViolet .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleViolet .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 80px;
-}
-
-.SimpleViolet .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 80px;
-}
-
-.SimpleViolet .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 96px;
-}
-
-.SimpleViolet .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 96px;
-}
-
-.SimpleViolet .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 112px;
-}
-
-.SimpleViolet .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 112px;
-}
-
-.SimpleViolet .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 128px;
-}
-
-.SimpleViolet .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 128px;
-}
-
-.SimpleViolet .NormalIcon {
- background: url('background/SimpleStyle.gif') left 128px;
-}
-
-.SimpleViolet .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 128px;
-}
-
-.SimpleViolet .WindowBarLeft {
- border: 1px solid #c41fdc;
- border-bottom: none;
-}
-
-.SimpleViolet .WindowBarRight {
- border: 1px solid #ece7ff;
-}
-
-.SimpleViolet .WindowBarCenter {
- background: #c4a6ff;
-}
-
-.SimpleViolet .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-.SimpleViolet .MiddleDecoratorLeft {
- border-left: 1px solid #c41fdc;
- border-right: 1px solid #c41fdc;
-}
-
-.SimpleViolet .MiddleDecoratorRight {
- border: 2px solid #ece7ff;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleViolet .MiddleDecoratorCenter {
- border: 1px solid #5700a9;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimpleViolet .BottomDecoratorLeft {
- border: 1px solid #c41fdc;
- border-top: none;
-}
-
-.SimpleViolet .BottomDecoratorRight {
- border: 2px solid #ece7ff;
- border-top: none;
-}
-
-.SimpleViolet .BottomDecoratorCenter {
- border: 1px solid #5700a9;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleViolet .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimpleViolet .BottomDecoratorCenter {
- height: 18px;
-}
-
-/*------------------------------ SimpleOrange -----------------------------------*/
-
-.SimpleOrange .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleOrange .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleOrange .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleOrange .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleOrange .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleOrange .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 144px;
-}
-
-.SimpleOrange .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 144px;
-}
-
-.SimpleOrange .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 160px;
-}
-
-.SimpleOrange .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 160px;
-}
-
-.SimpleOrange .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 192px;
-}
-
-.SimpleOrange .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 192px;
-}
-
-.SimpleOrange .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 176px;
-}
-
-.SimpleOrange .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 176px;
-}
-
-.SimpleOrange .NormalIcon {
- background: url('background/SimpleStyle.gif') left 176px;
-}
-
-.SimpleOrange .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 176px;
-}
-
-.SimpleOrange .WindowBarLeft {
- border: 1px solid #ffb27f;
- border-bottom: none;
-}
-
-.SimpleOrange .WindowBarRight {
- border: 1px solid #fff1e5;
-}
-
-.SimpleOrange .WindowBarCenter {
- background: #ffd1a8;
-}
-
-.SimpleOrange .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-.SimpleOrange .MiddleDecoratorLeft {
- border-left: 1px solid #ffb27f;
- border-right: 1px solid #ffb27f;
-}
-
-.SimpleOrange .MiddleDecoratorRight {
- border: 2px solid #fff1e5;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleOrange .MiddleDecoratorCenter {
- border: 1px solid #b27a49;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimpleOrange .BottomDecoratorLeft {
- border: 1px solid #ffb27f;
- border-top: none;
-}
-
-.SimpleOrange .BottomDecoratorRight {
- border: 2px solid #fff1e5;
- border-top: none;
-}
-
-.SimpleOrange .BottomDecoratorCenter {
- border: 1px solid #b27a49;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleOrange .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimpleOrange .BottomDecoratorCenter {
- height: 18px;
-}
-
-/*------------------------------ SimplePink -----------------------------------*/
-
-.SimplePink .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimplePink .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimplePink .Information {
- height: 18px; line-height: 18px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimplePink .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimplePink .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimplePink .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 208px;
-}
-
-.SimplePink .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 208px;
-}
-
-.SimplePink .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 224px;
-}
-
-.SimplePink .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 224px;
-}
-
-.SimplePink .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 240px;
-}
-
-.SimplePink .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 240px;
-}
-
-.SimplePink .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 256px;
-}
-
-.SimplePink .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 256px;
-}
-
-.SimplePink .NormalIcon {
- background: url('background/SimpleStyle.gif') left 256px;
-}
-
-.SimplePink .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 256px;
-}
-
-.SimplePink .WindowBarLeft {
- border: 1px solid #b69db3;
- border-bottom: none;
-}
-
-.SimplePink .WindowBarRight {
- border: 1px solid #fff1fd;
-}
-
-.SimplePink .WindowBarCenter {
- background: #fdd8f9;
-}
-
-.SimplePink .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-.SimplePink .MiddleDecoratorLeft {
- border-left: 1px solid #b69db3;
- border-right: 1px solid #b69db3;
-}
-
-.SimplePink .MiddleDecoratorRight {
- border: 2px solid #fff1fd;
- border-top: none;
- border-bottom: none;
-}
-
-.SimplePink .MiddleDecoratorCenter {
- border: 1px solid #9a5591;
- border-bottom: none;
- background: #ffffff;
- padding: 1px;
-}
-
-.SimplePink .BottomDecoratorLeft {
- border: 1px solid #b69db3;
- border-top: none;
-}
-
-.SimplePink .BottomDecoratorRight {
- border: 2px solid #fff1fd;
- border-top: none;
-}
-
-.SimplePink .BottomDecoratorCenter {
- border: 1px solid #9a5591;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimplePink .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimplePink .BottomDecoratorCenter {
- height: 18px;
-}
-
-/*------------------------------ SimpleGreen -----------------------------------*/
-
-.SimpleGreen .WindowBarCenter .WindowPortletInfo {
- margin-right: 60px; /* orientation=lt */
- margin-left: 60px; /* orientation=rt */
-}
-
-.SimpleGreen .WindowBarCenter .ControlIcon {
- float: right; /* orientation=lt */
- float: left; /* orientation=rt */
- width: 16px; height: 16px;
- margin-right: 2px; /* orientation=lt */
- margin-left: 2px; /* orientation=rt */
- cursor: pointer;
-}
-
-.SimpleGreen .Information {
- line-height: 18px;
- width: 100px;
- font-size: 10px;
- margin-right: 18px; /* orientation=lt */
- margin-left: 18px; /* orientation=rt */
- padding-left: 5px; /* orientation=lt */
- padding-right: 5px; /* orientation=rt */
-}
-
-.SimpleGreen .WindowBarCenter .WindowPortletIcon {
- background-position: left top; /* orientation=lt */
- background-position: right top; /* orientation=rt */
- padding-left: 20px; /* orientation=lt */
- padding-right: 20px; /* orientation=rt */
- height: 16px;
-}
-
-.SimpleGreen .WindowBarCenter .PortletName {
- font-weight: bold;
- color: #333333;
- overflow: hidden;
- white-space: nowrap;
- width: 100%;
-}
-
-.SimpleGreen .ArrowDownIcon {
- background: url('background/SimpleStyle.gif') left 272px;
-}
-
-.SimpleGreen .OverArrowDownIcon {
- background: url('background/SimpleStyle.gif') right 272px;
-}
-
-.SimpleGreen .MinimizedIcon {
- background: url('background/SimpleStyle.gif') left 288px;
-}
-
-.SimpleGreen .OverMinimizedIcon {
- background: url('background/SimpleStyle.gif') right 288px;
-}
-
-.SimpleGreen .MaximizedIcon {
- background: url('background/SimpleStyle.gif') left 304px;
-}
-
-.SimpleGreen .OverMaximizedIcon {
- background: url('background/SimpleStyle.gif') right 304px;
-}
-
-.SimpleGreen .RestoreIcon {
- background: url('background/SimpleStyle.gif') left 320px;
-}
-
-.SimpleGreen .OverRestoreIcon {
- background: url('background/SimpleStyle.gif') right 320px;
-}
-
-.SimpleGreen .NormalIcon {
- background: url('background/SimpleStyle.gif') left 320px;
-}
-
-.SimpleGreen .OverNormalIcon {
- background: url('background/SimpleStyle.gif') right 320px;
-}
-
-.SimpleGreen .WindowBarLeft {
- border: 1px solid #a0b9b6;
- border-bottom: none;
-}
-
-.SimpleGreen .WindowBarRight {
- border: 1px solid #eaf4ff;
-}
-
-.SimpleGreen .WindowBarCenter {
- background: #a3d0ff;
-}
-
-.SimpleGreen .WindowBarCenter .FixHeight {
- height: 18px;
- line-height: 18px;
-}
-
-
-.SimpleGreen .MiddleDecoratorLeft {
- border-left: 1px solid #a0b9b6;
- border-right: 1px solid #a0b9b6;
-}
-
-.SimpleGreen .MiddleDecoratorRight {
- border: 2px solid #eaf4ff;
- border-top: none;
- border-bottom: none;
-}
-
-.SimpleGreen .MiddleDecoratorCenter {
- background: #ffffff;
- border: 1px solid #4c717e;
- border-bottom: none;
- padding: 1px;
-}
-
-.SimpleGreen .BottomDecoratorLeft {
- border: 1px solid #a0b9b6;
- border-top: none;
-}
-
-.SimpleGreen .BottomDecoratorRight {
- background: #eaf4ff;
- padding: 0px 2px 2px 2px;
-}
-
-.SimpleGreen .BottomDecoratorCenter {
- border: 1px solid #4c717e;
- border-top: none;
- background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
-}
-
-.SimpleGreen .BottomDecoratorCenter .FixHeight {
- height: 19px;
-}
-
-.UIPortlet .SimpleGreen .BottomDecoratorCenter {
- height: 18px;
-}
Copied: portal/trunk/component/web/resources/src/test/resources/skin/test_1.css (from rev 6803, portal/branches/branch-GTNPORTAL-1921/component/web/resources/src/test/resources/skin/test_1.css)
===================================================================
--- portal/trunk/component/web/resources/src/test/resources/skin/test_1.css (rev 0)
+++ portal/trunk/component/web/resources/src/test/resources/skin/test_1.css 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,3320 @@
+/**
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+/*-------------------------- DefaultTheme ---------------------------*/
+
+.DefaultTheme .WindowBarCenter .WindowPortletInfo {
+ margin-right: 80px; /* orientation=lt */
+ margin-left: 80px; /* orientation=rt */
+}
+
+.DefaultTheme .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 24px;
+ height: 17px;
+ cursor: pointer;
+ background-image: url('background/DefaultTheme.png');
+}
+
+.DefaultTheme .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.DefaultTheme .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.DefaultTheme .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.DefaultTheme .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.DefaultTheme .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.DefaultTheme .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.DefaultTheme .RestoreIcon {
+ background-position: center 92px;
+}
+
+.DefaultTheme .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.DefaultTheme .NormalIcon {
+ background-position: center 92px;
+}
+
+.DefaultTheme .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.DefaultTheme .Information {
+ height: 18px; line-height: 18px;
+ vertical-align: middle; font-size: 10px;
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+}
+
+.DefaultTheme .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+ line-height: 16px;
+}
+
+.DefaultTheme .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.DefaultTheme .WindowBarLeft {
+ padding-left: 12px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -148px;
+}
+
+.DefaultTheme .WindowBarRight {
+ padding-right: 11px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -119px;
+}
+
+.DefaultTheme .WindowBarCenter {
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: repeat-x;
+ background-position: left -90px;
+}
+
+.DefaultTheme .WindowBarCenter .FixHeight {
+ height: 21px;
+ padding-top: 8px;
+}
+
+.DefaultTheme .MiddleDecoratorLeft {
+ padding-left: 12px;
+ background: url('background/MDefaultTheme.png') repeat-y left;
+}
+
+.DefaultTheme .MiddleDecoratorRight {
+ padding-right: 11px;
+ background: url('background/MDefaultTheme.png') repeat-y right;
+}
+
+.DefaultTheme .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.DefaultTheme .BottomDecoratorLeft {
+ padding-left: 12px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.DefaultTheme .BottomDecoratorRight {
+ padding-right: 11px;
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.DefaultTheme .BottomDecoratorCenter {
+ background-image: url('background/DefaultTheme.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.DefaultTheme .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*-------------------------- MacTheme ---------------------------*/
+
+.MacTheme .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacTheme .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacTheme .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacTheme .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacTheme .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacTheme.png');
+}
+
+.MacTheme .ArrowDownIcon {
+ background-position: center 18px;
+}
+
+.MacTheme .OverArrowDownIcon {
+ background-position: center 98px;
+}
+
+.MacTheme .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacTheme .OverMinimizedIcon {
+ background-position: center 118px;
+}
+
+.MacTheme .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacTheme .OverMaximizedIcon {
+ background-position: center 138px;
+}
+
+.MacTheme .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacTheme .OverNormalIcon {
+ background-position: center 158px;
+}
+
+.MacTheme .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacTheme .OverRestoreIcon {
+ background-position: center 158px;
+}
+
+.MacTheme .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacTheme .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px;
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacTheme .MiddleDecoratorLeft {
+ background: url('background/MMacTheme.png') repeat-y left;
+ padding: 0px 0px 0px 5px;
+}
+
+.MacTheme .MiddleDecoratorRight {
+ padding: 0px 5px 0px 0px;
+ background: url('background/MMacTheme.png') repeat-y right;
+}
+
+.MacTheme .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .MacTheme .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.MacTheme .BottomDecoratorLeft {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -46px;
+ padding: 0px 0px 0px 5px;
+}
+
+.MacTheme .BottomDecoratorRight {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -23px;
+ padding: 0px 5px 0px 0px;
+}
+
+.MacTheme .BottomDecoratorCenter {
+ background-image: url('background/MacTheme.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.MacTheme .BottomDecoratorCenter .FixHeight {
+ height: 23px; line-height: 23px;
+}
+
+.MacTheme .WindowBarLeft {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -115px;
+ padding: 0px 0px 0px 12px;
+}
+
+.MacTheme .WindowBarRight {
+ background-image: url('background/MacTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -92px;
+ padding: 0px 12px 0px 0px;
+}
+
+.MacTheme .WindowBarCenter {
+ background-image: url('background/MacTheme.png');
+ background-repeat: repeat-x;
+ background-position: center -69px;
+}
+
+.MacTheme .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------- MacGray ---------------------------*/
+
+.MacGray .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacGray .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacGray .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacGray .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacGray .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacGray.png');
+}
+
+.MacGray .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.MacGray .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.MacGray .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacGray .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.MacGray .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacGray .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.MacGray .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacGray .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.MacGray .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacGray .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.MacGray .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacGray .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacGray .MiddleDecoratorLeft {
+ background: url('background/MMacGray.png') repeat-y left;
+ padding: 0px 0px 0px 8px;
+}
+
+.MacGray .MiddleDecoratorRight {
+ padding: 0px 8px 0px 0px;
+ background: url('background/MMacGray.png') repeat-y right;
+}
+
+.MacGray .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.MacGray .MiddleDecoratorCenter {
+ height:100%;
+}
+
+.MacGray .BottomDecoratorLeft {
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding: 0px 0px 0px 9px;
+}
+
+.MacGray .BottomDecoratorRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+}
+
+.MacGray .BottomDecoratorCenter {
+ background-image: url('background/MacGray.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.MacGray .BottomDecoratorCenter .FixHeight {
+ height: 24px; line-height: 24px;
+}
+
+.MacGray .WindowBarLeft {
+ padding: 0px 0px 0px 9px;
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: left -118px;
+}
+
+.MacGray .WindowBarRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGray.png');
+ background-repeat: no-repeat;
+ background-position: right -95px;
+}
+
+.MacGray .WindowBarCenter {
+ background-image: url('background/MacGray.png');
+ background-repeat: repeat-x;
+ background-position: center -72px;
+}
+
+.MacGray .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------- MacBlack ---------------------------*/
+
+.MacBlack .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacBlack .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacBlack .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacBlack .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacBlack .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacBlack.png');
+}
+
+.MacBlack .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.MacBlack .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.MacBlack .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacBlack .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.MacBlack .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacBlack .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.MacBlack .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacBlack .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.MacBlack .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacBlack .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.MacBlack .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacBlack .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacBlack .MiddleDecoratorLeft {
+ background: url('background/MMacBlack.png') repeat-y left;
+ padding: 0px 0px 0px 8px;
+}
+
+.MacBlack .MiddleDecoratorRight {
+ padding: 0px 8px 0px 0px;
+ background: url('background/MMacBlack.png') repeat-y right;
+}
+
+.MacBlack .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .MacBlack .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.MacBlack .BottomDecoratorLeft {
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding: 0px 0px 0px 9px;
+}
+
+.MacBlack .BottomDecoratorRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+}
+
+.MacBlack .BottomDecoratorCenter {
+ background-image: url('background/MacBlack.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.MacBlack .BottomDecoratorCenter .FixHeight {
+ height: 24px; line-height: 24px;
+}
+
+.MacBlack .WindowBarLeft {
+ padding: 0px 0px 0px 9px;
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: left -118px;
+}
+
+.MacBlack .WindowBarRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacBlack.png');
+ background-repeat: no-repeat;
+ background-position: right -95px;
+}
+
+.MacBlack .WindowBarCenter {
+ background-image: url('background/MacBlack.png');
+ background-repeat: repeat-x;
+ background-position: center -72px;
+}
+
+.MacBlack .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------- MacGreenSteel ---------------------------*/
+
+.MacGreenSteel .WindowBarCenter .WindowPortletInfo {
+ margin: 0px 70px 0px 0px; /* orientation=lt */
+ margin: 0px 0px 0px 70px; /* orientation=rt */
+}
+
+.MacGreenSteel .WindowBarCenter .WindowPortletIcon {
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.MacGreenSteel .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 17px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.MacGreenSteel .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat left top; /* orientation=lt */
+ background: url('/eXoSkinMac/skin/MacSkin/skinIcons/16x16/icons/DefaultPortletIcon.png') no-repeat right top; /* orientation=rt */
+}
+
+.MacGreenSteel .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 21px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/MacGreen.png');
+}
+
+.MacGreenSteel .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.MacGreenSteel .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.MacGreenSteel .MinimizedIcon {
+ background-position: center 37px;
+}
+
+.MacGreenSteel .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.MacGreenSteel .MaximizedIcon {
+ background-position: center 57px;
+}
+
+.MacGreenSteel .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.MacGreenSteel .NormalIcon {
+ background-position: center 78px;
+}
+
+.MacGreenSteel .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.MacGreenSteel .RestoreIcon {
+ background-position: center 78px;
+}
+
+.MacGreenSteel .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.MacGreenSteel .BackgroundIcon {
+ float: left; /* orientation=lt */
+ float: right; /* orientation=rt */
+ margin: 4px 2px 0px 2px;
+}
+
+.MacGreenSteel .Information {
+ height: 16px; line-height: 14px; vertical-align: middle;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.MacGreenSteel .MiddleDecoratorLeft {
+ background: url('background/MMacGreen.png') repeat-y left;
+ padding: 0px 0px 0px 8px;
+}
+
+.MacGreenSteel .MiddleDecoratorRight {
+ padding: 0px 8px 0px 0px;
+ background: url('background/MMacGreen.png') repeat-y right;
+}
+
+.MacGreenSteel .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .MacGreenSteel .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.MacGreenSteel .BottomDecoratorLeft {
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding: 0px 0px 0px 9px;
+}
+
+.MacGreenSteel .BottomDecoratorRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+}
+
+.MacGreenSteel .BottomDecoratorCenter {
+ background-image: url('background/MacGreen.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.MacGreenSteel .BottomDecoratorCenter .FixHeight {
+ height: 24px; line-height: 24px;
+}
+
+.MacGreenSteel .WindowBarLeft {
+ padding: 0px 0px 0px 9px;
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -118px;
+}
+
+.MacGreenSteel .WindowBarRight {
+ padding: 0px 9px 0px 0px;
+ background-image: url('background/MacGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -95px;
+}
+
+.MacGreenSteel .WindowBarCenter {
+ background-image: url('background/MacGreen.png');
+ background-repeat: repeat-x;
+ background-position: center -72px;
+}
+
+.MacGreenSteel .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 4px;
+}
+
+/*-------------------------------- VistaTheme -----------------------------*/
+
+.VistaTheme .WindowBarCenter .WindowPortletInfo {
+ margin-right: 95px; /* orientation=lt */
+ margin-left: 95px; /* orientation=rt */
+
+}
+
+.VistaTheme .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 22px;
+}
+
+.VistaTheme .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
+}
+
+.VistaTheme .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 30px;
+ height: 20px;
+ cursor: pointer;
+ background-image: url('background/VistaTheme.png'); /* orientation=lt */
+ background-image: url('background/VistaTheme-rt.png'); /* orientation=rt */
+}
+
+.VistaTheme .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.VistaTheme .OverArrowDownIcon {
+ background-position: center 100px;
+}
+
+.VistaTheme .MinimizedIcon {
+ background-position: center 40px;
+}
+
+.VistaTheme .OverMinimizedIcon {
+ background-position: center 120px;
+}
+
+.VistaTheme .MaximizedIcon {
+ background-position: center 60px;
+}
+
+.VistaTheme .OverMaximizedIcon {
+ background-position: center 140px;
+}
+
+.VistaTheme .NormalIcon {
+ background-position: center 80px;
+}
+
+.VistaTheme .OverNormalIcon {
+ background-position: center 160px;
+}
+
+.VistaTheme .RestoreIcon {
+ background-position: center 80px;
+}
+
+.VistaTheme .OverRestoreIcon {
+ background-position: center 160px;
+}
+
+.VistaTheme .Information {
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+}
+
+.VistaTheme .MiddleDecoratorCenter {
+ background: #ffffff;
+ border: solid 1px #717171;
+}
+
+.VistaTheme .MiddleDecoratorLeft {
+ padding-left:12px;
+ background: url('background/MVistaTheme.png') repeat-y left;
+}
+
+.VistaTheme .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MVistaTheme.png') repeat-y right;
+}
+
+.UIPageBody .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.VistaTheme .BottomDecoratorLeft {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -48px;
+ padding-left: 12px;
+}
+
+.VistaTheme .BottomDecoratorRight {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -24px;
+ padding-right: 13px;
+}
+
+.VistaTheme .BottomDecoratorCenter {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.VistaTheme .BottomDecoratorCenter .FixHeight {
+ height: 24px;
+}
+
+.VistaTheme .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 22px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.VistaTheme .WindowBarLeft {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: left -130px;
+ padding-left: 12px;
+}
+
+.VistaTheme .WindowBarRight {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: no-repeat;
+ background-position: right -101px;
+ padding-right: 16px;
+}
+
+.VistaTheme .WindowBarCenter {
+ background-image: url('background/VistaTheme.png');
+ background-repeat: repeat-x;
+ background-position: left -72px;
+}
+
+.VistaTheme .WindowBarCenter .FixHeight {
+ height: 24px;
+ padding-top: 5px;
+}
+
+/*-------------------------------- VistaBlue -----------------------------*/
+
+.VistaBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 95px; /* orientation=lt */
+ margin-left: 95px; /* orientation=rt */
+
+}
+
+.VistaBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 20px;
+}
+
+.VistaBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ line-height: 22px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.VistaBlue .WindowBarCenter .PortletIcon {
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon.png') no-repeat left 3px; /* orientation=lt */
+ background: url('/eXoSkinVista/skin/VistaSkin/skinIcons/16x16/icons/PortletIcon-rt.png') no-repeat right 3px; /* orientation=rt */
+}
+
+.VistaBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 30px; height: 19px;
+ cursor: pointer;
+ background-image: url('background/VistaBlue.png');
+}
+
+.VistaBlue .ArrowDownIcon {
+ background-position: center 19px;
+}
+
+.VistaBlue .OverArrowDownIcon {
+ background-position: center 99px;
+}
+
+.VistaBlue .MinimizedIcon {
+ background-position: center 39px;
+}
+
+.VistaBlue .OverMinimizedIcon {
+ background-position: center 119px;
+}
+
+.VistaBlue .MaximizedIcon {
+ background-position: center 59px;
+}
+
+.VistaBlue .OverMaximizedIcon {
+ background-position: center 139px;
+}
+
+.VistaBlue .NormalIcon {
+ background-position: center 79px;
+}
+
+.VistaBlue .OverNormalIcon {
+ background-position: center 159px;
+}
+
+.VistaBlue .RestoreIcon {
+ background-position: center 79px;
+}
+
+.VistaBlue .OverRestoreIcon {
+ background-position: center 159px;
+}
+
+.VistaBlue .Information {
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+}
+
+.VistaBlue .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .VistaBlue .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.VistaBlue .MiddleDecoratorLeft {
+ padding-left: 15px;
+ background: url('background/MVistaBlue.png') repeat-y left;
+}
+
+.VistaBlue .MiddleDecoratorRight {
+ padding-right: 18px;
+ background: url('background/MVistaBlue.png') repeat-y right;
+}
+
+.UIPortlet .VistaBlue .MiddleDecoratorRight {
+ padding-right: 16px;
+}
+
+.VistaBlue .BottomDecoratorLeft {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -54px;
+ padding-left: 15px;
+}
+
+.VistaBlue .BottomDecoratorRight {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -27px;
+ padding-right: 15px;
+}
+
+.VistaBlue .BottomDecoratorCenter {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: repeat-x;
+ background-position: left top;
+}
+
+.VistaBlue .BottomDecoratorCenter .FixHeight {
+ height: 27px;
+}
+
+.VistaBlue .WindowBarLeft {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -151px;
+ padding-left: 15px;
+}
+
+.VistaBlue .WindowBarRight {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -116px;
+ padding-right: 15px;
+}
+
+.VistaBlue .WindowBarCenter {
+ background-image: url('background/VistaBlue.png');
+ background-repeat: repeat-x;
+ background-position: left -81px;
+}
+
+.VistaBlue .WindowBarCenter .FixHeight {
+ height: 27px;
+ padding-top: 8px;
+}
+
+/*-------------------------- RoundConerBlue ---------------------------*/
+
+.RoundConerBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+
+}
+
+.RoundConerBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundCornerBlue.png');
+}
+
+.RoundConerBlue .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerBlue .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerBlue .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerBlue .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerBlue .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerBlue .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerBlue .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerBlue .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerBlue .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerBlue .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerBlue .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerBlue .WindowBarLeft {
+ padding-left: 12px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -154px;
+}
+
+.RoundConerBlue .WindowBarRight {
+ padding-right: 12px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -122px;
+}
+
+.RoundConerBlue .WindowBarCenter {
+ background: url('background/RoundCornerBlue.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerBlue .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.RoundConerBlue .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerBlue.png') repeat-y left;
+}
+
+.RoundConerBlue .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerBlue.png') repeat-y right;
+}
+
+.RoundConerBlue .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerBlue .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerBlue .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerBlue .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundCornerBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerBlue .BottomDecoratorCenter {
+ background: url('background/RoundCornerBlue.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerBlue .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------ RoundConerViolet -----------------*/
+
+.RoundConerViolet .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+
+}
+
+.RoundConerViolet .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerViolet.png');
+}
+
+.RoundConerViolet .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ padding-left: 5px;
+ margin-right: 18px;
+}
+
+.RoundConerViolet .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerViolet .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerViolet .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerViolet .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerViolet .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerViolet .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerViolet .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerViolet .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerViolet .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerViolet .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerViolet .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerViolet .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerViolet .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerViolet .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerViolet .WindowBarCenter {
+ background: url('background/RoundConerViolet.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerViolet .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerViolet .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerViolet .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerViolet.png') repeat-y left;
+}
+
+.RoundConerViolet .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerViolet.png') repeat-y right;
+}
+
+.RoundConerViolet .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerViolet .MiddleDecoratorCenter {
+ height:100%;
+}
+
+.RoundConerViolet .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerViolet .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerViolet .BottomDecoratorCenter {
+ background: url('background/RoundConerViolet.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerViolet .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------------------- RoundConerOrange ----------------------------------*/
+
+.RoundConerOrange .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.RoundConerOrange .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerOrange.png');
+}
+
+.RoundConerOrange .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerOrange .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerOrange .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerOrange .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerOrange .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerOrange .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerOrange .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerOrange .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerOrange .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerOrange .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerOrange .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerOrange .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerOrange .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerOrange .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerOrange .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerOrange .WindowBarCenter {
+ background: url('background/RoundConerOrange.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerOrange .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerOrange .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerOrange .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerOrange.png') repeat-y left;
+}
+
+.RoundConerOrange .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerOrange.png') repeat-y right;
+}
+
+.RoundConerOrange .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerOrange .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerOrange .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerOrange .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerOrange .BottomDecoratorCenter {
+ background: url('background/RoundConerOrange.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerOrange .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------------------- RoundConerPink ----------------------------------*/
+
+.RoundConerPink .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.RoundConerPink .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerPink.png');
+}
+
+.RoundConerPink .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerPink .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerPink .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerPink .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerPink .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerPink .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerPink .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerPink .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerPink .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerPink .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerPink .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerPink .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerPink .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerPink .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerPink .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerPink .WindowBarCenter {
+ background: url('background/RoundConerPink.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerPink .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerPink .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerPink .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerPink.png') repeat-y left;
+}
+
+.RoundConerPink .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerPink.png') repeat-y right;
+}
+
+.RoundConerPink .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerPink .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerPink .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerPink .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerPink.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerPink .BottomDecoratorCenter {
+ background: url('background/RoundConerPink.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerPink .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*------------------------------- RoundConerGreen ----------------------------------*/
+
+.RoundConerGreen .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.RoundConerGreen .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/RoundConerGreen.png');
+}
+
+.RoundConerGreen .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.RoundConerGreen .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.RoundConerGreen .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 19px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.RoundConerGreen .ArrowDownIcon {
+ background-position: center 21px;
+}
+
+.RoundConerGreen .OverArrowDownIcon {
+ background-position: center 117px;
+}
+
+.RoundConerGreen .MinimizedIcon {
+ background-position: center 45px;
+}
+
+.RoundConerGreen .OverMinimizedIcon {
+ background-position: center 141px;
+}
+
+.RoundConerGreen .MaximizedIcon {
+ background-position: center 69px;
+}
+
+.RoundConerGreen .OverMaximizedIcon {
+ background-position: center 165px;
+}
+
+.RoundConerGreen .RestoreIcon {
+ background-position: center 93px;
+}
+
+.RoundConerGreen .OverRestoreIcon {
+ background-position: center 189px;
+}
+
+.RoundConerGreen .NormalIcon {
+ background-position: center 93px;
+}
+
+.RoundConerGreen .OverNormalIcon {
+ background-position: center 189px;
+}
+
+.RoundConerGreen .WindowBarLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -153px;
+}
+
+.RoundConerGreen .WindowBarRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -121px;
+}
+
+.RoundConerGreen .WindowBarCenter {
+ background: url('background/RoundConerGreen.png') repeat-x;
+ background-position: left -90px;
+}
+
+.RoundConerGreen .WindowBarCenter .FixHeight {
+ height: 22px;
+ padding-top: 10px;
+}
+
+.UIPortlet .RoundConerGreen .WindowBarCenter {
+ height: 31px;
+}
+
+.RoundConerGreen .MiddleDecoratorLeft {
+ padding-left: 13px;
+ background: url('background/MRoundConerGreen.png') repeat-y left;
+}
+
+.RoundConerGreen .MiddleDecoratorRight {
+ padding-right: 13px;
+ background: url('background/MRoundConerGreen.png') repeat-y right;
+}
+
+.RoundConerGreen .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .RoundConerGreen .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.RoundConerGreen .BottomDecoratorLeft {
+ padding-left: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -60px;
+}
+
+.RoundConerGreen .BottomDecoratorRight {
+ padding-right: 13px;
+ background-image: url('background/RoundConerGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -30px;
+}
+
+.RoundConerGreen .BottomDecoratorCenter {
+ background: url('background/RoundConerGreen.png') repeat-x;
+ background-position: top;
+}
+
+.RoundConerGreen .BottomDecoratorCenter .FixHeight {
+ height: 30px;
+}
+
+/*-------------------------- ShadowBlue ---------------------------*/
+
+.ShadowBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowBlue.png');
+}
+
+.ShadowBlue .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowBlue .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowBlue .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowBlue .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowBlue .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowBlue .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowBlue .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowBlue .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowBlue .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowBlue .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowBlue .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowBlue .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowBlue .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowBlue .WindowBarCenter {
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowBlue .WindowBarCenter .FixHeight {
+ height: 20px;
+ padding-top: 9px;
+}
+
+.ShadowBlue .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowBlue.png') repeat-y left;
+}
+
+.ShadowBlue .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowBlue.png') repeat-y right;
+}
+
+.ShadowBlue .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowBlue .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowBlue .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowBlue .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowBlue .BottomDecoratorCenter {
+ background-image: url('background/ShadowBlue.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowBlue .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowViolet -----------------------------------*/
+
+.ShadowViolet .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowViolet .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowViolet.png');
+}
+
+.ShadowViolet .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowViolet .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowViolet .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowViolet .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowViolet .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowViolet .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowViolet .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowViolet .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowViolet .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowViolet .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowViolet .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowViolet .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowViolet .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowViolet .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowViolet .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowViolet .WindowBarCenter {
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowViolet .WindowBarCenter .FixHeight {
+ height: 20px;
+ padding-top: 9px;
+}
+
+.ShadowViolet .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowViolet.png') repeat-y left;
+}
+
+.ShadowViolet .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowViolet.png') repeat-y right;
+}
+
+.ShadowViolet .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowViolet .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowViolet .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowViolet .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowViolet .BottomDecoratorCenter {
+ background-image: url('background/ShadowViolet.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowViolet .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowOrange -----------------------------------*/
+
+.ShadowOrange .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowOrange .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowOrange.png');
+}
+
+.ShadowOrange .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowOrange .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowOrange .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowOrange .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowOrange .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowOrange .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowOrange .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowOrange .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowOrange .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowOrange .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowOrange .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowOrange .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowOrange .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowOrange .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowOrange .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowOrange .WindowBarCenter {
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowOrange .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 10px;
+}
+
+.ShadowOrange .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowOrange.png') repeat-y left;
+}
+
+.ShadowOrange .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowOrange.png') repeat-y right;
+}
+
+.ShadowOrange .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowOrange .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowOrange .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowOrange .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowOrange .BottomDecoratorCenter {
+ background-image: url('background/ShadowOrange.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowOrange .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowPink -----------------------------------*/
+
+
+.ShadowPink .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowPink .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowPink.png');
+}
+
+.ShadowPink .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowPink .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowPink .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowPink .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowPink .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowPink .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowPink .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowPink .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowPink .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowPink .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowPink .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowPink .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowPink .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowPink .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowPink .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowPink .WindowBarCenter {
+ background-image: url('background/ShadowPink.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowPink .WindowBarCenter .FixHeight {
+ height: 19px;
+ padding-top: 10px;
+}
+
+.ShadowPink .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowPink.png') repeat-y left;
+}
+
+.ShadowPink .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowPink.png') repeat-y right;
+}
+
+.ShadowPink .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowPink .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowPink .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowPink .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowPink.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowPink .BottomDecoratorCenter {
+ background-image: url('background/ShadowPink.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowPink .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ ShadowGreen -----------------------------------*/
+
+
+.ShadowGreen .WindowBarCenter .WindowPortletInfo {
+ margin-right: 70px; /* orientation=lt */
+ margin-left: 70px; /* orientation=rt */
+}
+
+.ShadowGreen .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 20px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+ background-image: url('background/ShadowGreen.png');
+}
+
+.ShadowGreen .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.ShadowGreen .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.ShadowGreen .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ line-height: 16px;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.ShadowGreen .ArrowDownIcon {
+ background-position: center 20px;
+}
+
+.ShadowGreen .OverArrowDownIcon {
+ background-position: center 116px;
+}
+
+.ShadowGreen .MinimizedIcon {
+ background-position: center 44px;
+}
+
+.ShadowGreen .OverMinimizedIcon {
+ background-position: center 140px;
+}
+
+.ShadowGreen .MaximizedIcon {
+ background-position: center 68px;
+}
+
+.ShadowGreen .OverMaximizedIcon {
+ background-position: center 164px;
+}
+
+.ShadowGreen .RestoreIcon {
+ background-position: center 92px;
+}
+
+.ShadowGreen .OverRestoreIcon {
+ background-position: center 188px;
+}
+
+.ShadowGreen .NormalIcon {
+ background-position: center 92px;
+}
+
+.ShadowGreen .OverNormalIcon {
+ background-position: center 188px;
+}
+
+.ShadowGreen .WindowBarLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -142px;
+}
+
+.ShadowGreen .WindowBarRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -113px;
+}
+
+.ShadowGreen .WindowBarCenter {
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: repeat-x;
+ background-position: center -84px;
+}
+
+.ShadowGreen .WindowBarCenter .FixHeight {
+ height: 20px;
+ padding-top: 9px;
+}
+
+.ShadowGreen .MiddleDecoratorLeft {
+ padding-left: 11px;
+ background: url('background/MShadowGreen.png') repeat-y left;
+}
+
+.ShadowGreen .MiddleDecoratorRight {
+ padding-right: 10px;
+ background: url('background/MShadowGreen.png') repeat-y right;
+}
+
+.ShadowGreen .MiddleDecoratorCenter {
+ background: #ffffff;
+}
+
+.UIPortlet .ShadowGreen .MiddleDecoratorCenter {
+ height: 100%;
+}
+
+.ShadowGreen .BottomDecoratorLeft {
+ padding-left: 11px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: left -56px;
+}
+
+.ShadowGreen .BottomDecoratorRight {
+ padding-right: 10px;
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: no-repeat;
+ background-position: right -28px;
+}
+
+.ShadowGreen .BottomDecoratorCenter {
+ background-image: url('background/ShadowGreen.png');
+ background-repeat: repeat-x;
+ background-position: center top;
+}
+
+.ShadowGreen .BottomDecoratorCenter .FixHeight {
+ height: 28px;
+}
+
+/*------------------------------ SimpleBlue -----------------------------------*/
+
+.SimpleBlue .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleBlue .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleBlue .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleBlue .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleBlue .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleBlue .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 16px;
+}
+
+.SimpleBlue .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 16px;
+}
+
+.SimpleBlue .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 32px;
+}
+
+.SimpleBlue .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 32px;
+}
+
+.SimpleBlue .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 48px;
+}
+
+.SimpleBlue .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 48px;
+}
+
+.SimpleBlue .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 64px;
+}
+
+.SimpleBlue .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 64px;
+}
+
+.SimpleBlue .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 64px;
+}
+
+.SimpleBlue .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 64px;
+}
+
+.SimpleBlue .WindowBarLeft {
+ border: 1px solid #3d589d;
+ border-bottom: none;
+}
+
+.SimpleBlue .WindowBarRight {
+ border: 1px solid #d7e5f2;
+}
+
+.SimpleBlue .WindowBarCenter {
+ background: #b0c0f5;
+}
+
+.SimpleBlue .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+
+.SimpleBlue .MiddleDecoratorLeft {
+ border-left: 1px solid #3d589d;
+ border-right: 1px solid #3d589d;
+}
+
+.SimpleBlue .MiddleDecoratorRight {
+ border: 2px solid #d7e5f2;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleBlue .MiddleDecoratorCenter {
+ border: 1px solid #4a67b1;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimpleBlue .BottomDecoratorLeft {
+ border-left: 1px solid #3d589d;
+ border-right: 1px solid #3d589d;
+ border-bottom: 1px solid #3d589d;
+}
+
+.SimpleBlue .BottomDecoratorRight {
+ border: 2px solid #d7e5f2;
+ border-top: none;
+}
+
+.SimpleBlue .BottomDecoratorCenter {
+ border: 1px solid #4a67b1;
+ border-top: none;
+ background: white url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleBlue .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+/*------------------------------ SimpleViolet -----------------------------------*/
+
+.SimpleViolet .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleViolet .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleViolet .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleViolet .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleViolet .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleViolet .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 80px;
+}
+
+.SimpleViolet .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 80px;
+}
+
+.SimpleViolet .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 96px;
+}
+
+.SimpleViolet .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 96px;
+}
+
+.SimpleViolet .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 112px;
+}
+
+.SimpleViolet .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 112px;
+}
+
+.SimpleViolet .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 128px;
+}
+
+.SimpleViolet .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 128px;
+}
+
+.SimpleViolet .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 128px;
+}
+
+.SimpleViolet .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 128px;
+}
+
+.SimpleViolet .WindowBarLeft {
+ border: 1px solid #c41fdc;
+ border-bottom: none;
+}
+
+.SimpleViolet .WindowBarRight {
+ border: 1px solid #ece7ff;
+}
+
+.SimpleViolet .WindowBarCenter {
+ background: #c4a6ff;
+}
+
+.SimpleViolet .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+.SimpleViolet .MiddleDecoratorLeft {
+ border-left: 1px solid #c41fdc;
+ border-right: 1px solid #c41fdc;
+}
+
+.SimpleViolet .MiddleDecoratorRight {
+ border: 2px solid #ece7ff;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleViolet .MiddleDecoratorCenter {
+ border: 1px solid #5700a9;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimpleViolet .BottomDecoratorLeft {
+ border: 1px solid #c41fdc;
+ border-top: none;
+}
+
+.SimpleViolet .BottomDecoratorRight {
+ border: 2px solid #ece7ff;
+ border-top: none;
+}
+
+.SimpleViolet .BottomDecoratorCenter {
+ border: 1px solid #5700a9;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleViolet .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimpleViolet .BottomDecoratorCenter {
+ height: 18px;
+}
+
+/*------------------------------ SimpleOrange -----------------------------------*/
+
+.SimpleOrange .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleOrange .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleOrange .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleOrange .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleOrange .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleOrange .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 144px;
+}
+
+.SimpleOrange .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 144px;
+}
+
+.SimpleOrange .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 160px;
+}
+
+.SimpleOrange .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 160px;
+}
+
+.SimpleOrange .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 192px;
+}
+
+.SimpleOrange .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 192px;
+}
+
+.SimpleOrange .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 176px;
+}
+
+.SimpleOrange .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 176px;
+}
+
+.SimpleOrange .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 176px;
+}
+
+.SimpleOrange .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 176px;
+}
+
+.SimpleOrange .WindowBarLeft {
+ border: 1px solid #ffb27f;
+ border-bottom: none;
+}
+
+.SimpleOrange .WindowBarRight {
+ border: 1px solid #fff1e5;
+}
+
+.SimpleOrange .WindowBarCenter {
+ background: #ffd1a8;
+}
+
+.SimpleOrange .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+.SimpleOrange .MiddleDecoratorLeft {
+ border-left: 1px solid #ffb27f;
+ border-right: 1px solid #ffb27f;
+}
+
+.SimpleOrange .MiddleDecoratorRight {
+ border: 2px solid #fff1e5;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleOrange .MiddleDecoratorCenter {
+ border: 1px solid #b27a49;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimpleOrange .BottomDecoratorLeft {
+ border: 1px solid #ffb27f;
+ border-top: none;
+}
+
+.SimpleOrange .BottomDecoratorRight {
+ border: 2px solid #fff1e5;
+ border-top: none;
+}
+
+.SimpleOrange .BottomDecoratorCenter {
+ border: 1px solid #b27a49;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleOrange .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimpleOrange .BottomDecoratorCenter {
+ height: 18px;
+}
+
+/*------------------------------ SimplePink -----------------------------------*/
+
+.SimplePink .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimplePink .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimplePink .Information {
+ height: 18px; line-height: 18px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimplePink .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimplePink .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimplePink .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 208px;
+}
+
+.SimplePink .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 208px;
+}
+
+.SimplePink .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 224px;
+}
+
+.SimplePink .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 224px;
+}
+
+.SimplePink .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 240px;
+}
+
+.SimplePink .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 240px;
+}
+
+.SimplePink .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 256px;
+}
+
+.SimplePink .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 256px;
+}
+
+.SimplePink .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 256px;
+}
+
+.SimplePink .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 256px;
+}
+
+.SimplePink .WindowBarLeft {
+ border: 1px solid #b69db3;
+ border-bottom: none;
+}
+
+.SimplePink .WindowBarRight {
+ border: 1px solid #fff1fd;
+}
+
+.SimplePink .WindowBarCenter {
+ background: #fdd8f9;
+}
+
+.SimplePink .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+.SimplePink .MiddleDecoratorLeft {
+ border-left: 1px solid #b69db3;
+ border-right: 1px solid #b69db3;
+}
+
+.SimplePink .MiddleDecoratorRight {
+ border: 2px solid #fff1fd;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimplePink .MiddleDecoratorCenter {
+ border: 1px solid #9a5591;
+ border-bottom: none;
+ background: #ffffff;
+ padding: 1px;
+}
+
+.SimplePink .BottomDecoratorLeft {
+ border: 1px solid #b69db3;
+ border-top: none;
+}
+
+.SimplePink .BottomDecoratorRight {
+ border: 2px solid #fff1fd;
+ border-top: none;
+}
+
+.SimplePink .BottomDecoratorCenter {
+ border: 1px solid #9a5591;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimplePink .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimplePink .BottomDecoratorCenter {
+ height: 18px;
+}
+
+/*------------------------------ SimpleGreen -----------------------------------*/
+
+.SimpleGreen .WindowBarCenter .WindowPortletInfo {
+ margin-right: 60px; /* orientation=lt */
+ margin-left: 60px; /* orientation=rt */
+}
+
+.SimpleGreen .WindowBarCenter .ControlIcon {
+ float: right; /* orientation=lt */
+ float: left; /* orientation=rt */
+ width: 16px; height: 16px;
+ margin-right: 2px; /* orientation=lt */
+ margin-left: 2px; /* orientation=rt */
+ cursor: pointer;
+}
+
+.SimpleGreen .Information {
+ line-height: 18px;
+ width: 100px;
+ font-size: 10px;
+ margin-right: 18px; /* orientation=lt */
+ margin-left: 18px; /* orientation=rt */
+ padding-left: 5px; /* orientation=lt */
+ padding-right: 5px; /* orientation=rt */
+}
+
+.SimpleGreen .WindowBarCenter .WindowPortletIcon {
+ background-position: left top; /* orientation=lt */
+ background-position: right top; /* orientation=rt */
+ padding-left: 20px; /* orientation=lt */
+ padding-right: 20px; /* orientation=rt */
+ height: 16px;
+}
+
+.SimpleGreen .WindowBarCenter .PortletName {
+ font-weight: bold;
+ color: #333333;
+ overflow: hidden;
+ white-space: nowrap;
+ width: 100%;
+}
+
+.SimpleGreen .ArrowDownIcon {
+ background: url('background/SimpleStyle.gif') left 272px;
+}
+
+.SimpleGreen .OverArrowDownIcon {
+ background: url('background/SimpleStyle.gif') right 272px;
+}
+
+.SimpleGreen .MinimizedIcon {
+ background: url('background/SimpleStyle.gif') left 288px;
+}
+
+.SimpleGreen .OverMinimizedIcon {
+ background: url('background/SimpleStyle.gif') right 288px;
+}
+
+.SimpleGreen .MaximizedIcon {
+ background: url('background/SimpleStyle.gif') left 304px;
+}
+
+.SimpleGreen .OverMaximizedIcon {
+ background: url('background/SimpleStyle.gif') right 304px;
+}
+
+.SimpleGreen .RestoreIcon {
+ background: url('background/SimpleStyle.gif') left 320px;
+}
+
+.SimpleGreen .OverRestoreIcon {
+ background: url('background/SimpleStyle.gif') right 320px;
+}
+
+.SimpleGreen .NormalIcon {
+ background: url('background/SimpleStyle.gif') left 320px;
+}
+
+.SimpleGreen .OverNormalIcon {
+ background: url('background/SimpleStyle.gif') right 320px;
+}
+
+.SimpleGreen .WindowBarLeft {
+ border: 1px solid #a0b9b6;
+ border-bottom: none;
+}
+
+.SimpleGreen .WindowBarRight {
+ border: 1px solid #eaf4ff;
+}
+
+.SimpleGreen .WindowBarCenter {
+ background: #a3d0ff;
+}
+
+.SimpleGreen .WindowBarCenter .FixHeight {
+ height: 18px;
+ line-height: 18px;
+}
+
+
+.SimpleGreen .MiddleDecoratorLeft {
+ border-left: 1px solid #a0b9b6;
+ border-right: 1px solid #a0b9b6;
+}
+
+.SimpleGreen .MiddleDecoratorRight {
+ border: 2px solid #eaf4ff;
+ border-top: none;
+ border-bottom: none;
+}
+
+.SimpleGreen .MiddleDecoratorCenter {
+ background: #ffffff;
+ border: 1px solid #4c717e;
+ border-bottom: none;
+ padding: 1px;
+}
+
+.SimpleGreen .BottomDecoratorLeft {
+ border: 1px solid #a0b9b6;
+ border-top: none;
+}
+
+.SimpleGreen .BottomDecoratorRight {
+ background: #eaf4ff;
+ padding: 0px 2px 2px 2px;
+}
+
+.SimpleGreen .BottomDecoratorCenter {
+ border: 1px solid #4c717e;
+ border-top: none;
+ background: url('background/BGDecoratorCenter1x18.gif') repeat-x;
+}
+
+.SimpleGreen .BottomDecoratorCenter .FixHeight {
+ height: 19px;
+}
+
+.UIPortlet .SimpleGreen .BottomDecoratorCenter {
+ height: 18px;
+}
Modified: portal/trunk/component/web/security/src/main/java/org/exoplatform/web/CacheUserProfileFilter.java
===================================================================
--- portal/trunk/component/web/security/src/main/java/org/exoplatform/web/CacheUserProfileFilter.java 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/component/web/security/src/main/java/org/exoplatform/web/CacheUserProfileFilter.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -27,6 +27,7 @@
import org.exoplatform.services.organization.OrganizationService;
import org.exoplatform.services.organization.User;
import org.exoplatform.services.security.ConversationState;
+import org.exoplatform.services.security.IdentityConstants;
import org.exoplatform.services.security.web.SetCurrentIdentityFilter;
import javax.servlet.FilterChain;
@@ -52,7 +53,7 @@
ConversationState state = ConversationState.getCurrent();
try
{
- if (state != null)
+ if (state != null && !state.getIdentity().getUserId().equals(IdentityConstants.ANONIM))
{
if (log.isDebugEnabled())
log.debug("Conversation State found, save user profile to Conversation State.");
@@ -66,7 +67,6 @@
User user = orgService.getUserHandler().findUserByName(state.getIdentity().getUserId());
end(orgService);
state.setAttribute(USER_PROFILE, user);
-
}
}
Modified: portal/trunk/docs/reference-guide/en-US/modules/AuthenticationAndIdentity/SSO.xml
===================================================================
--- portal/trunk/docs/reference-guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/docs/reference-guide/en-US/modules/AuthenticationAndIdentity/SSO.xml 2011-07-04 05:34:41 UTC (rev 6804)
@@ -4,7 +4,7 @@
%BOOK_ENTITIES;
]>
<section id="chap-Reference_Guide-SSO_Single_Sign_On">
- <title>SSO - Single Sign On</title>
+ <title>Single-Sign-On (SSO)</title>
<section id="sect-Reference_Guide-Single_Sign_On-Overview">
<title>Overview</title>
<para>
@@ -19,7 +19,7 @@
In this tutorial, the SSO server is installed in a Tomcat installation. Tomcat can be obtained from <ulink type="http" url="http://tomcat.apache.org">http://tomcat.apache.org</ulink>.
</para>
<para>
- All the packages required for setup can be found in a zip file located at: <ulink type="http" url="http://repository.jboss.org/maven2/org/gatein/sso/sso-packaging">http://repository.jboss.org/maven2/org/gatein/sso/sso-packaging</ulink>. In this document we will call the directory where the file is extracted $GATEIN_SSO_HOME.
+ All the packages required for setup can be found in a zip file located at: <ulink type="http" url="https://repository.jboss.org/nexus/content/groups/public/org/gatein/sso/s...">https://repository.jboss.org/nexus/content/groups/public/org/gatein/sso/s...</ulink>. In this document we will call $GATEIN_SSO_HOME the directory where the file is extracted.
</para>
<para>
Users are advised to not run any portal extensions that could override the data when manipulating the <filename>gatein.ear</filename> file directly.
@@ -32,7 +32,7 @@
</section>
<section id="sect-Reference_Guide-Single_Sign_On-CAS_Central_Authentication_Service">
- <title>CAS - Central Authentication Service</title>
+ <title>Central Authentication Service (CAS)</title>
<para>
This Single Sign On plugin enables seamless integration between &PRODUCT; and the CAS Single Sign On Framework. Details about CAS can be found <ulink url="http://www.ja-sig.org/products/cas/">here</ulink>.
</para>
@@ -55,7 +55,7 @@
</section>
<section id="sect-Reference_Guide-CAS_server-Modifying_CAS_server">
- <title>Modifying CAS server</title>
+ <title>Modifying the CAS server</title>
<para>
To configure the web archive as desired, the simplest way is to make the necessary changes directly in CAS codebase.
</para>
@@ -82,7 +82,7 @@
</step>
<step>
<para>
- Replace:
+ Replace:
<programlisting> <!--
| Whereas CredentialsToPrincipalResolvers identify who it is some Credentials might authenticate,
| AuthenticationHandlers actually authenticate credentials. Here e declare the AuthenticationHandlers that
@@ -116,7 +116,7 @@
With the following (Make sure to set the host, port and context with the values corresponding to your portal). Also available in <filename>GATEIN_SSO_HOME/cas/plugin/WEB-INF/deployerConfigContext.xml</filename>.
</para>
<para>
-
+
<programlisting><!--
| Whereas CredentialsToPrincipalResolvers identify who it is some Credentials might authenticate,
| AuthenticationHandlers actually authenticate credentials. Here we declare the AuthenticationHandlers that
@@ -226,10 +226,10 @@
<para>
In Tomcat, edit <filename>GATEIN_HOME/conf/jaas.conf</filename> and uncomment this section:
</para>
-<programlisting>org.gatein.sso.agent.login.SSOLoginModule required
+<programlisting>org.gatein.sso.agent.login.SSOLoginModule required;
org.exoplatform.services.security.j2ee.TomcatLoginModule required
portalContainerName=portal
-realmName=gatein-domain
+realmName=gatein-domain;
</programlisting>
</listitem>
</itemizedlist>
@@ -260,7 +260,7 @@
To utilize the Central Authentication Service, &PRODUCT; needs to redirect all user authentication to the CAS server.
</para>
<para>
- Information about where the CAS is hosted must be properly configured within the &PRODUCT; instance. The required configuration is done by modifying three files:
+ Information about where the CAS is hosted must be properly configured within the &PRODUCT; instance. The required configuration is done by modifying three files:
<itemizedlist>
<listitem>
<para>
@@ -291,7 +291,7 @@
<listitem>
<para>
Replace the entire contents of <filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
- </para>
+ </para>
<programlisting><html>
<head>
<script type="text/javascript">
@@ -307,7 +307,7 @@
<para>
Add the following Filters at the top of the filter chain in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
-
+
<programlisting>
<![CDATA[
<filter>
@@ -398,15 +398,18 @@
<section id="sect-Reference_Guide-JOSSO_server-Obtaining_JOSSO">
<title>Obtaining JOSSO</title>
<para>
- JOSSO can be downloaded from <ulink type="http" url="http://sourceforge.net/projects/josso/files/">http://sourceforge.net/projects/josso/files/</ulink>. Use the package that embeds Apache Tomcat. The integration was tested with JOSSO-1.8.1.
+ JOSSO can be downloaded from <ulink type="http" url="http://sourceforge.net/projects/josso/files/">http://sourceforge.net/projects/josso/files/</ulink>. Use the package that embeds Apache Tomcat.
</para>
<para>
Once downloaded, extract the package into what will be called <filename>JOSSO_HOME</filename> in this example.
</para>
+ <warning>
+ <para>The steps described later are only correct in case of JOSSO v.1.8.1.</para>
+ </warning>
</section>
<section id="sect-Reference_Guide-JOSSO_server-Modifying_JOSSO_server">
- <title>Modifying JOSSO server</title>
+ <title>Modifying the JOSSO server</title>
<procedure>
<step>
<para>
@@ -498,10 +501,10 @@
<para>
In Tomcat, edit <filename>GATEIN_HOME/conf/jaas.conf</filename> and uncomment this section:
</para>
-<programlisting>org.gatein.sso.agent.login.SSOLoginModule required
+<programlisting>org.gatein.sso.agent.login.SSOLoginModule required;
org.exoplatform.services.security.j2ee.TomcatLoginModule requiredtm
portalContainerName=portal
-realmName=gatein-domain
+realmName=gatein-domain;
</programlisting>
</listitem>
</itemizedlist>
@@ -532,7 +535,7 @@
The next part of the process is to redirect all user authentication to the JOSSO server.
</para>
<para>
- Information about where the JOSSO server is hosted must be properly configured within the &PRODUCT; instance. The required configuration is done by modifying four files:
+ Information about where the JOSSO server is hosted must be properly configured within the &PRODUCT; instance. The required configuration is done by modifying four files:
<itemizedlist>
<listitem>
<para>
@@ -563,7 +566,7 @@
<listitem>
<para>
Replace the entire contents of <filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
- </para>
+ </para>
<programlisting><html>
<head>
<script type="text/javascript">
@@ -579,7 +582,7 @@
<para>
Add the following Filters at the top of the filter chain in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
-
+
<programlisting>
<![CDATA[
<filter>
@@ -618,7 +621,7 @@
<listitem>
<para>
Replace the <literal>InitiateLoginServlet</literal> declaration in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> with:
- </para>
+ </para>
<programlisting><servlet>
<servlet-name>InitiateLoginServlet</servlet-name>
<servlet-class>org.gatein.sso.agent.GenericSSOAgent</servlet-class>
@@ -662,7 +665,7 @@
<section id="sect-Reference_Guide-OpenSSO_server-Obtaining_OpenSSO">
<title>Obtaining OpenSSO</title>
<para>
- OpenSSO can be downloaded from <ulink type="http" url="https://opensso.dev.java.net/public/use/index.html">https://opensso.dev.java.net/public/use/index.html</ulink>.
+ OpenSSO can be downloaded from <ulink type="http" url="http://download.oracle.com/otn/nt/middleware/11g/oracle_opensso_80U2.zip">http://download.oracle.com/otn/nt/middleware/11g/oracle_opensso_80U2.zip</ulink>.
</para>
<para>
Once downloaded, extract the package into a suitable location. This location will be referred to as <filename>OPENSSO_HOME</filename> in this example.
@@ -702,7 +705,7 @@
</step>
<step>
<para>
- Ensure the <filename>TOMCAT_HOME/webapps/opensso/config/auth/default/AuthenticationPlugin.xml</filename> file looks like this:
+ Ensure the <filename>TOMCAT_HOME/webapps/opensso/config/auth/default/AuthenticationPlugin.xml</filename> file looks like this:
<programlisting>
<?xml version='1.0' encoding="UTF-8"?>
@@ -794,7 +797,7 @@
<para>Do the same for "gatein" realm.</para>
</step>
</procedure>
- <para>TODO: The above OpenSSO manual configuration could be replaced by configuration files prepared in advance</para>
+ <para>Also, instead of configuring OpenSSO manually as above, you can refer to the available configuration files <ulink url="https://repository.jboss.org/nexus/content/groups/public/org/gatein/sso/s...">here</ulink>.</para>
</section>
</section>
@@ -825,18 +828,18 @@
</listitem>
<listitem>
<para>
- If you are running GateIn in Tomcat, edit $GATEIN_HOME/conf/jaas.conf and uncomment this section
+ If you are running &PRODUCT; in Tomcat, edit $GATEIN_HOME/conf/jaas.conf and uncomment this section
</para>
-<programlisting>org.gatein.sso.agent.login.SSOLoginModule required
+<programlisting>org.gatein.sso.agent.login.SSOLoginModule required;
org.exoplatform.services.security.j2ee.TomcatLoginModule required
portalContainerName=portal
-realmName=gatein-domain
+realmName=gatein-domain;
</programlisting>
</listitem>
</itemizedlist>
<para>
- At this point the installation can be tested:
+ At this point the installation can be tested:
</para>
<procedure>
<step>
@@ -891,7 +894,7 @@
<listitem>
<para>
Replace the entire contents of <filename>gatein.ear/02portal.war/login/jsp/login.jsp</filename> with:
- </para>
+ </para>
<programlisting><html>
<head>
<script type="text/javascript">
@@ -907,7 +910,7 @@
<para>
Add the following Filters at the top of the filter chain in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename>:
-
+
<programlisting>
<![CDATA[
<filter>
@@ -946,7 +949,7 @@
<listitem>
<para>
Replace the <literal>InitiateLoginServlet</literal> declaration in <filename>gatein.ear/02portal.war/WEB-INF/web.xml</filename> with:
- </para>
+ </para>
<programlisting><servlet>
<servlet-name>InitiateLoginServlet</servlet-name>
<servlet-class>org.gatein.sso.agent.GenericSSOAgent</servlet-class>
@@ -970,7 +973,7 @@
</section>
- <section id="sect-Reference_Guide-Single_Sign_On-SPNEGO">
+ <section id="Single_Sign_On-SPNEGO">
<title>SPNEGO</title>
<para>SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) is
used to authenticate transparently through the web browser after the
@@ -999,48 +1002,231 @@
<para>The User has seamless SSO into the web application.</para>
</step>
</procedure>
-
- <section>
- <title>Configuration</title>
- <para>GateIn uses JBoss Negotiation to enable SPNEGO based desktop
- SSO for the Portal. Here are the steps to integrate SPNEGO with
- GateIn.</para>
+
+ <section id="SPNEGO_server_configuration">
+ <title>SPNEGO Server Configuration</title>
+ <note>
+ <para>Information stated here only describes basic steps for you to configure the SPNEGO server. If you are already familiar with SPNEGO, jump to the <xref linkend="Single_Sign_On-SPNEGO-GateIn_Configuration" /> to see how to integrate SPNEGO with &PRODUCT;.</para>
+ </note>
+ <procedure>
+ <step>
+ <para>Correct the setup of network on the machine. For example, if you are using the "server.local.network" domain as your machine where Kerberos and &PRODUCT; are localed,
+ add the line containing the machine's IP address to the <emphasis role="bold">/etc/host </emphasis> file.
+ </para>
+ <programlisting>
+192.168.1.88 server.local.network
+ </programlisting>
+ <note>
+ <para>It is not recommended you use loopback addresses.</para>
+ </note>
+ </step>
+ <step>
+ <para>Install Kerberos with these packages: krb5-admin-server, krb5-kdc, krb5-config, krb5-user, krb5-clients, and krb5-rsh-server.
+ </para>
+ </step>
+ <step>
+ <para>Edit the Kerberos configuration file at <emphasis role="bold">/etc/krb5.config</emphasis>, including:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>Uncomment on these lines:</para>
+<programlisting>
+default_tgs_enctypes = des3-hmac-sha1
+default_tkt_enctypes = des3-hmac-sha1
+permitted_enctypes = des3-hmac-sha1
+</programlisting>
+ </listitem>
+ <listitem>
+ <para>Add <emphasis role="bold">local.network</emphasis> as a default realm and it is also added to the list of realms and remove the remains of realms. The content looks like:
+ </para>
+<programlisting>
+[libdefaults]
+ default_realm = LOCAL.NETWORK
+
+# The following krb5.conf variables are only for MIT Kerberos.
+ krb4_config = /etc/krb.conf
+ krb4_realms = /etc/krb.realms
+ kdc_timesync = 1
+ ccache_type = 4
+ forwardable = true
+ proxiable = true
+
+# The following encryption type specification will be used by MIT Kerberos
+# if uncommented. In general, the defaults in the MIT Kerberos code are
+# correct and overriding these specifications only serves to disable new
+# encryption types as they are added, creating interoperability problems.
+#
+# Thie only time when you might need to uncomment these lines and change
+# the enctypes is if you have local software that will break on ticket
+# caches containing ticket encryption types it doesn't know about (such as
+# old versions of Sun Java).
+
+ default_tgs_enctypes = des3-hmac-sha1
+ default_tkt_enctypes = des3-hmac-sha1
+ permitted_enctypes = des3-hmac-sha1
+
+# The following libdefaults parameters are only for Heimdal Kerberos.
+ v4_instance_resolve = false
+ v4_name_convert = {
+ host = {
+ rcmd = host
+ ftp = ftp
+ }
+ plain = {
+ something = something-else
+ }
+ }
+ fcc-mit-ticketflags = true
+
+[realms]
+ LOCAL.NETWORK = {
+ kdc = server.local.network
+ admin_server = server.local.network
+ }
+
+[domain_realm]
+ .local.network = LOCAL.NETWORK
+ local.network = LOCAL.NETWORK
+
+[login]
+ krb4_convert = true
+ krb4_get_tickets = false
+</programlisting>
+ </listitem>
+ </itemizedlist>
+ </step>
+ <step>
+ <para>Edit the KDC configuraton file at <emphasis role="bold">/etc/krb5kdc/kdc.conf</emphasis> that looks like.
+ </para>
+<programlisting>
+[kdcdefaults]
+ kdc_ports = 750,88
+
+[realms]
+ LOCAL.NETWORK = {
+ database_name = /home/gatein/krb5kdc/principal
+ admin_keytab = FILE:/home/gatein/krb5kdc/kadm5.keytab
+ acl_file = /home/gatein/krb5kdc/kadm5.acl
+ key_stash_file = /home/gatein/krb5kdc/stash
+ kdc_ports = 750,88
+ max_life = 10h 0m 0s
+ max_renewable_life = 7d 0h 0m 0s
+ master_key_type = des3-hmac-sha1
+ supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
+ default_principal_flags = +preauth
+ }
+
+[logging]
+ kdc = FILE:/home/gatein/krb5logs/kdc.log
+ admin_server = FILE:/home/gatein/krb5logs/kadmin.log
+</programlisting>
+ <itemizedlist>
+ <listitem>
+ <para>Create krb5kdc and krb5logs directory for Kerberos database as shown in the configuration file above.</para></listitem>
+ <listitem>
+ <para>Next, create a KDC database using the following command.</para>
+<programlisting>
+sudo krb5_newrealm
+</programlisting>
+ </listitem>
+ <listitem>
+ <para>Start the KDC and Kerberos admin servers using these commands:</para>
+<programlisting>
+sudo /etc/init.d/krb5-kdc restart
+sudo /etc/init.d/krb-admin-server restart
+</programlisting>
+ </listitem>
+ </itemizedlist>
+ </step>
+ <step>
+ <para>Add Principals and create Keys.</para>
+ <itemizedlist>
+ <listitem>
+ <para>Start an interactive 'kadmin' session and create the necessary Principals.</para>
+<programlisting>
+sudo kadmin.local
+</programlisting>
+ </listitem>
+ <listitem>
+ <para>Add the &PRODUCT; machine and keytab file that need to be authenticated.</para>
+<programlisting>
+addprinc -randkey HTTP/server.local.network(a)LOCAL.NETWORK
+ktadd HTTP/server.local.network(a)LOCAL.NETWORK
+</programlisting>
+ </listitem>
+ <listitem>
+ <para>Add the default &PRODUCT; user accounts and enter the password for each created user that will be authenticated.</para>
+<programlisting>
+addprinc john
+addprinc demo
+addprinc root
+</programlisting>
+ </listitem>
+ </itemizedlist>
+ </step>
+ <step>
+ <para>Test your changed setup by using the command.</para>
+<programlisting>
+kinit -A demo
+</programlisting>
+ <itemizedlist>
+ <listitem>
+ <para>If the setup works well, you are required to enter the password created for this user in Step 5.</para>
+ </listitem>
+ <listitem>
+ <para>If you want to login with another user, use this command.</para>
+<programlisting>
+kdestroy
+</programlisting>
+ </listitem>
+ </itemizedlist>
+ </step>
+ </procedure>
+ </section>
+ <section id="Single_Sign_On-SPNEGO-GateIn_Configuration">
+ <title>&PRODUCT; Configuration</title>
+ <para>&PRODUCT; uses JBoss Negotiation to enable SPNEGO-based desktop
+ SSO for the portal. Here are the steps to integrate SPNEGO with
+ &PRODUCT;.
+ </para>
<procedure>
<step>
<para>
- Activate the Host authentication
-
+ Activate the Host authentication under the <emphasis role="bold">conf/login-config.xml </emphasis> file adding the following host login module:
+ </para>
+
Under conf/login-config.xml, add the following host login module:
<programlisting><![CDATA[<!-- SPNEGO domain -->
- <application-policy name="host">
- <authentication>
+<application-policy name="host">
+ <authentication>
<login-module code="com.sun.security.auth.module.Krb5LoginModule"
flag="required">
<module-option name="storeKey">true</module-option>
- <module-option name="useKeyTab">true</module-option>
- <module-option name="principal">HTTP/server.local.network(a)LOCAL.NETWORK</module-option>
- <module-option name="keyTab">/home/user/krb5keytabs/jboss.keytab</module-option>
- <module-option name="doNotPrompt">true</module-option>
- <module-option name="debug">true</module-option>
- </login-module>
- </authentication>
+ <module-option name="useKeyTab">true</module-option>
+ <module-option name="principal">HTTP/server.local.network(a)LOCAL.NETWORK</module-option>
+ <module-option name="keyTab">/etc/krb5.keytab</module-option>
+ <module-option name="doNotPrompt">true</module-option>
+ <module-option name="debug">true</module-option>
+ </login-module>
+ </authentication>
</application-policy>
]]></programlisting>
- the 'keyTab' value should point to the keytab file that was
- generated by the kadmin kerberos tool. See the Setting up your
- Kerberos Development Environment guide for more details.
- </para>
+
+ <para>The 'keyTab' value should point to the keytab file that was
+ generated by the kadmin kerberos tool. See the <xref linkend="SPNEGO_server_configuration"/> section for more details.
+ </para>
</step>
- <step>
+
+ <step>
<para>
- Extend the core authentication mechanisms to support
- SPNEGO
+ Extend the core authentication mechanisms to support SPNEGO under
+ <emphasis role="bold">deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml</emphasis> by
+ adding the 'SPNEGO' authenticators property.
+ </para>
- Under
- deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml,
- add 'SPNEGO' authenticators property
-
- <programlisting><![CDATA[<property name="authenticators">
+<programlisting language="xml">
+<![CDATA[
+<property name="authenticators">
<map keyClass="java.lang.String" valueClass="java.lang.String">
<entry>
<key>BASIC</key>
@@ -1068,135 +1254,119 @@
<key>SPNEGO</key>
<value>org.jboss.security.negotiation.NegotiationAuthenticator</value>
</entry>
- </map>
- </property>]]></programlisting>
-
- </para>
+ </map>
+</property>
+]]>
+</programlisting>
</step>
<step>
- <para>Add the JBoss Negotiation binary
-
- copy $GATEIN_SSO_HOME/spnego/jboss-negotiation-2.0.3.GA.jar to lib
-</para>
+ <para>Add the GateIn SSO module binaries by copying <emphasis role="bold">$GATEIN_SSO_HOME/spnego/gatein.ear/lib/sso-agent.jar</emphasis>, and <emphasis role="bold">$GATEIN_SSO_HOME/spnego/gatein.ear/lib/sso-spnego.jar</emphasis> to the <emphasis role="bold">deploy/gatein.ear/lib</emphasis> directory.
+ </para>
</step>
<step>
- <para>Add the Gatein SSO module binaries
-
- Add $GATEIN_SSO_HOME/spnego/gatein.ear/lib/sso-agent.jar, and $GATEIN_SSO_HOME/spnego/gatein.ear/lib/sso-spnego.jar to deploy/gatein.ear/lib
-</para>
- </step>
- <step>
<para>
- Activate SPNEGO LoginModule for GateIn
+ Modify the <emphasis role="bold">deploy/gatein.ear/META-INF/gatein-jboss-beans.xml</emphasis> file as below, then comment on other parts.
+ </para>
- Modify deploy/gatein.ear/META-INF/gatein-jboss-beans.xml, so that it
- looks like this:
-
- <programlisting><![CDATA[<deployment xmlns="urn:jboss:bean-deployer:2.0">
- <application-policy xmlns="urn:jboss:security-beans:1.0" name="gatein-domain">
- <!-- Uncomment this for Kerberos based SSO integration -->
- <authentication>
- <login-module
- code="org.gatein.sso.spnego.SPNEGOLoginModule"
- flag="requisite">
- <module-option name="password-stacking">useFirstPass</module-option>
- <module-option name="serverSecurityDomain">host</module-option>
- </login-module>
- <login-module
- code="org.gatein.sso.agent.login.SPNEGORolesModule"
- flag="required">
- <module-option name="password-stacking">useFirstPass</module-option>
- <module-option name="portalContainerName">portal</module-option>
- <module-option name="realmName">gatein-domain</module-option>
- </login-module>
- </authentication>
- </application-policy>
-</deployment>]]></programlisting>
- </para>
+ <programlisting language="xml"><![CDATA[
+<login-module code="org.gatein.sso.spnego.SPNEGOLoginModule" flag="required">
+ <module-option name="password-stacking">useFirstPass</module-option>
+ <module-option name="serverSecurityDomain">host</module-option>
+</login-module>
+<login-module code="org.gatein.sso.agent.login.SPNEGORolesModule" flag="required">
+ <module-option name="password-stacking">useFirstPass</module-option>
+ <module-option name="portalContainerName">portal</module-option>
+ <module-option name="realmName">gatein-domain</module-option>
+</login-module>]]>
+</programlisting>
</step>
<step>
<para>
- Integrate SPNEGO support into the Portal web archive
+ Modify <emphasis role="bold">gatein.ear/02portal.war/WEB-INF/web.xml</emphasis> as below.</para>
- Switch GateIn authentication mechanism from the default "FORM"
- based to "SPNEGO" based authentication as follows:
-
- Modify gatein.ear/02portal.war/WEB-INF/web.xml
-
- <programlisting><![CDATA[ <!--
- <login-config>
- <auth-method>FORM</auth-method>
- <realm-name>gatein-domain</realm-name>
- <form-login-config>
- <form-login-page>/initiatelogin</form-login-page>
- <form-error-page>/errorlogin</form-error-page>
- </form-login-config>
- </login-config>
- -->
- <login-config>
- <auth-method>SPNEGO</auth-method>
- <realm-name>SPNEGO</realm-name>
- </login-config>]]></programlisting>
-
-
- Integrate request pre-processing needed for SPNEGO via filters.
- Add the following filters to the web.xml at the top of the Filter
- chain:
-
- <programlisting><![CDATA[ <filter>
- <filter-name>LoginRedirectFilter</filter-name>
- <filter-class>org.gatein.sso.agent.filter.LoginRedirectFilter</filter-class>
- <init-param>
- <!-- This should point to your SSO authentication server -->
- <param-name>LOGIN_URL</param-name>
- <param-value>/portal/private/classic</param-value>
- </init-param>
- </filter>
- <filter>
- <filter-name>SPNEGOFilter</filter-name>
- <filter-class>org.gatein.sso.agent.filter.SPNEGOFilter</filter-class>
- </filter>
-
- <filter-mapping>
- <filter-name>LoginRedirectFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <filter-mapping>
- <filter-name>SPNEGOFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>]]></programlisting>
- </para>
+ <programlisting language="xml"><![CDATA[
+<!--
+<login-config>
+ <auth-method>FORM</auth-method>
+ <realm-name>gatein-domain</realm-name>
+ <form-login-config>
+ <form-login-page>/initiatelogin</form-login-page>
+ <form-error-page>/errorlogin</form-error-page>
+ </form-login-config>
+</login-config>
+-->
+
+<login-config>
+ <auth-method>SPNEGO</auth-method>
+ <realm-name>SPNEGO</realm-name>
+</login-config>]]>
+</programlisting>
+ <para>This integrates SPNEGO support into the Portal web archive by switching the authentication mechanism from the default "FORM"-based to "SPNEGO"-based authentication.</para>
</step>
<step>
- <para>
- Modify the Portal's 'Sign In' link to perform SPNEGO
- authentication
+ <para>Integrate the request pre-processing needed for SPNEGO via filters by adding the following filters to the <emphasis role="bold">web.xml </emphasis> at the top of the Filter chain.</para>
- Modify the 'Sign In' link on
- gatein.war/web.war/groovy/groovy/webui/component/UIBannerPortlet.gtmpl
- as follows:
-
- <programlisting><![CDATA[<!--
-<a onclick="$signInAction"><%=_ctx.appRes("UILoginForm.label.Signin")%></a>
--->
-<a href="/portal/sso"><%=_ctx.appRes("UILoginForm.label.Signin")%></a>]]></programlisting>
- </para>
+<programlisting><![CDATA[
+<filter>
+ <filter-name>LoginRedirectFilter</filter-name>
+ <filter-class>org.gatein.sso.agent.filter.LoginRedirectFilter</filter-class>
+ <init-param>
+ <!-- This should point to your SSO authentication server -->
+ <param-name>LOGIN_URL</param-name>
+ <param-value>/portal/private/classic</param-value>
+ </init-param>
+</filter>
+<filter>
+ <filter-name>SPNEGOFilter</filter-name>
+ <filter-class>org.gatein.sso.agent.filter.SPNEGOFilter</filter-class>
+</filter>
+<filter-mapping>
+ <filter-name>LoginRedirectFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+</filter-mapping>
+<filter-mapping>
+ <filter-name>SPNEGOFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+</filter-mapping>]]>
+</programlisting>
+
</step>
<step>
<para>
- Start the GateIn Portal
- <programlisting>sudo ./run.sh -Djava.security.krb5.realm=LOCAL.NETWORK -Djava.security.krb5.kdc=server.local.network -c spnego -b server.local.network</programlisting>
- </para>
+ Start the &PRODUCT; portal using the command below.</para>
+ <programlisting>sudo ./run.sh -Djava.security.krb5.realm=LOCAL.NETWORK -Djava.security.krb5.kdc=server.local.network -c PROFILE -b server.local.network</programlisting>
+ <para>The PROFILE parameter in the above command should be replaced with the server profile modified in the above configuration. For example, if you are configuring the default profile, your command will be.</para>
+ <programlisting>sudo ./run.sh -Djava.security.krb5.realm=LOCAL.NETWORK -Djava.security.krb5.kdc=server.local.network -c default -b server.local.network</programlisting>
</step>
<step>
- <para>Login to Kerberos
+ <para>Login to Kerberos with the command.</para>
<programlisting>kinit -A demo</programlisting>
- You should be able to click the 'Sign In' link on the GateIn Portal
- and the 'demo' user from the GateIn portal should be automatically
- logged in</para>
+ <para>You should be able to click the 'Sign In' link on the &PRODUCT; portal
+ and the 'demo' user from the &PRODUCT; portal should be automatically
+ logged in.</para>
</step>
</procedure>
</section>
+ <section id="Single_Sign_On-CAS_Central_Clients">
+ <title>Clients</title>
+ <para>After performing all configurations above, you need to enable the <emphasis role="bold">Negotiate authentication </emphasis> of Firefox in clients so that clients could be authenticated by &PRODUCT; as follows:
+ </para>
+ <procedure>
+ <step>
+ <para>Start Firefox, then enter the command: <emphasis role="bold">about:config </emphasis> into the address field.</para>
+ </step>
+ <step>
+ <para>Enter <emphasis role="bold">network.negotiate-auth</emphasis> and set the value as below:</para>
+<programlisting>
+network.negotiate-auth.allow-proxies = true
+network.negotiate-auth.delegation-uris = .local.network
+network.negotiate-auth.gsslib (no-value)
+network.negotiate-auth.trusted-uris = .local.network
+network.negotiate-auth.using-native-gsslib = true
+</programlisting>
+ </step>
+ </procedure>
+ </section>
</section>
</section>
Modified: portal/trunk/docs/user-guide/en-US/images/EditPortal2.6New.png
===================================================================
(Binary files differ)
Modified: portal/trunk/docs/user-guide/en-US/images/PortalSetting2.5.png
===================================================================
(Binary files differ)
Modified: portal/trunk/docs/user-guide/en-US/images/Skin1.png
===================================================================
(Binary files differ)
Modified: portal/trunk/docs/user-guide/en-US/modules/portal/Manage_Portals.xml
===================================================================
--- portal/trunk/docs/user-guide/en-US/modules/portal/Manage_Portals.xml 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/docs/user-guide/en-US/modules/portal/Manage_Portals.xml 2011-07-04 05:34:41 UTC (rev 6804)
@@ -205,7 +205,7 @@
<section id="proc-User_Guide-Manage_Portals-Edit_Properties">
<title>Edit Properties</title>
<para>
- Portal properties such as language, skin and permissions can be set by clicking on <emphasis role="bold">Site</emphasis> in the <emphasis role="bold">Toolbar</emphasis> and selecting the <emphasis>Edit Portal Properties</emphasis> link for the portal you wish to edit:
+ Portal properties such as language, description, label, skin and permissions can be set by clicking on <emphasis role="bold">Site</emphasis> in the <emphasis role="bold">Toolbar</emphasis> and selecting the <emphasis>Edit Portal Properties</emphasis> link for the portal you wish to edit:
</para>
<mediaobject>
<imageobject role="html">
@@ -330,7 +330,7 @@
</step>
<step>
<para>
- Click <emphasis role="bold">Save</emphasis> then <emphasis role="bold">Finish</emphasis>.
+ Click <emphasis role="bold">Save</emphasis> to finish your change.
</para>
</step>
</procedure>
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UICategorySelector.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UICategorySelector.java 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/applicationregistry/webui/component/UICategorySelector.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -4,6 +4,7 @@
import org.exoplatform.application.registry.Application;
import org.exoplatform.application.registry.ApplicationCategory;
import org.exoplatform.application.registry.ApplicationRegistryService;
+import org.exoplatform.applicationregistry.webui.Util;
import org.exoplatform.commons.utils.SerializablePageList;
import org.exoplatform.commons.serialization.api.annotations.Serialized;
import org.exoplatform.webui.config.annotation.ComponentConfig;
@@ -51,7 +52,7 @@
try
{
ApplicationRegistryService appRegService = getApplicationComponent(ApplicationRegistryService.class);
- List<ApplicationCategory> categories = appRegService.getApplicationCategories();
+ List<ApplicationCategory> categories = appRegService.getApplicationCategories(new Util.CategoryComparator());
categories = categories != null ? categories : new ArrayList<ApplicationCategory>();
return categories;
}
Modified: portal/trunk/testsuite/webuibasedsamples/src/main/java/org/exoplatform/sample/webui/component/UISampleUIForm.java
===================================================================
--- portal/trunk/testsuite/webuibasedsamples/src/main/java/org/exoplatform/sample/webui/component/UISampleUIForm.java 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/testsuite/webuibasedsamples/src/main/java/org/exoplatform/sample/webui/component/UISampleUIForm.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -33,7 +33,7 @@
import org.exoplatform.webui.event.Event;
import org.exoplatform.webui.event.EventListener;
import org.exoplatform.webui.form.UIForm;
-import org.exoplatform.webui.form.UIFormCheckBoxInput;
+import org.exoplatform.webui.form.input.UIFormCheckBoxInput;
import org.exoplatform.webui.form.UIFormDateTimeInput;
import org.exoplatform.webui.form.UIFormInput;
import org.exoplatform.webui.form.UIFormInputSet;
@@ -109,7 +109,7 @@
List<SelectItemOption<String>> selectItemOptions = makeSelectItemOptions();
inputSet.addUIFormInput(new UIFormSelectBox(POSITION, null, selectItemOptions));
- inputSet.addUIFormInput(new UIFormCheckBoxInput<String>(RECEIVE_EMAIL, null, "test"));
+ inputSet.addUIFormInput(new UIFormCheckBoxInput(RECEIVE_EMAIL, null, false));
List<SelectItemOption<String>> comboBoxItemOptions = new ArrayList<SelectItemOption<String>>();
comboBoxItemOptions.add(new SelectItemOption<String>(("VI")));
@@ -220,7 +220,7 @@
UISampleUIForm uiForm = event.getSource();
String userName = uiForm.getUIStringInput(USERNAME).getValue();
String password = uiForm.getUIStringInput(PASSWORD).getValue();
- boolean receiveEmail = uiForm.getUIFormCheckBoxInput(RECEIVE_EMAIL).isChecked();
+ boolean receiveEmail = uiForm.<UIFormCheckBoxInput>getUIInput(RECEIVE_EMAIL).isChecked();
String favoriteColor = (String)uiForm.getUIInput(FAVORITE_COLOR).getValue();
String position = (String)uiForm.getUIInput(POSITION).getValue();
String gender = (String)uiForm.getUIInput(GENDER).getValue();
Modified: portal/trunk/testsuite/webuibasedsamples/src/main/webapp/WEB-INF/conf/sample/webui/configuration.xml
===================================================================
--- portal/trunk/testsuite/webuibasedsamples/src/main/webapp/WEB-INF/conf/sample/webui/configuration.xml 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/testsuite/webuibasedsamples/src/main/webapp/WEB-INF/conf/sample/webui/configuration.xml 2011-07-04 05:34:41 UTC (rev 6804)
@@ -26,8 +26,7 @@
<application>
<ui-component-root>org.exoplatform.sample.webui.component.UISamplePortlet</ui-component-root>
<state-manager>org.exoplatform.webui.application.portlet.ParentAppStateManager</state-manager>
- <application-lifecycle-listeners>
- <listener>org.exoplatform.portal.application.PortletStatisticLifecycle</listener>
+ <application-lifecycle-listeners>
</application-lifecycle-listeners>
</application>
</webui-configuration>
Modified: portal/trunk/web/pom.xml
===================================================================
--- portal/trunk/web/pom.xml 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/web/pom.xml 2011-07-04 05:34:41 UTC (rev 6804)
@@ -32,7 +32,7 @@
<artifactId>exo.portal.web</artifactId>
<packaging>pom</packaging>
- <name>GateIn Portal Portlet</name>
+ <name>GateIn Portal Web</name>
<modules>
<module>eXoResources</module>
Modified: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UIFormCheckBoxInput.java
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UIFormCheckBoxInput.java 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/UIFormCheckBoxInput.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -19,17 +19,19 @@
package org.exoplatform.webui.form;
+import java.io.Writer;
+
+import org.exoplatform.commons.serialization.api.annotations.Serialized;
import org.exoplatform.webui.application.WebuiRequestContext;
-import org.exoplatform.commons.serialization.api.annotations.Serialized;
-import java.io.Writer;
-
/**
* Represents a checkbox field.
* @param <T> The type of value that is expected
+ * @deprecated use {@link org.exoplatform.webui.form.input.UIFormCheckBoxInput} instead
*/
@SuppressWarnings("hiding")
@Serialized
+@Deprecated
public class UIFormCheckBoxInput<T> extends UIFormInputBase<T>
{
/**
@@ -71,6 +73,10 @@
{
checked = boolean.class.cast(value);
}
+ else if (value instanceof String)
+ {
+ checked = Boolean.parseBoolean((String)value);
+ }
typeValue_ = (Class<T>)value.getClass();
return super.setValue(value);
}
Deleted: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java
===================================================================
--- portal/branches/branch-GTNPORTAL-1921/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2011 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.exoplatform.webui.form.input;
-
-import java.io.Writer;
-
-import org.exoplatform.commons.serialization.api.annotations.Serialized;
-import org.exoplatform.webui.application.WebuiRequestContext;
-import org.exoplatform.webui.form.UIForm;
-import org.exoplatform.webui.form.UIFormInput;
-import org.exoplatform.webui.form.UIFormInputBase;
-
-/**
- * @author <a href="mailto:phuong.vu@exoplatform.com">Vu Viet Phuong</a>
- * @version $Id$
- *
- * <p>Represent an html checkbox input <br/>
- * This class is a replacement for {@link org.exoplatform.webui.form.UIFormCheckBoxInput} <br/>
- * Still support raising event when user click the checkbox, but now we only accept boolean value. </p>
- */
-@Serialized
-public class UIFormCheckBoxInput extends UIFormInputBase<Boolean>
-{
- /**
- * Name of {@link org.exoplatform.webui.event.EventListener} that will be fired when checkbox state is changed
- */
- private String onchange_;
-
- /**
- * Id of {@link org.exoplatform.webui.core.UIComponent} that is configured with the fired event
- * This component must be in the same form with the checkbox
- * If this field is null, event of the UIForm will be fire instead
- */
- private String componentEvent_ = null;
-
- public UIFormCheckBoxInput()
- {
- this(null, null, false);
- }
-
- public UIFormCheckBoxInput(String name, String bindingExpression, Boolean value)
- {
- super(name, bindingExpression, Boolean.class);
- setValue(value);
- }
-
- public UIFormInput setValue(Boolean value)
- {
- if (value == null)
- {
- value = false;
- }
-
- return super.setValue(value);
- }
-
- /**
- * This method is used to make the action more meaning in the context of a checkbox
- */
- public boolean isChecked()
- {
- return getValue();
- }
-
- /**
- * This method is used to make the action more meaning in the context of a checkbox
- */
- public UIFormCheckBoxInput setChecked(boolean check)
- {
- return (UIFormCheckBoxInput)setValue(check);
- }
-
- public void setOnChange(String onchange)
- {
- onchange_ = onchange;
- }
-
- public void setComponentEvent(String com)
- {
- componentEvent_ = com;
- }
-
- public void setOnChange(String event, String com)
- {
- this.onchange_ = event;
- this.componentEvent_ = com;
- }
-
- public String renderOnChangeEvent(UIForm uiForm) throws Exception
- {
- if (componentEvent_ == null)
- return uiForm.event(onchange_, null);
- return uiForm.event(onchange_, componentEvent_, (String)null);
- }
-
- public void decode(Object input, WebuiRequestContext context) throws Exception
- {
- if (!isEnable())
- return;
-
- if (input == null || "false".equals(input.toString()))
- {
- setValue(false);
- }
- else
- {
- setValue(true);
- }
- }
-
- public void processRender(WebuiRequestContext context) throws Exception
- {
- Writer w = context.getWriter();
- w.write("<input type='checkbox' name='");
- w.write(name);
- w.write("'");
- if (onchange_ != null)
- {
- UIForm uiForm = getAncestorOfType(UIForm.class);
- w.append(" onclick=\"").append(renderOnChangeEvent(uiForm)).append("\"");
- }
- if (isChecked())
- w.write(" checked");
- if (!enable_)
- w.write(" disabled");
- w.write(" class='checkbox'/>");
- if (this.isMandatory())
- w.write(" *");
- }
-
-}
\ No newline at end of file
Copied: portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java (from rev 6803, portal/branches/branch-GTNPORTAL-1921/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java)
===================================================================
--- portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java (rev 0)
+++ portal/trunk/webui/core/src/main/java/org/exoplatform/webui/form/input/UIFormCheckBoxInput.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2011 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.exoplatform.webui.form.input;
+
+import java.io.Writer;
+
+import org.exoplatform.commons.serialization.api.annotations.Serialized;
+import org.exoplatform.webui.application.WebuiRequestContext;
+import org.exoplatform.webui.form.UIForm;
+import org.exoplatform.webui.form.UIFormInput;
+import org.exoplatform.webui.form.UIFormInputBase;
+
+/**
+ * @author <a href="mailto:phuong.vu@exoplatform.com">Vu Viet Phuong</a>
+ * @version $Id$
+ *
+ * <p>Represent an html checkbox input <br/>
+ * This class is a replacement for {@link org.exoplatform.webui.form.UIFormCheckBoxInput} <br/>
+ * Still support raising event when user click the checkbox, but now we only accept boolean value. </p>
+ */
+@Serialized
+public class UIFormCheckBoxInput extends UIFormInputBase<Boolean>
+{
+ /**
+ * Name of {@link org.exoplatform.webui.event.EventListener} that will be fired when checkbox state is changed
+ */
+ private String onchange_;
+
+ /**
+ * Id of {@link org.exoplatform.webui.core.UIComponent} that is configured with the fired event
+ * This component must be in the same form with the checkbox
+ * If this field is null, event of the UIForm will be fire instead
+ */
+ private String componentEvent_ = null;
+
+ public UIFormCheckBoxInput()
+ {
+ this(null, null, false);
+ }
+
+ public UIFormCheckBoxInput(String name, String bindingExpression, Boolean value)
+ {
+ super(name, bindingExpression, Boolean.class);
+ setValue(value);
+ }
+
+ public UIFormInput setValue(Boolean value)
+ {
+ if (value == null)
+ {
+ value = false;
+ }
+
+ return super.setValue(value);
+ }
+
+ /**
+ * This method is used to make the action more meaning in the context of a checkbox
+ */
+ public boolean isChecked()
+ {
+ return getValue();
+ }
+
+ /**
+ * This method is used to make the action more meaning in the context of a checkbox
+ */
+ public UIFormCheckBoxInput setChecked(boolean check)
+ {
+ return (UIFormCheckBoxInput)setValue(check);
+ }
+
+ public void setOnChange(String onchange)
+ {
+ onchange_ = onchange;
+ }
+
+ public void setComponentEvent(String com)
+ {
+ componentEvent_ = com;
+ }
+
+ public void setOnChange(String event, String com)
+ {
+ this.onchange_ = event;
+ this.componentEvent_ = com;
+ }
+
+ public String renderOnChangeEvent(UIForm uiForm) throws Exception
+ {
+ if (componentEvent_ == null)
+ return uiForm.event(onchange_, null);
+ return uiForm.event(onchange_, componentEvent_, (String)null);
+ }
+
+ public void decode(Object input, WebuiRequestContext context) throws Exception
+ {
+ if (!isEnable())
+ return;
+
+ if (input == null || "false".equals(input.toString()))
+ {
+ setValue(false);
+ }
+ else
+ {
+ setValue(true);
+ }
+ }
+
+ public void processRender(WebuiRequestContext context) throws Exception
+ {
+ Writer w = context.getWriter();
+ w.write("<input type='checkbox' name='");
+ w.write(name);
+ w.write("'");
+ if (onchange_ != null)
+ {
+ UIForm uiForm = getAncestorOfType(UIForm.class);
+ w.append(" onclick=\"").append(renderOnChangeEvent(uiForm)).append("\"");
+ }
+ if (isChecked())
+ w.write(" checked");
+ if (!enable_)
+ w.write(" disabled");
+ w.write(" class='checkbox'/>");
+ if (this.isMandatory())
+ w.write(" *");
+ }
+
+}
\ No newline at end of file
Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/login/UIResetPassword.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/login/UIResetPassword.java 2011-07-04 04:31:07 UTC (rev 6803)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/login/UIResetPassword.java 2011-07-04 05:34:41 UTC (rev 6804)
@@ -58,7 +58,7 @@
static User user_;
- private static String tokenId;
+ private String tokenId;
public UIResetPassword() throws Exception
{
@@ -79,9 +79,14 @@
public void setTokenId(String tokenId)
{
- UIResetPassword.tokenId = tokenId;
+ this.tokenId = tokenId;
}
+ public String getTokenId()
+ {
+ return this.tokenId;
+ }
+
@Override
public void reset()
{
@@ -113,8 +118,7 @@
setPassword = false;
}
- Token token = tokenService.getToken(tokenId);
- // Making sure a token exist
+ Token token = tokenService.deleteToken(uiForm.getTokenId());
if (token == null || token.isExpired())
{
uiApp.addMessage(new ApplicationMessage("UIForgetPassword.msg.expration", null));
@@ -128,8 +132,6 @@
uiMaskWorkspace.setUIComponent(null);
uiMaskWorkspace.setWindowSize(-1, -1);
uiApp.addMessage(new ApplicationMessage("UIResetPassword.msg.change-password-successfully", null));
-
- tokenService.deleteToken(tokenId);
}
event.getRequestContext().addUIComponentToUpdateByAjax(uiMaskWorkspace);
}
13 years, 5 months
gatein SVN: r6803 - portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component.
by do-not-reply@jboss.org
Author: trong.tran
Date: 2011-07-04 00:31:07 -0400 (Mon, 04 Jul 2011)
New Revision: 6803
Modified:
portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UISiteManagement.java
Log:
NPE if 'Back' button clicked when add new node
Modified: portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UISiteManagement.java
===================================================================
--- portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UISiteManagement.java 2011-07-02 18:36:23 UTC (rev 6802)
+++ portal/trunk/portlet/exoadmin/src/main/java/org/exoplatform/navigation/webui/component/UISiteManagement.java 2011-07-04 04:31:07 UTC (rev 6803)
@@ -411,7 +411,11 @@
uiNavigationPopup.setWindowSize(400, 400);
context.addUIComponentToUpdateByAjax(uiNavigationPopup.getParent());
- selector.getUserNodeLabels().put(uiPageNodeForm.getPageNode().getId(), uiPageNodeForm.getPageNode().getI18nizedLabels());
+ TreeNode pageNode = uiPageNodeForm.getPageNode();
+ if (pageNode != null)
+ {
+ selector.getUserNodeLabels().put(pageNode.getId(), pageNode.getI18nizedLabels());
+ }
selector.createEvent("NodeModified", Phase.PROCESS, context).broadcast();
}
13 years, 5 months
gatein SVN: r6802 - epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-07-02 14:36:23 -0400 (Sat, 02 Jul 2011)
New Revision: 6802
Modified:
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml
Log:
Distribution examples
Modified: epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml 2011-07-02 17:34:30 UTC (rev 6801)
+++ epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml 2011-07-02 18:36:23 UTC (rev 6802)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.exoplatform.portal</groupId>
<artifactId>distribution.parent</artifactId>
- <version>5.2.0-epp-DEV01-SNAPSHOT</version>
+ <version>5.1.1-epp-DEV02</version>
<relativePath>../../pom.xml</relativePath>
</parent>
13 years, 5 months
gatein SVN: r6801 - epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-07-02 13:34:30 -0400 (Sat, 02 Jul 2011)
New Revision: 6801
Modified:
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/pom.xml
Log:
Distribution zip
Modified: epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/pom.xml
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/pom.xml 2011-07-02 17:29:44 UTC (rev 6800)
+++ epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/pom.xml 2011-07-02 17:34:30 UTC (rev 6801)
@@ -131,7 +131,7 @@
<executions>
<execution>
<id>distro-assembly-zip</id>
- <phase>packaging</phase>
+ <phase>package</phase>
<goals>
<goal>single</goal>
</goals>
13 years, 5 months
gatein SVN: r6800 - in epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap: examples/src and 3 other directories.
by do-not-reply@jboss.org
Author: hfnukal
Date: 2011-07-02 13:29:44 -0400 (Sat, 02 Jul 2011)
New Revision: 6800
Added:
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/main/
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/main/resources/
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/main/resources/gatein-sample-portal-ds.xml
Removed:
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml
Modified:
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml
epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/assemble.xml
Log:
Distribution Examples
Modified: epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml 2011-07-02 11:58:38 UTC (rev 6799)
+++ epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/pom.xml 2011-07-02 17:29:44 UTC (rev 6800)
@@ -5,34 +5,34 @@
<parent>
<groupId>org.exoplatform.portal</groupId>
<artifactId>distribution.parent</artifactId>
- <version>5.1.1-epp-DEV02</version>
+ <version>5.2.0-epp-DEV01-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<groupId>org.exoplatform.portal.distribution</groupId>
<artifactId>examples</artifactId>
<packaging>pom</packaging>
- <name>Distribution portletbridge</name>
+ <name>Distribution examples</name>
<dependencies>
<!-- Examples -->
<dependency>
- <groupId>org.jboss.portletbridge.examples.seam.booking</groupId>
- <artifactId>seamBooking-ear</artifactId>
- <version>${portletbridge.version}</version>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>gatein-sample-extension</artifactId>
+ <version>${project.version}</version>
<type>ear</type>
</dependency>
<dependency>
- <groupId>org.jboss.portal.examples</groupId>
- <artifactId>JSFRIPortlet</artifactId>
- <version>${portletbridge.version}</version>
- <type>war</type>
+ <groupId>org.exoplatform.portal</groupId>
+ <artifactId>gatein-sample-portal</artifactId>
+ <version>${project.version}</version>
+ <type>ear</type>
</dependency>
<dependency>
- <groupId>org.jboss.portal.examples</groupId>
- <artifactId>richFacesPortlet</artifactId>
- <version>${portletbridge.version}</version>
+ <groupId>org.gatein.portal.examples.skins</groupId>
+ <artifactId>gatein-sample-skin</artifactId>
+ <version>${project.version}</version>
<type>war</type>
</dependency>
</dependencies>
Modified: epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/assemble.xml
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/assemble.xml 2011-07-02 11:58:38 UTC (rev 6799)
+++ epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/assemble.xml 2011-07-02 17:29:44 UTC (rev 6800)
@@ -7,10 +7,16 @@
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>src/main/resources</directory>
+ <outputDirectory></outputDirectory>
+ </fileSet>
+ </fileSets>
<dependencySets>
<dependencySet>
<outputDirectory></outputDirectory>
- <outputFileNameMapping>${artifact.artifactId}-${artifact.version}.${artifact.extension}</outputFileNameMapping>
+ <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
<unpack>false</unpack>
<useTransitiveDependencies>false</useTransitiveDependencies>
</dependencySet>
Copied: epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/main/resources/gatein-sample-portal-ds.xml (from rev 6796, epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml)
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/main/resources/gatein-sample-portal-ds.xml (rev 0)
+++ epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/examples/src/main/resources/gatein-sample-portal-ds.xml 2011-07-02 17:29:44 UTC (rev 6800)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ JBoss, a division of Red Hat ~
+ ~ Copyright 2009, Red Hat Middleware, LLC, and individual ~
+ ~ contributors as indicated by the @authors tag. See the ~
+ ~ copyright.txt in the distribution for a full listing of ~
+ ~ individual contributors. ~
+ ~ ~
+ ~ This is free software; you can redistribute it and/or modify it ~
+ ~ under the terms of the GNU Lesser General Public License as ~
+ ~ published by the Free Software Foundation; either version 2.1 of ~
+ ~ the License, or (at your option) any later version. ~
+ ~ ~
+ ~ This software is distributed in the hope that it will be useful, ~
+ ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
+ ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
+ ~ Lesser General Public License for more details. ~
+ ~ ~
+ ~ You should have received a copy of the GNU Lesser General Public ~
+ ~ License along with this software; if not, write to the Free ~
+ ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
+ ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
+
+<datasources>
+ <no-tx-datasource>
+ <jndi-name>gatein-jcr_sample-portal</jndi-name>
+ <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-localDB</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>20</max-pool-size>
+ <idle-timeout-minutes>0</idle-timeout-minutes>
+ <prepared-statement-cache-size>32</prepared-statement-cache-size>
+ </no-tx-datasource>
+
+ <no-tx-datasource>
+ <jndi-name>gatein-idm_sample-portal</jndi-name>
+ <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-idm-localDB</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+
+ <min-pool-size>5</min-pool-size>
+ <max-pool-size>20</max-pool-size>
+ <idle-timeout-minutes>0</idle-timeout-minutes>
+ <prepared-statement-cache-size>32</prepared-statement-cache-size>
+ </no-tx-datasource>
+
+</datasources>
Deleted: epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml
===================================================================
--- epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml 2011-07-02 11:58:38 UTC (rev 6799)
+++ epp/portal/branches/EPP_5_1_Branch/distribution/jboss-eap/serverAddon/src/main/resources/deploy/gatein-sample-portal-ds.xml 2011-07-02 17:29:44 UTC (rev 6800)
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ JBoss, a division of Red Hat ~
- ~ Copyright 2009, Red Hat Middleware, LLC, and individual ~
- ~ contributors as indicated by the @authors tag. See the ~
- ~ copyright.txt in the distribution for a full listing of ~
- ~ individual contributors. ~
- ~ ~
- ~ This is free software; you can redistribute it and/or modify it ~
- ~ under the terms of the GNU Lesser General Public License as ~
- ~ published by the Free Software Foundation; either version 2.1 of ~
- ~ the License, or (at your option) any later version. ~
- ~ ~
- ~ This software is distributed in the hope that it will be useful, ~
- ~ but WITHOUT ANY WARRANTY; without even the implied warranty of ~
- ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ~
- ~ Lesser General Public License for more details. ~
- ~ ~
- ~ You should have received a copy of the GNU Lesser General Public ~
- ~ License along with this software; if not, write to the Free ~
- ~ Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ~
- ~ 02110-1301 USA, or see the FSF site: http://www.fsf.org. ~
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<datasources>
- <no-tx-datasource>
- <jndi-name>gatein-jcr_sample-portal</jndi-name>
- <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-localDB</connection-url>
- <driver-class>org.hsqldb.jdbcDriver</driver-class>
- <user-name>sa</user-name>
- <password></password>
-
- <min-pool-size>5</min-pool-size>
- <max-pool-size>20</max-pool-size>
- <idle-timeout-minutes>0</idle-timeout-minutes>
- <prepared-statement-cache-size>32</prepared-statement-cache-size>
- </no-tx-datasource>
-
- <no-tx-datasource>
- <jndi-name>gatein-idm_sample-portal</jndi-name>
- <connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}hypersonic${/}sample-portal-idm-localDB</connection-url>
- <driver-class>org.hsqldb.jdbcDriver</driver-class>
- <user-name>sa</user-name>
- <password></password>
-
- <min-pool-size>5</min-pool-size>
- <max-pool-size>20</max-pool-size>
- <idle-timeout-minutes>0</idle-timeout-minutes>
- <prepared-statement-cache-size>32</prepared-statement-cache-size>
- </no-tx-datasource>
-
-</datasources>
13 years, 5 months