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...;.
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/ga...;.
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://so...;.
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://so...;.
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">htt...;.
+ OpenSSO can be downloaded from <ulink type="http"
url="http://download.oracle.com/otn/nt/middleware/11g/oracle_opensso...;.
</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/ga...
</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);
}