From f9d44e50e7c05723112a1a704583de3d2ee9e72c Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Wed, 8 Aug 2012 13:22:54 +0300 Subject: Add SASS source code, unit tests and test resources to project (#9223) --- sass/src/com/vaadin/sass/SassCompiler.java | 39 + sass/src/com/vaadin/sass/ScssServlet.java | 44 + sass/src/com/vaadin/sass/ScssStylesheet.java | 102 + .../vaadin/sass/handler/SCSSDocumentHandler.java | 52 + .../sass/handler/SCSSDocumentHandlerImpl.java | 251 + sass/src/com/vaadin/sass/parser/CharStream.java | 115 + .../com/vaadin/sass/parser/Generic_CharStream.java | 355 ++ sass/src/com/vaadin/sass/parser/JumpException.java | 24 + .../com/vaadin/sass/parser/LexicalUnitImpl.java | 575 ++ sass/src/com/vaadin/sass/parser/LocatorImpl.java | 130 + sass/src/com/vaadin/sass/parser/MediaListImpl.java | 79 + .../src/com/vaadin/sass/parser/ParseException.java | 188 + sass/src/com/vaadin/sass/parser/Parser.java | 4968 ++++++++++++++++ sass/src/com/vaadin/sass/parser/Parser.jj | 2443 ++++++++ .../com/vaadin/sass/parser/ParserConstants.java | 323 ++ .../com/vaadin/sass/parser/ParserTokenManager.java | 4286 ++++++++++++++ .../com/vaadin/sass/parser/SCSSLexicalUnit.java | 16 + .../com/vaadin/sass/parser/SelectorListImpl.java | 62 + sass/src/com/vaadin/sass/parser/Selectors.java | 54 + .../vaadin/sass/parser/ThrowedParseException.java | 26 + sass/src/com/vaadin/sass/parser/Token.java | 131 + sass/src/com/vaadin/sass/parser/TokenMgrError.java | 147 + .../vaadin/sass/selector/CompositeSelector.java | 27 + .../src/com/vaadin/sass/selector/SelectorUtil.java | 292 + sass/src/com/vaadin/sass/tree/BlockNode.java | 57 + sass/src/com/vaadin/sass/tree/EachNode.java | 22 + sass/src/com/vaadin/sass/tree/ExtendNode.java | 19 + sass/src/com/vaadin/sass/tree/ForNode.java | 28 + sass/src/com/vaadin/sass/tree/FunctionNode.java | 26 + sass/src/com/vaadin/sass/tree/IfNode.java | 6 + sass/src/com/vaadin/sass/tree/ImportNode.java | 55 + sass/src/com/vaadin/sass/tree/MediaNode.java | 43 + sass/src/com/vaadin/sass/tree/MixinDefNode.java | 51 + sass/src/com/vaadin/sass/tree/MixinNode.java | 43 + .../com/vaadin/sass/tree/NestPropertiesNode.java | 40 + sass/src/com/vaadin/sass/tree/Node.java | 92 + sass/src/com/vaadin/sass/tree/RuleNode.java | 64 + sass/src/com/vaadin/sass/tree/VariableNode.java | 51 + sass/src/com/vaadin/sass/tree/WhileNode.java | 20 + sass/src/com/vaadin/sass/util/ColorUtil.java | 290 + sass/src/com/vaadin/sass/util/DeepCopy.java | 44 + .../vaadin/sass/util/FastByteArrayInputStream.java | 66 + .../sass/util/FastByteArrayOutputStream.java | 87 + sass/src/com/vaadin/sass/util/StringUtil.java | 120 + sass/src/com/vaadin/sass/visitor/BlockVisitor.java | 60 + .../src/com/vaadin/sass/visitor/ExtendVisitor.java | 98 + .../src/com/vaadin/sass/visitor/ImportVisitor.java | 87 + sass/src/com/vaadin/sass/visitor/MixinVisitor.java | 77 + .../vaadin/sass/visitor/NestPropertiesVisitor.java | 27 + .../vaadin/sass/visitor/ParentSelectorVisitor.java | 42 + .../com/vaadin/sass/visitor/VariableVisitor.java | 52 + sass/src/com/vaadin/sass/visitor/Visitor.java | 8 + tests/sass/resources/basic/comments.css | 9 + tests/sass/resources/basic/empty_block.css | 2 + tests/sass/resources/basic/media.css | 27 + tests/sass/resources/basic/properties.css | 72 + tests/sass/resources/basic/reindeer.css | 5905 ++++++++++++++++++++ tests/sass/resources/basic/selectors.css | 103 + tests/sass/resources/css/control-directives.scss | 1 + tests/sass/resources/css/extends.css | 13 + tests/sass/resources/css/functions.css | 14 + tests/sass/resources/css/imports.css | 11 + tests/sass/resources/css/mixins.css | 41 + tests/sass/resources/css/nested-properties.css | 5 + tests/sass/resources/css/nesting.css | 47 + tests/sass/resources/css/parent-import.css | 25 + tests/sass/resources/css/parent-selector.css | 24 + tests/sass/resources/css/variables.css | 11 + tests/sass/resources/scss/_partial-for-import.scss | 9 + tests/sass/resources/scss/control-directives.scss | 14 + tests/sass/resources/scss/extends.scss | 13 + .../resources/scss/folder-test/parent-import.scss | 6 + .../resources/scss/folder-test2/base-imported.scss | 1 + tests/sass/resources/scss/folder-test2/base.scss | 3 + tests/sass/resources/scss/folder-test2/url.scss | 6 + .../resources/scss/folder-test2/variables.scss | 14 + tests/sass/resources/scss/functions.scss | 16 + tests/sass/resources/scss/imports.scss | 6 + tests/sass/resources/scss/interpolation.scss | 3 + tests/sass/resources/scss/mixins.scss | 44 + tests/sass/resources/scss/nested-properties.scss | 7 + tests/sass/resources/scss/nesting.scss | 40 + tests/sass/resources/scss/parent-selector.scss | 14 + .../resources/scss/reference-parent-selector.css | 6 + tests/sass/resources/scss/variables.scss | 16 + tests/sass/src/com/vaadin/sass/AllTests.java | 11 + tests/sass/src/com/vaadin/sass/CssTestSuite.java | 17 + tests/sass/src/com/vaadin/sass/ScssTestSuite.java | 26 + tests/sass/src/com/vaadin/sass/TestBase.java | 84 + .../sass/src/com/vaadin/sass/VisitorTestSuite.java | 14 + .../src/com/vaadin/sass/parser/ParserTest.java | 49 + .../com/vaadin/sass/testcases/css/Comments.java | 23 + .../com/vaadin/sass/testcases/css/EmptyBlock.java | 23 + .../vaadin/sass/testcases/css/Interpolation.java | 33 + .../src/com/vaadin/sass/testcases/css/Media.java | 24 + .../com/vaadin/sass/testcases/css/Properties.java | 24 + .../com/vaadin/sass/testcases/css/Reindeer.java | 24 + .../com/vaadin/sass/testcases/css/Selectors.java | 24 + .../sass/testcases/scss/ControlDirectives.java | 40 + .../com/vaadin/sass/testcases/scss/Extends.java | 40 + .../com/vaadin/sass/testcases/scss/Functions.java | 42 + .../com/vaadin/sass/testcases/scss/Imports.java | 42 + .../src/com/vaadin/sass/testcases/scss/Mixins.java | 103 + .../sass/testcases/scss/NestedProperties.java | 57 + .../com/vaadin/sass/testcases/scss/Nesting.java | 75 + .../vaadin/sass/testcases/scss/ParentImports.java | 52 + .../vaadin/sass/testcases/scss/ParentSelector.java | 47 + .../com/vaadin/sass/testcases/scss/Variables.java | 94 + .../sass/testcases/visitor/ImportVisitorTest.java | 9 + .../sass/testcases/visitor/MixinVisitorTest.java | 263 + .../visitor/NestedPropertiesVisitorTest.java | 51 + .../src/com/vaadin/sass/tree/ImportNodeTest.java | 60 + 112 files changed, 24283 insertions(+) create mode 100644 sass/src/com/vaadin/sass/SassCompiler.java create mode 100644 sass/src/com/vaadin/sass/ScssServlet.java create mode 100644 sass/src/com/vaadin/sass/ScssStylesheet.java create mode 100644 sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java create mode 100644 sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java create mode 100644 sass/src/com/vaadin/sass/parser/CharStream.java create mode 100644 sass/src/com/vaadin/sass/parser/Generic_CharStream.java create mode 100644 sass/src/com/vaadin/sass/parser/JumpException.java create mode 100644 sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java create mode 100644 sass/src/com/vaadin/sass/parser/LocatorImpl.java create mode 100644 sass/src/com/vaadin/sass/parser/MediaListImpl.java create mode 100644 sass/src/com/vaadin/sass/parser/ParseException.java create mode 100644 sass/src/com/vaadin/sass/parser/Parser.java create mode 100644 sass/src/com/vaadin/sass/parser/Parser.jj create mode 100644 sass/src/com/vaadin/sass/parser/ParserConstants.java create mode 100644 sass/src/com/vaadin/sass/parser/ParserTokenManager.java create mode 100644 sass/src/com/vaadin/sass/parser/SCSSLexicalUnit.java create mode 100644 sass/src/com/vaadin/sass/parser/SelectorListImpl.java create mode 100644 sass/src/com/vaadin/sass/parser/Selectors.java create mode 100644 sass/src/com/vaadin/sass/parser/ThrowedParseException.java create mode 100644 sass/src/com/vaadin/sass/parser/Token.java create mode 100644 sass/src/com/vaadin/sass/parser/TokenMgrError.java create mode 100644 sass/src/com/vaadin/sass/selector/CompositeSelector.java create mode 100644 sass/src/com/vaadin/sass/selector/SelectorUtil.java create mode 100644 sass/src/com/vaadin/sass/tree/BlockNode.java create mode 100644 sass/src/com/vaadin/sass/tree/EachNode.java create mode 100644 sass/src/com/vaadin/sass/tree/ExtendNode.java create mode 100644 sass/src/com/vaadin/sass/tree/ForNode.java create mode 100644 sass/src/com/vaadin/sass/tree/FunctionNode.java create mode 100644 sass/src/com/vaadin/sass/tree/IfNode.java create mode 100644 sass/src/com/vaadin/sass/tree/ImportNode.java create mode 100644 sass/src/com/vaadin/sass/tree/MediaNode.java create mode 100644 sass/src/com/vaadin/sass/tree/MixinDefNode.java create mode 100644 sass/src/com/vaadin/sass/tree/MixinNode.java create mode 100644 sass/src/com/vaadin/sass/tree/NestPropertiesNode.java create mode 100644 sass/src/com/vaadin/sass/tree/Node.java create mode 100644 sass/src/com/vaadin/sass/tree/RuleNode.java create mode 100644 sass/src/com/vaadin/sass/tree/VariableNode.java create mode 100644 sass/src/com/vaadin/sass/tree/WhileNode.java create mode 100644 sass/src/com/vaadin/sass/util/ColorUtil.java create mode 100644 sass/src/com/vaadin/sass/util/DeepCopy.java create mode 100644 sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java create mode 100644 sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java create mode 100644 sass/src/com/vaadin/sass/util/StringUtil.java create mode 100644 sass/src/com/vaadin/sass/visitor/BlockVisitor.java create mode 100644 sass/src/com/vaadin/sass/visitor/ExtendVisitor.java create mode 100644 sass/src/com/vaadin/sass/visitor/ImportVisitor.java create mode 100644 sass/src/com/vaadin/sass/visitor/MixinVisitor.java create mode 100644 sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java create mode 100644 sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java create mode 100644 sass/src/com/vaadin/sass/visitor/VariableVisitor.java create mode 100644 sass/src/com/vaadin/sass/visitor/Visitor.java create mode 100644 tests/sass/resources/basic/comments.css create mode 100644 tests/sass/resources/basic/empty_block.css create mode 100644 tests/sass/resources/basic/media.css create mode 100644 tests/sass/resources/basic/properties.css create mode 100644 tests/sass/resources/basic/reindeer.css create mode 100644 tests/sass/resources/basic/selectors.css create mode 100644 tests/sass/resources/css/control-directives.scss create mode 100644 tests/sass/resources/css/extends.css create mode 100644 tests/sass/resources/css/functions.css create mode 100644 tests/sass/resources/css/imports.css create mode 100644 tests/sass/resources/css/mixins.css create mode 100644 tests/sass/resources/css/nested-properties.css create mode 100644 tests/sass/resources/css/nesting.css create mode 100644 tests/sass/resources/css/parent-import.css create mode 100644 tests/sass/resources/css/parent-selector.css create mode 100644 tests/sass/resources/css/variables.css create mode 100644 tests/sass/resources/scss/_partial-for-import.scss create mode 100644 tests/sass/resources/scss/control-directives.scss create mode 100644 tests/sass/resources/scss/extends.scss create mode 100644 tests/sass/resources/scss/folder-test/parent-import.scss create mode 100644 tests/sass/resources/scss/folder-test2/base-imported.scss create mode 100644 tests/sass/resources/scss/folder-test2/base.scss create mode 100644 tests/sass/resources/scss/folder-test2/url.scss create mode 100644 tests/sass/resources/scss/folder-test2/variables.scss create mode 100644 tests/sass/resources/scss/functions.scss create mode 100644 tests/sass/resources/scss/imports.scss create mode 100644 tests/sass/resources/scss/interpolation.scss create mode 100644 tests/sass/resources/scss/mixins.scss create mode 100644 tests/sass/resources/scss/nested-properties.scss create mode 100644 tests/sass/resources/scss/nesting.scss create mode 100644 tests/sass/resources/scss/parent-selector.scss create mode 100644 tests/sass/resources/scss/reference-parent-selector.css create mode 100644 tests/sass/resources/scss/variables.scss create mode 100644 tests/sass/src/com/vaadin/sass/AllTests.java create mode 100644 tests/sass/src/com/vaadin/sass/CssTestSuite.java create mode 100644 tests/sass/src/com/vaadin/sass/ScssTestSuite.java create mode 100644 tests/sass/src/com/vaadin/sass/TestBase.java create mode 100644 tests/sass/src/com/vaadin/sass/VisitorTestSuite.java create mode 100644 tests/sass/src/com/vaadin/sass/parser/ParserTest.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/Comments.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/Media.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/Properties.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java create mode 100644 tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java diff --git a/sass/src/com/vaadin/sass/SassCompiler.java b/sass/src/com/vaadin/sass/SassCompiler.java new file mode 100644 index 0000000000..701f1e7109 --- /dev/null +++ b/sass/src/com/vaadin/sass/SassCompiler.java @@ -0,0 +1,39 @@ +package com.vaadin.sass; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +public class SassCompiler { + + public static void main(String[] args) throws Exception { + String input = null; + String output = null; + if (args.length == 0) { + System.out + .println("usage: SassCompile "); + return; + } else if (args.length == 1) { + input = args[0]; + } else { + input = args[0]; + output = args[1]; + } + File inputFile = new File(input); + ScssStylesheet scss = ScssStylesheet.get(inputFile); + scss.compile(); + if (output == null) { + System.out.println(scss.toString()); + } else { + writeFile(output, scss.toString()); + } + } + + public static void writeFile(String filename, String output) + throws IOException { + File file = new File(filename); + FileWriter writer = new FileWriter(file); + writer.write(output); + writer.close(); + } +} diff --git a/sass/src/com/vaadin/sass/ScssServlet.java b/sass/src/com/vaadin/sass/ScssServlet.java new file mode 100644 index 0000000000..545bf2706f --- /dev/null +++ b/sass/src/com/vaadin/sass/ScssServlet.java @@ -0,0 +1,44 @@ +package com.vaadin.sass; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class ScssServlet extends HttpServlet { + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + String cssPath = req.getRequestURI(); + if (cssPath.endsWith(".css")) { + File cssFile = new File(cssPath); + if (cssFile.exists()) { + + } else { + String scssPath = cssPath.replace(".css", ".scss"); + File scssFile = new File(scssPath); + if (scssFile.exists()) { + ScssStylesheet scss = ScssStylesheet.get(new File(cssPath)); + try { + scss.compile(); + } catch (Exception e) { + e.printStackTrace(); + } + resp.setContentType("text/css"); + OutputStream fout = resp.getOutputStream(); + OutputStream bos = new BufferedOutputStream(fout); + OutputStreamWriter outputwriter = new OutputStreamWriter( + bos); + outputwriter.write(scss.toString()); + } + + } + } + } +} diff --git a/sass/src/com/vaadin/sass/ScssStylesheet.java b/sass/src/com/vaadin/sass/ScssStylesheet.java new file mode 100644 index 0000000000..18945dfe44 --- /dev/null +++ b/sass/src/com/vaadin/sass/ScssStylesheet.java @@ -0,0 +1,102 @@ +package com.vaadin.sass; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.Node; +import com.vaadin.sass.visitor.BlockVisitor; +import com.vaadin.sass.visitor.ExtendVisitor; +import com.vaadin.sass.visitor.ImportVisitor; +import com.vaadin.sass.visitor.MixinVisitor; +import com.vaadin.sass.visitor.NestPropertiesVisitor; +import com.vaadin.sass.visitor.ParentSelectorVisitor; +import com.vaadin.sass.visitor.VariableVisitor; +import com.vaadin.sass.visitor.Visitor; + +public class ScssStylesheet extends Node { + + private static final long serialVersionUID = 3849790204404961608L; + + /** + * Read in a file SCSS and parse it into a ScssStylesheet + * + * @param file + * @throws IOException + */ + public ScssStylesheet() { + super(); + } + + /** + * Main entry point for the SASS compiler. Takes in a file and builds upp a + * ScssStylesheet tree out of it. Calling compile() on it will transform + * SASS into CSS. Calling toString() will print out the SCSS/CSS. + * + * @param file + * @return + * @throws CSSException + * @throws IOException + */ + public static ScssStylesheet get(File file) throws CSSException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + file = file.getCanonicalFile(); + handler.getStyleSheet().setFileName(file.getAbsoluteFile().getParent()); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(file.getAbsolutePath()); + return handler.getStyleSheet(); + } + + /** + * Applies all the visitors and compiles SCSS into Css. + * + * @throws Exception + */ + public void compile() throws Exception { + List visitors = new ArrayList(); + visitors.add(new ImportVisitor()); + visitors.add(new MixinVisitor()); + visitors.add(new VariableVisitor()); + visitors.add(new ParentSelectorVisitor()); + visitors.add(new BlockVisitor()); + visitors.add(new NestPropertiesVisitor()); + visitors.add(new ExtendVisitor()); + for (Visitor visitor : visitors) { + visitor.traverse(this); + } + } + + /** + * Prints out the current state of the node tree. Will return SCSS before + * compile and CSS after. + * + * For now this is an own method with it's own implementation that most node + * types will implement themselves. + */ + @Override + public String toString() { + StringBuilder string = new StringBuilder(""); + if (children.size() > 0) { + string.append(children.get(0).toString()); + } + String delimeter = "\n\n"; + if (children.size() > 1) { + for (int i = 1; i < children.size(); i++) { + String childString = children.get(i).toString(); + if (childString != null) { + string.append(delimeter).append(childString); + } + } + } + String output = string.toString(); + return output; + } +} diff --git a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java new file mode 100644 index 0000000000..1ac2f0016e --- /dev/null +++ b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java @@ -0,0 +1,52 @@ +package com.vaadin.sass.handler; + +import java.util.Collection; + +import org.w3c.css.sac.DocumentHandler; +import org.w3c.css.sac.LexicalUnit; +import org.w3c.css.sac.SACMediaList; +import org.w3c.css.sac.SelectorList; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.tree.EachNode; +import com.vaadin.sass.tree.ForNode; +import com.vaadin.sass.tree.IfNode; +import com.vaadin.sass.tree.MixinDefNode; +import com.vaadin.sass.tree.VariableNode; +import com.vaadin.sass.tree.WhileNode; + +public interface SCSSDocumentHandler extends DocumentHandler { + ScssStylesheet getStyleSheet(); + + void variable(String name, LexicalUnit value, boolean guarded); + + void startMixinDirective(String name, Collection args); + + void endMixinDirective(String name, Collection args); + + MixinDefNode mixinDirective(String name, String args, String body); + + void debugDirective(); + + ForNode forDirective(String var, String from, String to, boolean exclusive, + String body); + + EachNode eachDirective(String var, String list, String body); + + WhileNode whileDirective(String condition, String body); + + IfNode ifDirective(); + + void extendDirective(SelectorList list); + + void startNestedProperties(String name); + + void endNestedProperties(String name); + + void includeDirective(String name, Collection args); + + void importStyle(String uri, SACMediaList media, boolean isURL); + + void property(String name, LexicalUnit value, boolean important, + String comment); +} diff --git a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java new file mode 100644 index 0000000000..f4e9398599 --- /dev/null +++ b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java @@ -0,0 +1,251 @@ +package com.vaadin.sass.handler; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.Stack; + +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.InputSource; +import org.w3c.css.sac.LexicalUnit; +import org.w3c.css.sac.SACMediaList; +import org.w3c.css.sac.SelectorList; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.EachNode; +import com.vaadin.sass.tree.ExtendNode; +import com.vaadin.sass.tree.ForNode; +import com.vaadin.sass.tree.IfNode; +import com.vaadin.sass.tree.ImportNode; +import com.vaadin.sass.tree.MediaNode; +import com.vaadin.sass.tree.MixinDefNode; +import com.vaadin.sass.tree.MixinNode; +import com.vaadin.sass.tree.NestPropertiesNode; +import com.vaadin.sass.tree.Node; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; +import com.vaadin.sass.tree.WhileNode; + +public class SCSSDocumentHandlerImpl implements SCSSDocumentHandler { + + private final ScssStylesheet styleSheet; + Stack nodeStack = new Stack(); + private Map> variableMap; + + public SCSSDocumentHandlerImpl() { + this(new ScssStylesheet()); + variableMap = new HashMap>(); + } + + public SCSSDocumentHandlerImpl(ScssStylesheet styleSheet) { + this.styleSheet = styleSheet; + nodeStack.push(styleSheet); + } + + public void addVariable(String varName, LexicalUnit value) { + if (variableMap.get(varName) == null) { + variableMap.put(varName, new Stack()); + } + Stack valueStack = variableMap.get(varName); + valueStack.push(value); + } + + public void removeVaraible(String varName) { + Stack valueStack = variableMap.get(varName); + if (valueStack != null && !valueStack.isEmpty()) { + valueStack.pop(); + } + } + + public LexicalUnit getVariable(String varName) { + Stack valueStack = variableMap.get(varName); + if (valueStack != null && !valueStack.isEmpty()) { + return valueStack.peek(); + } + return null; + } + + @Override + public ScssStylesheet getStyleSheet() { + return styleSheet; + } + + @Override + public void startDocument(InputSource source) throws CSSException { + nodeStack.push(styleSheet); + // System.out.println("startDocument(InputSource source): " + // + source.getURI()); + } + + @Override + public void endDocument(InputSource source) throws CSSException { + // System.out.println("endDocument(InputSource source): " + // + source.getURI()); + } + + @Override + public void variable(String name, LexicalUnit value, boolean guarded) { + VariableNode node = new VariableNode(name, value, guarded); + nodeStack.peek().appendChild(node); + } + + @Override + public void debugDirective() { + } + + @Override + public ForNode forDirective(String var, String from, String to, + boolean exclusive, String body) { + ForNode node = new ForNode(var, from, to, exclusive, body); + System.out.println(node); + return node; + } + + @Override + public EachNode eachDirective(String var, String list, String body) { + EachNode node = new EachNode(var, list, body); + System.out.println(node); + return node; + } + + @Override + public WhileNode whileDirective(String condition, String body) { + WhileNode node = new WhileNode(condition, body); + System.out.println(node); + return node; + } + + @Override + public IfNode ifDirective() { + return new IfNode(); + } + + @Override + public void comment(String text) throws CSSException { + System.out.println("comment(String text): " + text); + } + + @Override + public void ignorableAtRule(String atRule) throws CSSException { + System.out.println("ignorableAtRule(String atRule): " + atRule); + } + + @Override + public void namespaceDeclaration(String prefix, String uri) + throws CSSException { + System.out.println("namespaceDeclaration(String prefix, String uri): " + + prefix + ", " + uri); + } + + @Override + public void importStyle(String uri, SACMediaList media, + String defaultNamespaceURI) throws CSSException { + } + + @Override + public void startMedia(SACMediaList media) throws CSSException { + MediaNode node = new MediaNode(media); + nodeStack.peek().appendChild(node); + nodeStack.push(node); + } + + @Override + public void endMedia(SACMediaList media) throws CSSException { + nodeStack.pop(); + } + + @Override + public void startPage(String name, String pseudo_page) throws CSSException { + System.out.println("startPage(String name, String pseudo_page): " + + name + ", " + pseudo_page); + } + + @Override + public void endPage(String name, String pseudo_page) throws CSSException { + System.out.println("endPage(String name, String pseudo_page): " + name + + ", " + pseudo_page); + } + + @Override + public void startFontFace() throws CSSException { + System.out.println("startFontFace()"); + } + + @Override + public void endFontFace() throws CSSException { + System.out.println("endFontFace()"); + } + + @Override + public void startSelector(SelectorList selectors) throws CSSException { + BlockNode node = new BlockNode(selectors); + nodeStack.peek().appendChild(node); + nodeStack.push(node); + } + + @Override + public void endSelector(SelectorList selectors) throws CSSException { + nodeStack.pop(); + } + + @Override + public void property(String name, LexicalUnit value, boolean important) + throws CSSException { + property(name, value, important, null); + } + + public void property(String name, LexicalUnit value, boolean important, + String comment) { + RuleNode node = new RuleNode(name, value, important, comment); + nodeStack.peek().appendChild(node); + } + + @Override + public void extendDirective(SelectorList list) { + ExtendNode node = new ExtendNode(list); + nodeStack.peek().appendChild(node); + } + + @Override + public MixinDefNode mixinDirective(String name, String args, String body) { + MixinDefNode node = new MixinDefNode(name, args, body); + return node; + } + + @Override + public void startNestedProperties(String name) { + NestPropertiesNode node = new NestPropertiesNode(name); + nodeStack.peek().appendChild(node); + nodeStack.push(node); + } + + @Override + public void endNestedProperties(String name) { + nodeStack.pop(); + } + + @Override + public void startMixinDirective(String name, Collection args) { + MixinDefNode node = new MixinDefNode(name, args); + nodeStack.peek().appendChild(node); + nodeStack.push(node); + } + + @Override + public void endMixinDirective(String name, Collection args) { + nodeStack.pop(); + } + + @Override + public void includeDirective(String name, Collection args) { + MixinNode node = new MixinNode(name, args); + nodeStack.peek().appendChild(node); + } + + @Override + public void importStyle(String uri, SACMediaList media, boolean isURL) { + ImportNode node = new ImportNode(uri, media, isURL); + nodeStack.peek().appendChild(node); + } +} diff --git a/sass/src/com/vaadin/sass/parser/CharStream.java b/sass/src/com/vaadin/sass/parser/CharStream.java new file mode 100644 index 0000000000..004e3eb8fd --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/CharStream.java @@ -0,0 +1,115 @@ +/* Generated By:JavaCC: Do not edit this line. CharStream.java Version 5.0 */ +/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package com.vaadin.sass.parser; + +/** + * This interface describes a character stream that maintains line and + * column number positions of the characters. It also has the capability + * to backup the stream to some extent. An implementation of this + * interface is used in the TokenManager implementation generated by + * JavaCCParser. + * + * All the methods except backup can be implemented in any fashion. backup + * needs to be implemented correctly for the correct operation of the lexer. + * Rest of the methods are all used to get information like line number, + * column number and the String that constitutes a token and are not used + * by the lexer. Hence their implementation won't affect the generated lexer's + * operation. + */ + +public +interface CharStream { + + /** + * Returns the next character from the selected input. The method + * of selecting the input is the responsibility of the class + * implementing this interface. Can throw any java.io.IOException. + */ + char readChar() throws java.io.IOException; + + @Deprecated + /** + * Returns the column position of the character last read. + * @deprecated + * @see #getEndColumn + */ + int getColumn(); + + @Deprecated + /** + * Returns the line number of the character last read. + * @deprecated + * @see #getEndLine + */ + int getLine(); + + /** + * Returns the column number of the last character for current token (being + * matched after the last call to BeginTOken). + */ + int getEndColumn(); + + /** + * Returns the line number of the last character for current token (being + * matched after the last call to BeginTOken). + */ + int getEndLine(); + + /** + * Returns the column number of the first character for current token (being + * matched after the last call to BeginTOken). + */ + int getBeginColumn(); + + /** + * Returns the line number of the first character for current token (being + * matched after the last call to BeginTOken). + */ + int getBeginLine(); + + /** + * Backs up the input stream by amount steps. Lexer calls this method if it + * had already read some characters, but could not use them to match a + * (longer) token. So, they will be used again as the prefix of the next + * token and it is the implemetation's responsibility to do this right. + */ + void backup(int amount); + + /** + * Returns the next character that marks the beginning of the next token. + * All characters must remain in the buffer between two successive calls + * to this method to implement backup correctly. + */ + char BeginToken() throws java.io.IOException; + + /** + * Returns a string made up of characters from the marked token beginning + * to the current buffer position. Implementations have the choice of returning + * anything that they want to. For example, for efficiency, one might decide + * to just return null, which is a valid implementation. + */ + String GetImage(); + + /** + * Returns an array of characters that make up the suffix of length 'len' for + * the currently matched token. This is used to build up the matched string + * for use in actions in the case of MORE. A simple and inefficient + * implementation of this is as follows : + * + * { + * String t = GetImage(); + * return t.substring(t.length() - len, t.length()).toCharArray(); + * } + */ + char[] GetSuffix(int len); + + /** + * The lexer calls this function to indicate that it is done with the stream + * and hence implementations can free any resources held by this class. + * Again, the body of this function can be just empty and it will not + * affect the lexer's operation. + */ + void Done(); + +} +/* JavaCC - OriginalChecksum=28e31651bf0ffe57018eaaa3310c55ac (do not edit this line) */ diff --git a/sass/src/com/vaadin/sass/parser/Generic_CharStream.java b/sass/src/com/vaadin/sass/parser/Generic_CharStream.java new file mode 100644 index 0000000000..fd9c8a7c03 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/Generic_CharStream.java @@ -0,0 +1,355 @@ +/* Generated By:JavaCC: Do not edit this line. Generic_CharStream.java Version 0.7pre6 */ +package com.vaadin.sass.parser; + +/** + * An implementation of interface CharStream, where the stream is assumed to + * contain only ASCII characters (without unicode processing). + */ + +public final class Generic_CharStream implements CharStream +{ + public static final boolean staticFlag = false; + int bufsize; + int available; + int tokenBegin; + public int bufpos = -1; + private int bufline[]; + private int bufcolumn[]; + + private int column = 0; + private int line = 1; + + private boolean prevCharIsCR = false; + private boolean prevCharIsLF = false; + + private java.io.Reader reader; + + private char[] buffer; + private int maxNextCharInd = 0; + private int inBuf = 0; + + private final void ExpandBuff(boolean wrapAround) + { + char[] newbuffer = new char[bufsize + 2048]; + int newbufline[] = new int[bufsize + 2048]; + int newbufcolumn[] = new int[bufsize + 2048]; + + try + { + if (wrapAround) + { + System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); + System.arraycopy(buffer, 0, newbuffer, + bufsize - tokenBegin, bufpos); + buffer = newbuffer; + + System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); + System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos); + bufline = newbufline; + + System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); + System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos); + bufcolumn = newbufcolumn; + + maxNextCharInd = (bufpos += (bufsize - tokenBegin)); + } + else + { + System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin); + buffer = newbuffer; + + System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin); + bufline = newbufline; + + System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin); + bufcolumn = newbufcolumn; + + maxNextCharInd = (bufpos -= tokenBegin); + } + } + catch (Throwable t) + { + throw new Error(t.getMessage()); + } + + + bufsize += 2048; + available = bufsize; + tokenBegin = 0; + } + + private final void FillBuff() throws java.io.IOException + { + if (maxNextCharInd == available) + { + if (available == bufsize) + { + if (tokenBegin > 2048) + { + bufpos = maxNextCharInd = 0; + available = tokenBegin; + } + else if (tokenBegin < 0) + bufpos = maxNextCharInd = 0; + else + ExpandBuff(false); + } + else if (available > tokenBegin) + available = bufsize; + else if ((tokenBegin - available) < 2048) + ExpandBuff(true); + else + available = tokenBegin; + } + + int i; + try { + if ((i = reader.read(buffer, maxNextCharInd, + available - maxNextCharInd)) == -1) + { + reader.close(); + throw new java.io.IOException(); + } + else + maxNextCharInd += i; + return; + } + catch(java.io.IOException e) { + --bufpos; + backup(0); + if (tokenBegin == -1) + tokenBegin = bufpos; + throw e; + } + } + + public final char BeginToken() throws java.io.IOException + { + tokenBegin = -1; + char c = readChar(); + tokenBegin = bufpos; + + return c; + } + + private final void UpdateLineColumn(char c) + { + column++; + + if (prevCharIsLF) + { + prevCharIsLF = false; + line += (column = 1); + } + else if (prevCharIsCR) + { + prevCharIsCR = false; + if (c == '\n') + { + prevCharIsLF = true; + } + else + line += (column = 1); + } + + switch (c) + { + case '\r' : + prevCharIsCR = true; + break; + case '\n' : + prevCharIsLF = true; + break; + case '\t' : + column--; + column += (8 - (column & 07)); + break; + default : + break; + } + + bufline[bufpos] = line; + bufcolumn[bufpos] = column; + } + + public final char readChar() throws java.io.IOException + { + if (inBuf > 0) + { + --inBuf; + return (char)((char)0xff & buffer[(bufpos == bufsize - 1) ? (bufpos = 0) : ++bufpos]); + } + + if (++bufpos >= maxNextCharInd) + FillBuff(); + + char c = (char)((char)0xff & buffer[bufpos]); + + UpdateLineColumn(c); + return (c); + } + + /** + * @deprecated + * @see #getEndColumn + */ + + public final int getColumn() { + return bufcolumn[bufpos]; + } + + /** + * @deprecated + * @see #getEndLine + */ + + public final int getLine() { + return bufline[bufpos]; + } + + public final int getEndColumn() { + return bufcolumn[bufpos]; + } + + public final int getEndLine() { + return bufline[bufpos]; + } + + public final int getBeginColumn() { + return bufcolumn[tokenBegin]; + } + + public final int getBeginLine() { + return bufline[tokenBegin]; + } + + public final void backup(int amount) { + + inBuf += amount; + if ((bufpos -= amount) < 0) + bufpos += bufsize; + } + + public Generic_CharStream(java.io.Reader dstream, int startline, + int startcolumn, int buffersize) + { + reader = dstream; + line = startline; + column = startcolumn - 1; + + available = bufsize = buffersize; + buffer = new char[buffersize]; + bufline = new int[buffersize]; + bufcolumn = new int[buffersize]; + } + + public Generic_CharStream(java.io.Reader dstream, int startline, + int startcolumn) + { + this(dstream, startline, startcolumn, 4096); + } + public void ReInit(java.io.Reader dstream, int startline, + int startcolumn, int buffersize) + { + reader = dstream; + line = startline; + column = startcolumn - 1; + + if (buffer == null || buffersize != buffer.length) + { + available = bufsize = buffersize; + buffer = new char[buffersize]; + bufline = new int[buffersize]; + bufcolumn = new int[buffersize]; + } + prevCharIsLF = prevCharIsCR = false; + tokenBegin = inBuf = maxNextCharInd = 0; + bufpos = -1; + } + + public void ReInit(java.io.Reader dstream, int startline, + int startcolumn) + { + ReInit(dstream, startline, startcolumn, 4096); + } + + public final String GetImage() + { + if (bufpos >= tokenBegin) + return new String(buffer, tokenBegin, bufpos - tokenBegin + 1); + else + return new String(buffer, tokenBegin, bufsize - tokenBegin) + + new String(buffer, 0, bufpos + 1); + } + + public final char[] GetSuffix(int len) + { + char[] ret = new char[len]; + + if ((bufpos + 1) >= len) + System.arraycopy(buffer, bufpos - len + 1, ret, 0, len); + else + { + System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0, + len - bufpos - 1); + System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1); + } + return ret; + } + + public void Done() + { + buffer = null; + bufline = null; + bufcolumn = null; + } + + /** + * Method to adjust line and column numbers for the start of a token.
+ */ + public void adjustBeginLineColumn(int newLine, int newCol) + { + int start = tokenBegin; + int len; + + if (bufpos >= tokenBegin) + { + len = bufpos - tokenBegin + inBuf + 1; + } + else + { + len = bufsize - tokenBegin + bufpos + 1 + inBuf; + } + + int i = 0, j = 0, k = 0; + int nextColDiff = 0, columnDiff = 0; + + while (i < len && + bufline[j = start % bufsize] == bufline[k = ++start % bufsize]) + { + bufline[j] = newLine; + nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j]; + bufcolumn[j] = newCol + columnDiff; + columnDiff = nextColDiff; + i++; + } + + if (i < len) + { + bufline[j] = newLine++; + bufcolumn[j] = newCol + columnDiff; + + while (i++ < len) + { + if (bufline[j = start % bufsize] != bufline[++start % bufsize]) + bufline[j] = newLine++; + else + bufline[j] = newLine; + } + } + + line = bufline[j]; + column = bufcolumn[j]; + } + +} diff --git a/sass/src/com/vaadin/sass/parser/JumpException.java b/sass/src/com/vaadin/sass/parser/JumpException.java new file mode 100644 index 0000000000..4d0f5923e9 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/JumpException.java @@ -0,0 +1,24 @@ +/* + * (c) COPYRIGHT 1999 World Wide Web Consortium + * (Massachusetts Institute of Technology, Institut National de Recherche + * en Informatique et en Automatique, Keio University). + * All Rights Reserved. http://www.w3.org/Consortium/Legal/ + * + * $Id: JumpException.java,v 1.1 1999/06/09 15:21:33 plehegar Exp $ + */ +package com.vaadin.sass.parser; + +/** + * @version $Revision: 1.1 $ + * @author Philippe Le Hegaret + */ +public class JumpException extends RuntimeException { + private static final long serialVersionUID = -2010286909393046205L; + + /** + * Creates a new JumpException + */ + public JumpException() { + } + +} diff --git a/sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java b/sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java new file mode 100644 index 0000000000..2a62c0dcf9 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java @@ -0,0 +1,575 @@ +/* + * Copyright (c) 1999 World Wide Web Consortium + * (Massachusetts Institute of Technology, Institut National de Recherche + * en Informatique et en Automatique, Keio University). + * All Rights Reserved. http://www.w3.org/Consortium/Legal/ + * + * $Id: LexicalUnitImpl.java,v 1.3 2000/02/15 02:08:19 plehegar Exp $ + */ +package com.vaadin.sass.parser; + +import java.io.Serializable; + +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.util.ColorUtil; + +/** + * @version $Revision: 1.3 $ + * @author Philippe Le Hegaret + */ +public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit, + Serializable { + private static final long serialVersionUID = -6649833716809789399L; + + LexicalUnit prev; + LexicalUnit next; + + short type; + int line; + int column; + + int i; + float f; + short dimension; + String sdimension; + String s; + String fname; + LexicalUnitImpl params; + + LexicalUnitImpl(short type, int line, int column, LexicalUnitImpl p) { + if (p != null) { + prev = p; + p.next = this; + } + this.line = line; + this.column = column - 1; + this.type = type; + } + + LexicalUnitImpl(int line, int column, LexicalUnitImpl previous, int i) { + this(SAC_INTEGER, line, column, previous); + this.i = i; + } + + LexicalUnitImpl(int line, int column, LexicalUnitImpl previous, + short dimension, String sdimension, float f) { + this(dimension, line, column, previous); + this.f = f; + this.dimension = dimension; + this.sdimension = sdimension; + } + + LexicalUnitImpl(int line, int column, LexicalUnitImpl previous, short type, + String s) { + this(type, line, column, previous); + this.s = s; + } + + LexicalUnitImpl(short type, int line, int column, LexicalUnitImpl previous, + String fname, LexicalUnitImpl params) { + this(type, line, column, previous); + this.fname = fname; + this.params = params; + } + + public int getLineNumber() { + return line; + } + + public int getColumnNumber() { + return column; + } + + @Override + public short getLexicalUnitType() { + return type; + } + + @Override + public LexicalUnit getNextLexicalUnit() { + return next; + } + + public void setNextLexicalUnit(LexicalUnit n) { + next = n; + } + + @Override + public LexicalUnit getPreviousLexicalUnit() { + return prev; + } + + @Override + public int getIntegerValue() { + return i; + } + + void setIntegerValue(int i) { + this.i = i; + } + + @Override + public float getFloatValue() { + return f; + } + + public void setFloatValue(float f) { + this.f = f; + } + + @Override + public String getDimensionUnitText() { + switch (type) { + case SAC_PERCENTAGE: + return "%"; + case SAC_EM: + return "em"; + case SAC_EX: + return "ex"; + case SAC_PIXEL: + return "px"; + case SAC_CENTIMETER: + return "cm"; + case SAC_MILLIMETER: + return "mm"; + case SAC_INCH: + return "in"; + case SAC_POINT: + return "pt"; + case SAC_PICA: + return "pc"; + case SAC_DEGREE: + return "deg"; + case SAC_RADIAN: + return "rad"; + case SAC_GRADIAN: + return "grad"; + case SAC_MILLISECOND: + return "ms"; + case SAC_SECOND: + return "s"; + case SAC_HERTZ: + return "Hz"; + case SAC_KILOHERTZ: + return "kHz"; + case SAC_DIMENSION: + return sdimension; + default: + throw new IllegalStateException("invalid dimension " + type); + } + } + + @Override + public String getStringValue() { + return s; + } + + public void setStringValue(String str) { + s = str; + } + + @Override + public String getFunctionName() { + return fname; + } + + @Override + public LexicalUnitImpl getParameters() { + return params; + } + + @Override + public LexicalUnitImpl getSubValues() { + return params; + } + + @Override + public String toString() { + short type = getLexicalUnitType(); + String text = null; + switch (type) { + case SCSS_VARIABLE: + text = "$" + s; + break; + case LexicalUnit.SAC_OPERATOR_COMMA: + text = ","; + break; + case LexicalUnit.SAC_OPERATOR_PLUS: + text = "+"; + break; + case LexicalUnit.SAC_OPERATOR_MINUS: + text = "-"; + break; + case LexicalUnit.SAC_OPERATOR_MULTIPLY: + text = "*"; + break; + case LexicalUnit.SAC_OPERATOR_SLASH: + text = "/"; + break; + case LexicalUnit.SAC_OPERATOR_MOD: + text = "%"; + break; + case LexicalUnit.SAC_OPERATOR_EXP: + text = "^"; + break; + case LexicalUnit.SAC_OPERATOR_LT: + text = "<"; + break; + case LexicalUnit.SAC_OPERATOR_GT: + text = ">"; + break; + case LexicalUnit.SAC_OPERATOR_LE: + text = "<="; + break; + case LexicalUnit.SAC_OPERATOR_GE: + text = "=>"; + break; + case LexicalUnit.SAC_OPERATOR_TILDE: + text = "~"; + break; + case LexicalUnit.SAC_INHERIT: + text = "inherit"; + break; + case LexicalUnit.SAC_INTEGER: + text = Integer.toString(getIntegerValue(), 10); + break; + case LexicalUnit.SAC_REAL: + text = getFloatValue() + ""; + break; + case LexicalUnit.SAC_EM: + case LexicalUnit.SAC_EX: + case LexicalUnit.SAC_PIXEL: + case LexicalUnit.SAC_INCH: + case LexicalUnit.SAC_CENTIMETER: + case LexicalUnit.SAC_MILLIMETER: + case LexicalUnit.SAC_POINT: + case LexicalUnit.SAC_PICA: + case LexicalUnit.SAC_PERCENTAGE: + case LexicalUnit.SAC_DEGREE: + case LexicalUnit.SAC_GRADIAN: + case LexicalUnit.SAC_RADIAN: + case LexicalUnit.SAC_MILLISECOND: + case LexicalUnit.SAC_SECOND: + case LexicalUnit.SAC_HERTZ: + case LexicalUnit.SAC_KILOHERTZ: + case LexicalUnit.SAC_DIMENSION: + float f = getFloatValue(); + int i = (int) f; + if ((i) == f) { + text = i + getDimensionUnitText(); + } else { + text = f + getDimensionUnitText(); + } + break; + case LexicalUnit.SAC_URI: + text = "url(" + getStringValue() + ")"; + break; + case LexicalUnit.SAC_RGBCOLOR: + case LexicalUnit.SAC_COUNTER_FUNCTION: + case LexicalUnit.SAC_COUNTERS_FUNCTION: + case LexicalUnit.SAC_RECT_FUNCTION: + case LexicalUnit.SAC_FUNCTION: + String funcName = getFunctionName(); + LexicalUnitImpl firstParam = getParameters(); + if ("round".equals(funcName)) { + firstParam + .setFloatValue(Math.round(firstParam.getFloatValue())); + text = firstParam.toString(); + } else if ("ceil".equals(funcName)) { + firstParam.setFloatValue((float) Math.ceil(firstParam + .getFloatValue())); + text = firstParam.toString(); + } else if ("floor".equals(funcName)) { + firstParam.setFloatValue((float) Math.floor(firstParam + .getFloatValue())); + text = firstParam.toString(); + } else if ("abs".equals(funcName)) { + firstParam.setFloatValue(Math.abs(firstParam.getFloatValue())); + text = firstParam.toString(); + } else if ("darken".equals(funcName)) { + LexicalUnitImpl dark = ColorUtil.darken(this); + text = dark.toString(); + } else if ("lighten".equals(funcName)) { + text = ColorUtil.lighten(this).toString(); + } else { + text = getFunctionName() + "(" + getParameters() + ")"; + } + break; + case LexicalUnit.SAC_IDENT: + text = getStringValue(); + break; + case LexicalUnit.SAC_STRING_VALUE: + // @@SEEME. not exact + text = "\"" + getStringValue() + "\""; + break; + case LexicalUnit.SAC_ATTR: + text = "attr(" + getStringValue() + ")"; + break; + case LexicalUnit.SAC_UNICODERANGE: + text = "@@TODO"; + break; + case LexicalUnit.SAC_SUB_EXPRESSION: + text = getSubValues().toString(); + break; + default: + text = "@unknown"; + break; + } + if (getNextLexicalUnit() != null) { + if (getNextLexicalUnit().getLexicalUnitType() == SAC_OPERATOR_COMMA) { + return text + getNextLexicalUnit(); + } + return text + ' ' + getNextLexicalUnit(); + } else { + return text; + } + } + + @Override + public LexicalUnitImpl divide(LexicalUnitImpl denominator) { + setFloatValue(getFloatValue() / denominator.getIntegerValue()); + return this; + } + + @Override + public LexicalUnitImpl add(LexicalUnitImpl another) { + setFloatValue(getFloatValue() + another.getFloatValue()); + return this; + } + + @Override + public LexicalUnitImpl minus(LexicalUnitImpl another) { + setFloatValue(getFloatValue() - another.getFloatValue()); + return this; + } + + @Override + public LexicalUnitImpl multiply(LexicalUnitImpl another) { + setFloatValue(getFloatValue() * another.getIntegerValue()); + return this; + } + + public void replaceValue(LexicalUnitImpl another) { + type = another.getLexicalUnitType(); + i = another.getIntegerValue(); + f = another.getFloatValue(); + dimension = another.getDimension(); + sdimension = another.getSdimension(); + s = another.getStringValue(); + fname = getFunctionName(); + params = another.getParameters(); + prev = another.getPreviousLexicalUnit(); + LexicalUnit finalNextInAnother = another; + while (finalNextInAnother.getNextLexicalUnit() != null) { + finalNextInAnother = finalNextInAnother.getNextLexicalUnit(); + } + ((LexicalUnitImpl) finalNextInAnother).setNextLexicalUnit(next); + next = another.next; + } + + public short getDimension() { + return dimension; + } + + public String getSdimension() { + return sdimension; + } + + // here some useful function for creation + public static LexicalUnitImpl createVariable(int line, int column, + LexicalUnitImpl previous, String name) { + return new LexicalUnitImpl(line, column, previous, SCSS_VARIABLE, name); + } + + public static LexicalUnitImpl createNumber(int line, int column, + LexicalUnitImpl previous, float v) { + int i = (int) v; + if (v == i) { + return new LexicalUnitImpl(line, column, previous, i); + } else { + return new LexicalUnitImpl(line, column, previous, SAC_REAL, "", v); + } + } + + public static LexicalUnitImpl createInteger(int line, int column, + LexicalUnitImpl previous, int i) { + return new LexicalUnitImpl(line, column, previous, i); + } + + public static LexicalUnitImpl createPercentage(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_PERCENTAGE, + null, v); + } + + static LexicalUnitImpl createEMS(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_EM, null, v); + } + + static LexicalUnitImpl createEXS(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_EX, null, v); + } + + static LexicalUnitImpl createPX(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_PIXEL, null, v); + } + + static LexicalUnitImpl createCM(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_CENTIMETER, + null, v); + } + + static LexicalUnitImpl createMM(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_MILLIMETER, + null, v); + } + + static LexicalUnitImpl createIN(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_INCH, null, v); + } + + static LexicalUnitImpl createPT(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_POINT, null, v); + } + + static LexicalUnitImpl createPC(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_PICA, null, v); + } + + static LexicalUnitImpl createDEG(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_DEGREE, null, v); + } + + static LexicalUnitImpl createRAD(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_RADIAN, null, v); + } + + static LexicalUnitImpl createGRAD(int line, int column, + LexicalUnitImpl previous, float v) { + return new LexicalUnitImpl(line, column, previous, SAC_GRADIAN, null, v); + } + + static LexicalUnitImpl createMS(int line, int column, + LexicalUnitImpl previous, float v) { + if (v < 0) { + throw new ParseException("Time values may not be negative"); + } + return new LexicalUnitImpl(line, column, previous, SAC_MILLISECOND, + null, v); + } + + static LexicalUnitImpl createS(int line, int column, + LexicalUnitImpl previous, float v) { + if (v < 0) { + throw new ParseException("Time values may not be negative"); + } + return new LexicalUnitImpl(line, column, previous, SAC_SECOND, null, v); + } + + static LexicalUnitImpl createHZ(int line, int column, + LexicalUnitImpl previous, float v) { + if (v < 0) { + throw new ParseException("Frequency values may not be negative"); + } + return new LexicalUnitImpl(line, column, previous, SAC_HERTZ, null, v); + } + + static LexicalUnitImpl createKHZ(int line, int column, + LexicalUnitImpl previous, float v) { + if (v < 0) { + throw new ParseException("Frequency values may not be negative"); + } + return new LexicalUnitImpl(line, column, previous, SAC_KILOHERTZ, null, + v); + } + + static LexicalUnitImpl createDimen(int line, int column, + LexicalUnitImpl previous, float v, String s) { + return new LexicalUnitImpl(line, column, previous, SAC_DIMENSION, s, v); + } + + static LexicalUnitImpl createInherit(int line, int column, + LexicalUnitImpl previous) { + return new LexicalUnitImpl(line, column, previous, SAC_INHERIT, + "inherit"); + } + + public static LexicalUnitImpl createIdent(int line, int column, + LexicalUnitImpl previous, String s) { + return new LexicalUnitImpl(line, column, previous, SAC_IDENT, s); + } + + static LexicalUnitImpl createString(int line, int column, + LexicalUnitImpl previous, String s) { + return new LexicalUnitImpl(line, column, previous, SAC_STRING_VALUE, s); + } + + static LexicalUnitImpl createURL(int line, int column, + LexicalUnitImpl previous, String s) { + return new LexicalUnitImpl(line, column, previous, SAC_URI, s); + } + + static LexicalUnitImpl createAttr(int line, int column, + LexicalUnitImpl previous, String s) { + return new LexicalUnitImpl(line, column, previous, SAC_ATTR, s); + } + + static LexicalUnitImpl createCounter(int line, int column, + LexicalUnitImpl previous, LexicalUnit params) { + return new LexicalUnitImpl(SAC_COUNTER_FUNCTION, line, column, + previous, "counter", (LexicalUnitImpl) params); + } + + public static LexicalUnitImpl createCounters(int line, int column, + LexicalUnitImpl previous, LexicalUnit params) { + return new LexicalUnitImpl(SAC_COUNTERS_FUNCTION, line, column, + previous, "counters", (LexicalUnitImpl) params); + } + + public static LexicalUnitImpl createRGBColor(int line, int column, + LexicalUnitImpl previous, LexicalUnit params) { + return new LexicalUnitImpl(SAC_RGBCOLOR, line, column, previous, "rgb", + (LexicalUnitImpl) params); + } + + public static LexicalUnitImpl createRect(int line, int column, + LexicalUnitImpl previous, LexicalUnit params) { + return new LexicalUnitImpl(SAC_RECT_FUNCTION, line, column, previous, + "rect", (LexicalUnitImpl) params); + } + + public static LexicalUnitImpl createFunction(int line, int column, + LexicalUnitImpl previous, String fname, LexicalUnit params) { + return new LexicalUnitImpl(SAC_FUNCTION, line, column, previous, fname, + (LexicalUnitImpl) params); + } + + public static LexicalUnitImpl createUnicodeRange(int line, int column, + LexicalUnit previous, LexicalUnit params) { + // @@ return new LexicalUnitImpl(line, column, previous, null, + // SAC_UNICODERANGE, params); + return null; + } + + public static LexicalUnitImpl createComma(int line, int column, + LexicalUnitImpl previous) { + return new LexicalUnitImpl(SAC_OPERATOR_COMMA, line, column, previous); + } + + public static LexicalUnitImpl createSlash(int line, int column, + LexicalUnitImpl previous) { + return new LexicalUnitImpl(SAC_OPERATOR_SLASH, line, column, previous); + } + +} diff --git a/sass/src/com/vaadin/sass/parser/LocatorImpl.java b/sass/src/com/vaadin/sass/parser/LocatorImpl.java new file mode 100644 index 0000000000..77e7543061 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/LocatorImpl.java @@ -0,0 +1,130 @@ +/* + * Copyright (c) 1999 World Wide Web Consortium + * (Massachusetts Institute of Technology, Institut National de Recherche + * en Informatique et en Automatique, Keio University). + * All Rights Reserved. http://www.w3.org/Consortium/Legal/ + * + * $Id: LocatorImpl.java,v 1.2 2000/02/14 16:59:06 plehegar Exp $ + */ +package com.vaadin.sass.parser; + +import org.w3c.css.sac.Locator; + +/** + * @version $Revision: 1.2 $ + * @author Philippe Le Hegaret + */ +public class LocatorImpl implements Locator { + + // W3C DEBUG mode + private static boolean W3CDebug; + static { + try { + W3CDebug = (Boolean.getBoolean("debug") + || Boolean.getBoolean("org.w3c.flute.parser.LocatorImpl.debug") + || Boolean.getBoolean("org.w3c.flute.parser.debug") + || Boolean.getBoolean("org.w3c.flute.debug") + || Boolean.getBoolean("org.w3c.debug") + || Boolean.getBoolean("org.debug")); + } catch (Exception e) { + // nothing + } + } + + String uri; + int line; + int column; + + public String getURI() { + return uri; + } + + public int getLineNumber() { + return line; + } + + public int getColumnNumber() { + return column; + } + + /** + * Creates a new LocatorImpl + */ + public LocatorImpl(Parser p) { + if (W3CDebug) { + System.err.println( "LocatorImpl::newLocator(" + p + ");"); + } + uri = p.source.getURI(); + line = p.token.beginLine; + column = p.token.beginColumn; + } + + /** + * Reinitializes a LocatorImpl + */ + public LocatorImpl(Parser p, Token tok) { + if (W3CDebug) { + System.err.println( "LocatorImpl::newLocator(" + p + + ", " + tok + ");"); + } + uri = p.source.getURI(); + line = tok.beginLine; + column = tok.beginColumn; + } + + /** + * Reinitializes a LocatorImpl + */ + public LocatorImpl(Parser p, int line, int column) { + if (W3CDebug) { + System.err.println( "LocatorImpl::newLocator(" + p + + ", " + line + + ", " + column + ");"); + } + uri = p.source.getURI(); + this.line = line; + this.column = column; + } + + /** + * Reinitializes a LocatorImpl + */ + public LocatorImpl reInit(Parser p) { + if (W3CDebug) { + System.err.println( "LocatorImpl::reInit(" + p + ");" ); + } + uri = p.source.getURI(); + line = p.token.beginLine; + column = p.token.beginColumn; + return this; + } + + /** + * Reinitializes a LocatorImpl + */ + public LocatorImpl reInit(Parser p, Token tok) { + if (W3CDebug) { + System.err.println( "LocatorImpl::reInit(" + p + + ", " + tok + ");"); + } + uri = p.source.getURI(); + line = tok.beginLine; + column = tok.beginColumn; + return this; + } + + /** + * Reinitializes a LocatorImpl + */ + public LocatorImpl reInit(Parser p, int line, int column) { + if (W3CDebug) { + System.err.println("LocatorImpl::reInit(" + p + + ", " + line + + ", " + column + ");"); + } + uri = p.source.getURI(); + this.line = line; + this.column = column; + return this; + } +} diff --git a/sass/src/com/vaadin/sass/parser/MediaListImpl.java b/sass/src/com/vaadin/sass/parser/MediaListImpl.java new file mode 100644 index 0000000000..042e385cb3 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/MediaListImpl.java @@ -0,0 +1,79 @@ +/* + * (c) COPYRIGHT 1999 World Wide Web Consortium + * (Massachusetts Institute of Technology, Institut National de Recherche + * en Informatique et en Automatique, Keio University). + * All Rights Reserved. http://www.w3.org/Consortium/Legal/ + * + * $Id: MediaListImpl.java,v 1.4 2000/04/26 13:40:19 plehegar Exp $ + */ +package com.vaadin.sass.parser; + +import org.w3c.css.sac.SACMediaList; + +/** + * @version $Revision: 1.4 $ + * @author Philippe Le Hegaret + */ +public class MediaListImpl implements SACMediaList { + + String[] array = new String[10]; + int current; + + @Override + public int getLength() { + return current; + } + + @Override + public String item(int index) { + if ((index < 0) || (index >= current)) { + return null; + } + return array[index]; + } + + void addItem(String medium) { + if (medium.equals("all")) { + array[0] = "all"; + current = 1; + return; + } + for (int i = 0; i < current; i++) { + if (medium.equals(array[i])) { + return; + } + } + if (current == array.length) { + String[] old = array; + array = new String[current + current]; + System.arraycopy(old, 0, array, 0, current); + } + array[current++] = medium; + } + + /** + * Returns a string representation of this object. + */ + @Override + public String toString() { + switch (current) { + case 0: + return ""; + case 1: + return array[0]; + default: + boolean not_done = true; + int i = 0; + StringBuffer buf = new StringBuffer(50); + do { + buf.append(array[i++]); + if (i == current) { + not_done = false; + } else { + buf.append(", "); + } + } while (not_done); + return buf.toString(); + } + } +} diff --git a/sass/src/com/vaadin/sass/parser/ParseException.java b/sass/src/com/vaadin/sass/parser/ParseException.java new file mode 100644 index 0000000000..482e5d3b3f --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/ParseException.java @@ -0,0 +1,188 @@ +/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 0.7pre6 */ +package com.vaadin.sass.parser; + +import org.w3c.css.sac.CSSException; + +/** + * This exception is thrown when parse errors are encountered. You can + * explicitly create objects of this exception type by calling the method + * generateParseException in the generated parser. + * + * You can modify this class to customize your error reporting mechanisms so + * long as you retain the public fields. + */ +public class ParseException extends CSSException { + private static final long serialVersionUID = -8556588037264585977L; + + /** + * This constructor is used by the method "generateParseException" in the + * generated parser. Calling this constructor generates a new object of this + * type with the fields "currentToken", "expectedTokenSequences", and + * "tokenImage" set. The boolean flag "specialConstructor" is also set to + * true to indicate that this constructor was used to create this object. + * This constructor calls its super class with the empty string to force the + * "toString" method of parent class "Throwable" to print the error message + * in the form: ParseException: + */ + public ParseException(Token currentTokenVal, + int[][] expectedTokenSequencesVal, String[] tokenImageVal) { + super(""); + specialConstructor = true; + currentToken = currentTokenVal; + expectedTokenSequences = expectedTokenSequencesVal; + tokenImage = tokenImageVal; + } + + /** + * The following constructors are for use by you for whatever purpose you + * can think of. Constructing the exception in this manner makes the + * exception behave in the normal way - i.e., as documented in the class + * "Throwable". The fields "errorToken", "expectedTokenSequences", and + * "tokenImage" do not contain relevant information. The JavaCC generated + * code does not use these constructors. + */ + + public ParseException() { + super(); + specialConstructor = false; + } + + public ParseException(String message) { + super(message); + specialConstructor = false; + } + + /** + * This variable determines which constructor was used to create this object + * and thereby affects the semantics of the "getMessage" method (see below). + */ + protected boolean specialConstructor; + + /** + * This is the last token that has been consumed successfully. If this + * object has been created due to a parse error, the token followng this + * token will (therefore) be the first error token. + */ + public Token currentToken; + + /** + * Each entry in this array is an array of integers. Each array of integers + * represents a sequence of tokens (by their ordinal values) that is + * expected at this point of the parse. + */ + public int[][] expectedTokenSequences; + + /** + * This is a reference to the "tokenImage" array of the generated parser + * within which the parse error occurred. This array is defined in the + * generated ...Constants interface. + */ + public String[] tokenImage; + + /** + * This method has the standard behavior when this object has been created + * using the standard constructors. Otherwise, it uses "currentToken" and + * "expectedTokenSequences" to generate a parse error message and returns + * it. If this object has been created due to a parse error, and you do not + * catch it (it gets thrown from the parser), then this method is called + * during the printing of the final stack trace, and hence the correct error + * message gets displayed. + */ + @Override + public String getMessage() { + if (!specialConstructor) { + return super.getMessage(); + } + String expected = ""; + int maxSize = 0; + for (int i = 0; i < expectedTokenSequences.length; i++) { + if (maxSize < expectedTokenSequences[i].length) { + maxSize = expectedTokenSequences[i].length; + } + for (int j = 0; j < expectedTokenSequences[i].length; j++) { + expected += tokenImage[expectedTokenSequences[i][j]] + " "; + } + if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) { + expected += "..."; + } + expected += eol + " "; + } + String retval = "Encountered \""; + Token tok = currentToken.next; + for (int i = 0; i < maxSize; i++) { + if (i != 0) { + retval += " "; + } + if (tok.kind == 0) { + retval += tokenImage[0]; + break; + } + retval += add_escapes(tok.image); + tok = tok.next; + } + retval += "\" at line " + currentToken.next.beginLine + ", column " + + currentToken.next.beginColumn + "." + eol; + if (expectedTokenSequences.length == 1) { + retval += "Was expecting:" + eol + " "; + } else { + retval += "Was expecting one of:" + eol + " "; + } + retval += expected; + return retval; + } + + /** + * The end of line string for this machine. + */ + protected String eol = System.getProperty("line.separator", "\n"); + + /** + * Used to convert raw characters to their escaped version when these raw + * version cannot be used as part of an ASCII string literal. + */ + protected String add_escapes(String str) { + StringBuffer retval = new StringBuffer(); + char ch; + for (int i = 0; i < str.length(); i++) { + switch (str.charAt(i)) { + case 0: + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + + s.substring(s.length() - 4, s.length())); + } else { + retval.append(ch); + } + continue; + } + } + return retval.toString(); + } + +} diff --git a/sass/src/com/vaadin/sass/parser/Parser.java b/sass/src/com/vaadin/sass/parser/Parser.java new file mode 100644 index 0000000000..df70d812aa --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/Parser.java @@ -0,0 +1,4968 @@ +/* Generated By:JavaCC: Do not edit this line. Parser.java */ +package com.vaadin.sass.parser; + +import java.io.*; +import java.net.*; +import java.util.ArrayList; +import java.util.Locale; +import java.util.Map; + +import org.w3c.css.sac.ConditionFactory; +import org.w3c.css.sac.Condition; +import org.w3c.css.sac.SelectorFactory; +import org.w3c.css.sac.SelectorList; +import org.w3c.css.sac.Selector; +import org.w3c.css.sac.SimpleSelector; +import org.w3c.css.sac.DocumentHandler; +import org.w3c.css.sac.InputSource; +import org.w3c.css.sac.ErrorHandler; +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.CSSParseException; +import org.w3c.css.sac.Locator; +import org.w3c.css.sac.LexicalUnit; + +import org.w3c.flute.parser.selectors.SelectorFactoryImpl; +import org.w3c.flute.parser.selectors.ConditionFactoryImpl; + +import org.w3c.flute.util.Encoding; + +import com.vaadin.sass.handler.*; + +import com.vaadin.sass.tree.*; + +/** + * A CSS2 parser + * + * @author Philippe Le H�garet + * @version $Revision: 1.15 $ + */ +public class Parser implements org.w3c.css.sac.Parser, ParserConstants { + + // replaces all \t, \n, etc with this StringBuffer. + static final StringBuilder SPACE = new StringBuilder(" "); + + // the document handler for the parser + protected SCSSDocumentHandlerImpl documentHandler; + // the error handler for the parser + protected ErrorHandler errorHandler; + // the input source for the parser + protected InputSource source; + + protected ConditionFactory conditionFactory; + protected SelectorFactory selectorFactory; + + // temporary place holder for pseudo-element ... + private String pseudoElt; + + /** + * Creates a new Parser + */ + public Parser() { + this((CharStream) null); + } + + /** + * @@TODO + * @exception CSSException Not yet implemented + */ + public void setLocale(Locale locale) throws CSSException { + throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); + } + + /** + * Set the document handler for this parser + */ + public void setDocumentHandler(DocumentHandler handler) { + this.documentHandler = (SCSSDocumentHandlerImpl) handler; + } + + public void setSelectorFactory(SelectorFactory selectorFactory) { + this.selectorFactory = selectorFactory; + } + + public void setConditionFactory(ConditionFactory conditionFactory) { + this.conditionFactory = conditionFactory; + } + + /** + * Set the error handler for this parser + */ + public void setErrorHandler(ErrorHandler error) { + this.errorHandler = error; + } + + /** + * Main parse methods + * + * @param source the source of the style sheet. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseStyleSheet(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + + parserUnit(); + } + + /** + * Convenient method for URIs. + * + * @param systemId the fully resolved URI of the style sheet. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseStyleSheet(String systemId) + throws CSSException, IOException { + parseStyleSheet(new InputSource(systemId)); + } + + /** + * This method parses only one rule (style rule or at-rule, except @charset). + * + * @param source the source of the rule. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseRule(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseRule(); + } + + /** + * This method parses a style declaration (including the surrounding curly + * braces). + * + * @param source the source of the style declaration. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseStyleDeclaration(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseDeclarationBlock(); + } + + /** + * This methods returns "http://www.w3.org/TR/REC-CSS2". + * @return the string "http://www.w3.org/TR/REC-CSS2". + */ + public String getParserVersion() { + return "http://www.w3.org/TR/REC-CSS2"; + } + + /** + * Parse methods used by DOM Level 2 implementation. + */ + public void parseImportRule(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseImportRule(); + } + + public void parseMediaRule(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseMediaRule(); + } + + public SelectorList parseSelectors(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + return _parseSelectors(); + } + + public LexicalUnit parsePropertyValue(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + return expr(); + } + + public boolean parsePriority(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + return prio(); + } + + /** + * Convert the source into a Reader. Used only by DOM Level 2 parser methods. + */ + private Reader getReader(InputSource source) throws IOException { + if (source.getCharacterStream() != null) { + return source.getCharacterStream(); + } else if (source.getByteStream() != null) { + // My DOM level 2 implementation doesn't use this case. + if (source.getEncoding() == null) { + // unknown encoding, use ASCII as default. + return new InputStreamReader(source.getByteStream(), "ASCII"); + } else { + return new InputStreamReader(source.getByteStream(), + source.getEncoding()); + } + } else { + // systemId + // @@TODO + throw new CSSException("not yet implemented"); + } + } + + /** + * Convert the source into a CharStream with encoding informations. + * The encoding can be found in the InputSource or in the CSS document. + * Since this method marks the reader and make a reset after looking for + * the charset declaration, you'll find the charset declaration into the + * stream. + */ + private CharStream getCharStreamWithLurk(InputSource source) + throws CSSException, IOException { + if (source.getCharacterStream() != null) { + // all encoding are supposed to be resolved by the user + // return the reader + return new Generic_CharStream(source.getCharacterStream(), 1, 1); + } else if (source.getByteStream() == null) { + // @@CONTINUE ME. see also getReader() with systemId + try { + source.setByteStream(new URL(source.getURI()).openStream()); + } catch (Exception e) { + try { + source.setByteStream(new FileInputStream(source.getURI())); + } catch (IOException ex) { + throw new CSSException("invalid url ?"); + } + } + } + String encoding = "ASCII"; + InputStream input = source.getByteStream(); + char c = ' '; + + if (!input.markSupported()) { + input = new BufferedInputStream(input); + source.setByteStream(input); + } + input.mark(100); + c = (char) input.read(); + + if (c == '@') { + // hum, is it a charset ? + int size = 100; + byte[] buf = new byte[size]; + input.read(buf, 0, 7); + String keyword = new String(buf, 0, 7); + if (keyword.equals("charset")) { + // Yes, this is the charset declaration ! + + // here I don't use the right declaration : white space are ' '. + while ((c = (char) input.read()) == ' ') { + // find the first quote + } + char endChar = c; + int i = 0; + + if ((endChar != '"') && (endChar != '\u005c'')) { + // hum this is not a quote. + throw new CSSException("invalid charset declaration"); + } + + while ((c = (char) input.read()) != endChar) { + buf[i++] = (byte) c; + if (i == size) { + byte[] old = buf; + buf = new byte[size + 100]; + System.arraycopy(old, 0, buf, 0, size); + size += 100; + } + } + while ((c = (char) input.read()) == ' ') { + // find the next relevant character + } + if (c != ';') { + // no semi colon at the end ? + throw new CSSException("invalid charset declaration: " + + "missing semi colon"); + } + encoding = new String(buf, 0, i); + if (source.getEncoding() != null) { + // compare the two encoding informations. + // For example, I don't accept to have ASCII and after UTF-8. + // Is it really good ? That is the question. + if (!encoding.equals(source.getEncoding())) { + throw new CSSException("invalid encoding information."); + } + } + } // else no charset declaration available + } + // ok set the real encoding of this source. + source.setEncoding(encoding); + // set the real reader of this source. + source.setCharacterStream(new InputStreamReader(source.getByteStream(), + Encoding.getJavaEncoding(encoding))); + // reset the stream (leave the charset declaration in the stream). + input.reset(); + + return new Generic_CharStream(source.getCharacterStream(), 1, 1); + } + + private LocatorImpl currentLocator; + private Locator getLocator() { + if (currentLocator == null) { + currentLocator = new LocatorImpl(this); + return currentLocator; + } + return currentLocator.reInit(this); + } + private LocatorImpl getLocator(Token save) { + if (currentLocator == null) { + currentLocator = new LocatorImpl(this, save); + return currentLocator; + } + return currentLocator.reInit(this, save); + } + + private void reportError(Locator l, Exception e) { + if (errorHandler != null) { + if (e instanceof ParseException) { + // construct a clean error message. + ParseException pe = (ParseException) e; + if (pe.specialConstructor) { + StringBuffer errorM = new StringBuffer(); + if (pe.currentToken != null) { + errorM.append("encountered \u005c"") + .append(pe.currentToken.next); + } + errorM.append('"'); + if (pe.expectedTokenSequences.length != 0) { + errorM.append(". Was expecting one of: "); + for (int i = 0; i < pe.expectedTokenSequences.length; i++) { + for (int j = 0; j < pe.expectedTokenSequences[i].length; j++) { + int kind = pe.expectedTokenSequences[i][j]; + if (kind != S) { + errorM.append(pe.tokenImage[kind]); + errorM.append(' '); + } + } + } + } + errorHandler.error(new CSSParseException(errorM.toString(), + l, e)); + } else { + errorHandler.error(new CSSParseException(e.getMessage(), + l, e)); + } + } else if (e == null) { + errorHandler.error(new CSSParseException("error", l, null)); + } else { + errorHandler.error(new CSSParseException(e.getMessage(), l, e)); + } + } + } + + private void reportWarningSkipText(Locator l, String text) { + if (errorHandler != null && text != null) { + errorHandler.warning(new CSSParseException("Skipping: " + text, l)); + } + } + +/* + * The grammar of CSS2 + */ + +/** + * The main entry for the parser. + * + * @exception ParseException exception during the parse + */ + final public void parserUnit() throws ParseException { + try { + documentHandler.startDocument(source); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CHARSET_SYM: + charset(); + break; + default: + jj_la1[0] = jj_gen; + ; + } + label_1: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + case CDO: + case CDC: + case ATKEYWORD: + ; + break; + default: + jj_la1[1] = jj_gen; + break label_1; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + jj_consume_token(S); + break; + case CDO: + case CDC: + case ATKEYWORD: + ignoreStatement(); + break; + default: + jj_la1[2] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + label_2: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IMPORT_SYM: + ; + break; + default: + jj_la1[3] = jj_gen; + break label_2; + } + importDeclaration(); + label_3: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CDO: + case CDC: + case ATKEYWORD: + ; + break; + default: + jj_la1[4] = jj_gen; + break label_3; + } + ignoreStatement(); + label_4: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[5] = jj_gen; + break label_4; + } + jj_consume_token(S); + } + } + } + afterImportDeclaration(); + jj_consume_token(0); + } finally { + documentHandler.endDocument(source); + } + } + + final public void charset() throws ParseException { + Token n; + try { + jj_consume_token(CHARSET_SYM); + label_5: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[6] = jj_gen; + break label_5; + } + jj_consume_token(S); + } + n = jj_consume_token(STRING); + label_6: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[7] = jj_gen; + break label_6; + } + jj_consume_token(S); + } + jj_consume_token(SEMICOLON); + } catch (ParseException e) { + reportError(getLocator(e.currentToken.next), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + + } catch (Exception e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + + } + } + + final public void afterImportDeclaration() throws ParseException { + String ret; + Locator l; + label_7: + while (true) { + ; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case VARIABLE: + variable(); + break; + case MIXIN_SYM: + mixinDirective(); + break; + case INCLUDE_SYM: + includeDirective(); + break; + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case IDENT: + case HASH: + styleRule(); + break; + case MEDIA_SYM: + media(); + break; + case PAGE_SYM: + page(); + break; + case FONT_FACE_SYM: + fontFace(); + break; + default: + jj_la1[8] = jj_gen; + l = getLocator(); + ret = skipStatement(); + if ((ret == null) || (ret.length() == 0)) { + {if (true) return;} + } + reportWarningSkipText(l, ret); + if (ret.charAt(0) == '@') { + documentHandler.ignorableAtRule(ret); + } + } + label_8: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CDO: + case CDC: + case ATKEYWORD: + ; + break; + default: + jj_la1[9] = jj_gen; + break label_8; + } + ignoreStatement(); + label_9: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[10] = jj_gen; + break label_9; + } + jj_consume_token(S); + } + } + } + } + + final public void ignoreStatement() throws ParseException { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CDO: + jj_consume_token(CDO); + break; + case CDC: + jj_consume_token(CDC); + break; + case ATKEYWORD: + atRuleDeclaration(); + break; + default: + jj_la1[11] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + +/** + * The import statement + * + * @exception ParseException exception during the parse + */ + final public void importDeclaration() throws ParseException { + Token n; + String uri; + MediaListImpl ml = new MediaListImpl(); + boolean isURL = false; + try { + jj_consume_token(IMPORT_SYM); + label_10: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[12] = jj_gen; + break label_10; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STRING: + n = jj_consume_token(STRING); + uri = convertStringIndex(n.image, 1, + n.image.length() -1); + break; + case URL: + n = jj_consume_token(URL); + isURL=true; + uri = n.image.substring(4, n.image.length()-1).trim(); + if ((uri.charAt(0) == '"') + || (uri.charAt(0) == '\u005c'')) { + uri = uri.substring(1, uri.length()-1); + } + break; + default: + jj_la1[13] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_11: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[14] = jj_gen; + break label_11; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + mediaStatement(ml); + break; + default: + jj_la1[15] = jj_gen; + ; + } + jj_consume_token(SEMICOLON); + label_12: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[16] = jj_gen; + break label_12; + } + jj_consume_token(S); + } + if (ml.getLength() == 0) { + // see section 6.3 of the CSS2 recommandation. + ml.addItem("all"); + } + documentHandler.importStyle(uri, ml, isURL); + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + + } + } + +/** + * @exception ParseException exception during the parse + */ + final public void media() throws ParseException { + boolean start = false; + String ret; + MediaListImpl ml = new MediaListImpl(); + try { + jj_consume_token(MEDIA_SYM); + label_13: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[17] = jj_gen; + break label_13; + } + jj_consume_token(S); + } + mediaStatement(ml); + start = true; documentHandler.startMedia(ml); + jj_consume_token(LBRACE); + label_14: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[18] = jj_gen; + break label_14; + } + jj_consume_token(S); + } + label_15: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case CDO: + case LBRACE: + case DASHMATCH: + case INCLUDES: + case PLUS: + case MINUS: + case COMMA: + case SEMICOLON: + case PRECEDES: + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case NONASCII: + case STRING: + case IDENT: + case NUMBER: + case URL: + case PERCENTAGE: + case HASH: + case IMPORT_SYM: + case MEDIA_SYM: + case CHARSET_SYM: + case PAGE_SYM: + case FONT_FACE_SYM: + case ATKEYWORD: + case IMPORTANT_SYM: + case UNICODERANGE: + case FUNCTION: + case UNKNOWN: + ; + break; + default: + jj_la1[19] = jj_gen; + break label_15; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case IDENT: + case HASH: + styleRule(); + break; + case CDO: + case LBRACE: + case DASHMATCH: + case INCLUDES: + case PLUS: + case MINUS: + case COMMA: + case SEMICOLON: + case PRECEDES: + case NONASCII: + case STRING: + case NUMBER: + case URL: + case PERCENTAGE: + case IMPORT_SYM: + case MEDIA_SYM: + case CHARSET_SYM: + case PAGE_SYM: + case FONT_FACE_SYM: + case ATKEYWORD: + case IMPORTANT_SYM: + case UNICODERANGE: + case FUNCTION: + case UNKNOWN: + skipUnknownRule(); + break; + default: + jj_la1[20] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + jj_consume_token(RBRACE); + label_16: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[21] = jj_gen; + break label_16; + } + jj_consume_token(S); + } + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + + } finally { + if (start) { + documentHandler.endMedia(ml); + } + } + } + + final public void mediaStatement(MediaListImpl ml) throws ParseException { + String m; + m = medium(); + label_17: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[22] = jj_gen; + break label_17; + } + jj_consume_token(COMMA); + label_18: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[23] = jj_gen; + break label_18; + } + jj_consume_token(S); + } + ml.addItem(m); + m = medium(); + } + ml.addItem(m); + } + +/** + * @exception ParseException exception during the parse + */ + final public String medium() throws ParseException { + Token n; + n = jj_consume_token(IDENT); + label_19: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[24] = jj_gen; + break label_19; + } + jj_consume_token(S); + } + {if (true) return convertIdent(n.image);} + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public void page() throws ParseException { + boolean start = false; + Token n = null; + String page = null; + String pseudo = null; + try { + jj_consume_token(PAGE_SYM); + label_20: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[25] = jj_gen; + break label_20; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + n = jj_consume_token(IDENT); + label_21: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[26] = jj_gen; + break label_21; + } + jj_consume_token(S); + } + break; + default: + jj_la1[27] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + pseudo = pseudo_page(); + break; + default: + jj_la1[28] = jj_gen; + ; + } + if (n != null) { + page = convertIdent(n.image); + } + jj_consume_token(LBRACE); + label_22: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[29] = jj_gen; + break label_22; + } + jj_consume_token(S); + } + start = true; + documentHandler.startPage(page, pseudo); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[30] = jj_gen; + ; + } + label_23: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[31] = jj_gen; + break label_23; + } + jj_consume_token(SEMICOLON); + label_24: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[32] = jj_gen; + break label_24; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[33] = jj_gen; + ; + } + } + jj_consume_token(RBRACE); + label_25: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[34] = jj_gen; + break label_25; + } + jj_consume_token(S); + } + } catch (ParseException e) { + if (errorHandler != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + skipStatement(); + // reportWarningSkipText(li, skipStatement()); + } else { + skipStatement(); + } + } finally { + if (start) { + documentHandler.endPage(page, pseudo); + } + } + } + + final public String pseudo_page() throws ParseException { + Token n; + jj_consume_token(COLON); + n = jj_consume_token(IDENT); + label_26: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[35] = jj_gen; + break label_26; + } + jj_consume_token(S); + } + {if (true) return convertIdent(n.image);} + throw new Error("Missing return statement in function"); + } + + final public void fontFace() throws ParseException { + boolean start = false; + try { + jj_consume_token(FONT_FACE_SYM); + label_27: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[36] = jj_gen; + break label_27; + } + jj_consume_token(S); + } + jj_consume_token(LBRACE); + label_28: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[37] = jj_gen; + break label_28; + } + jj_consume_token(S); + } + start = true; documentHandler.startFontFace(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[38] = jj_gen; + ; + } + label_29: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[39] = jj_gen; + break label_29; + } + jj_consume_token(SEMICOLON); + label_30: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[40] = jj_gen; + break label_30; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[41] = jj_gen; + ; + } + } + jj_consume_token(RBRACE); + label_31: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[42] = jj_gen; + break label_31; + } + jj_consume_token(S); + } + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + + } finally { + if (start) { + documentHandler.endFontFace(); + } + } + } + +/** + * @exception ParseException exception during the parse + */ + final public void atRuleDeclaration() throws ParseException { + Token n; + String ret; + n = jj_consume_token(ATKEYWORD); + ret=skipStatement(); + reportWarningSkipText(getLocator(), ret); + if ((ret != null) && (ret.charAt(0) == '@')) { + documentHandler.ignorableAtRule(ret); + } + } + + final public void skipUnknownRule() throws ParseException { + Token n; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ATKEYWORD: + n = jj_consume_token(ATKEYWORD); + break; + case CDO: + n = jj_consume_token(CDO); + break; + case CHARSET_SYM: + n = jj_consume_token(CHARSET_SYM); + break; + case COMMA: + n = jj_consume_token(COMMA); + break; + case DASHMATCH: + n = jj_consume_token(DASHMATCH); + break; + case FONT_FACE_SYM: + n = jj_consume_token(FONT_FACE_SYM); + break; + case FUNCTION: + n = jj_consume_token(FUNCTION); + break; + case IMPORTANT_SYM: + n = jj_consume_token(IMPORTANT_SYM); + break; + case IMPORT_SYM: + n = jj_consume_token(IMPORT_SYM); + break; + case INCLUDES: + n = jj_consume_token(INCLUDES); + break; + case LBRACE: + n = jj_consume_token(LBRACE); + break; + case MEDIA_SYM: + n = jj_consume_token(MEDIA_SYM); + break; + case NONASCII: + n = jj_consume_token(NONASCII); + break; + case NUMBER: + n = jj_consume_token(NUMBER); + break; + case PAGE_SYM: + n = jj_consume_token(PAGE_SYM); + break; + case PERCENTAGE: + n = jj_consume_token(PERCENTAGE); + break; + case STRING: + n = jj_consume_token(STRING); + break; + case UNICODERANGE: + n = jj_consume_token(UNICODERANGE); + break; + case URL: + n = jj_consume_token(URL); + break; + case SEMICOLON: + n = jj_consume_token(SEMICOLON); + break; + case PLUS: + n = jj_consume_token(PLUS); + break; + case PRECEDES: + n = jj_consume_token(PRECEDES); + break; + case MINUS: + n = jj_consume_token(MINUS); + break; + case UNKNOWN: + n = jj_consume_token(UNKNOWN); + break; + default: + jj_la1[43] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + String ret; + Locator loc = getLocator(); + ret=skipStatement(); + reportWarningSkipText(loc, ret); + if ((ret != null) && (n.image.charAt(0) == '@')) { + documentHandler.ignorableAtRule(ret); + } + } + +/** + * @exception ParseException exception during the parse + */ + final public char combinator() throws ParseException { +char connector = ' '; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + jj_consume_token(PLUS); + label_32: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[44] = jj_gen; + break label_32; + } + jj_consume_token(S); + } + {if (true) return '+';} + break; + case PRECEDES: + jj_consume_token(PRECEDES); + label_33: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[45] = jj_gen; + break label_33; + } + jj_consume_token(S); + } + {if (true) return '>';} + break; + case S: + jj_consume_token(S); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case PRECEDES: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + jj_consume_token(PLUS); + connector = '+'; + break; + case PRECEDES: + jj_consume_token(PRECEDES); + connector = '>'; + break; + default: + jj_la1[46] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_34: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[47] = jj_gen; + break label_34; + } + jj_consume_token(S); + } + break; + default: + jj_la1[48] = jj_gen; + ; + } + {if (true) return connector;} + break; + default: + jj_la1[49] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public String property() throws ParseException { + Token n; + n = jj_consume_token(IDENT); + label_35: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[50] = jj_gen; + break label_35; + } + jj_consume_token(S); + } + {if (true) return convertIdent(n.image);} + throw new Error("Missing return statement in function"); + } + + final public String variableName() throws ParseException { + Token n; + n = jj_consume_token(VARIABLE); + label_36: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[51] = jj_gen; + break label_36; + } + jj_consume_token(S); + } + {if (true) return convertIdent(n.image.substring(1));} + throw new Error("Missing return statement in function"); + } + + final public String functionName() throws ParseException { + Token n; + n = jj_consume_token(FUNCTION); + label_37: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[52] = jj_gen; + break label_37; + } + jj_consume_token(S); + } + {if (true) return convertIdent(n.image.substring(0, n.image.length()-1));} + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public void styleRule() throws ParseException { + boolean start = false; + SelectorList l = null; + Token save; + Locator loc; + try { + l = selectorList(); + save = token; + jj_consume_token(LBRACE); + label_38: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[53] = jj_gen; + break label_38; + } + jj_consume_token(S); + } + start = true; + documentHandler.startSelector(l); + label_39: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case INCLUDE_SYM: + case EXTEND_SYM: + case IDENT: + case VARIABLE: + case HASH: + case MEDIA_SYM: + ; + break; + default: + jj_la1[54] = jj_gen; + break label_39; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCLUDE_SYM: + includeDirective(); + break; + case MEDIA_SYM: + media(); + break; + case EXTEND_SYM: + extendDirective(); + break; + case VARIABLE: + variable(); + break; + default: + jj_la1[55] = jj_gen; + if (jj_2_1(3)) { + declarationOrNestedProperties(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case IDENT: + case HASH: + styleRule(); + break; + default: + jj_la1[56] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } + } + jj_consume_token(RBRACE); + label_40: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[57] = jj_gen; + break label_40; + } + jj_consume_token(S); + } + } catch (ThrowedParseException e) { + if (errorHandler != null) { + LocatorImpl li = new LocatorImpl(this, + e.e.currentToken.next.beginLine, + e.e.currentToken.next.beginColumn-1); + reportError(li, e.e); + } + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + + } catch (TokenMgrError e) { + reportWarningSkipText(getLocator(), skipStatement()); + } finally { + if (start) { + documentHandler.endSelector(l); + } + } + } + + final public SelectorList selectorList() throws ParseException { + SelectorListImpl selectors = new SelectorListImpl(); + Selector selector; + selector = selector(); + label_41: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[58] = jj_gen; + break label_41; + } + jj_consume_token(COMMA); + label_42: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[59] = jj_gen; + break label_42; + } + jj_consume_token(S); + } + selectors.addSelector(selector); + selector = selector(); + } + selectors.addSelector(selector); + {if (true) return selectors;} + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public Selector selector() throws ParseException { + Selector selector; + char comb; + try { + selector = simple_selector(null, ' '); + label_43: + while (true) { + if (jj_2_2(2)) { + ; + } else { + break label_43; + } + comb = combinator(); + selector = simple_selector(selector, comb); + } + label_44: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[60] = jj_gen; + break label_44; + } + jj_consume_token(S); + } + {if (true) return selector;} + } catch (ParseException e) { + /* + Token t = getToken(1); + StringBuffer s = new StringBuffer(); + s.append(getToken(0).image); + while ((t.kind != COMMA) && (t.kind != SEMICOLON) + && (t.kind != LBRACE) && (t.kind != EOF)) { + s.append(t.image); + getNextToken(); + t = getToken(1); + } + reportWarningSkipText(getLocator(), s.toString()); + */ + Token t = getToken(1); + while ((t.kind != COMMA) && (t.kind != SEMICOLON) + && (t.kind != LBRACE) && (t.kind != EOF)) { + getNextToken(); + t = getToken(1); + } + + {if (true) throw new ThrowedParseException(e);} + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public Selector simple_selector(Selector selector, char comb) throws ParseException { + SimpleSelector simple_current = null; + Condition cond = null; + + pseudoElt = null; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ANY: + case PARENT: + case IDENT: + simple_current = element_name(); + label_45: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case DOT: + case COLON: + case HASH: + ; + break; + default: + jj_la1[61] = jj_gen; + break label_45; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case HASH: + cond = hash(cond); + break; + case DOT: + cond = _class(cond); + break; + case LBRACKET: + cond = attrib(cond); + break; + case COLON: + cond = pseudo(cond); + break; + default: + jj_la1[62] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + break; + case HASH: + cond = hash(cond); + label_46: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case DOT: + case COLON: + ; + break; + default: + jj_la1[63] = jj_gen; + break label_46; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case DOT: + cond = _class(cond); + break; + case LBRACKET: + cond = attrib(cond); + break; + case COLON: + cond = pseudo(cond); + break; + default: + jj_la1[64] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + break; + case DOT: + cond = _class(cond); + label_47: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case DOT: + case COLON: + case HASH: + ; + break; + default: + jj_la1[65] = jj_gen; + break label_47; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case HASH: + cond = hash(cond); + break; + case DOT: + cond = _class(cond); + break; + case LBRACKET: + cond = attrib(cond); + break; + case COLON: + cond = pseudo(cond); + break; + default: + jj_la1[66] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + break; + case COLON: + cond = pseudo(cond); + label_48: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case DOT: + case COLON: + case HASH: + ; + break; + default: + jj_la1[67] = jj_gen; + break label_48; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case HASH: + cond = hash(cond); + break; + case DOT: + cond = _class(cond); + break; + case LBRACKET: + cond = attrib(cond); + break; + case COLON: + cond = pseudo(cond); + break; + default: + jj_la1[68] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + break; + case LBRACKET: + cond = attrib(cond); + label_49: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case DOT: + case COLON: + case HASH: + ; + break; + default: + jj_la1[69] = jj_gen; + break label_49; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case HASH: + cond = hash(cond); + break; + case DOT: + cond = _class(cond); + break; + case LBRACKET: + cond = attrib(cond); + break; + case COLON: + cond = pseudo(cond); + break; + default: + jj_la1[70] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + break; + default: + jj_la1[71] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + if (simple_current == null) { + simple_current = selectorFactory.createElementSelector(null, null); + } + if (cond != null) { + simple_current = selectorFactory.createConditionalSelector(simple_current, + cond); + } + if (selector != null) { + switch (comb) { + case ' ': + selector = selectorFactory.createDescendantSelector(selector, + simple_current); + break; + case '+': + selector = + selectorFactory.createDirectAdjacentSelector((short) 1, + selector, + simple_current); + break; + case '>': + selector = selectorFactory.createChildSelector(selector, + simple_current); + break; + default: + {if (true) throw new ParseException("invalid state. send a bug report");} + } + } else { + selector= simple_current; + } + if (pseudoElt != null) { + selector = selectorFactory.createChildSelector(selector, + selectorFactory.createPseudoElementSelector(null, pseudoElt)); + } + {if (true) return selector;} + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public Condition _class(Condition pred) throws ParseException { + Token n; +Condition c; + jj_consume_token(DOT); + n = jj_consume_token(IDENT); + c = conditionFactory.createClassCondition(null, n.image); + if (pred == null) { + {if (true) return c;} + } else { + {if (true) return conditionFactory.createAndCondition(pred, c);} + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public SimpleSelector element_name() throws ParseException { + Token n; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + n = jj_consume_token(IDENT); + {if (true) return selectorFactory.createElementSelector(null, convertIdent(n.image));} + break; + case ANY: + jj_consume_token(ANY); + {if (true) return selectorFactory.createElementSelector(null, "*");} + break; + case PARENT: + jj_consume_token(PARENT); + {if (true) return selectorFactory.createElementSelector(null, "&");} + break; + default: + jj_la1[72] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public Condition attrib(Condition pred) throws ParseException { + int cases = 0; + Token att = null; + Token val = null; + String attValue = null; + jj_consume_token(LBRACKET); + label_50: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[73] = jj_gen; + break label_50; + } + jj_consume_token(S); + } + att = jj_consume_token(IDENT); + label_51: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[74] = jj_gen; + break label_51; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case DASHMATCH: + case INCLUDES: + case EQ: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EQ: + jj_consume_token(EQ); + cases = 1; + break; + case INCLUDES: + jj_consume_token(INCLUDES); + cases = 2; + break; + case DASHMATCH: + jj_consume_token(DASHMATCH); + cases = 3; + break; + default: + jj_la1[75] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_52: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[76] = jj_gen; + break label_52; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + val = jj_consume_token(IDENT); + attValue = val.image; + break; + case STRING: + val = jj_consume_token(STRING); + attValue = convertStringIndex(val.image, 1, + val.image.length() -1); + break; + default: + jj_la1[77] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_53: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[78] = jj_gen; + break label_53; + } + jj_consume_token(S); + } + break; + default: + jj_la1[79] = jj_gen; + ; + } + jj_consume_token(RBRACKET); + String name = convertIdent(att.image); + Condition c; + switch (cases) { + case 0: + c = conditionFactory.createAttributeCondition(name, null, false, null); + break; + case 1: + c = conditionFactory.createAttributeCondition(name, null, false, + attValue); + break; + case 2: + c = conditionFactory.createOneOfAttributeCondition(name, null, false, + attValue); + break; + case 3: + c = conditionFactory.createBeginHyphenAttributeCondition(name, null, + false, + attValue); + break; + default: + // never reached. + c = null; + } + if (pred == null) { + {if (true) return c;} + } else { + {if (true) return conditionFactory.createAndCondition(pred, c);} + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public Condition pseudo(Condition pred) throws ParseException { + Token n; +Token language; +boolean isPseudoElement = false; + jj_consume_token(COLON); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + jj_consume_token(COLON); + isPseudoElement=true; + break; + default: + jj_la1[80] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + n = jj_consume_token(IDENT); + String s = convertIdent(n.image); + if (isPseudoElement) { + if (pseudoElt != null) { + {if (true) throw new CSSParseException("duplicate pseudo element definition " + + s, getLocator());} + } else { + pseudoElt = s; + {if (true) return pred;} + } + } else { + Condition c = + conditionFactory.createPseudoClassCondition(null, s); + if (pred == null) { + {if (true) return c;} + } else { + {if (true) return conditionFactory.createAndCondition(pred, c);} + } + } + break; + case FUNCTION: + n = jj_consume_token(FUNCTION); + label_54: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[81] = jj_gen; + break label_54; + } + jj_consume_token(S); + } + language = jj_consume_token(IDENT); + label_55: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[82] = jj_gen; + break label_55; + } + jj_consume_token(S); + } + jj_consume_token(RPARAN); + String f = convertIdent(n.image); + if (f.equals("lang(")) { + Condition d = + conditionFactory.createLangCondition(convertIdent(language.image)); + if (pred == null) { + {if (true) return d;} + } else { + {if (true) return conditionFactory.createAndCondition(pred, d);} + } + } else { + {if (true) throw new CSSParseException("invalid pseudo function name " + + f, getLocator());} + } + break; + default: + jj_la1[83] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public Condition hash(Condition pred) throws ParseException { + Token n; + n = jj_consume_token(HASH); + Condition d = + conditionFactory.createIdCondition(n.image.substring(1)); + if (pred == null) { + {if (true) return d;} + } else { + {if (true) return conditionFactory.createAndCondition(pred, d);} + } + throw new Error("Missing return statement in function"); + } + + final public void variable() throws ParseException { + String name; + LexicalUnit exp = null; + boolean guarded = false; + String raw; + try { + name = variableName(); + jj_consume_token(COLON); + label_56: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[84] = jj_gen; + break label_56; + } + jj_consume_token(S); + } + exp = expr(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case GUARDED_SYM: + guarded = guarded(); + break; + default: + jj_la1[85] = jj_gen; + ; + } + label_57: + while (true) { + jj_consume_token(SEMICOLON); + label_58: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[86] = jj_gen; + break label_58; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[87] = jj_gen; + break label_57; + } + } + documentHandler.variable(name, exp, guarded); + } catch (JumpException e) { + skipAfterExpression(); + } catch (NumberFormatException e) { + if (errorHandler != null) { + errorHandler.error(new CSSParseException("Invalid number " + + e.getMessage(), + getLocator(), + e)); + } + reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (ParseException e) { + if (errorHandler != null) { + if (e.currentToken != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + } else { + reportError(getLocator(), e); + } + skipAfterExpression(); + } else { + skipAfterExpression(); + } + } + } + + final public void mixinDirective() throws ParseException { + String name; + ArrayList args = null; + String body; + jj_consume_token(MIXIN_SYM); + label_59: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[88] = jj_gen; + break label_59; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + name = property(); + break; + case FUNCTION: + name = functionName(); + args = arglist(); + jj_consume_token(RPARAN); + label_60: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[89] = jj_gen; + break label_60; + } + jj_consume_token(S); + } + break; + default: + jj_la1[90] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(LBRACE); + label_61: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[91] = jj_gen; + break label_61; + } + jj_consume_token(S); + } + documentHandler.startMixinDirective(name, args); + label_62: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case INCLUDE_SYM: + case EXTEND_SYM: + case IDENT: + case VARIABLE: + case HASH: + case MEDIA_SYM: + ; + break; + default: + jj_la1[92] = jj_gen; + break label_62; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCLUDE_SYM: + includeDirective(); + break; + case MEDIA_SYM: + media(); + break; + case EXTEND_SYM: + extendDirective(); + break; + case VARIABLE: + variable(); + break; + default: + jj_la1[93] = jj_gen; + if (jj_2_3(3)) { + declarationOrNestedProperties(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case IDENT: + case HASH: + styleRule(); + break; + default: + jj_la1[94] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } + } + jj_consume_token(RBRACE); + label_63: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[95] = jj_gen; + break label_63; + } + jj_consume_token(S); + } + documentHandler.endMixinDirective(name, args); + } + + final public ArrayList arglist() throws ParseException { + ArrayList args = new ArrayList(); + VariableNode arg; + arg = mixinArg(); + label_64: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[96] = jj_gen; + break label_64; + } + jj_consume_token(COMMA); + label_65: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[97] = jj_gen; + break label_65; + } + jj_consume_token(S); + } + args.add(arg); + arg = mixinArg(); + } + args.add(arg); + {if (true) return args;} + throw new Error("Missing return statement in function"); + } + + final public VariableNode mixinArg() throws ParseException { + String name; + LexicalUnit value = null; + name = variableName(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COLON: + jj_consume_token(COLON); + label_66: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[98] = jj_gen; + break label_66; + } + jj_consume_token(S); + } + value = term(null); + break; + default: + jj_la1[99] = jj_gen; + ; + } + VariableNode arg = new VariableNode(name, value, false); + {if (true) return arg;} + throw new Error("Missing return statement in function"); + } + + final public ArrayList argValuelist() throws ParseException { + ArrayList args = new ArrayList(); + LexicalUnit argValue; + argValue = term(null); + args.add(argValue); + label_67: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + ; + break; + default: + jj_la1[100] = jj_gen; + break label_67; + } + jj_consume_token(COMMA); + label_68: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[101] = jj_gen; + break label_68; + } + jj_consume_token(S); + } + argValue = term(null); + args.add(argValue); + } + {if (true) return args;} + throw new Error("Missing return statement in function"); + } + + final public void includeDirective() throws ParseException { + String name; + ArrayList args=null; + jj_consume_token(INCLUDE_SYM); + label_69: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[102] = jj_gen; + break label_69; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + name = property(); + break; + case FUNCTION: + name = functionName(); + args = argValuelist(); + jj_consume_token(RPARAN); + break; + default: + jj_la1[103] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_70: + while (true) { + jj_consume_token(SEMICOLON); + label_71: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[104] = jj_gen; + break label_71; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[105] = jj_gen; + break label_70; + } + } + documentHandler.includeDirective(name, args); + } + + final public Node functionDirective() throws ParseException { + String name; + String args = null; + String body; + int[] stops = {RPARAN}; + name = functionName(); + args = skipStatementUntilRightParan(); + jj_consume_token(RPARAN); + label_72: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[106] = jj_gen; + break label_72; + } + jj_consume_token(S); + } + body = skipStatement(); + {if (true) return null;} + throw new Error("Missing return statement in function"); + } + + final public Node returnDirective() throws ParseException { + String raw; + raw = skipStatement(); + {if (true) return null;} + throw new Error("Missing return statement in function"); + } + + void debugDirective() throws ParseException { + } + + void warnDirective() throws ParseException { + } + + final public Node forDirective() throws ParseException { + String var; + String from; + String to; + boolean exclusive; + String body; + Token tok; + var = variableName(); + int[] toThrough = {TO, THROUGH}; + from = skipStatementUntil(toThrough); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case TO: + tok = jj_consume_token(TO); + exclusive = true; + break; + case THROUGH: + tok = jj_consume_token(THROUGH); + exclusive = false; + break; + default: + jj_la1[107] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + to = skipStatementUntilLeftBrace(); + label_73: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[108] = jj_gen; + break label_73; + } + jj_consume_token(S); + } + body = skipStatement(); + {if (true) return documentHandler.forDirective(var, from, to, exclusive, body);} + throw new Error("Missing return statement in function"); + } + + final public Node eachDirective() throws ParseException { + String var; + String list; + String body; + var = variableName(); + jj_consume_token(EACH_IN); + label_74: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[109] = jj_gen; + break label_74; + } + jj_consume_token(S); + } + list = skipStatementUntilLeftBrace(); + body = skipStatement(); + {if (true) return documentHandler.eachDirective(var, list, body);} + throw new Error("Missing return statement in function"); + } + + final public Node whileDirective() throws ParseException { + String condition; + String body; + condition = skipStatementUntilLeftBrace(); + body = skipStatement(); + {if (true) return documentHandler.whileDirective(condition, body);} + throw new Error("Missing return statement in function"); + } + + Node ifDirective() throws ParseException { + return documentHandler.ifDirective(); + } + + void elseDirective() throws ParseException { + } + + final public void extendDirective() throws ParseException { + SelectorList list; + jj_consume_token(EXTEND_SYM); + label_75: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[110] = jj_gen; + break label_75; + } + jj_consume_token(S); + } + list = selectorList(); + label_76: + while (true) { + jj_consume_token(SEMICOLON); + label_77: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[111] = jj_gen; + break label_77; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[112] = jj_gen; + break label_76; + } + } + documentHandler.extendDirective(list); + } + + Node importDirective() throws ParseException { + return null; + } + + Node charsetDirective() throws ParseException { + return null; + } + + Node mozDocumentDirective() throws ParseException { + return null; + } + + Node supportsDirective() throws ParseException { + return null; + } + + final public void nestedProperties() throws ParseException { + String name; +LexicalUnit exp; + name = property(); + jj_consume_token(COLON); + label_78: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[113] = jj_gen; + break label_78; + } + jj_consume_token(S); + } + jj_consume_token(LBRACE); + label_79: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[114] = jj_gen; + break label_79; + } + jj_consume_token(S); + } + documentHandler.startNestedProperties(name); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[115] = jj_gen; + ; + } + label_80: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[116] = jj_gen; + break label_80; + } + jj_consume_token(SEMICOLON); + label_81: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[117] = jj_gen; + break label_81; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[118] = jj_gen; + ; + } + } + jj_consume_token(RBRACE); + documentHandler.endNestedProperties(name); + label_82: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[119] = jj_gen; + break label_82; + } + jj_consume_token(S); + } + } + +/** + * @exception ParseException exception during the parse + */ + final public void declarationOrNestedProperties() throws ParseException { + boolean important = false; + String name; + LexicalUnit exp; + Token save; + try { + name = property(); + save = token; + jj_consume_token(COLON); + label_83: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[120] = jj_gen; + break label_83; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case MINUS: + case STRING: + case IDENT: + case NUMBER: + case URL: + case VARIABLE: + case PERCENTAGE: + case PT: + case MM: + case CM: + case PC: + case IN: + case PX: + case EMS: + case EXS: + case DEG: + case RAD: + case GRAD: + case MS: + case SECOND: + case HZ: + case KHZ: + case DIMEN: + case HASH: + case UNICODERANGE: + case FUNCTION: + exp = expr(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IMPORTANT_SYM: + important = prio(); + break; + default: + jj_la1[121] = jj_gen; + ; + } + Token next = getToken(1); + if(next.kind == SEMICOLON || next.kind == RBRACE){ + while(next.kind == SEMICOLON){ + skipStatement(); + next = getToken(1); + } + if(token.specialToken!=null){ + documentHandler.property(name, exp, important, token.specialToken.image); + }else{ + documentHandler.property(name, exp, important, null); + } + } + break; + case LBRACE: + jj_consume_token(LBRACE); + label_84: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[122] = jj_gen; + break label_84; + } + jj_consume_token(S); + } + documentHandler.startNestedProperties(name); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[123] = jj_gen; + ; + } + label_85: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[124] = jj_gen; + break label_85; + } + jj_consume_token(SEMICOLON); + label_86: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[125] = jj_gen; + break label_86; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[126] = jj_gen; + ; + } + } + jj_consume_token(RBRACE); + label_87: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[127] = jj_gen; + break label_87; + } + jj_consume_token(S); + } + documentHandler.endNestedProperties(name); + break; + default: + jj_la1[128] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } catch (JumpException e) { + skipAfterExpression(); + // reportWarningSkipText(getLocator(), skipAfterExpression()); + + } catch (NumberFormatException e) { + if (errorHandler != null) { + errorHandler.error(new CSSParseException("Invalid number " + + e.getMessage(), + getLocator(), + e)); + } + reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (ParseException e) { + if (errorHandler != null) { + if (e.currentToken != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + } else { + reportError(getLocator(), e); + } + skipAfterExpression(); + /* + LocatorImpl loc = (LocatorImpl) getLocator(); + loc.column--; + reportWarningSkipText(loc, skipAfterExpression()); + */ + } else { + skipAfterExpression(); + } + } + } + +/** + * @exception ParseException exception during the parse + */ + final public void declaration() throws ParseException { + boolean important = false; + String name; + LexicalUnit exp; + Token save; + try { + name = property(); + save = token; + jj_consume_token(COLON); + label_88: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[129] = jj_gen; + break label_88; + } + jj_consume_token(S); + } + exp = expr(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IMPORTANT_SYM: + important = prio(); + break; + default: + jj_la1[130] = jj_gen; + ; + } + documentHandler.property(name, exp, important); + } catch (JumpException e) { + skipAfterExpression(); + // reportWarningSkipText(getLocator(), skipAfterExpression()); + + } catch (NumberFormatException e) { + if (errorHandler != null) { + errorHandler.error(new CSSParseException("Invalid number " + + e.getMessage(), + getLocator(), + e)); + } + reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (ParseException e) { + if (errorHandler != null) { + if (e.currentToken != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + } else { + reportError(getLocator(), e); + } + skipAfterExpression(); + /* + LocatorImpl loc = (LocatorImpl) getLocator(); + loc.column--; + reportWarningSkipText(loc, skipAfterExpression()); + */ + } else { + skipAfterExpression(); + } + } + } + +/** + * @exception ParseException exception during the parse + */ + final public boolean prio() throws ParseException { + jj_consume_token(IMPORTANT_SYM); + label_89: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[131] = jj_gen; + break label_89; + } + jj_consume_token(S); + } + {if (true) return true;} + throw new Error("Missing return statement in function"); + } + + final public boolean guarded() throws ParseException { + jj_consume_token(GUARDED_SYM); + label_90: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[132] = jj_gen; + break label_90; + } + jj_consume_token(S); + } + {if (true) return true;} + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public LexicalUnitImpl operator(LexicalUnitImpl prev) throws ParseException { + Token n; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case DIV: + n = jj_consume_token(DIV); + label_91: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[133] = jj_gen; + break label_91; + } + jj_consume_token(S); + } + {if (true) return LexicalUnitImpl.createSlash(n.beginLine, + n.beginColumn, + prev);} + break; + case COMMA: + n = jj_consume_token(COMMA); + label_92: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[134] = jj_gen; + break label_92; + } + jj_consume_token(S); + } + {if (true) return LexicalUnitImpl.createComma(n.beginLine, + n.beginColumn, + prev);} + break; + default: + jj_la1[135] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public LexicalUnit expr() throws ParseException { + LexicalUnitImpl first, res; + char op; + first = term(null); + res = first; + label_93: + while (true) { + if (jj_2_4(2)) { + ; + } else { + break label_93; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case COMMA: + case DIV: + res = operator(res); + break; + default: + jj_la1[136] = jj_gen; + ; + } + res = term(res); + } + {if (true) return first;} + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public char unaryOperator() throws ParseException { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case MINUS: + jj_consume_token(MINUS); + {if (true) return '-';} + break; + case PLUS: + jj_consume_token(PLUS); + {if (true) return '+';} + break; + default: + jj_la1[137] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public LexicalUnitImpl term(LexicalUnitImpl prev) throws ParseException { + LexicalUnitImpl result = null; + Token n = null; + char op = ' '; + String varName; + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case MINUS: + case STRING: + case IDENT: + case NUMBER: + case URL: + case PERCENTAGE: + case PT: + case MM: + case CM: + case PC: + case IN: + case PX: + case EMS: + case EXS: + case DEG: + case RAD: + case GRAD: + case MS: + case SECOND: + case HZ: + case KHZ: + case DIMEN: + case HASH: + case UNICODERANGE: + case FUNCTION: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case MINUS: + case NUMBER: + case PERCENTAGE: + case PT: + case MM: + case CM: + case PC: + case IN: + case PX: + case EMS: + case EXS: + case DEG: + case RAD: + case GRAD: + case MS: + case SECOND: + case HZ: + case KHZ: + case DIMEN: + case FUNCTION: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case MINUS: + op = unaryOperator(); + break; + default: + jj_la1[138] = jj_gen; + ; + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case NUMBER: + n = jj_consume_token(NUMBER); + result = LexicalUnitImpl.createNumber(n.beginLine, n.beginColumn, + prev, number(op, n, 0)); + break; + case PERCENTAGE: + n = jj_consume_token(PERCENTAGE); + result = LexicalUnitImpl.createPercentage(n.beginLine, n.beginColumn, + prev, number(op, n, 1)); + break; + case PT: + n = jj_consume_token(PT); + result = LexicalUnitImpl.createPT(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case CM: + n = jj_consume_token(CM); + result = LexicalUnitImpl.createCM(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case MM: + n = jj_consume_token(MM); + result = LexicalUnitImpl.createMM(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case PC: + n = jj_consume_token(PC); + result = LexicalUnitImpl.createPC(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case IN: + n = jj_consume_token(IN); + result = LexicalUnitImpl.createIN(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case PX: + n = jj_consume_token(PX); + result = LexicalUnitImpl.createPX(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case EMS: + n = jj_consume_token(EMS); + result = LexicalUnitImpl.createEMS(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case EXS: + n = jj_consume_token(EXS); + result = LexicalUnitImpl.createEXS(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case DEG: + n = jj_consume_token(DEG); + result = LexicalUnitImpl.createDEG(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); + break; + case RAD: + n = jj_consume_token(RAD); + result = LexicalUnitImpl.createRAD(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); + break; + case GRAD: + n = jj_consume_token(GRAD); + result = LexicalUnitImpl.createGRAD(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); + break; + case SECOND: + n = jj_consume_token(SECOND); + result = LexicalUnitImpl.createS(n.beginLine, n.beginColumn, + prev, number(op, n, 1)); + break; + case MS: + n = jj_consume_token(MS); + result = LexicalUnitImpl.createMS(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case HZ: + n = jj_consume_token(HZ); + result = LexicalUnitImpl.createHZ(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); + break; + case KHZ: + n = jj_consume_token(KHZ); + result = LexicalUnitImpl.createKHZ(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); + break; + case DIMEN: + n = jj_consume_token(DIMEN); + String s = n.image; + int i = 0; + while (i < s.length() + && (Character.isDigit(s.charAt(i)) || (s.charAt(i) == '.'))) { + i++; + } + result = LexicalUnitImpl.createDimen(n.beginLine, n.beginColumn, prev, + Float.valueOf(s.substring(0, i)).floatValue(), + s.substring(i)); + break; + case FUNCTION: + result = function(op, prev); + break; + default: + jj_la1[139] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + break; + case STRING: + case IDENT: + case URL: + case HASH: + case UNICODERANGE: + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case STRING: + n = jj_consume_token(STRING); + result = + LexicalUnitImpl.createString(n.beginLine, n.beginColumn, prev, + convertStringIndex(n.image, 1, + n.image.length() -1)); + break; + case IDENT: + n = jj_consume_token(IDENT); + String s = convertIdent(n.image); + if ("inherit".equals(s)) { + result = LexicalUnitImpl.createInherit(n.beginLine, n.beginColumn, + prev); + } else { + result = LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn, + prev, convertIdent(n.image)); + } + + /* / + Auto correction code used in the CSS Validator but must not + be used by a conformant CSS2 parser. + * Common error : + * H1 { + * color : black + * background : white + * } + * + Token t = getToken(1); + Token semicolon = new Token(); + semicolon.kind = SEMICOLON; + semicolon.image = ";"; + if (t.kind == COLON) { + // @@SEEME. (generate a warning?) + // @@SEEME if expression is a single ident, + generate an error ? + rejectToken(semicolon); + + result = prev; + } + / */ + + break; + case HASH: + result = hexcolor(prev); + break; + case URL: + result = url(prev); + break; + case UNICODERANGE: + result = unicode(prev); + break; + default: + jj_la1[140] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + break; + default: + jj_la1[141] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + label_94: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[142] = jj_gen; + break label_94; + } + jj_consume_token(S); + } + break; + case VARIABLE: + varName = variableName(); + result = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn, + prev, varName); + break; + default: + jj_la1[143] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + {if (true) return result;} + throw new Error("Missing return statement in function"); + } + +/** + * Handle all CSS2 functions. + * @exception ParseException exception during the parse + */ + final public LexicalUnitImpl function(char operator, LexicalUnitImpl prev) throws ParseException { + Token n; + LexicalUnit params = null; + n = jj_consume_token(FUNCTION); + label_95: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[144] = jj_gen; + break label_95; + } + jj_consume_token(S); + } + String fname = convertIdent(n.image); + if("alpha(".equals(fname)){ + String body = skipStatementUntilSemiColon(); + {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn, + null, "alpha("+body);} + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case PLUS: + case MINUS: + case STRING: + case IDENT: + case NUMBER: + case URL: + case VARIABLE: + case PERCENTAGE: + case PT: + case MM: + case CM: + case PC: + case IN: + case PX: + case EMS: + case EXS: + case DEG: + case RAD: + case GRAD: + case MS: + case SECOND: + case HZ: + case KHZ: + case DIMEN: + case HASH: + case UNICODERANGE: + case FUNCTION: + params = expr(); + break; + default: + jj_la1[145] = jj_gen; + ; + } + jj_consume_token(RPARAN); + if (operator != ' ') { + {if (true) throw new CSSParseException("invalid operator before a function.", + getLocator());} + } + String f = convertIdent(n.image); + LexicalUnitImpl l = (LexicalUnitImpl) params; + boolean loop = true; + if ("rgb(".equals(f)) { + // this is a RGB declaration (e.g. rgb(255, 50%, 0) ) + int i = 0; + while (loop && l != null && i < 5) { + switch (i) { + case 0: + case 2: + case 4: + if ((l.getLexicalUnitType() != LexicalUnit.SAC_INTEGER) + && (l.getLexicalUnitType() != LexicalUnit.SAC_PERCENTAGE)) { + loop = false; + } + break; + case 1: + case 3: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + {if (true) throw new ParseException("implementation error");} + } + if (loop) { + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + } + if ((i == 5) && loop && (l == null)) { + {if (true) return LexicalUnitImpl.createRGBColor(n.beginLine, + n.beginColumn, + prev, params);} + } else { + if (errorHandler != null) { + String errorText; + Locator loc; + if (i < 5) { + if (params == null) { + loc = new LocatorImpl(this, n.beginLine, + n.beginColumn-1); + errorText = "not enough parameters."; + } else if (l == null) { + loc = new LocatorImpl(this, n.beginLine, + n.beginColumn-1); + errorText = "not enough parameters: " + + params.toString(); + } else { + loc = new LocatorImpl(this, l.getLineNumber(), + l.getColumnNumber()); + errorText = "invalid parameter: " + + l.toString(); + } + } else { + loc = new LocatorImpl(this, l.getLineNumber(), + l.getColumnNumber()); + errorText = "too many parameters: " + + l.toString(); + } + errorHandler.error(new CSSParseException(errorText, loc)); + } + + {if (true) throw new JumpException();} + } + } else if ("counter".equals(f)) { + int i = 0; + while (loop && l != null && i < 3) { + switch (i) { + case 0: + case 2: + if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) { + loop = false; + } + break; + case 1: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + {if (true) throw new ParseException("implementation error");} + } + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + if (((i == 1) || (i == 3)) && loop && (l == null)) { + {if (true) return LexicalUnitImpl.createCounter(n.beginLine, n.beginColumn, + prev, params);} + } + + } else if ("counters(".equals(f)) { + + int i = 0; + while (loop && l != null && i < 5) { + switch (i) { + case 0: + case 4: + if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) { + loop = false; + } + break; + case 2: + if (l.getLexicalUnitType() != LexicalUnit.SAC_STRING_VALUE) { + loop = false; + } + break; + case 1: + case 3: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + {if (true) throw new ParseException("implementation error");} + } + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + if (((i == 3) || (i == 5)) && loop && (l == null)) { + {if (true) return LexicalUnitImpl.createCounters(n.beginLine, n.beginColumn, + prev, params);} + } + } else if ("attr(".equals(f)) { + if ((l != null) + && (l.getNextLexicalUnit() == null) + && (l.getLexicalUnitType() == LexicalUnit.SAC_IDENT)) { + {if (true) return LexicalUnitImpl.createAttr(l.getLineNumber(), + l.getColumnNumber(), + prev, l.getStringValue());} + } + } else if ("rect(".equals(f)) { + int i = 0; + while (loop && l != null && i < 7) { + switch (i) { + case 0: + case 2: + case 4: + case 6: + switch (l.getLexicalUnitType()) { + case LexicalUnit.SAC_INTEGER: + if (l.getIntegerValue() != 0) { + loop = false; + } + break; + case LexicalUnit.SAC_IDENT: + if (!l.getStringValue().equals("auto")) { + loop = false; + } + break; + case LexicalUnit.SAC_EM: + case LexicalUnit.SAC_EX: + case LexicalUnit.SAC_PIXEL: + case LexicalUnit.SAC_CENTIMETER: + case LexicalUnit.SAC_MILLIMETER: + case LexicalUnit.SAC_INCH: + case LexicalUnit.SAC_POINT: + case LexicalUnit.SAC_PICA: + // nothing + break; + default: + loop = false; + } + break; + case 1: + case 3: + case 5: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + {if (true) throw new ParseException("implementation error");} + } + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + if ((i == 7) && loop && (l == null)) { + {if (true) return LexicalUnitImpl.createRect(n.beginLine, n.beginColumn, + prev, params);} + } + } + {if (true) return LexicalUnitImpl.createFunction(n.beginLine, n.beginColumn, prev, + f.substring(0, + f.length() -1), + params);} + throw new Error("Missing return statement in function"); + } + + final public LexicalUnitImpl unicode(LexicalUnitImpl prev) throws ParseException { + Token n; + n = jj_consume_token(UNICODERANGE); + LexicalUnitImpl params = null; + String s = n.image.substring(2); + int index = s.indexOf('-'); + if (index == -1) { + params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn, + params, Integer.parseInt(s, 16)); + } else { + String s1 = s.substring(0, index); + String s2 = s.substring(index); + + params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn, + params, Integer.parseInt(s1, 16)); + params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn, + params, Integer.parseInt(s2, 16)); + } + + {if (true) return LexicalUnitImpl.createUnicodeRange(n.beginLine, n.beginColumn, + prev, params);} + throw new Error("Missing return statement in function"); + } + + final public LexicalUnitImpl url(LexicalUnitImpl prev) throws ParseException { + Token n; + n = jj_consume_token(URL); + String urlname = n.image.substring(4, n.image.length()-1).trim(); + if (urlname.charAt(0) == '"' + || urlname.charAt(0) == '\u005c'') { + urlname = urlname.substring(1, urlname.length()-1); + } + {if (true) return LexicalUnitImpl.createURL(n.beginLine, n.beginColumn, prev, urlname);} + throw new Error("Missing return statement in function"); + } + +/** + * @exception ParseException exception during the parse + */ + final public LexicalUnitImpl hexcolor(LexicalUnitImpl prev) throws ParseException { + Token n; + n = jj_consume_token(HASH); + int r; + LexicalUnitImpl first, params = null; + String s = n.image.substring(1); + + if(s.length()!=3 && s.length()!=6) { + first = null; + {if (true) throw new CSSParseException("invalid hexadecimal notation for RGB: " + s, + getLocator());} + } + {if (true) return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn, + prev, n.image);} + throw new Error("Missing return statement in function"); + } + + float number(char operator, Token n, int lengthUnit) throws ParseException { + String image = n.image; + float f = 0; + + if (lengthUnit != 0) { + image = image.substring(0, image.length() - lengthUnit); + } + f = Float.valueOf(image).floatValue(); + return (operator == '-')? -f: f; + } + + String skipStatementUntilSemiColon() throws ParseException { + int[] semicolon = {SEMICOLON}; + return skipStatementUntil(semicolon); + } + + String skipStatementUntilLeftBrace() throws ParseException { + int[] lBrace = {LBRACE}; + return skipStatementUntil(lBrace); + } + + String skipStatementUntilRightParan() throws ParseException { + int[] rParan = {RPARAN}; + return skipStatementUntil(rParan); + } + + String skipStatementUntil(int[] symbols) throws ParseException { + StringBuffer s = new StringBuffer(); + boolean stop = false; + Token tok; + while(!stop){ + tok = getToken(1); + if(tok.kind == EOF) { + return null; + } + for(int sym : symbols){ + if(tok.kind == sym){ + stop = true; + break; + } + } + if(!stop){ + if (tok.image != null) { + s.append(tok.image); + } + getNextToken(); + } + } + return s.toString().trim(); + } + + String skipStatement() throws ParseException { + StringBuffer s = new StringBuffer(); + Token tok = getToken(0); + if (tok.image != null) { + s.append(tok.image); + } + while (true) { + tok = getToken(1); + if (tok.kind == EOF) { + return null; + } + s.append(tok.image); + if (tok.kind == LBRACE) { + getNextToken(); + s.append(skip_to_matching_brace()); + getNextToken(); + tok = getToken(1); + break; + } else if (tok.kind == RBRACE) { + getNextToken(); + tok = getToken(1); + break; + } else if (tok.kind == SEMICOLON) { + getNextToken(); + tok = getToken(1); + break; + } + getNextToken(); + } + + // skip white space + while (true) { + if (tok.kind != S) { + break; + } + tok = getNextToken(); + tok = getToken(1); + } + + return s.toString().trim(); + } + + String skip_to_matching_brace() throws ParseException { + StringBuffer s = new StringBuffer(); + Token tok; + int nesting = 1; + while (true) { + tok = getToken(1); + if (tok.kind == EOF) { + break; + } + s.append(tok.image); + if (tok.kind == LBRACE) { + nesting++; + } else if (tok.kind == RBRACE) { + nesting--; + if (nesting == 0) { + break; + } + } + getNextToken(); + } + return s.toString(); + } + + String convertStringIndex(String s, int start, int len) throws ParseException { + StringBuffer buf = new StringBuffer(len); + int index = start; + + while (index < len) { + char c = s.charAt(index); + if (c == '\u005c\u005c') { + if (++index < len) { + c = s.charAt(index); + switch (c) { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + int numValue = Character.digit(c, 16); + int count = 0; + int p = 16; + + while (index + 1 < len && count < 6) { + c = s.charAt(index+1); + + if (Character.digit(c, 16) != -1) { + numValue = (numValue * 16) + Character.digit(c, 16); + p *= 16; + index++; + } else { + if (c == ' ') { + // skip the latest white space + index++; + } + break; + } + } + buf.append((char) numValue); + break; + case '\u005cn': + case '\u005cf': + break; + case '\u005cr': + if (index + 1 < len) { + if (s.charAt(index + 1) == '\u005cn') { + index ++; + } + } + break; + default: + buf.append(c); + } + } else { + throw new CSSParseException("invalid string " + s, getLocator()); + } + } else { + buf.append(c); + } + index++; + } + + return buf.toString(); + } + + String convertIdent(String s) throws ParseException { + return convertStringIndex(s, 0, s.length()); + } + + String convertString(String s) throws ParseException { + return convertStringIndex(s, 0, s.length()); + } + + void rejectToken(Token t) throws ParseException { + Token fakeToken = new Token(); + t.next = token; + fakeToken.next = t; + token = fakeToken; + } + + String skipAfterExpression() throws ParseException { + Token t = getToken(1); + StringBuffer s = new StringBuffer(); + s.append(getToken(0).image); + + while ((t.kind != RBRACE) && (t.kind != SEMICOLON) && (t.kind != EOF)) { + s.append(t.image); + getNextToken(); + t = getToken(1); + } + + return s.toString(); + } + +/** + * The following functions are useful for a DOM CSS implementation only and are + * not part of the general CSS2 parser. + */ + final public void _parseRule() throws ParseException { + String ret = null; + label_96: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[146] = jj_gen; + break label_96; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IMPORT_SYM: + importDeclaration(); + break; + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case IDENT: + case HASH: + styleRule(); + break; + case MEDIA_SYM: + media(); + break; + case PAGE_SYM: + page(); + break; + case FONT_FACE_SYM: + fontFace(); + break; + default: + jj_la1[147] = jj_gen; + ret = skipStatement(); + if ((ret == null) || (ret.length() == 0)) { + {if (true) return;} + } + if (ret.charAt(0) == '@') { + documentHandler.ignorableAtRule(ret); + } else { + {if (true) throw new CSSParseException("unrecognize rule: " + ret, + getLocator());} + } + } + } + + final public void _parseImportRule() throws ParseException { + label_97: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[148] = jj_gen; + break label_97; + } + jj_consume_token(S); + } + importDeclaration(); + } + + final public void _parseMediaRule() throws ParseException { + label_98: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[149] = jj_gen; + break label_98; + } + jj_consume_token(S); + } + media(); + } + + final public void _parseDeclarationBlock() throws ParseException { + label_99: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[150] = jj_gen; + break label_99; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[151] = jj_gen; + ; + } + label_100: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case SEMICOLON: + ; + break; + default: + jj_la1[152] = jj_gen; + break label_100; + } + jj_consume_token(SEMICOLON); + label_101: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[153] = jj_gen; + break label_101; + } + jj_consume_token(S); + } + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IDENT: + declaration(); + break; + default: + jj_la1[154] = jj_gen; + ; + } + } + } + + final public SelectorList _parseSelectors() throws ParseException { + SelectorList p = null; + try { + label_102: + while (true) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case S: + ; + break; + default: + jj_la1[155] = jj_gen; + break label_102; + } + jj_consume_token(S); + } + p = selectorList(); + {if (true) return p;} + } catch (ThrowedParseException e) { + {if (true) throw (ParseException) e.e.fillInStackTrace();} + } + throw new Error("Missing return statement in function"); + } + + private boolean jj_2_1(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_1(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(0, xla); } + } + + private boolean jj_2_2(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_2(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(1, xla); } + } + + private boolean jj_2_3(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_3(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(2, xla); } + } + + private boolean jj_2_4(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_4(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(3, xla); } + } + + private boolean jj_3R_130() { + if (jj_scan_token(COMMA)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_129() { + if (jj_scan_token(DIV)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_119() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_129()) { + jj_scanpos = xsp; + if (jj_3R_130()) return true; + } + return false; + } + + private boolean jj_3R_168() { + if (jj_scan_token(UNICODERANGE)) return true; + return false; + } + + private boolean jj_3R_171() { + if (jj_3R_122()) return true; + return false; + } + + private boolean jj_3R_118() { + if (jj_3R_128()) return true; + return false; + } + + private boolean jj_3R_117() { + if (jj_3R_127()) return true; + return false; + } + + private boolean jj_3R_116() { + if (jj_3R_126()) return true; + return false; + } + + private boolean jj_3R_165() { + if (jj_scan_token(FUNCTION)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_171()) jj_scanpos = xsp; + if (jj_scan_token(RPARAN)) return true; + return false; + } + + private boolean jj_3R_115() { + if (jj_3R_125()) return true; + return false; + } + + private boolean jj_3R_114() { + if (jj_3R_124()) return true; + return false; + } + + private boolean jj_3R_125() { + if (jj_scan_token(HASH)) return true; + return false; + } + + private boolean jj_3R_105() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_114()) { + jj_scanpos = xsp; + if (jj_3R_115()) { + jj_scanpos = xsp; + if (jj_3R_116()) { + jj_scanpos = xsp; + if (jj_3R_117()) { + jj_scanpos = xsp; + if (jj_3R_118()) return true; + } + } + } + } + return false; + } + + private boolean jj_3R_121() { + if (jj_3R_133()) return true; + return false; + } + + private boolean jj_3R_163() { + if (jj_3R_168()) return true; + return false; + } + + private boolean jj_3R_162() { + if (jj_3R_167()) return true; + return false; + } + + private boolean jj_3R_161() { + if (jj_3R_166()) return true; + return false; + } + + private boolean jj_3_1() { + if (jj_3R_103()) return true; + return false; + } + + private boolean jj_3_2() { + if (jj_3R_104()) return true; + if (jj_3R_105()) return true; + return false; + } + + private boolean jj_3R_160() { + if (jj_scan_token(IDENT)) return true; + return false; + } + + private boolean jj_3R_127() { + if (jj_scan_token(COLON)) return true; + return false; + } + + private boolean jj_3R_159() { + if (jj_scan_token(STRING)) return true; + return false; + } + + private boolean jj_3R_158() { + if (jj_3R_165()) return true; + return false; + } + + private boolean jj_3R_132() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_159()) { + jj_scanpos = xsp; + if (jj_3R_160()) { + jj_scanpos = xsp; + if (jj_3R_161()) { + jj_scanpos = xsp; + if (jj_3R_162()) { + jj_scanpos = xsp; + if (jj_3R_163()) return true; + } + } + } + } + return false; + } + + private boolean jj_3_3() { + if (jj_3R_103()) return true; + return false; + } + + private boolean jj_3R_157() { + if (jj_scan_token(DIMEN)) return true; + return false; + } + + private boolean jj_3R_156() { + if (jj_scan_token(KHZ)) return true; + return false; + } + + private boolean jj_3R_155() { + if (jj_scan_token(HZ)) return true; + return false; + } + + private boolean jj_3R_154() { + if (jj_scan_token(MS)) return true; + return false; + } + + private boolean jj_3R_153() { + if (jj_scan_token(SECOND)) return true; + return false; + } + + private boolean jj_3R_152() { + if (jj_scan_token(GRAD)) return true; + return false; + } + + private boolean jj_3R_151() { + if (jj_scan_token(RAD)) return true; + return false; + } + + private boolean jj_3R_110() { + if (jj_scan_token(LBRACE)) return true; + return false; + } + + private boolean jj_3R_150() { + if (jj_scan_token(DEG)) return true; + return false; + } + + private boolean jj_3R_149() { + if (jj_scan_token(EXS)) return true; + return false; + } + + private boolean jj_3R_148() { + if (jj_scan_token(EMS)) return true; + return false; + } + + private boolean jj_3R_147() { + if (jj_scan_token(PX)) return true; + return false; + } + + private boolean jj_3R_146() { + if (jj_scan_token(IN)) return true; + return false; + } + + private boolean jj_3R_109() { + if (jj_3R_122()) return true; + return false; + } + + private boolean jj_3R_128() { + if (jj_scan_token(LBRACKET)) return true; + return false; + } + + private boolean jj_3R_145() { + if (jj_scan_token(PC)) return true; + return false; + } + + private boolean jj_3R_144() { + if (jj_scan_token(MM)) return true; + return false; + } + + private boolean jj_3R_143() { + if (jj_scan_token(CM)) return true; + return false; + } + + private boolean jj_3R_103() { + if (jj_3R_108()) return true; + if (jj_scan_token(COLON)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_109()) { + jj_scanpos = xsp; + if (jj_3R_110()) return true; + } + return false; + } + + private boolean jj_3R_138() { + if (jj_scan_token(PARENT)) return true; + return false; + } + + private boolean jj_3R_142() { + if (jj_scan_token(PT)) return true; + return false; + } + + private boolean jj_3R_137() { + if (jj_scan_token(ANY)) return true; + return false; + } + + private boolean jj_3R_141() { + if (jj_scan_token(PERCENTAGE)) return true; + return false; + } + + private boolean jj_3R_133() { + if (jj_scan_token(VARIABLE)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_139() { + if (jj_3R_164()) return true; + return false; + } + + private boolean jj_3R_140() { + if (jj_scan_token(NUMBER)) return true; + return false; + } + + private boolean jj_3R_124() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_136()) { + jj_scanpos = xsp; + if (jj_3R_137()) { + jj_scanpos = xsp; + if (jj_3R_138()) return true; + } + } + return false; + } + + private boolean jj_3R_136() { + if (jj_scan_token(IDENT)) return true; + return false; + } + + private boolean jj_3R_131() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_139()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_140()) { + jj_scanpos = xsp; + if (jj_3R_141()) { + jj_scanpos = xsp; + if (jj_3R_142()) { + jj_scanpos = xsp; + if (jj_3R_143()) { + jj_scanpos = xsp; + if (jj_3R_144()) { + jj_scanpos = xsp; + if (jj_3R_145()) { + jj_scanpos = xsp; + if (jj_3R_146()) { + jj_scanpos = xsp; + if (jj_3R_147()) { + jj_scanpos = xsp; + if (jj_3R_148()) { + jj_scanpos = xsp; + if (jj_3R_149()) { + jj_scanpos = xsp; + if (jj_3R_150()) { + jj_scanpos = xsp; + if (jj_3R_151()) { + jj_scanpos = xsp; + if (jj_3R_152()) { + jj_scanpos = xsp; + if (jj_3R_153()) { + jj_scanpos = xsp; + if (jj_3R_154()) { + jj_scanpos = xsp; + if (jj_3R_155()) { + jj_scanpos = xsp; + if (jj_3R_156()) { + jj_scanpos = xsp; + if (jj_3R_157()) { + jj_scanpos = xsp; + if (jj_3R_158()) return true; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return false; + } + + private boolean jj_3R_108() { + if (jj_scan_token(IDENT)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_135() { + if (jj_scan_token(PRECEDES)) return true; + return false; + } + + private boolean jj_3R_120() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_131()) { + jj_scanpos = xsp; + if (jj_3R_132()) return true; + } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_107() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_120()) { + jj_scanpos = xsp; + if (jj_3R_121()) return true; + } + return false; + } + + private boolean jj_3R_134() { + if (jj_scan_token(PLUS)) return true; + return false; + } + + private boolean jj_3R_123() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_134()) { + jj_scanpos = xsp; + if (jj_3R_135()) return true; + } + return false; + } + + private boolean jj_3R_106() { + if (jj_3R_119()) return true; + return false; + } + + private boolean jj_3R_166() { + if (jj_scan_token(HASH)) return true; + return false; + } + + private boolean jj_3R_112() { + if (jj_scan_token(PRECEDES)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_104() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_111()) { + jj_scanpos = xsp; + if (jj_3R_112()) { + jj_scanpos = xsp; + if (jj_3R_113()) return true; + } + } + return false; + } + + private boolean jj_3R_111() { + if (jj_scan_token(PLUS)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_113() { + if (jj_scan_token(S)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_123()) jj_scanpos = xsp; + return false; + } + + private boolean jj_3R_170() { + if (jj_scan_token(PLUS)) return true; + return false; + } + + private boolean jj_3R_164() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_169()) { + jj_scanpos = xsp; + if (jj_3R_170()) return true; + } + return false; + } + + private boolean jj_3R_169() { + if (jj_scan_token(MINUS)) return true; + return false; + } + + private boolean jj_3R_126() { + if (jj_scan_token(DOT)) return true; + return false; + } + + private boolean jj_3_4() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_106()) jj_scanpos = xsp; + if (jj_3R_107()) return true; + return false; + } + + private boolean jj_3R_167() { + if (jj_scan_token(URL)) return true; + return false; + } + + private boolean jj_3R_122() { + if (jj_3R_107()) return true; + return false; + } + + /** Generated Token Manager. */ + public ParserTokenManager token_source; + /** Current token. */ + public Token token; + /** Next token. */ + public Token jj_nt; + private int jj_ntk; + private Token jj_scanpos, jj_lastpos; + private int jj_la; + private int jj_gen; + final private int[] jj_la1 = new int[156]; + static private int[] jj_la1_0; + static private int[] jj_la1_1; + static private int[] jj_la1_2; + static private int[] jj_la1_3; + static { + jj_la1_init_0(); + jj_la1_init_1(); + jj_la1_init_2(); + jj_la1_init_3(); + } + private static void jj_la1_init_0() { + jj_la1_0 = new int[] {0x0,0x6002,0x6002,0x0,0x6000,0x2,0x2,0x2,0x74000000,0x6000,0x2,0x6000,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0x75f6a000,0x75f6a000,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x1f6a000,0x2,0x2,0x1100000,0x2,0x1100000,0x1100002,0x2,0x2,0x2,0x2,0x74000000,0x0,0x74000000,0x2,0x400000,0x2,0x2,0x44000000,0x44000000,0x44000000,0x44000000,0x44000000,0x44000000,0x44000000,0x44000000,0x44000000,0x44000000,0x74000000,0x30000000,0x2,0x2,0xe0000,0x2,0x0,0x2,0xe0000,0x0,0x2,0x2,0x0,0x2,0x0,0x2,0x800000,0x2,0x2,0x0,0x2,0x74000000,0x0,0x74000000,0x2,0x400000,0x2,0x2,0x0,0x400000,0x2,0x2,0x0,0x2,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x800000,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x308000,0x2,0x0,0x2,0x2,0x2,0x2,0x2400000,0x2400000,0x300000,0x300000,0x0,0x0,0x300000,0x2,0x300000,0x2,0x300000,0x2,0x74000000,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,}; + } + private static void jj_la1_init_1() { + jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000c002,0x0,0x0,0x0,0x0,0x20000000,0x0,0x40000000,0x0,0x0,0x0,0xe0000006,0xe0000006,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x2,0x0,0x40000000,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x40000000,0x0,0xa0000004,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x42008002,0x2008000,0x40000002,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x2,0x40000002,0x40000000,0x0,0x0,0x0,0x0,0x60000000,0x0,0x0,0x2,0x0,0x0,0x40000000,0x0,0x10000000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x42008002,0x2008000,0x40000002,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x1800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x40000000,0x0,0xe0000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x60000000,0xe0000000,0x0,0xe0000000,0x0,0xe0000000,0x0,0x40000002,0x0,0x0,0x0,0x40000000,0x0,0x0,0x40000000,0x0,}; + } + private static void jj_la1_init_2() { + jj_la1_2 = new int[] {0x800000,0x4000000,0x4000000,0x200000,0x4000000,0x0,0x0,0x0,0x3500004,0x4000000,0x0,0x4000000,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0xff0000a,0xff0000a,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xfe0000a,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x500004,0x400004,0x100000,0x0,0x0,0x0,0x0,0x100000,0x100000,0x0,0x0,0x100000,0x100000,0x100000,0x100000,0x100000,0x100000,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x500004,0x400004,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x1ffffe,0x0,0x8000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xffff8,0x100002,0x1ffffa,0x0,0x1ffffe,0x0,0x1ffffe,0x0,0x3700000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + } + private static void jj_la1_init_3() { + jj_la1_3 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x20,0x60,0x0,0x60,0x0,0x60,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; + } + final private JJCalls[] jj_2_rtns = new JJCalls[4]; + private boolean jj_rescan = false; + private int jj_gc = 0; + + /** Constructor with user supplied CharStream. */ + public Parser(CharStream stream) { + token_source = new ParserTokenManager(stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 156; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(CharStream stream) { + token_source.ReInit(stream); + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 156; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Constructor with generated Token Manager. */ + public Parser(ParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 156; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + /** Reinitialise. */ + public void ReInit(ParserTokenManager tm) { + token_source = tm; + token = new Token(); + jj_ntk = -1; + jj_gen = 0; + for (int i = 0; i < 156; i++) jj_la1[i] = -1; + for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); + } + + private Token jj_consume_token(int kind) throws ParseException { + Token oldToken; + if ((oldToken = token).next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + if (token.kind == kind) { + jj_gen++; + if (++jj_gc > 100) { + jj_gc = 0; + for (int i = 0; i < jj_2_rtns.length; i++) { + JJCalls c = jj_2_rtns[i]; + while (c != null) { + if (c.gen < jj_gen) c.first = null; + c = c.next; + } + } + } + return token; + } + token = oldToken; + jj_kind = kind; + throw generateParseException(); + } + + static private final class LookaheadSuccess extends java.lang.Error { } + final private LookaheadSuccess jj_ls = new LookaheadSuccess(); + private boolean jj_scan_token(int kind) { + if (jj_scanpos == jj_lastpos) { + jj_la--; + if (jj_scanpos.next == null) { + jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); + } else { + jj_lastpos = jj_scanpos = jj_scanpos.next; + } + } else { + jj_scanpos = jj_scanpos.next; + } + if (jj_rescan) { + int i = 0; Token tok = token; + while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } + if (tok != null) jj_add_error_token(kind, i); + } + if (jj_scanpos.kind != kind) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; + return false; + } + + +/** Get the next Token. */ + final public Token getNextToken() { + if (token.next != null) token = token.next; + else token = token.next = token_source.getNextToken(); + jj_ntk = -1; + jj_gen++; + return token; + } + +/** Get the specific Token. */ + final public Token getToken(int index) { + Token t = token; + for (int i = 0; i < index; i++) { + if (t.next != null) t = t.next; + else t = t.next = token_source.getNextToken(); + } + return t; + } + + private int jj_ntk() { + if ((jj_nt=token.next) == null) + return (jj_ntk = (token.next=token_source.getNextToken()).kind); + else + return (jj_ntk = jj_nt.kind); + } + + private java.util.List jj_expentries = new java.util.ArrayList(); + private int[] jj_expentry; + private int jj_kind = -1; + private int[] jj_lasttokens = new int[100]; + private int jj_endpos; + + private void jj_add_error_token(int kind, int pos) { + if (pos >= 100) return; + if (pos == jj_endpos + 1) { + jj_lasttokens[jj_endpos++] = kind; + } else if (jj_endpos != 0) { + jj_expentry = new int[jj_endpos]; + for (int i = 0; i < jj_endpos; i++) { + jj_expentry[i] = jj_lasttokens[i]; + } + jj_entries_loop: for (java.util.Iterator it = jj_expentries.iterator(); it.hasNext();) { + int[] oldentry = (int[])(it.next()); + if (oldentry.length == jj_expentry.length) { + for (int i = 0; i < jj_expentry.length; i++) { + if (oldentry[i] != jj_expentry[i]) { + continue jj_entries_loop; + } + } + jj_expentries.add(jj_expentry); + break jj_entries_loop; + } + } + if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; + } + } + + /** Generate ParseException. */ + public ParseException generateParseException() { + jj_expentries.clear(); + boolean[] la1tokens = new boolean[104]; + if (jj_kind >= 0) { + la1tokens[jj_kind] = true; + jj_kind = -1; + } + for (int i = 0; i < 156; i++) { + if (jj_la1[i] == jj_gen) { + for (int j = 0; j < 32; j++) { + if ((jj_la1_0[i] & (1< jj_gen) { + jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; + switch (i) { + case 0: jj_3_1(); break; + case 1: jj_3_2(); break; + case 2: jj_3_3(); break; + case 3: jj_3_4(); break; + } + } + p = p.next; + } while (p != null); + } catch(LookaheadSuccess ls) { } + } + jj_rescan = false; + } + + private void jj_save(int index, int xla) { + JJCalls p = jj_2_rtns[index]; + while (p.gen > jj_gen) { + if (p.next == null) { p = p.next = new JJCalls(); break; } + p = p.next; + } + p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; + } + + static final class JJCalls { + int gen; + Token first; + int arg; + JJCalls next; + } + +} diff --git a/sass/src/com/vaadin/sass/parser/Parser.jj b/sass/src/com/vaadin/sass/parser/Parser.jj new file mode 100644 index 0000000000..67fe870e03 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/Parser.jj @@ -0,0 +1,2443 @@ +/* -*-java-extended-*- + * Copyright (c) 1999 World Wide Web Consortium + * (Massachusetts Institute of Technology, Institut National de Recherche + * en Informatique et en Automatique, Keio University). + * All Rights Reserved. http://www.w3.org/Consortium/Legal/ + * + * $Id: Parser.jj,v 1.15 2000/10/27 21:09:37 plehegar Exp $ + */ + +options { + IGNORE_CASE = true; + STATIC = false; + USER_CHAR_STREAM = true; + /* DEBUG_TOKEN_MANAGER = true; + DEBUG_PARSER = true; */ +} + +PARSER_BEGIN(Parser) + +package com.vaadin.sass.parser; + +import java.io.*; +import java.net.*; +import java.util.ArrayList; +import java.util.Locale; +import java.util.Map; + +import org.w3c.css.sac.ConditionFactory; +import org.w3c.css.sac.Condition; +import org.w3c.css.sac.SelectorFactory; +import org.w3c.css.sac.SelectorList; +import org.w3c.css.sac.Selector; +import org.w3c.css.sac.SimpleSelector; +import org.w3c.css.sac.DocumentHandler; +import org.w3c.css.sac.InputSource; +import org.w3c.css.sac.ErrorHandler; +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.CSSParseException; +import org.w3c.css.sac.Locator; +import org.w3c.css.sac.LexicalUnit; + +import org.w3c.flute.parser.selectors.SelectorFactoryImpl; +import org.w3c.flute.parser.selectors.ConditionFactoryImpl; + +import org.w3c.flute.util.Encoding; + +import com.vaadin.sass.handler.*; + +import com.vaadin.sass.tree.*; + +/** + * A CSS2 parser + * + * @author Philippe Le H�garet + * @version $Revision: 1.15 $ + */ +public class Parser implements org.w3c.css.sac.Parser { + + // replaces all \t, \n, etc with this StringBuffer. + static final StringBuilder SPACE = new StringBuilder(" "); + + // the document handler for the parser + protected SCSSDocumentHandlerImpl documentHandler; + // the error handler for the parser + protected ErrorHandler errorHandler; + // the input source for the parser + protected InputSource source; + + protected ConditionFactory conditionFactory; + protected SelectorFactory selectorFactory; + + // temporary place holder for pseudo-element ... + private String pseudoElt; + + /** + * Creates a new Parser + */ + public Parser() { + this((CharStream) null); + } + + /** + * @@TODO + * @exception CSSException Not yet implemented + */ + public void setLocale(Locale locale) throws CSSException { + throw new CSSException(CSSException.SAC_NOT_SUPPORTED_ERR); + } + + /** + * Set the document handler for this parser + */ + public void setDocumentHandler(DocumentHandler handler) { + this.documentHandler = (SCSSDocumentHandlerImpl) handler; + } + + public void setSelectorFactory(SelectorFactory selectorFactory) { + this.selectorFactory = selectorFactory; + } + + public void setConditionFactory(ConditionFactory conditionFactory) { + this.conditionFactory = conditionFactory; + } + + /** + * Set the error handler for this parser + */ + public void setErrorHandler(ErrorHandler error) { + this.errorHandler = error; + } + + /** + * Main parse methods + * + * @param source the source of the style sheet. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseStyleSheet(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + + parserUnit(); + } + + /** + * Convenient method for URIs. + * + * @param systemId the fully resolved URI of the style sheet. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseStyleSheet(String systemId) + throws CSSException, IOException { + parseStyleSheet(new InputSource(systemId)); + } + + /** + * This method parses only one rule (style rule or at-rule, except @charset). + * + * @param source the source of the rule. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseRule(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseRule(); + } + + /** + * This method parses a style declaration (including the surrounding curly + * braces). + * + * @param source the source of the style declaration. + * @exception IOException the source can't be parsed. + * @exception CSSException the source is not CSS valid. + */ + public void parseStyleDeclaration(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseDeclarationBlock(); + } + + /** + * This methods returns "http://www.w3.org/TR/REC-CSS2". + * @return the string "http://www.w3.org/TR/REC-CSS2". + */ + public String getParserVersion() { + return "http://www.w3.org/TR/REC-CSS2"; + } + + /** + * Parse methods used by DOM Level 2 implementation. + */ + public void parseImportRule(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseImportRule(); + } + + public void parseMediaRule(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + _parseMediaRule(); + } + + public SelectorList parseSelectors(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + if (selectorFactory == null) { + selectorFactory = new SelectorFactoryImpl(); + } + if (conditionFactory == null) { + conditionFactory = new ConditionFactoryImpl(); + } + return _parseSelectors(); + } + + public LexicalUnit parsePropertyValue(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + return expr(); + } + + public boolean parsePriority(InputSource source) + throws CSSException, IOException { + this.source = source; + ReInit(getCharStreamWithLurk(source)); + + return prio(); + } + + /** + * Convert the source into a Reader. Used only by DOM Level 2 parser methods. + */ + private Reader getReader(InputSource source) throws IOException { + if (source.getCharacterStream() != null) { + return source.getCharacterStream(); + } else if (source.getByteStream() != null) { + // My DOM level 2 implementation doesn't use this case. + if (source.getEncoding() == null) { + // unknown encoding, use ASCII as default. + return new InputStreamReader(source.getByteStream(), "ASCII"); + } else { + return new InputStreamReader(source.getByteStream(), + source.getEncoding()); + } + } else { + // systemId + // @@TODO + throw new CSSException("not yet implemented"); + } + } + + /** + * Convert the source into a CharStream with encoding informations. + * The encoding can be found in the InputSource or in the CSS document. + * Since this method marks the reader and make a reset after looking for + * the charset declaration, you'll find the charset declaration into the + * stream. + */ + private CharStream getCharStreamWithLurk(InputSource source) + throws CSSException, IOException { + if (source.getCharacterStream() != null) { + // all encoding are supposed to be resolved by the user + // return the reader + return new Generic_CharStream(source.getCharacterStream(), 1, 1); + } else if (source.getByteStream() == null) { + // @@CONTINUE ME. see also getReader() with systemId + try { + source.setByteStream(new URL(source.getURI()).openStream()); + } catch (Exception e) { + try { + source.setByteStream(new FileInputStream(source.getURI())); + } catch (IOException ex) { + throw new CSSException("invalid url ?"); + } + } + } + String encoding = "ASCII"; + InputStream input = source.getByteStream(); + char c = ' '; + + if (!input.markSupported()) { + input = new BufferedInputStream(input); + source.setByteStream(input); + } + input.mark(100); + c = (char) input.read(); + + if (c == '@') { + // hum, is it a charset ? + int size = 100; + byte[] buf = new byte[size]; + input.read(buf, 0, 7); + String keyword = new String(buf, 0, 7); + if (keyword.equals("charset")) { + // Yes, this is the charset declaration ! + + // here I don't use the right declaration : white space are ' '. + while ((c = (char) input.read()) == ' ') { + // find the first quote + } + char endChar = c; + int i = 0; + + if ((endChar != '"') && (endChar != '\'')) { + // hum this is not a quote. + throw new CSSException("invalid charset declaration"); + } + + while ((c = (char) input.read()) != endChar) { + buf[i++] = (byte) c; + if (i == size) { + byte[] old = buf; + buf = new byte[size + 100]; + System.arraycopy(old, 0, buf, 0, size); + size += 100; + } + } + while ((c = (char) input.read()) == ' ') { + // find the next relevant character + } + if (c != ';') { + // no semi colon at the end ? + throw new CSSException("invalid charset declaration: " + + "missing semi colon"); + } + encoding = new String(buf, 0, i); + if (source.getEncoding() != null) { + // compare the two encoding informations. + // For example, I don't accept to have ASCII and after UTF-8. + // Is it really good ? That is the question. + if (!encoding.equals(source.getEncoding())) { + throw new CSSException("invalid encoding information."); + } + } + } // else no charset declaration available + } + // ok set the real encoding of this source. + source.setEncoding(encoding); + // set the real reader of this source. + source.setCharacterStream(new InputStreamReader(source.getByteStream(), + Encoding.getJavaEncoding(encoding))); + // reset the stream (leave the charset declaration in the stream). + input.reset(); + + return new Generic_CharStream(source.getCharacterStream(), 1, 1); + } + + private LocatorImpl currentLocator; + private Locator getLocator() { + if (currentLocator == null) { + currentLocator = new LocatorImpl(this); + return currentLocator; + } + return currentLocator.reInit(this); + } + private LocatorImpl getLocator(Token save) { + if (currentLocator == null) { + currentLocator = new LocatorImpl(this, save); + return currentLocator; + } + return currentLocator.reInit(this, save); + } + + private void reportError(Locator l, Exception e) { + if (errorHandler != null) { + if (e instanceof ParseException) { + // construct a clean error message. + ParseException pe = (ParseException) e; + if (pe.specialConstructor) { + StringBuffer errorM = new StringBuffer(); + if (pe.currentToken != null) { + errorM.append("encountered \"") + .append(pe.currentToken.next); + } + errorM.append('"'); + if (pe.expectedTokenSequences.length != 0) { + errorM.append(". Was expecting one of: "); + for (int i = 0; i < pe.expectedTokenSequences.length; i++) { + for (int j = 0; j < pe.expectedTokenSequences[i].length; j++) { + int kind = pe.expectedTokenSequences[i][j]; + if (kind != S) { + errorM.append(pe.tokenImage[kind]); + errorM.append(' '); + } + } + } + } + errorHandler.error(new CSSParseException(errorM.toString(), + l, e)); + } else { + errorHandler.error(new CSSParseException(e.getMessage(), + l, e)); + } + } else if (e == null) { + errorHandler.error(new CSSParseException("error", l, null)); + } else { + errorHandler.error(new CSSParseException(e.getMessage(), l, e)); + } + } + } + + private void reportWarningSkipText(Locator l, String text) { + if (errorHandler != null && text != null) { + errorHandler.warning(new CSSParseException("Skipping: " + text, l)); + } + } +} + +PARSER_END(Parser) + +/* + * The tokenizer + */ + + +TOKEN : +{ + < S : ( [ " ", "\t" , "\n" , "\r", "\f" ] )+ > + { image = Parser.SPACE; } +} + + +MORE: +{ + "#{" : IN_INTERPOLATION +} + + +MORE: +{ + < ~["}"]> : IN_INTERPOLATION +} + + +SPECIAL_TOKEN: +{ + : DEFAULT +} + + +MORE : +{ + "//" : IN_SINGLE_LINE_COMMENT +} + + +MORE : +{ + < ~["\n","\r"] > : IN_SINGLE_LINE_COMMENT +} + + +SKIP : +{ + < "\n"|"\r"|"\r\n" > : DEFAULT +} + + + +MORE : +{ + <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT +| + "/*" : IN_MULTI_LINE_COMMENT +} + +SPECIAL_TOKEN : +{ + : DEFAULT +} + + +SKIP : +{ + : DEFAULT +} + + +MORE : +{ + < ~[] > +} + + +TOKEN : +{ + < CDO : "" > + | < LBRACE : "{" > + | < RBRACE : "}"> + | < DASHMATCH : "|=" > + | < INCLUDES : "~=" > + | < EQ : "=" > + | < PLUS : "+" > + | < MINUS : "-" > + | < COMMA : "," > + | < SEMICOLON : ";" > + | < PRECEDES : ">" > + | < DIV : "/" > + | < LBRACKET : "[" > + | < RBRACKET : "]" > + | < ANY : "*" > + | < PARENT : "&" > + | < DOT : "." > + | < LPARAN : "(" > + | < RPARAN : ")"> +} + + +TOKEN : +{ + < COLON : ":" > +} + + +TOKEN : /* basic tokens */ +{ + < NONASCII : ["\200"-"\377"] > + | < #H : ["0"-"9", "a"-"f"] > + | < #UNICODE : "\\" ( )? /* I can't say {1,6} */ + ( )? ( )? + ( )? ( )? + ( [ " ", "\t" , "\n" , "\r", "\f" ] )? > + | < #ESCAPE : | ( "\\" [ " "-"~","\200"-"\377" ] ) > + | < #NMSTART : ("-")?[ "a"-"z"] | | > + | < #NMCHAR : ["a"-"z", "0"-"9", "-", "_"] | | > + | < #STRINGCHAR : [ "\t"," ","!","#","$","%","&","("-"~" ] + | "\\\n" | "\\\r\n" | "\\\r" | "\\\f" + | | > + | < #D : ["0"-"9"] > + | < #NAME : ( )+ > +} + + + +TOKEN : +{ + + | + | +} + +/* DERECTIVES */ + +TOKEN : +{ + + | + | + | + | + | + | + | + | + | + | + | + | + | +} + + +TOKEN: +{ + < GUARDED_SYM : "!" ( )? "default"> +} + + +TOKEN : +{ + < STRING : ( "\"" ( | "'" )* "\"" ) | + ( "'" ( | "\"" )* "'" ) > + | < IDENT : ( )* > + | < NUMBER : ( )+ | ( )* "." ( )+ > + | < #_URL : [ "!","#","$","%","&","*"-"~" ] | | > + | < URL : "url(" ( )* + ( | ( <_URL> )* ) ( )* ")" > +} + + +TOKEN: +{ + < VARIABLE : "$" > +} + + +TOKEN : +{ + < PERCENTAGE : "%" > + | < PT : "pt" > + | < MM : "mm" > + | < CM : "cm" > + | < PC : "pc" > + | < IN : "in" > + | < PX : "px" > + | < EMS : "em" > + | < EXS : "ex" > + | < DEG : "deg" > + | < RAD : "rad" > + | < GRAD : "grad" > + | < MS : "ms" > + | < SECOND : "s" > + | < HZ : "Hz" > + | < KHZ : "kHz" > + | < DIMEN : > +} + + +TOKEN : +{ + < HASH : "#" > +} + +/* RESERVED ATRULE WORDS */ + +TOKEN : +{ + < IMPORT_SYM : "@import"> + | < MEDIA_SYM : "@media" > + | < CHARSET_SYM : "@charset" > + | < PAGE_SYM : "@page" > + | < FONT_FACE_SYM: "@font-face" > + | < ATKEYWORD : "@" > +} + + +TOKEN : +{ + < IMPORTANT_SYM : "!" ( )? "important" > +} + + +TOKEN : +{ + < #RANGE0 : > + | < #RANGE1 : ( "?" )? > + | < #RANGE2 : ( "?" )? ( "?" )? > + | < #RANGE3 : ( "?" )? ( "?" )? ( "?" )? > + | < #RANGE4 : ( "?" )? ( "?" )? ( "?" )? ( "?" )? > + | < #RANGE5 : ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? > + | < #RANGE6 : "?" ( "?" )? ( "?" )? ( "?" )? ( "?" )? ( "?" )? > + | < #RANGE : | | + | | | | > + | < #UNI : ( )? ( )? ( )? ( )? ( )? > + | < UNICODERANGE : "U+" + | "U+" "-" > +} + + +TOKEN : +{ + < FUNCTION : "(" > +} + + +TOKEN : +{ /* avoid token manager error */ + < UNKNOWN : ~[] > +} + +/* + * The grammar of CSS2 + */ + +/** + * The main entry for the parser. + * + * @exception ParseException exception during the parse + */ +void parserUnit() : +{} +{ + try { + { documentHandler.startDocument(source); } + ( charset() )? + ( | ignoreStatement() )* + ( importDeclaration() ( ignoreStatement() ( )* )* )* + afterImportDeclaration() + + } finally { + documentHandler.endDocument(source); + } +} + +void charset() : +{ Token n; } +{ + try { + ( )* n= ( )* ";" + } catch (ParseException e) { + reportError(getLocator(e.currentToken.next), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + } catch (Exception e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + } +} + +void afterImportDeclaration() : +{String ret; + Locator l; +} +{ + ( ( variable() | mixinDirective() | includeDirective() | styleRule() | media()| page() | fontFace() + | { l = getLocator(); } ret=skipStatement() + { + if ((ret == null) || (ret.length() == 0)) { + return; + } + reportWarningSkipText(l, ret); + if (ret.charAt(0) == '@') { + documentHandler.ignorableAtRule(ret); + } + } + ) + ( ignoreStatement() ( )* )* )* +} + +void ignoreStatement() : +{} +{ + | | atRuleDeclaration() +} + +/** + * The import statement + * + * @exception ParseException exception during the parse + */ +void importDeclaration() : +{Token n; + String uri; + MediaListImpl ml = new MediaListImpl(); + boolean isURL = false; +} +{ + try { + + ( )* ( n= { uri = convertStringIndex(n.image, 1, + n.image.length() -1); } + | n= + { + isURL=true; + uri = n.image.substring(4, n.image.length()-1).trim(); + if ((uri.charAt(0) == '"') + || (uri.charAt(0) == '\'')) { + uri = uri.substring(1, uri.length()-1); + } + } + ) + ( )* ( mediaStatement(ml) )? ";" + ( )* + { + if (ml.getLength() == 0) { + // see section 6.3 of the CSS2 recommandation. + ml.addItem("all"); + } + documentHandler.importStyle(uri, ml, isURL); + } + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + } +} + +/** + * @exception ParseException exception during the parse + */ +void media() : +{ + boolean start = false; + String ret; + MediaListImpl ml = new MediaListImpl(); +} +{ + try { + ( )* + mediaStatement(ml) + { start = true; documentHandler.startMedia(ml); } + ( )* ( styleRule() | skipUnknownRule() )* ( )* + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + } finally { + if (start) { + documentHandler.endMedia(ml); + } + } +} + +void mediaStatement(MediaListImpl ml) : +{ + String m; +} +{ + m=medium() ( ( )* { ml.addItem(m); } m=medium() )* + { ml.addItem(m); } +} + +/** + * @exception ParseException exception during the parse + */ +String medium() : /* tv, projection, screen, ... */ +{Token n;} +{ + n= ( )* { return convertIdent(n.image); } +} + +/** + * @exception ParseException exception during the parse + */ +void page() : +{ + boolean start = false; + Token n = null; + String page = null; + String pseudo = null; +} +{ + try { + ( )* ( n= ( )* )? + ( pseudo=pseudo_page() )? + { + if (n != null) { + page = convertIdent(n.image); + } + } + ()* + { + start = true; + documentHandler.startPage(page, pseudo); + } + ( declaration() )? ( ";" ( )* ( declaration() )? )* + ()* + } catch (ParseException e) { + if (errorHandler != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + skipStatement(); + // reportWarningSkipText(li, skipStatement()); + } else { + skipStatement(); + } + } finally { + if (start) { + documentHandler.endPage(page, pseudo); + } + } +} + +String pseudo_page() : +{ Token n; } +{ + ":" n= ( )* { return convertIdent(n.image); } +} + +void fontFace() : +{ + boolean start = false; +} +{ + try { + ( )* + ()* + { start = true; documentHandler.startFontFace(); } + ( declaration() )? ( ";" ( )* ( declaration() )? )* + ()* + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + } finally { + if (start) { + documentHandler.endFontFace(); + } + } +} + +/** + * @exception ParseException exception during the parse + */ +void atRuleDeclaration() : +{Token n; + String ret; +} +{ + n= + { + ret=skipStatement(); + reportWarningSkipText(getLocator(), ret); + if ((ret != null) && (ret.charAt(0) == '@')) { + documentHandler.ignorableAtRule(ret); + } + } +} + +void skipUnknownRule() : +{ Token n;} +{ + ( n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n= +| n=";" +| n="+" +| n=">" +| n="-" +| n= + ) { + String ret; + Locator loc = getLocator(); + ret=skipStatement(); + reportWarningSkipText(loc, ret); + if ((ret != null) && (n.image.charAt(0) == '@')) { + documentHandler.ignorableAtRule(ret); + } + } +} + +/** + * @exception ParseException exception during the parse + */ +char combinator() : +{ +char connector = ' '; +} +{ + "+" ( )* { return '+'; } + | ">" ( )* { return '>'; } +| ( ( "+" { connector = '+'; } + | ">" { connector = '>'; } ) + ( )* )? { return connector; } +} + +/** + * @exception ParseException exception during the parse + */ +String property() : +{Token n; } +{ + n= ( )* { return convertIdent(n.image); } +} + +String variableName() : +{Token n;} +{ + n= ()* {return convertIdent(n.image.substring(1));} +} + +String functionName() : +{Token n;} +{ + n= ( )* {return convertIdent(n.image.substring(0, n.image.length()-1));} +} +/** + * @exception ParseException exception during the parse + */ +void styleRule() : +{ + boolean start = false; + SelectorList l = null; + Token save; + Locator loc; +} +{ + try { + l=selectorList() { save = token; } ()* + { + start = true; + documentHandler.startSelector(l); + } + ( includeDirective() | media() | extendDirective()| variable() | LOOKAHEAD(3) declarationOrNestedProperties() | styleRule())* + ()* + } catch (ThrowedParseException e) { + if (errorHandler != null) { + LocatorImpl li = new LocatorImpl(this, + e.e.currentToken.next.beginLine, + e.e.currentToken.next.beginColumn-1); + reportError(li, e.e); + } + } catch (ParseException e) { + reportError(getLocator(), e); + skipStatement(); + // reportWarningSkipText(getLocator(), skipStatement()); + } catch (TokenMgrError e) { + reportWarningSkipText(getLocator(), skipStatement()); + } finally { + if (start) { + documentHandler.endSelector(l); + } + } +} + +SelectorList selectorList() : +{ + SelectorListImpl selectors = new SelectorListImpl(); + Selector selector; +} +{ + selector=selector() ( ()* { selectors.addSelector(selector); } + selector=selector() )* + { selectors.addSelector(selector); + return selectors; + } +} + +/** + * @exception ParseException exception during the parse + */ +Selector selector() : +{ + Selector selector; + char comb; +} +{ + try { + selector=simple_selector(null, ' ') + ( LOOKAHEAD(2) comb=combinator() + selector=simple_selector(selector, comb) )* ()* + { + return selector; + } + } catch (ParseException e) { + /* + Token t = getToken(1); + StringBuffer s = new StringBuffer(); + s.append(getToken(0).image); + while ((t.kind != COMMA) && (t.kind != SEMICOLON) + && (t.kind != LBRACE) && (t.kind != EOF)) { + s.append(t.image); + getNextToken(); + t = getToken(1); + } + reportWarningSkipText(getLocator(), s.toString()); + */ + Token t = getToken(1); + while ((t.kind != COMMA) && (t.kind != SEMICOLON) + && (t.kind != LBRACE) && (t.kind != EOF)) { + getNextToken(); + t = getToken(1); + } + + throw new ThrowedParseException(e); + } +} + +/** + * @exception ParseException exception during the parse + */ +Selector simple_selector(Selector selector, char comb) : +{ + SimpleSelector simple_current = null; + Condition cond = null; + + pseudoElt = null; +} +{ + ( simple_current=element_name() + ( cond=hash(cond) | cond=_class(cond) + | cond=attrib(cond) | cond=pseudo(cond) )* + | cond=hash(cond) ( cond=_class(cond) + | cond=attrib(cond) | cond=pseudo(cond) )* + | cond=_class(cond) ( cond=hash(cond) | cond=_class(cond) + | cond=attrib(cond) | cond=pseudo(cond) )* + | cond=pseudo(cond) ( cond=hash(cond) | cond=_class(cond) + | cond=attrib(cond) | cond=pseudo(cond) )* + | cond=attrib(cond) ( cond=hash(cond) | cond=_class(cond) + | cond=attrib(cond) | cond=pseudo(cond) )* + ) + { + if (simple_current == null) { + simple_current = selectorFactory.createElementSelector(null, null); + } + if (cond != null) { + simple_current = selectorFactory.createConditionalSelector(simple_current, + cond); + } + if (selector != null) { + switch (comb) { + case ' ': + selector = selectorFactory.createDescendantSelector(selector, + simple_current); + break; + case '+': + selector = + selectorFactory.createDirectAdjacentSelector((short) 1, + selector, + simple_current); + break; + case '>': + selector = selectorFactory.createChildSelector(selector, + simple_current); + break; + default: + throw new ParseException("invalid state. send a bug report"); + } + } else { + selector= simple_current; + } + if (pseudoElt != null) { + selector = selectorFactory.createChildSelector(selector, + selectorFactory.createPseudoElementSelector(null, pseudoElt)); + } + return selector; + } +} + +/** + * @exception ParseException exception during the parse + */ +Condition _class(Condition pred) : +{Token n; +Condition c; +} +{ + "." n= + { + c = conditionFactory.createClassCondition(null, n.image); + if (pred == null) { + return c; + } else { + return conditionFactory.createAndCondition(pred, c); + } + } +} + +/** + * @exception ParseException exception during the parse + */ +SimpleSelector element_name() : +{Token n; } +{ + n= + { + return selectorFactory.createElementSelector(null, convertIdent(n.image)); + } + | "*" + { return selectorFactory.createElementSelector(null, "*"); } + | "&" + { return selectorFactory.createElementSelector(null, "&"); } +} + +/** + * @exception ParseException exception during the parse + */ +Condition attrib(Condition pred) : +{ + int cases = 0; + Token att = null; + Token val = null; + String attValue = null; +} +{ + "[" ( )* att= ( )* + ( ( "=" { cases = 1; } + | { cases = 2; } + | { cases = 3; } ) ( )* + ( val= { attValue = val.image; } + | val= { attValue = convertStringIndex(val.image, 1, + val.image.length() -1);} + ) + ( )* )? + "]" + { + String name = convertIdent(att.image); + Condition c; + switch (cases) { + case 0: + c = conditionFactory.createAttributeCondition(name, null, false, null); + break; + case 1: + c = conditionFactory.createAttributeCondition(name, null, false, + attValue); + break; + case 2: + c = conditionFactory.createOneOfAttributeCondition(name, null, false, + attValue); + break; + case 3: + c = conditionFactory.createBeginHyphenAttributeCondition(name, null, + false, + attValue); + break; + default: + // never reached. + c = null; + } + if (pred == null) { + return c; + } else { + return conditionFactory.createAndCondition(pred, c); + } + } +} + +/** + * @exception ParseException exception during the parse + */ +Condition pseudo(Condition pred) : +{Token n; +Token language; +boolean isPseudoElement = false; +} +{ + ":" (":"{isPseudoElement=true;})?( n= + { + String s = convertIdent(n.image); + if (isPseudoElement) { + if (pseudoElt != null) { + throw new CSSParseException("duplicate pseudo element definition " + + s, getLocator()); + } else { + pseudoElt = s; + return pred; + } + } else { + Condition c = + conditionFactory.createPseudoClassCondition(null, s); + if (pred == null) { + return c; + } else { + return conditionFactory.createAndCondition(pred, c); + } + } + } + | ( n= ( )* language= ( )* ")" + { + String f = convertIdent(n.image); + if (f.equals("lang(")) { + Condition d = + conditionFactory.createLangCondition(convertIdent(language.image)); + if (pred == null) { + return d; + } else { + return conditionFactory.createAndCondition(pred, d); + } + } else { + throw new CSSParseException("invalid pseudo function name " + + f, getLocator()); + } + } + ) + ) +} + +/** + * @exception ParseException exception during the parse + */ +Condition hash(Condition pred) : +{Token n; } +{ + n= + { + Condition d = + conditionFactory.createIdCondition(n.image.substring(1)); + if (pred == null) { + return d; + } else { + return conditionFactory.createAndCondition(pred, d); + } + } +} + +void variable() : +{ + String name; + LexicalUnit exp = null; + boolean guarded = false; + String raw; +} +{ + try{ + name = variableName() + ":" ( )* exp=expr() ( guarded=guarded() )?(";"()*)+ + //raw=skipStatementUntilSemiColon() + { + documentHandler.variable(name, exp, guarded); + } + }catch (JumpException e) { + skipAfterExpression(); + } catch (NumberFormatException e) { + if (errorHandler != null) { + errorHandler.error(new CSSParseException("Invalid number " + + e.getMessage(), + getLocator(), + e)); + } + reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (ParseException e) { + if (errorHandler != null) { + if (e.currentToken != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + } else { + reportError(getLocator(), e); + } + skipAfterExpression(); + } else { + skipAfterExpression(); + } + } +} + +void mixinDirective() : +{ + String name; + ArrayList args = null; + String body; +} +{ + + ()* + (name = property() + |(name = functionName() + args = arglist()) ()*) ()* + {documentHandler.startMixinDirective(name, args);} + ( includeDirective() | media() | extendDirective()| variable() | LOOKAHEAD(3) declarationOrNestedProperties() | styleRule())* + //(includeDirective() | media() | LOOKAHEAD(declaration()) declaration()";"()* | styleRule())* + ()* + {documentHandler.endMixinDirective(name, args);} +} + +ArrayList arglist() : +{ + ArrayList args = new ArrayList(); + VariableNode arg; +} +{ + arg=mixinArg() ( ()* { args.add(arg); } + arg=mixinArg() )* + { args.add(arg); + return args; + } +} + +VariableNode mixinArg() : +{ + String name; + LexicalUnit value = null; +} +{ + name=variableName() (":" ()* value=term(null) )? + { + VariableNode arg = new VariableNode(name, value, false); + return arg; + } +} + +ArrayList argValuelist() : +{ + ArrayList args = new ArrayList(); + LexicalUnit argValue; +} +{ + argValue= term(null) { args.add(argValue); } + ( ()* argValue = term(null) + {args.add(argValue);} + )* + {return args;} +} + +void includeDirective() : +{ + String name; + ArrayList args=null; +} +{ + + ()* + (name = property() + |(name = functionName() + args = argValuelist()) )(";"()*)+ + {documentHandler.includeDirective(name, args);} +} + +Node functionDirective() : +{ + String name; + String args = null; + String body; + int[] stops = {RPARAN}; +} +{ + (name=functionName() args = skipStatementUntilRightParan() ) + ()* + body = skipStatement() + { + return null; + } +} + +Node returnDirective() : +{ + String raw; +} +{ + raw = skipStatement() + {return null;} +} + +JAVACODE +void debugDirective(){ +} + +JAVACODE +void warnDirective(){ +} + +Node forDirective() : +{ + String var; + String from; + String to; + boolean exclusive; + String body; + Token tok; +} +{ + var = variableName() + { + int[] toThrough = {TO, THROUGH}; + from = skipStatementUntil(toThrough); + } + (tok = {exclusive = true;} + | tok = {exclusive = false;}) + to = skipStatementUntilLeftBrace() + ()* + body = skipStatement() + {return documentHandler.forDirective(var, from, to, exclusive, body);} +} + +Node eachDirective() : +{ + String var; + String list; + String body; +} +{ + var = variableName() + ()* + list = skipStatementUntilLeftBrace() + body = skipStatement() + { + return documentHandler.eachDirective(var, list, body); + } +} + +Node whileDirective() : +{ + String condition; + String body; +} +{ + condition = skipStatementUntilLeftBrace() + body = skipStatement() + { return documentHandler.whileDirective(condition, body);} +} + +JAVACODE +Node ifDirective(){ + return documentHandler.ifDirective(); +} + +JAVACODE +void elseDirective(){ + // throw new ParseException("Invalid CSS: @else must come after @if"); +} + +void extendDirective() : +{SelectorList list;} +{ + + ()* + list = selectorList() + (";"()*)+ + {documentHandler.extendDirective(list);} +} + +JAVACODE +Node importDirective(){ + return null; +} + +JAVACODE +Node charsetDirective(){ + return null; +} + +JAVACODE +Node mozDocumentDirective(){ + return null; +} + +JAVACODE +Node supportsDirective(){ + return null; +} + + +void nestedProperties(): +{String name; +LexicalUnit exp;} +{ + name=property() + ":" ( )* + ()* + { + documentHandler.startNestedProperties(name); + } + ( declaration() )? ( ";" ( )* ( declaration() )? )* + + { + documentHandler.endNestedProperties(name); + } + ()* +} +/** + * @exception ParseException exception during the parse + */ +void declarationOrNestedProperties() : +{ boolean important = false; + String name; + LexicalUnit exp; + Token save; +} +{ + try { + name=property() + { save = token; } + ":" ( )* + (exp=expr() ( important=prio() )? + { + Token next = getToken(1); + if(next.kind == SEMICOLON || next.kind == RBRACE){ + while(next.kind == SEMICOLON){ + skipStatement(); + next = getToken(1); + } + if(token.specialToken!=null){ + documentHandler.property(name, exp, important, token.specialToken.image); + }else{ + documentHandler.property(name, exp, important, null); + } + } + } + | ()* + { + documentHandler.startNestedProperties(name); + } + ( declaration() )? ( ";" ( )* ( declaration() )? )* + ()* + { + documentHandler.endNestedProperties(name); + } + ) + + } catch (JumpException e) { + skipAfterExpression(); + // reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (NumberFormatException e) { + if (errorHandler != null) { + errorHandler.error(new CSSParseException("Invalid number " + + e.getMessage(), + getLocator(), + e)); + } + reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (ParseException e) { + if (errorHandler != null) { + if (e.currentToken != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + } else { + reportError(getLocator(), e); + } + skipAfterExpression(); + /* + LocatorImpl loc = (LocatorImpl) getLocator(); + loc.column--; + reportWarningSkipText(loc, skipAfterExpression()); + */ + } else { + skipAfterExpression(); + } + } +} + +/** + * @exception ParseException exception during the parse + */ +void declaration() : +{ boolean important = false; + String name; + LexicalUnit exp; + Token save; +} +{ + try { + name=property() + { save = token; } + ":" ( )* exp=expr() ( important=prio() )? + { + documentHandler.property(name, exp, important); + } + } catch (JumpException e) { + skipAfterExpression(); + // reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (NumberFormatException e) { + if (errorHandler != null) { + errorHandler.error(new CSSParseException("Invalid number " + + e.getMessage(), + getLocator(), + e)); + } + reportWarningSkipText(getLocator(), skipAfterExpression()); + } catch (ParseException e) { + if (errorHandler != null) { + if (e.currentToken != null) { + LocatorImpl li = new LocatorImpl(this, + e.currentToken.next.beginLine, + e.currentToken.next.beginColumn-1); + reportError(li, e); + } else { + reportError(getLocator(), e); + } + skipAfterExpression(); + /* + LocatorImpl loc = (LocatorImpl) getLocator(); + loc.column--; + reportWarningSkipText(loc, skipAfterExpression()); + */ + } else { + skipAfterExpression(); + } + } +} + +/** + * @exception ParseException exception during the parse + */ +boolean prio() : +{} +{ + ( )* { return true; } +} + +boolean guarded() : +{} +{ + ()* {return true;} +} + +/** + * @exception ParseException exception during the parse + */ +LexicalUnitImpl operator(LexicalUnitImpl prev) : +{Token n;} +{ +n="/" ( )* { return LexicalUnitImpl.createSlash(n.beginLine, + n.beginColumn, + prev); } +| n="," ( )* { return LexicalUnitImpl.createComma(n.beginLine, + n.beginColumn, + prev); } +} + +/** + * @exception ParseException exception during the parse + */ +LexicalUnit expr() : +{ + LexicalUnitImpl first, res; + char op; +} +{ + first=term(null){ res = first; } + ( LOOKAHEAD(2) ( res=operator(res) )? res=term(res))* + { return first; } +} + +/** + * @exception ParseException exception during the parse + */ +char unaryOperator() : +{} +{ + "-" { return '-'; } +| "+" { return '+'; } +} + +/** + * @exception ParseException exception during the parse + */ +LexicalUnitImpl term(LexicalUnitImpl prev) : +{ LexicalUnitImpl result = null; + Token n = null; + char op = ' '; + String varName; +} +{ + (( ( ( op=unaryOperator() )? + ( + n= + { result = LexicalUnitImpl.createNumber(n.beginLine, n.beginColumn, + prev, number(op, n, 0)); } + | n= + { result = LexicalUnitImpl.createPercentage(n.beginLine, n.beginColumn, + prev, number(op, n, 1)); } + | n= + { result = LexicalUnitImpl.createPT(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createCM(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createMM(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createPC(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createIN(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createPX(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createEMS(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createEXS(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createDEG(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); } + | n= + { result = LexicalUnitImpl.createRAD(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); } + | n= + { result = LexicalUnitImpl.createGRAD(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); } + | n= + { result = LexicalUnitImpl.createS(n.beginLine, n.beginColumn, + prev, number(op, n, 1)); } + | n= + { result = LexicalUnitImpl.createMS(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createHZ(n.beginLine, n.beginColumn, + prev, number(op, n, 2)); } + | n= + { result = LexicalUnitImpl.createKHZ(n.beginLine, n.beginColumn, + prev, number(op, n, 3)); } + | n= + { + String s = n.image; + int i = 0; + while (i < s.length() + && (Character.isDigit(s.charAt(i)) || (s.charAt(i) == '.'))) { + i++; + } + result = LexicalUnitImpl.createDimen(n.beginLine, n.beginColumn, prev, + Float.valueOf(s.substring(0, i)).floatValue(), + s.substring(i)); + } + | result=function(op, prev) ) ) + | ( n= + { result = + LexicalUnitImpl.createString(n.beginLine, n.beginColumn, prev, + convertStringIndex(n.image, 1, + n.image.length() -1));} + | n= + { String s = convertIdent(n.image); + if ("inherit".equals(s)) { + result = LexicalUnitImpl.createInherit(n.beginLine, n.beginColumn, + prev); + } else { + result = LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn, + prev, convertIdent(n.image)); + } + + /* / + Auto correction code used in the CSS Validator but must not + be used by a conformant CSS2 parser. + * Common error : + * H1 { + * color : black + * background : white + * } + * + Token t = getToken(1); + Token semicolon = new Token(); + semicolon.kind = SEMICOLON; + semicolon.image = ";"; + if (t.kind == COLON) { + // @@SEEME. (generate a warning?) + // @@SEEME if expression is a single ident, + generate an error ? + rejectToken(semicolon); + + result = prev; + } + / */ + } + | result=hexcolor(prev) + | result=url(prev) + | result=unicode(prev) + ) ) ( )* + | varName = variableName() + {result = LexicalUnitImpl.createVariable(token.beginLine, token.beginColumn, + prev, varName);}) + { + return result; + } +} + +/** + * Handle all CSS2 functions. + * @exception ParseException exception during the parse + */ +LexicalUnitImpl function(char operator, LexicalUnitImpl prev) : +{Token n; + LexicalUnit params = null; +} +{ + n= ( )* + { + String fname = convertIdent(n.image); + if("alpha(".equals(fname)){ + String body = skipStatementUntilSemiColon(); + return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn, + null, "alpha("+body); + } + } + ( params=expr() )? ")" + { + if (operator != ' ') { + throw new CSSParseException("invalid operator before a function.", + getLocator()); + } + String f = convertIdent(n.image); + LexicalUnitImpl l = (LexicalUnitImpl) params; + boolean loop = true; + if ("rgb(".equals(f)) { + // this is a RGB declaration (e.g. rgb(255, 50%, 0) ) + int i = 0; + while (loop && l != null && i < 5) { + switch (i) { + case 0: + case 2: + case 4: + if ((l.getLexicalUnitType() != LexicalUnit.SAC_INTEGER) + && (l.getLexicalUnitType() != LexicalUnit.SAC_PERCENTAGE)) { + loop = false; + } + break; + case 1: + case 3: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + throw new ParseException("implementation error"); + } + if (loop) { + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + } + if ((i == 5) && loop && (l == null)) { + return LexicalUnitImpl.createRGBColor(n.beginLine, + n.beginColumn, + prev, params); + } else { + if (errorHandler != null) { + String errorText; + Locator loc; + if (i < 5) { + if (params == null) { + loc = new LocatorImpl(this, n.beginLine, + n.beginColumn-1); + errorText = "not enough parameters."; + } else if (l == null) { + loc = new LocatorImpl(this, n.beginLine, + n.beginColumn-1); + errorText = "not enough parameters: " + + params.toString(); + } else { + loc = new LocatorImpl(this, l.getLineNumber(), + l.getColumnNumber()); + errorText = "invalid parameter: " + + l.toString(); + } + } else { + loc = new LocatorImpl(this, l.getLineNumber(), + l.getColumnNumber()); + errorText = "too many parameters: " + + l.toString(); + } + errorHandler.error(new CSSParseException(errorText, loc)); + } + + throw new JumpException(); + } + } else if ("counter".equals(f)) { + int i = 0; + while (loop && l != null && i < 3) { + switch (i) { + case 0: + case 2: + if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) { + loop = false; + } + break; + case 1: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + throw new ParseException("implementation error"); + } + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + if (((i == 1) || (i == 3)) && loop && (l == null)) { + return LexicalUnitImpl.createCounter(n.beginLine, n.beginColumn, + prev, params); + } + + } else if ("counters(".equals(f)) { + + int i = 0; + while (loop && l != null && i < 5) { + switch (i) { + case 0: + case 4: + if (l.getLexicalUnitType() != LexicalUnit.SAC_IDENT) { + loop = false; + } + break; + case 2: + if (l.getLexicalUnitType() != LexicalUnit.SAC_STRING_VALUE) { + loop = false; + } + break; + case 1: + case 3: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + throw new ParseException("implementation error"); + } + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + if (((i == 3) || (i == 5)) && loop && (l == null)) { + return LexicalUnitImpl.createCounters(n.beginLine, n.beginColumn, + prev, params); + } + } else if ("attr(".equals(f)) { + if ((l != null) + && (l.getNextLexicalUnit() == null) + && (l.getLexicalUnitType() == LexicalUnit.SAC_IDENT)) { + return LexicalUnitImpl.createAttr(l.getLineNumber(), + l.getColumnNumber(), + prev, l.getStringValue()); + } + } else if ("rect(".equals(f)) { + int i = 0; + while (loop && l != null && i < 7) { + switch (i) { + case 0: + case 2: + case 4: + case 6: + switch (l.getLexicalUnitType()) { + case LexicalUnit.SAC_INTEGER: + if (l.getIntegerValue() != 0) { + loop = false; + } + break; + case LexicalUnit.SAC_IDENT: + if (!l.getStringValue().equals("auto")) { + loop = false; + } + break; + case LexicalUnit.SAC_EM: + case LexicalUnit.SAC_EX: + case LexicalUnit.SAC_PIXEL: + case LexicalUnit.SAC_CENTIMETER: + case LexicalUnit.SAC_MILLIMETER: + case LexicalUnit.SAC_INCH: + case LexicalUnit.SAC_POINT: + case LexicalUnit.SAC_PICA: + // nothing + break; + default: + loop = false; + } + break; + case 1: + case 3: + case 5: + if (l.getLexicalUnitType() != LexicalUnit.SAC_OPERATOR_COMMA) { + loop = false; + } + break; + default: + throw new ParseException("implementation error"); + } + l = (LexicalUnitImpl) l.getNextLexicalUnit(); + i ++; + } + if ((i == 7) && loop && (l == null)) { + return LexicalUnitImpl.createRect(n.beginLine, n.beginColumn, + prev, params); + } + } + return LexicalUnitImpl.createFunction(n.beginLine, n.beginColumn, prev, + f.substring(0, + f.length() -1), + params); + } +} + +LexicalUnitImpl unicode(LexicalUnitImpl prev) : +{ Token n; +} +{ + n= + { + LexicalUnitImpl params = null; + String s = n.image.substring(2); + int index = s.indexOf('-'); + if (index == -1) { + params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn, + params, Integer.parseInt(s, 16)); + } else { + String s1 = s.substring(0, index); + String s2 = s.substring(index); + + params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn, + params, Integer.parseInt(s1, 16)); + params = LexicalUnitImpl.createInteger(n.beginLine, n.beginColumn, + params, Integer.parseInt(s2, 16)); + } + + return LexicalUnitImpl.createUnicodeRange(n.beginLine, n.beginColumn, + prev, params); + } +} + +LexicalUnitImpl url(LexicalUnitImpl prev) : +{ Token n; +} +{ + n= + { + String urlname = n.image.substring(4, n.image.length()-1).trim(); + if (urlname.charAt(0) == '"' + || urlname.charAt(0) == '\'') { + urlname = urlname.substring(1, urlname.length()-1); + } + return LexicalUnitImpl.createURL(n.beginLine, n.beginColumn, prev, urlname); + } +} + +/** + * @exception ParseException exception during the parse + */ +LexicalUnitImpl hexcolor(LexicalUnitImpl prev) : +{Token n; +} +{ + n= + { + int r; + LexicalUnitImpl first, params = null; + String s = n.image.substring(1); + + if(s.length()!=3 && s.length()!=6) { + first = null; + throw new CSSParseException("invalid hexadecimal notation for RGB: " + s, + getLocator()); + } + return LexicalUnitImpl.createIdent(n.beginLine, n.beginColumn, + prev, n.image); + } +} + +JAVACODE +float number(char operator, Token n, int lengthUnit) { + String image = n.image; + float f = 0; + + if (lengthUnit != 0) { + image = image.substring(0, image.length() - lengthUnit); + } + f = Float.valueOf(image).floatValue(); + return (operator == '-')? -f: f; +} + +JAVACODE +String skipStatementUntilSemiColon(){ + int[] semicolon = {SEMICOLON}; + return skipStatementUntil(semicolon); +} + +JAVACODE +String skipStatementUntilLeftBrace(){ + int[] lBrace = {LBRACE}; + return skipStatementUntil(lBrace); +} + +JAVACODE +String skipStatementUntilRightParan(){ + int[] rParan = {RPARAN}; + return skipStatementUntil(rParan); +} + +JAVACODE +String skipStatementUntil(int[] symbols){ + StringBuffer s = new StringBuffer(); + boolean stop = false; + Token tok; + while(!stop){ + tok = getToken(1); + if(tok.kind == EOF) { + return null; + } + for(int sym : symbols){ + if(tok.kind == sym){ + stop = true; + break; + } + } + if(!stop){ + if (tok.image != null) { + s.append(tok.image); + } + getNextToken(); + } + } + return s.toString().trim(); +} + +JAVACODE +String skipStatement() { + StringBuffer s = new StringBuffer(); + Token tok = getToken(0); + if (tok.image != null) { + s.append(tok.image); + } + while (true) { + tok = getToken(1); + if (tok.kind == EOF) { + return null; + } + s.append(tok.image); + if (tok.kind == LBRACE) { + getNextToken(); + s.append(skip_to_matching_brace()); + getNextToken(); + tok = getToken(1); + break; + } else if (tok.kind == RBRACE) { + getNextToken(); + tok = getToken(1); + break; + } else if (tok.kind == SEMICOLON) { + getNextToken(); + tok = getToken(1); + break; + } + getNextToken(); + } + + // skip white space + while (true) { + if (tok.kind != S) { + break; + } + tok = getNextToken(); + tok = getToken(1); + } + + return s.toString().trim(); +} + +JAVACODE +String skip_to_matching_brace() { + StringBuffer s = new StringBuffer(); + Token tok; + int nesting = 1; + while (true) { + tok = getToken(1); + if (tok.kind == EOF) { + break; + } + s.append(tok.image); + if (tok.kind == LBRACE) { + nesting++; + } else if (tok.kind == RBRACE) { + nesting--; + if (nesting == 0) { + break; + } + } + getNextToken(); + } + return s.toString(); +} + +/* + * Here I handle all CSS2 unicode character stuffs. + * I convert all \XXXXXX character into a single character. + * Don't forget that the parser has recognize the token before. + * (So IDENT won't contain newline and stuffs like this). + */ +JAVACODE +String convertStringIndex(String s, int start, int len) { + StringBuffer buf = new StringBuffer(len); + int index = start; + + while (index < len) { + char c = s.charAt(index); + if (c == '\\') { + if (++index < len) { + c = s.charAt(index); + switch (c) { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': + case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': + int numValue = Character.digit(c, 16); + int count = 0; + int p = 16; + + while (index + 1 < len && count < 6) { + c = s.charAt(index+1); + + if (Character.digit(c, 16) != -1) { + numValue = (numValue * 16) + Character.digit(c, 16); + p *= 16; + index++; + } else { + if (c == ' ') { + // skip the latest white space + index++; + } + break; + } + } + buf.append((char) numValue); + break; + case '\n': + case '\f': + break; + case '\r': + if (index + 1 < len) { + if (s.charAt(index + 1) == '\n') { + index ++; + } + } + break; + default: + buf.append(c); + } + } else { + throw new CSSParseException("invalid string " + s, getLocator()); + } + } else { + buf.append(c); + } + index++; + } + + return buf.toString(); +} + +JAVACODE +String convertIdent(String s) { + return convertStringIndex(s, 0, s.length()); +} + +JAVACODE +String convertString(String s) { + return convertStringIndex(s, 0, s.length()); +} + +/* + * @@HACK + * I can't insert a token into the tokens flow. + * It's jj_consume_token implementation dependant! :-( + */ +JAVACODE +void rejectToken(Token t) { + Token fakeToken = new Token(); + t.next = token; + fakeToken.next = t; + token = fakeToken; +} + +/** + * skip after an expression + */ +JAVACODE +String skipAfterExpression() { + Token t = getToken(1); + StringBuffer s = new StringBuffer(); + s.append(getToken(0).image); + + while ((t.kind != RBRACE) && (t.kind != SEMICOLON) && (t.kind != EOF)) { + s.append(t.image); + getNextToken(); + t = getToken(1); + } + + return s.toString(); +} + +/** + * The following functions are useful for a DOM CSS implementation only and are + * not part of the general CSS2 parser. + */ + +void _parseRule() : +{String ret = null; +} +{ + ( )* + ( importDeclaration() | styleRule() | media() | page() + | fontFace() | ret=skipStatement() + { + if ((ret == null) || (ret.length() == 0)) { + return; + } + if (ret.charAt(0) == '@') { + documentHandler.ignorableAtRule(ret); + } else { + throw new CSSParseException("unrecognize rule: " + ret, + getLocator()); + } + } + ) +} + +void _parseImportRule() : +{ +} +{ + ( )* importDeclaration() +} + +void _parseMediaRule() : +{ +} +{ + ( )* media() +} + +void _parseDeclarationBlock() : +{ +} +{ + ( )* + ( declaration() )? ( ";" ( )* ( declaration() )? )* + } + +SelectorList _parseSelectors() : +{ SelectorList p = null; +} +{ + try { + ( )* p = selectorList() + { return p; } + } catch (ThrowedParseException e) { + throw (ParseException) e.e.fillInStackTrace(); + } +} + +/* + * Local Variables: + * compile-command: javacc Parser.jj & javac Parser.java + * End: + */ diff --git a/sass/src/com/vaadin/sass/parser/ParserConstants.java b/sass/src/com/vaadin/sass/parser/ParserConstants.java new file mode 100644 index 0000000000..47ea52435d --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/ParserConstants.java @@ -0,0 +1,323 @@ +/* Generated By:JavaCC: Do not edit this line. ParserConstants.java */ +package com.vaadin.sass.parser; + + +/** + * Token literal values and constants. + * Generated by org.javacc.parser.OtherFilesGen#start() + */ +public interface ParserConstants { + + /** End of File. */ + int EOF = 0; + /** RegularExpression Id. */ + int S = 1; + /** RegularExpression Id. */ + int INTERPOLATION = 4; + /** RegularExpression Id. */ + int FORMAL_COMMENT = 10; + /** RegularExpression Id. */ + int MULTI_LINE_COMMENT = 11; + /** RegularExpression Id. */ + int CDO = 13; + /** RegularExpression Id. */ + int CDC = 14; + /** RegularExpression Id. */ + int LBRACE = 15; + /** RegularExpression Id. */ + int RBRACE = 16; + /** RegularExpression Id. */ + int DASHMATCH = 17; + /** RegularExpression Id. */ + int INCLUDES = 18; + /** RegularExpression Id. */ + int EQ = 19; + /** RegularExpression Id. */ + int PLUS = 20; + /** RegularExpression Id. */ + int MINUS = 21; + /** RegularExpression Id. */ + int COMMA = 22; + /** RegularExpression Id. */ + int SEMICOLON = 23; + /** RegularExpression Id. */ + int PRECEDES = 24; + /** RegularExpression Id. */ + int DIV = 25; + /** RegularExpression Id. */ + int LBRACKET = 26; + /** RegularExpression Id. */ + int RBRACKET = 27; + /** RegularExpression Id. */ + int ANY = 28; + /** RegularExpression Id. */ + int PARENT = 29; + /** RegularExpression Id. */ + int DOT = 30; + /** RegularExpression Id. */ + int LPARAN = 31; + /** RegularExpression Id. */ + int RPARAN = 32; + /** RegularExpression Id. */ + int COLON = 33; + /** RegularExpression Id. */ + int NONASCII = 34; + /** RegularExpression Id. */ + int H = 35; + /** RegularExpression Id. */ + int UNICODE = 36; + /** RegularExpression Id. */ + int ESCAPE = 37; + /** RegularExpression Id. */ + int NMSTART = 38; + /** RegularExpression Id. */ + int NMCHAR = 39; + /** RegularExpression Id. */ + int STRINGCHAR = 40; + /** RegularExpression Id. */ + int D = 41; + /** RegularExpression Id. */ + int NAME = 42; + /** RegularExpression Id. */ + int TO = 43; + /** RegularExpression Id. */ + int THROUGH = 44; + /** RegularExpression Id. */ + int EACH_IN = 45; + /** RegularExpression Id. */ + int MIXIN_SYM = 46; + /** RegularExpression Id. */ + int INCLUDE_SYM = 47; + /** RegularExpression Id. */ + int FUNCTION_SYM = 48; + /** RegularExpression Id. */ + int RETURN_SYM = 49; + /** RegularExpression Id. */ + int DEBUG_SYM = 50; + /** RegularExpression Id. */ + int WARN_SYM = 51; + /** RegularExpression Id. */ + int FOR_SYM = 52; + /** RegularExpression Id. */ + int EACH_SYM = 53; + /** RegularExpression Id. */ + int WHILE_SYM = 54; + /** RegularExpression Id. */ + int IF_SYM = 55; + /** RegularExpression Id. */ + int ELSE_SYM = 56; + /** RegularExpression Id. */ + int EXTEND_SYM = 57; + /** RegularExpression Id. */ + int MOZ_DOCUMENT_SYM = 58; + /** RegularExpression Id. */ + int SUPPORTS_SYM = 59; + /** RegularExpression Id. */ + int GUARDED_SYM = 60; + /** RegularExpression Id. */ + int STRING = 61; + /** RegularExpression Id. */ + int IDENT = 62; + /** RegularExpression Id. */ + int NUMBER = 63; + /** RegularExpression Id. */ + int _URL = 64; + /** RegularExpression Id. */ + int URL = 65; + /** RegularExpression Id. */ + int VARIABLE = 66; + /** RegularExpression Id. */ + int PERCENTAGE = 67; + /** RegularExpression Id. */ + int PT = 68; + /** RegularExpression Id. */ + int MM = 69; + /** RegularExpression Id. */ + int CM = 70; + /** RegularExpression Id. */ + int PC = 71; + /** RegularExpression Id. */ + int IN = 72; + /** RegularExpression Id. */ + int PX = 73; + /** RegularExpression Id. */ + int EMS = 74; + /** RegularExpression Id. */ + int EXS = 75; + /** RegularExpression Id. */ + int DEG = 76; + /** RegularExpression Id. */ + int RAD = 77; + /** RegularExpression Id. */ + int GRAD = 78; + /** RegularExpression Id. */ + int MS = 79; + /** RegularExpression Id. */ + int SECOND = 80; + /** RegularExpression Id. */ + int HZ = 81; + /** RegularExpression Id. */ + int KHZ = 82; + /** RegularExpression Id. */ + int DIMEN = 83; + /** RegularExpression Id. */ + int HASH = 84; + /** RegularExpression Id. */ + int IMPORT_SYM = 85; + /** RegularExpression Id. */ + int MEDIA_SYM = 86; + /** RegularExpression Id. */ + int CHARSET_SYM = 87; + /** RegularExpression Id. */ + int PAGE_SYM = 88; + /** RegularExpression Id. */ + int FONT_FACE_SYM = 89; + /** RegularExpression Id. */ + int ATKEYWORD = 90; + /** RegularExpression Id. */ + int IMPORTANT_SYM = 91; + /** RegularExpression Id. */ + int RANGE0 = 92; + /** RegularExpression Id. */ + int RANGE1 = 93; + /** RegularExpression Id. */ + int RANGE2 = 94; + /** RegularExpression Id. */ + int RANGE3 = 95; + /** RegularExpression Id. */ + int RANGE4 = 96; + /** RegularExpression Id. */ + int RANGE5 = 97; + /** RegularExpression Id. */ + int RANGE6 = 98; + /** RegularExpression Id. */ + int RANGE = 99; + /** RegularExpression Id. */ + int UNI = 100; + /** RegularExpression Id. */ + int UNICODERANGE = 101; + /** RegularExpression Id. */ + int FUNCTION = 102; + /** RegularExpression Id. */ + int UNKNOWN = 103; + + /** Lexical state. */ + int DEFAULT = 0; + /** Lexical state. */ + int IN_INTERPOLATION = 1; + /** Lexical state. */ + int IN_SINGLE_LINE_COMMENT = 2; + /** Lexical state. */ + int IN_FORMAL_COMMENT = 3; + /** Lexical state. */ + int IN_MULTI_LINE_COMMENT = 4; + + /** Literal token values. */ + String[] tokenImage = { + "", + "", + "\"#{\"", + "", + "\"}\"", + "\"//\"", + "", + "", + "", + "\"/*\"", + "\"*/\"", + "\"*/\"", + "", + "\"\"", + "\"{\"", + "\"}\"", + "\"|=\"", + "\"~=\"", + "\"=\"", + "\"+\"", + "\"-\"", + "\",\"", + "\";\"", + "\">\"", + "\"/\"", + "\"[\"", + "\"]\"", + "\"*\"", + "\"&\"", + "\".\"", + "\"(\"", + "\")\"", + "\":\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"to\"", + "\"through\"", + "\"in\"", + "\"@mixin\"", + "\"@include\"", + "\"@function\"", + "\"@return\"", + "\"@debug\"", + "\"@warn\"", + "\"@for\"", + "\"@each\"", + "\"@while\"", + "\"@if\"", + "\"@else\"", + "\"@extend\"", + "\"@-moz-document\"", + "\"@supports\"", + "", + "", + "", + "", + "<_URL>", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"@import\"", + "\"@media\"", + "\"@charset\"", + "\"@page\"", + "\"@font-face\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + }; + +} diff --git a/sass/src/com/vaadin/sass/parser/ParserTokenManager.java b/sass/src/com/vaadin/sass/parser/ParserTokenManager.java new file mode 100644 index 0000000000..b527a99748 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/ParserTokenManager.java @@ -0,0 +1,4286 @@ +/* Generated By:JavaCC: Do not edit this line. ParserTokenManager.java */ +package com.vaadin.sass.parser; +import java.io.*; +import java.net.*; +import java.util.ArrayList; +import java.util.Locale; +import java.util.Map; +import org.w3c.css.sac.ConditionFactory; +import org.w3c.css.sac.Condition; +import org.w3c.css.sac.SelectorFactory; +import org.w3c.css.sac.SelectorList; +import org.w3c.css.sac.Selector; +import org.w3c.css.sac.SimpleSelector; +import org.w3c.css.sac.DocumentHandler; +import org.w3c.css.sac.InputSource; +import org.w3c.css.sac.ErrorHandler; +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.CSSParseException; +import org.w3c.css.sac.Locator; +import org.w3c.css.sac.LexicalUnit; +import org.w3c.flute.parser.selectors.SelectorFactoryImpl; +import org.w3c.flute.parser.selectors.ConditionFactoryImpl; +import org.w3c.flute.util.Encoding; +import com.vaadin.sass.handler.*; +import com.vaadin.sass.tree.*; + +/** Token Manager. */ +public class ParserTokenManager implements ParserConstants +{ + + /** Debug output. */ + public java.io.PrintStream debugStream = System.out; + /** Set debug output. */ + public void setDebugStream(java.io.PrintStream ds) { debugStream = ds; } +private final int jjStopStringLiteralDfa_0(int pos, long active0, long active1) +{ + switch (pos) + { + case 0: + if ((active0 & 0x380000000000L) != 0L) + { + jjmatchedKind = 62; + return 375; + } + if ((active0 & 0x204000L) != 0L) + return 134; + if ((active0 & 0x40000000L) != 0L) + return 376; + if ((active0 & 0x2000220L) != 0L) + return 3; + if ((active0 & 0xfffc00000000000L) != 0L || (active1 & 0x3e00000L) != 0L) + return 72; + if ((active0 & 0x4L) != 0L) + return 377; + return -1; + case 1: + if ((active0 & 0x400000000000000L) != 0L) + return 73; + if ((active0 & 0xbffc00000000000L) != 0L || (active1 & 0x3e00000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 1; + return 378; + } + if ((active0 & 0x100000000000L) != 0L) + { + jjmatchedKind = 62; + jjmatchedPos = 1; + return 375; + } + if ((active0 & 0x200L) != 0L) + return 1; + if ((active0 & 0x280000000000L) != 0L) + return 375; + return -1; + case 2: + if ((active0 & 0x80000000000000L) != 0L) + return 378; + if ((active0 & 0x100000000000L) != 0L) + { + jjmatchedKind = 62; + jjmatchedPos = 2; + return 375; + } + if ((active0 & 0xf7fc00000000000L) != 0L || (active1 & 0x3e00000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 2; + return 378; + } + return -1; + case 3: + if ((active0 & 0x10000000000000L) != 0L) + return 378; + if ((active0 & 0xf6fc00000000000L) != 0L || (active1 & 0x3e00000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 3; + return 378; + } + if ((active0 & 0x100000000000L) != 0L) + { + jjmatchedKind = 62; + jjmatchedPos = 3; + return 375; + } + return -1; + case 4: + if ((active0 & 0xe47c00000000000L) != 0L || (active1 & 0x2e00000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 4; + return 378; + } + if ((active0 & 0x128000000000000L) != 0L || (active1 & 0x1000000L) != 0L) + return 378; + if ((active0 & 0x100000000000L) != 0L) + { + jjmatchedKind = 62; + jjmatchedPos = 4; + return 375; + } + return -1; + case 5: + if ((active0 & 0x100000000000L) != 0L) + { + jjmatchedKind = 62; + jjmatchedPos = 5; + return 375; + } + if ((active0 & 0x44400000000000L) != 0L || (active1 & 0x400000L) != 0L) + return 378; + if ((active0 & 0xe03800000000000L) != 0L || (active1 & 0x2a00000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 5; + return 378; + } + return -1; + case 6: + if ((active0 & 0x202000000000000L) != 0L || (active1 & 0x200000L) != 0L) + return 378; + if ((active0 & 0xc01800000000000L) != 0L || (active1 & 0x2800000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 6; + return 378; + } + if ((active0 & 0x100000000000L) != 0L) + return 375; + return -1; + case 7: + if ((active0 & 0xc01000000000000L) != 0L || (active1 & 0x2000000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 7; + return 378; + } + if ((active0 & 0x800000000000L) != 0L || (active1 & 0x800000L) != 0L) + return 378; + return -1; + case 8: + if ((active0 & 0x801000000000000L) != 0L) + return 378; + if ((active0 & 0x400000000000000L) != 0L || (active1 & 0x2000000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 8; + return 378; + } + return -1; + case 9: + if ((active1 & 0x2000000L) != 0L) + return 378; + if ((active0 & 0x400000000000000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 9; + return 378; + } + return -1; + case 10: + if ((active0 & 0x400000000000000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 10; + return 378; + } + return -1; + case 11: + if ((active0 & 0x400000000000000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 11; + return 378; + } + return -1; + case 12: + if ((active0 & 0x400000000000000L) != 0L) + { + jjmatchedKind = 90; + jjmatchedPos = 12; + return 378; + } + return -1; + default : + return -1; + } +} +private final int jjStartNfa_0(int pos, long active0, long active1) +{ + return jjMoveNfa_0(jjStopStringLiteralDfa_0(pos, active0, active1), pos + 1); +} +private int jjStopAtPos(int pos, int kind) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + return pos + 1; +} +private int jjMoveStringLiteralDfa0_0() +{ + switch(curChar) + { + case 35: + return jjMoveStringLiteralDfa1_0(0x4L, 0x0L); + case 38: + return jjStopAtPos(0, 29); + case 40: + return jjStopAtPos(0, 31); + case 41: + return jjStopAtPos(0, 32); + case 42: + return jjStopAtPos(0, 28); + case 43: + return jjStopAtPos(0, 20); + case 44: + return jjStopAtPos(0, 22); + case 45: + jjmatchedKind = 21; + return jjMoveStringLiteralDfa1_0(0x4000L, 0x0L); + case 46: + return jjStartNfaWithStates_0(0, 30, 376); + case 47: + jjmatchedKind = 25; + return jjMoveStringLiteralDfa1_0(0x220L, 0x0L); + case 58: + return jjStopAtPos(0, 33); + case 59: + return jjStopAtPos(0, 23); + case 60: + return jjMoveStringLiteralDfa1_0(0x2000L, 0x0L); + case 61: + return jjStopAtPos(0, 19); + case 62: + return jjStopAtPos(0, 24); + case 64: + return jjMoveStringLiteralDfa1_0(0xfffc00000000000L, 0x3e00000L); + case 91: + return jjStopAtPos(0, 26); + case 93: + return jjStopAtPos(0, 27); + case 73: + case 105: + return jjMoveStringLiteralDfa1_0(0x200000000000L, 0x0L); + case 84: + case 116: + return jjMoveStringLiteralDfa1_0(0x180000000000L, 0x0L); + case 123: + return jjStopAtPos(0, 15); + case 124: + return jjMoveStringLiteralDfa1_0(0x20000L, 0x0L); + case 125: + return jjStopAtPos(0, 16); + case 126: + return jjMoveStringLiteralDfa1_0(0x40000L, 0x0L); + default : + return jjMoveNfa_0(4, 0); + } +} +private int jjMoveStringLiteralDfa1_0(long active0, long active1) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(0, active0, active1); + return 1; + } + switch(curChar) + { + case 33: + return jjMoveStringLiteralDfa2_0(active0, 0x2000L, active1, 0L); + case 42: + if ((active0 & 0x200L) != 0L) + return jjStartNfaWithStates_0(1, 9, 1); + break; + case 45: + return jjMoveStringLiteralDfa2_0(active0, 0x400000000004000L, active1, 0L); + case 47: + if ((active0 & 0x20L) != 0L) + return jjStopAtPos(1, 5); + break; + case 61: + if ((active0 & 0x20000L) != 0L) + return jjStopAtPos(1, 17); + else if ((active0 & 0x40000L) != 0L) + return jjStopAtPos(1, 18); + break; + case 67: + case 99: + return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x800000L); + case 68: + case 100: + return jjMoveStringLiteralDfa2_0(active0, 0x4000000000000L, active1, 0L); + case 69: + case 101: + return jjMoveStringLiteralDfa2_0(active0, 0x320000000000000L, active1, 0L); + case 70: + case 102: + return jjMoveStringLiteralDfa2_0(active0, 0x11000000000000L, active1, 0x2000000L); + case 72: + case 104: + return jjMoveStringLiteralDfa2_0(active0, 0x100000000000L, active1, 0L); + case 73: + case 105: + return jjMoveStringLiteralDfa2_0(active0, 0x80800000000000L, active1, 0x200000L); + case 77: + case 109: + return jjMoveStringLiteralDfa2_0(active0, 0x400000000000L, active1, 0x400000L); + case 78: + case 110: + if ((active0 & 0x200000000000L) != 0L) + return jjStartNfaWithStates_0(1, 45, 375); + break; + case 79: + case 111: + if ((active0 & 0x80000000000L) != 0L) + return jjStartNfaWithStates_0(1, 43, 375); + break; + case 80: + case 112: + return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0x1000000L); + case 82: + case 114: + return jjMoveStringLiteralDfa2_0(active0, 0x2000000000000L, active1, 0L); + case 83: + case 115: + return jjMoveStringLiteralDfa2_0(active0, 0x800000000000000L, active1, 0L); + case 87: + case 119: + return jjMoveStringLiteralDfa2_0(active0, 0x48000000000000L, active1, 0L); + case 123: + if ((active0 & 0x4L) != 0L) + return jjStopAtPos(1, 2); + break; + default : + break; + } + return jjStartNfa_0(0, active0, active1); +} +private int jjMoveStringLiteralDfa2_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(0, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(1, active0, active1); + return 2; + } + switch(curChar) + { + case 45: + return jjMoveStringLiteralDfa3_0(active0, 0x2000L, active1, 0L); + case 62: + if ((active0 & 0x4000L) != 0L) + return jjStopAtPos(2, 14); + break; + case 65: + case 97: + return jjMoveStringLiteralDfa3_0(active0, 0x28000000000000L, active1, 0x1000000L); + case 69: + case 101: + return jjMoveStringLiteralDfa3_0(active0, 0x6000000000000L, active1, 0x400000L); + case 70: + case 102: + if ((active0 & 0x80000000000000L) != 0L) + return jjStartNfaWithStates_0(2, 55, 378); + break; + case 72: + case 104: + return jjMoveStringLiteralDfa3_0(active0, 0x40000000000000L, active1, 0x800000L); + case 73: + case 105: + return jjMoveStringLiteralDfa3_0(active0, 0x400000000000L, active1, 0L); + case 76: + case 108: + return jjMoveStringLiteralDfa3_0(active0, 0x100000000000000L, active1, 0L); + case 77: + case 109: + return jjMoveStringLiteralDfa3_0(active0, 0x400000000000000L, active1, 0x200000L); + case 78: + case 110: + return jjMoveStringLiteralDfa3_0(active0, 0x800000000000L, active1, 0L); + case 79: + case 111: + return jjMoveStringLiteralDfa3_0(active0, 0x10000000000000L, active1, 0x2000000L); + case 82: + case 114: + return jjMoveStringLiteralDfa3_0(active0, 0x100000000000L, active1, 0L); + case 85: + case 117: + return jjMoveStringLiteralDfa3_0(active0, 0x801000000000000L, active1, 0L); + case 88: + case 120: + return jjMoveStringLiteralDfa3_0(active0, 0x200000000000000L, active1, 0L); + default : + break; + } + return jjStartNfa_0(1, active0, active1); +} +private int jjMoveStringLiteralDfa3_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(1, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(2, active0, active1); + return 3; + } + switch(curChar) + { + case 45: + if ((active0 & 0x2000L) != 0L) + return jjStopAtPos(3, 13); + break; + case 65: + case 97: + return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x800000L); + case 66: + case 98: + return jjMoveStringLiteralDfa4_0(active0, 0x4000000000000L, active1, 0L); + case 67: + case 99: + return jjMoveStringLiteralDfa4_0(active0, 0x20800000000000L, active1, 0L); + case 68: + case 100: + return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x400000L); + case 71: + case 103: + return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x1000000L); + case 73: + case 105: + return jjMoveStringLiteralDfa4_0(active0, 0x40000000000000L, active1, 0L); + case 78: + case 110: + return jjMoveStringLiteralDfa4_0(active0, 0x1000000000000L, active1, 0x2000000L); + case 79: + case 111: + return jjMoveStringLiteralDfa4_0(active0, 0x400100000000000L, active1, 0L); + case 80: + case 112: + return jjMoveStringLiteralDfa4_0(active0, 0x800000000000000L, active1, 0x200000L); + case 82: + case 114: + if ((active0 & 0x10000000000000L) != 0L) + return jjStartNfaWithStates_0(3, 52, 378); + return jjMoveStringLiteralDfa4_0(active0, 0x8000000000000L, active1, 0L); + case 83: + case 115: + return jjMoveStringLiteralDfa4_0(active0, 0x100000000000000L, active1, 0L); + case 84: + case 116: + return jjMoveStringLiteralDfa4_0(active0, 0x202000000000000L, active1, 0L); + case 88: + case 120: + return jjMoveStringLiteralDfa4_0(active0, 0x400000000000L, active1, 0L); + default : + break; + } + return jjStartNfa_0(2, active0, active1); +} +private int jjMoveStringLiteralDfa4_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(2, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(3, active0, active1); + return 4; + } + switch(curChar) + { + case 67: + case 99: + return jjMoveStringLiteralDfa5_0(active0, 0x1000000000000L, active1, 0L); + case 69: + case 101: + if ((active0 & 0x100000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 56, 378); + else if ((active1 & 0x1000000L) != 0L) + return jjStartNfaWithStates_0(4, 88, 378); + return jjMoveStringLiteralDfa5_0(active0, 0x200000000000000L, active1, 0L); + case 72: + case 104: + if ((active0 & 0x20000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 53, 378); + break; + case 73: + case 105: + return jjMoveStringLiteralDfa5_0(active0, 0x400000000000L, active1, 0x400000L); + case 76: + case 108: + return jjMoveStringLiteralDfa5_0(active0, 0x40800000000000L, active1, 0L); + case 78: + case 110: + if ((active0 & 0x8000000000000L) != 0L) + return jjStartNfaWithStates_0(4, 51, 378); + break; + case 79: + case 111: + return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x200000L); + case 80: + case 112: + return jjMoveStringLiteralDfa5_0(active0, 0x800000000000000L, active1, 0L); + case 82: + case 114: + return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x800000L); + case 84: + case 116: + return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x2000000L); + case 85: + case 117: + return jjMoveStringLiteralDfa5_0(active0, 0x6100000000000L, active1, 0L); + case 90: + case 122: + return jjMoveStringLiteralDfa5_0(active0, 0x400000000000000L, active1, 0L); + default : + break; + } + return jjStartNfa_0(3, active0, active1); +} +private int jjMoveStringLiteralDfa5_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(3, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(4, active0, active1); + return 5; + } + switch(curChar) + { + case 45: + return jjMoveStringLiteralDfa6_0(active0, 0x400000000000000L, active1, 0x2000000L); + case 65: + case 97: + if ((active1 & 0x400000L) != 0L) + return jjStartNfaWithStates_0(5, 86, 378); + break; + case 69: + case 101: + if ((active0 & 0x40000000000000L) != 0L) + return jjStartNfaWithStates_0(5, 54, 378); + break; + case 71: + case 103: + if ((active0 & 0x4000000000000L) != 0L) + return jjStartNfaWithStates_0(5, 50, 378); + return jjMoveStringLiteralDfa6_0(active0, 0x100000000000L, active1, 0L); + case 78: + case 110: + if ((active0 & 0x400000000000L) != 0L) + return jjStartNfaWithStates_0(5, 46, 378); + return jjMoveStringLiteralDfa6_0(active0, 0x200000000000000L, active1, 0L); + case 79: + case 111: + return jjMoveStringLiteralDfa6_0(active0, 0x800000000000000L, active1, 0L); + case 82: + case 114: + return jjMoveStringLiteralDfa6_0(active0, 0x2000000000000L, active1, 0x200000L); + case 83: + case 115: + return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800000L); + case 84: + case 116: + return jjMoveStringLiteralDfa6_0(active0, 0x1000000000000L, active1, 0L); + case 85: + case 117: + return jjMoveStringLiteralDfa6_0(active0, 0x800000000000L, active1, 0L); + default : + break; + } + return jjStartNfa_0(4, active0, active1); +} +private int jjMoveStringLiteralDfa6_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(4, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(5, active0, active1); + return 6; + } + switch(curChar) + { + case 68: + case 100: + if ((active0 & 0x200000000000000L) != 0L) + return jjStartNfaWithStates_0(6, 57, 378); + return jjMoveStringLiteralDfa7_0(active0, 0x400800000000000L, active1, 0L); + case 69: + case 101: + return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x800000L); + case 70: + case 102: + return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2000000L); + case 72: + case 104: + if ((active0 & 0x100000000000L) != 0L) + return jjStartNfaWithStates_0(6, 44, 375); + break; + case 73: + case 105: + return jjMoveStringLiteralDfa7_0(active0, 0x1000000000000L, active1, 0L); + case 78: + case 110: + if ((active0 & 0x2000000000000L) != 0L) + return jjStartNfaWithStates_0(6, 49, 378); + break; + case 82: + case 114: + return jjMoveStringLiteralDfa7_0(active0, 0x800000000000000L, active1, 0L); + case 84: + case 116: + if ((active1 & 0x200000L) != 0L) + return jjStartNfaWithStates_0(6, 85, 378); + break; + default : + break; + } + return jjStartNfa_0(5, active0, active1); +} +private int jjMoveStringLiteralDfa7_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(5, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(6, active0, active1); + return 7; + } + switch(curChar) + { + case 65: + case 97: + return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x2000000L); + case 69: + case 101: + if ((active0 & 0x800000000000L) != 0L) + return jjStartNfaWithStates_0(7, 47, 378); + break; + case 79: + case 111: + return jjMoveStringLiteralDfa8_0(active0, 0x401000000000000L, active1, 0L); + case 84: + case 116: + if ((active1 & 0x800000L) != 0L) + return jjStartNfaWithStates_0(7, 87, 378); + return jjMoveStringLiteralDfa8_0(active0, 0x800000000000000L, active1, 0L); + default : + break; + } + return jjStartNfa_0(6, active0, active1); +} +private int jjMoveStringLiteralDfa8_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(6, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(7, active0, active1); + return 8; + } + switch(curChar) + { + case 67: + case 99: + return jjMoveStringLiteralDfa9_0(active0, 0x400000000000000L, active1, 0x2000000L); + case 78: + case 110: + if ((active0 & 0x1000000000000L) != 0L) + return jjStartNfaWithStates_0(8, 48, 378); + break; + case 83: + case 115: + if ((active0 & 0x800000000000000L) != 0L) + return jjStartNfaWithStates_0(8, 59, 378); + break; + default : + break; + } + return jjStartNfa_0(7, active0, active1); +} +private int jjMoveStringLiteralDfa9_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(7, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(8, active0, active1); + return 9; + } + switch(curChar) + { + case 69: + case 101: + if ((active1 & 0x2000000L) != 0L) + return jjStartNfaWithStates_0(9, 89, 378); + break; + case 85: + case 117: + return jjMoveStringLiteralDfa10_0(active0, 0x400000000000000L, active1, 0L); + default : + break; + } + return jjStartNfa_0(8, active0, active1); +} +private int jjMoveStringLiteralDfa10_0(long old0, long active0, long old1, long active1) +{ + if (((active0 &= old0) | (active1 &= old1)) == 0L) + return jjStartNfa_0(8, old0, old1); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(9, active0, 0L); + return 10; + } + switch(curChar) + { + case 77: + case 109: + return jjMoveStringLiteralDfa11_0(active0, 0x400000000000000L); + default : + break; + } + return jjStartNfa_0(9, active0, 0L); +} +private int jjMoveStringLiteralDfa11_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(9, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(10, active0, 0L); + return 11; + } + switch(curChar) + { + case 69: + case 101: + return jjMoveStringLiteralDfa12_0(active0, 0x400000000000000L); + default : + break; + } + return jjStartNfa_0(10, active0, 0L); +} +private int jjMoveStringLiteralDfa12_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(10, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(11, active0, 0L); + return 12; + } + switch(curChar) + { + case 78: + case 110: + return jjMoveStringLiteralDfa13_0(active0, 0x400000000000000L); + default : + break; + } + return jjStartNfa_0(11, active0, 0L); +} +private int jjMoveStringLiteralDfa13_0(long old0, long active0) +{ + if (((active0 &= old0)) == 0L) + return jjStartNfa_0(11, old0, 0L); + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + jjStopStringLiteralDfa_0(12, active0, 0L); + return 13; + } + switch(curChar) + { + case 84: + case 116: + if ((active0 & 0x400000000000000L) != 0L) + return jjStartNfaWithStates_0(13, 58, 378); + break; + default : + break; + } + return jjStartNfa_0(12, active0, 0L); +} +private int jjStartNfaWithStates_0(int pos, int kind, int state) +{ + jjmatchedKind = kind; + jjmatchedPos = pos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return pos + 1; } + return jjMoveNfa_0(state, pos + 1); +} +static final long[] jjbitVec0 = { + 0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL +}; +private int jjMoveNfa_0(int startState, int curPos) +{ + int startsAt = 0; + jjnewStateCnt = 375; + int i = 1; + jjstateSet[0] = startState; + int kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + do + { + switch(jjstateSet[--i]) + { + case 376: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(0, 4); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(186, 189); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(183, 185); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(181, 182); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(178, 180); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(173, 177); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(169, 172); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(165, 168); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(162, 164); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(159, 161); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(156, 158); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(153, 155); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(150, 152); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(147, 149); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(144, 146); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(141, 143); + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(139, 140); + if ((0x3ff000000000000L & l) != 0L) + { + if (kind > 63) + kind = 63; + jjCheckNAdd(138); + } + break; + case 377: + case 61: + if ((0x3ff200000000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddTwoStates(61, 62); + break; + case 72: + if (curChar == 45) + jjstateSet[jjnewStateCnt++] = 73; + break; + case 4: + if ((0x3ff000000000000L & l) != 0L) + { + if (kind > 63) + kind = 63; + jjCheckNAddStates(5, 78); + } + else if ((0x100003600L & l) != 0L) + { + if (kind > 1) + kind = 1; + jjCheckNAdd(0); + } + else if (curChar == 46) + jjCheckNAddStates(79, 96); + else if (curChar == 45) + jjAddStates(97, 98); + else if (curChar == 33) + jjCheckNAddStates(99, 102); + else if (curChar == 35) + jjCheckNAddTwoStates(61, 62); + else if (curChar == 36) + jjCheckNAddStates(103, 106); + else if (curChar == 39) + jjCheckNAddStates(107, 110); + else if (curChar == 34) + jjCheckNAddStates(111, 114); + else if (curChar == 47) + jjstateSet[jjnewStateCnt++] = 3; + break; + case 378: + case 74: + if ((0x3ff200000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 375: + if ((0x3ff200000000000L & l) != 0L) + jjCheckNAddStates(115, 117); + else if (curChar == 40) + { + if (kind > 102) + kind = 102; + } + if ((0x3ff200000000000L & l) != 0L) + { + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + } + break; + case 0: + if ((0x100003600L & l) == 0L) + break; + if (kind > 1) + kind = 1; + jjCheckNAdd(0); + break; + case 1: + if (curChar == 42) + jjstateSet[jjnewStateCnt++] = 2; + break; + case 2: + if ((0xffff7fffffffffffL & l) != 0L && kind > 8) + kind = 8; + break; + case 3: + if (curChar == 42) + jjstateSet[jjnewStateCnt++] = 1; + break; + case 5: + if (curChar == 34) + jjCheckNAddStates(111, 114); + break; + case 6: + if ((0xfffffffb00000200L & l) != 0L) + jjCheckNAddStates(111, 114); + break; + case 7: + if (curChar == 34 && kind > 61) + kind = 61; + break; + case 9: + if (curChar == 12) + jjCheckNAddStates(111, 114); + break; + case 11: + if ((0xffffffff00000000L & l) != 0L) + jjCheckNAddStates(111, 114); + break; + case 12: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(118, 123); + break; + case 13: + if ((0x100003600L & l) != 0L) + jjCheckNAddStates(111, 114); + break; + case 14: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(124, 132); + break; + case 15: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(133, 137); + break; + case 16: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(138, 143); + break; + case 17: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(144, 150); + break; + case 18: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(151, 158); + break; + case 19: + if (curChar == 13) + jjCheckNAddStates(111, 114); + break; + case 20: + if (curChar == 10) + jjCheckNAddStates(111, 114); + break; + case 21: + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 20; + break; + case 22: + if (curChar == 39) + jjCheckNAddStates(107, 110); + break; + case 23: + if ((0xffffff7f00000200L & l) != 0L) + jjCheckNAddStates(107, 110); + break; + case 24: + if (curChar == 39 && kind > 61) + kind = 61; + break; + case 26: + if (curChar == 12) + jjCheckNAddStates(107, 110); + break; + case 28: + if ((0xffffffff00000000L & l) != 0L) + jjCheckNAddStates(107, 110); + break; + case 29: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(159, 164); + break; + case 30: + if ((0x100003600L & l) != 0L) + jjCheckNAddStates(107, 110); + break; + case 31: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(165, 173); + break; + case 32: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(174, 178); + break; + case 33: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(179, 184); + break; + case 34: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(185, 191); + break; + case 35: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(192, 199); + break; + case 36: + if (curChar == 13) + jjCheckNAddStates(107, 110); + break; + case 37: + if (curChar == 10) + jjCheckNAddStates(107, 110); + break; + case 38: + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 37; + break; + case 39: + if (curChar == 36) + jjCheckNAddStates(103, 106); + break; + case 40: + if (curChar == 45) + jjCheckNAdd(41); + break; + case 42: + if ((0x3ff200000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddTwoStates(42, 43); + break; + case 44: + if ((0xffffffff00000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddTwoStates(42, 43); + break; + case 45: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(200, 203); + break; + case 46: + if ((0x100003600L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddTwoStates(42, 43); + break; + case 47: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(204, 210); + break; + case 48: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(211, 213); + break; + case 49: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(214, 217); + break; + case 50: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(218, 222); + break; + case 51: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(223, 228); + break; + case 54: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(229, 232); + break; + case 55: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(233, 239); + break; + case 56: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(240, 242); + break; + case 57: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(243, 246); + break; + case 58: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(247, 251); + break; + case 59: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(252, 257); + break; + case 60: + if (curChar == 35) + jjCheckNAddTwoStates(61, 62); + break; + case 63: + if ((0xffffffff00000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddTwoStates(61, 62); + break; + case 64: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(258, 261); + break; + case 65: + if ((0x100003600L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddTwoStates(61, 62); + break; + case 66: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(262, 268); + break; + case 67: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(269, 271); + break; + case 68: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(272, 275); + break; + case 69: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(276, 280); + break; + case 70: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(281, 286); + break; + case 76: + if ((0xffffffff00000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 77: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(287, 290); + break; + case 78: + if ((0x100003600L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 79: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(291, 297); + break; + case 80: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(298, 300); + break; + case 81: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(301, 304); + break; + case 82: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(305, 309); + break; + case 83: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(310, 315); + break; + case 86: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(316, 319); + break; + case 87: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(320, 326); + break; + case 88: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(327, 329); + break; + case 89: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(330, 333); + break; + case 90: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(334, 338); + break; + case 91: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(339, 344); + break; + case 93: + if ((0x3ff200000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + break; + case 95: + if ((0xffffffff00000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + break; + case 96: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(345, 348); + break; + case 97: + if ((0x100003600L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + break; + case 98: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(349, 355); + break; + case 99: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(356, 358); + break; + case 100: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(359, 362); + break; + case 101: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(363, 367); + break; + case 102: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(368, 373); + break; + case 103: + if ((0x3ff200000000000L & l) != 0L) + jjCheckNAddStates(115, 117); + break; + case 104: + if (curChar == 40 && kind > 102) + kind = 102; + break; + case 106: + if ((0xffffffff00000000L & l) != 0L) + jjCheckNAddStates(115, 117); + break; + case 107: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(374, 378); + break; + case 108: + if ((0x100003600L & l) != 0L) + jjCheckNAddStates(115, 117); + break; + case 109: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(379, 386); + break; + case 110: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(387, 390); + break; + case 111: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(391, 395); + break; + case 112: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(396, 401); + break; + case 113: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(402, 408); + break; + case 114: + if (curChar == 33) + jjCheckNAddStates(99, 102); + break; + case 115: + if ((0x100003600L & l) != 0L) + jjCheckNAddTwoStates(115, 122); + break; + case 123: + if ((0x100003600L & l) != 0L) + jjCheckNAddTwoStates(123, 132); + break; + case 133: + if (curChar == 45) + jjAddStates(97, 98); + break; + case 137: + if (curChar == 46) + jjCheckNAddStates(79, 96); + break; + case 138: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 63) + kind = 63; + jjCheckNAdd(138); + break; + case 139: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(139, 140); + break; + case 140: + if (curChar == 37 && kind > 67) + kind = 67; + break; + case 141: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(141, 143); + break; + case 144: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(144, 146); + break; + case 147: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(147, 149); + break; + case 150: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(150, 152); + break; + case 153: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(153, 155); + break; + case 156: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(156, 158); + break; + case 159: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(159, 161); + break; + case 162: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(162, 164); + break; + case 165: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(165, 168); + break; + case 169: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(169, 172); + break; + case 173: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(173, 177); + break; + case 178: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(178, 180); + break; + case 181: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(181, 182); + break; + case 183: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(183, 185); + break; + case 186: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(186, 189); + break; + case 190: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(0, 4); + break; + case 191: + if (curChar == 45) + jjCheckNAdd(192); + break; + case 193: + if ((0x3ff200000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddTwoStates(193, 194); + break; + case 195: + if ((0xffffffff00000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddTwoStates(193, 194); + break; + case 196: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(409, 412); + break; + case 197: + if ((0x100003600L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddTwoStates(193, 194); + break; + case 198: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(413, 419); + break; + case 199: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(420, 422); + break; + case 200: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(423, 426); + break; + case 201: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(427, 431); + break; + case 202: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(432, 437); + break; + case 205: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(438, 441); + break; + case 206: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(442, 448); + break; + case 207: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(449, 451); + break; + case 208: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(452, 455); + break; + case 209: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(456, 460); + break; + case 210: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(461, 466); + break; + case 212: + if (curChar == 40) + jjCheckNAddStates(467, 472); + break; + case 213: + if ((0xfffffc7a00000000L & l) != 0L) + jjCheckNAddStates(473, 476); + break; + case 214: + if ((0x100003600L & l) != 0L) + jjCheckNAddTwoStates(214, 215); + break; + case 215: + if (curChar == 41 && kind > 65) + kind = 65; + break; + case 217: + if ((0xffffffff00000000L & l) != 0L) + jjCheckNAddStates(473, 476); + break; + case 218: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(477, 481); + break; + case 219: + if ((0x100003600L & l) != 0L) + jjCheckNAddStates(473, 476); + break; + case 220: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(482, 489); + break; + case 221: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(490, 493); + break; + case 222: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(494, 498); + break; + case 223: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(499, 504); + break; + case 224: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(505, 511); + break; + case 225: + if (curChar == 39) + jjCheckNAddStates(512, 515); + break; + case 226: + if ((0xffffff7f00000200L & l) != 0L) + jjCheckNAddStates(512, 515); + break; + case 227: + if (curChar == 39) + jjCheckNAddTwoStates(214, 215); + break; + case 229: + if (curChar == 12) + jjCheckNAddStates(512, 515); + break; + case 231: + if ((0xffffffff00000000L & l) != 0L) + jjCheckNAddStates(512, 515); + break; + case 232: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(516, 521); + break; + case 233: + if ((0x100003600L & l) != 0L) + jjCheckNAddStates(512, 515); + break; + case 234: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(522, 530); + break; + case 235: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(531, 535); + break; + case 236: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(536, 541); + break; + case 237: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(542, 548); + break; + case 238: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(549, 556); + break; + case 239: + if (curChar == 13) + jjCheckNAddStates(512, 515); + break; + case 240: + if (curChar == 10) + jjCheckNAddStates(512, 515); + break; + case 241: + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 240; + break; + case 242: + if (curChar == 34) + jjCheckNAddStates(557, 560); + break; + case 243: + if ((0xfffffffb00000200L & l) != 0L) + jjCheckNAddStates(557, 560); + break; + case 244: + if (curChar == 34) + jjCheckNAddTwoStates(214, 215); + break; + case 246: + if (curChar == 12) + jjCheckNAddStates(557, 560); + break; + case 248: + if ((0xffffffff00000000L & l) != 0L) + jjCheckNAddStates(557, 560); + break; + case 249: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(561, 566); + break; + case 250: + if ((0x100003600L & l) != 0L) + jjCheckNAddStates(557, 560); + break; + case 251: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(567, 575); + break; + case 252: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(576, 580); + break; + case 253: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(581, 586); + break; + case 254: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(587, 593); + break; + case 255: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(594, 601); + break; + case 256: + if (curChar == 13) + jjCheckNAddStates(557, 560); + break; + case 257: + if (curChar == 10) + jjCheckNAddStates(557, 560); + break; + case 258: + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 257; + break; + case 259: + if ((0x100003600L & l) != 0L) + jjCheckNAddStates(602, 608); + break; + case 262: + if (curChar == 43) + jjAddStates(609, 610); + break; + case 263: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 264; + break; + case 264: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(611, 614); + break; + case 265: + if (curChar == 63 && kind > 101) + kind = 101; + break; + case 266: + case 281: + case 285: + case 288: + case 291: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAdd(265); + break; + case 267: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddTwoStates(265, 266); + break; + case 268: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(615, 617); + break; + case 269: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjAddStates(618, 623); + break; + case 270: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 271; + break; + case 271: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 272; + break; + case 272: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(273); + break; + case 273: + if ((0x3ff000000000000L & l) != 0L && kind > 101) + kind = 101; + break; + case 274: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 275; + break; + case 275: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 276; + break; + case 276: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 277; + break; + case 277: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAdd(265); + break; + case 278: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 279; + break; + case 279: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 280; + break; + case 280: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 281; + break; + case 282: + if ((0x3ff000000000000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 283; + break; + case 283: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 284; + break; + case 284: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddTwoStates(265, 285); + break; + case 286: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 287; + break; + case 287: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(624, 626); + break; + case 289: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddTwoStates(265, 288); + break; + case 290: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(627, 630); + break; + case 292: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddTwoStates(265, 291); + break; + case 293: + if (curChar != 63) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(631, 633); + break; + case 294: + if (curChar == 43) + jjstateSet[jjnewStateCnt++] = 295; + break; + case 295: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(296, 302); + break; + case 296: + if (curChar == 45) + jjstateSet[jjnewStateCnt++] = 297; + break; + case 297: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 298; + break; + case 298: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(634, 637); + break; + case 299: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAdd(273); + break; + case 300: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAddTwoStates(273, 299); + break; + case 301: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(638, 640); + break; + case 302: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(641, 645); + break; + case 303: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAdd(296); + break; + case 304: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(303, 296); + break; + case 305: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(646, 648); + break; + case 306: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(649, 652); + break; + case 308: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(653, 656); + break; + case 309: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(657, 663); + break; + case 310: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(664, 666); + break; + case 311: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(667, 670); + break; + case 312: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(671, 675); + break; + case 313: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(676, 681); + break; + case 314: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(682, 686); + break; + case 315: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(687, 694); + break; + case 316: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(695, 698); + break; + case 317: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(699, 703); + break; + case 318: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(704, 709); + break; + case 319: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(710, 716); + break; + case 320: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 63) + kind = 63; + jjCheckNAddStates(5, 78); + break; + case 321: + if ((0x3ff000000000000L & l) == 0L) + break; + if (kind > 63) + kind = 63; + jjCheckNAdd(321); + break; + case 322: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(322, 323); + break; + case 323: + if (curChar == 46) + jjCheckNAdd(138); + break; + case 324: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(324, 140); + break; + case 325: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(325, 326); + break; + case 326: + if (curChar == 46) + jjCheckNAdd(139); + break; + case 327: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(327, 143); + break; + case 328: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(328, 329); + break; + case 329: + if (curChar == 46) + jjCheckNAdd(141); + break; + case 330: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(330, 146); + break; + case 331: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(331, 332); + break; + case 332: + if (curChar == 46) + jjCheckNAdd(144); + break; + case 333: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(333, 149); + break; + case 334: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(334, 335); + break; + case 335: + if (curChar == 46) + jjCheckNAdd(147); + break; + case 336: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(336, 152); + break; + case 337: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(337, 338); + break; + case 338: + if (curChar == 46) + jjCheckNAdd(150); + break; + case 339: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(339, 155); + break; + case 340: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(340, 341); + break; + case 341: + if (curChar == 46) + jjCheckNAdd(153); + break; + case 342: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(342, 158); + break; + case 343: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(343, 344); + break; + case 344: + if (curChar == 46) + jjCheckNAdd(156); + break; + case 345: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(345, 161); + break; + case 346: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(346, 347); + break; + case 347: + if (curChar == 46) + jjCheckNAdd(159); + break; + case 348: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(348, 164); + break; + case 349: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(349, 350); + break; + case 350: + if (curChar == 46) + jjCheckNAdd(162); + break; + case 351: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(351, 168); + break; + case 352: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(352, 353); + break; + case 353: + if (curChar == 46) + jjCheckNAdd(165); + break; + case 354: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(354, 172); + break; + case 355: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(355, 356); + break; + case 356: + if (curChar == 46) + jjCheckNAdd(169); + break; + case 357: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(357, 177); + break; + case 358: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(358, 359); + break; + case 359: + if (curChar == 46) + jjCheckNAdd(173); + break; + case 360: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(360, 180); + break; + case 361: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(361, 362); + break; + case 362: + if (curChar == 46) + jjCheckNAdd(178); + break; + case 363: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(363, 182); + break; + case 364: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(364, 365); + break; + case 365: + if (curChar == 46) + jjCheckNAdd(181); + break; + case 366: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(366, 185); + break; + case 367: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(367, 368); + break; + case 368: + if (curChar == 46) + jjCheckNAdd(183); + break; + case 369: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(369, 189); + break; + case 370: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(370, 371); + break; + case 371: + if (curChar == 46) + jjCheckNAdd(186); + break; + case 372: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddStates(717, 721); + break; + case 373: + if ((0x3ff000000000000L & l) != 0L) + jjCheckNAddTwoStates(373, 374); + break; + case 374: + if (curChar == 46) + jjCheckNAdd(190); + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 377: + if ((0x7fffffe87fffffeL & l) != 0L) + { + if (kind > 84) + kind = 84; + jjCheckNAddTwoStates(61, 62); + } + else if (curChar == 92) + jjAddStates(722, 723); + break; + case 134: + if ((0x7fffffe07fffffeL & l) != 0L) + jjCheckNAddStates(115, 117); + if ((0x7fffffe07fffffeL & l) != 0L) + { + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + } + break; + case 72: + if ((0x7fffffe07fffffeL & l) != 0L) + { + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + } + else if (curChar == 92) + jjCheckNAddTwoStates(76, 86); + break; + case 4: + if ((0x7fffffe07fffffeL & l) != 0L) + { + if (kind > 62) + kind = 62; + jjCheckNAddStates(724, 728); + } + else if (curChar == 92) + jjCheckNAddStates(729, 732); + else if (curChar == 64) + jjAddStates(733, 736); + if ((0x20000000200000L & l) != 0L) + jjAddStates(737, 739); + break; + case 378: + if ((0x7fffffe87fffffeL & l) != 0L) + { + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + } + else if (curChar == 92) + jjCheckNAddTwoStates(76, 77); + break; + case 375: + if ((0x7fffffe87fffffeL & l) != 0L) + jjCheckNAddStates(115, 117); + else if (curChar == 92) + jjCheckNAddTwoStates(95, 96); + if ((0x7fffffe87fffffeL & l) != 0L) + { + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + } + else if (curChar == 92) + jjCheckNAddTwoStates(106, 107); + break; + case 2: + if (kind > 8) + kind = 8; + break; + case 6: + case 11: + if ((0x7fffffffffffffffL & l) != 0L) + jjCheckNAddStates(111, 114); + break; + case 8: + if (curChar == 92) + jjAddStates(740, 743); + break; + case 10: + if (curChar == 92) + jjAddStates(744, 745); + break; + case 12: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(118, 123); + break; + case 14: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(124, 132); + break; + case 15: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(133, 137); + break; + case 16: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(138, 143); + break; + case 17: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(144, 150); + break; + case 18: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(151, 158); + break; + case 23: + case 28: + if ((0x7fffffffffffffffL & l) != 0L) + jjCheckNAddStates(107, 110); + break; + case 25: + if (curChar == 92) + jjAddStates(746, 749); + break; + case 27: + if (curChar == 92) + jjAddStates(750, 751); + break; + case 29: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(159, 164); + break; + case 31: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(165, 173); + break; + case 32: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(174, 178); + break; + case 33: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(179, 184); + break; + case 34: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(185, 191); + break; + case 35: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(192, 199); + break; + case 41: + if ((0x7fffffe07fffffeL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddTwoStates(42, 43); + break; + case 42: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddTwoStates(42, 43); + break; + case 43: + if (curChar == 92) + jjCheckNAddTwoStates(44, 45); + break; + case 44: + if ((0x7fffffffffffffffL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddTwoStates(42, 43); + break; + case 45: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(200, 203); + break; + case 47: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(204, 210); + break; + case 48: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(211, 213); + break; + case 49: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(214, 217); + break; + case 50: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(218, 222); + break; + case 51: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(223, 228); + break; + case 53: + if (curChar == 92) + jjCheckNAddTwoStates(44, 54); + break; + case 54: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(229, 232); + break; + case 55: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(233, 239); + break; + case 56: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(240, 242); + break; + case 57: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(243, 246); + break; + case 58: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(247, 251); + break; + case 59: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddStates(252, 257); + break; + case 61: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddTwoStates(61, 62); + break; + case 62: + if (curChar == 92) + jjAddStates(722, 723); + break; + case 63: + if ((0x7fffffffffffffffL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddTwoStates(61, 62); + break; + case 64: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(258, 261); + break; + case 66: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(262, 268); + break; + case 67: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(269, 271); + break; + case 68: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(272, 275); + break; + case 69: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(276, 280); + break; + case 70: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddStates(281, 286); + break; + case 71: + if (curChar == 64) + jjAddStates(733, 736); + break; + case 73: + if ((0x7fffffe07fffffeL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 74: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 75: + if (curChar == 92) + jjCheckNAddTwoStates(76, 77); + break; + case 76: + if ((0x7fffffffffffffffL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 77: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(287, 290); + break; + case 79: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(291, 297); + break; + case 80: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(298, 300); + break; + case 81: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(301, 304); + break; + case 82: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(305, 309); + break; + case 83: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(310, 315); + break; + case 85: + if (curChar == 92) + jjCheckNAddTwoStates(76, 86); + break; + case 86: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(316, 319); + break; + case 87: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(320, 326); + break; + case 88: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(327, 329); + break; + case 89: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(330, 333); + break; + case 90: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(334, 338); + break; + case 91: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddStates(339, 344); + break; + case 93: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + break; + case 94: + if (curChar == 92) + jjCheckNAddTwoStates(95, 96); + break; + case 95: + if ((0x7fffffffffffffffL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + break; + case 96: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(345, 348); + break; + case 98: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(349, 355); + break; + case 99: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(356, 358); + break; + case 100: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(359, 362); + break; + case 101: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(363, 367); + break; + case 102: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(368, 373); + break; + case 103: + if ((0x7fffffe87fffffeL & l) != 0L) + jjCheckNAddStates(115, 117); + break; + case 105: + if (curChar == 92) + jjCheckNAddTwoStates(106, 107); + break; + case 106: + if ((0x7fffffffffffffffL & l) != 0L) + jjCheckNAddStates(115, 117); + break; + case 107: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(374, 378); + break; + case 109: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(379, 386); + break; + case 110: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(387, 390); + break; + case 111: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(391, 395); + break; + case 112: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(396, 401); + break; + case 113: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(402, 408); + break; + case 116: + if ((0x10000000100000L & l) != 0L && kind > 60) + kind = 60; + break; + case 117: + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 116; + break; + case 118: + if ((0x20000000200000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 117; + break; + case 119: + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 118; + break; + case 120: + if ((0x4000000040L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 119; + break; + case 121: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 120; + break; + case 122: + if ((0x1000000010L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 121; + break; + case 124: + if ((0x10000000100000L & l) != 0L && kind > 91) + kind = 91; + break; + case 125: + if ((0x400000004000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 124; + break; + case 126: + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 125; + break; + case 127: + if ((0x10000000100000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 126; + break; + case 128: + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 127; + break; + case 129: + if ((0x800000008000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 128; + break; + case 130: + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 129; + break; + case 131: + if ((0x200000002000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 130; + break; + case 132: + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 131; + break; + case 135: + if ((0x7fffffe07fffffeL & l) != 0L) + jjCheckNAddStates(115, 117); + break; + case 136: + if ((0x7fffffe07fffffeL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(724, 728); + break; + case 142: + if ((0x10000000100000L & l) != 0L && kind > 68) + kind = 68; + break; + case 143: + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 142; + break; + case 145: + if ((0x200000002000L & l) != 0L && kind > 69) + kind = 69; + break; + case 146: + if ((0x200000002000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 145; + break; + case 148: + if ((0x200000002000L & l) != 0L && kind > 70) + kind = 70; + break; + case 149: + if ((0x800000008L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 148; + break; + case 151: + if ((0x800000008L & l) != 0L && kind > 71) + kind = 71; + break; + case 152: + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 151; + break; + case 154: + if ((0x400000004000L & l) != 0L && kind > 72) + kind = 72; + break; + case 155: + if ((0x20000000200L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 154; + break; + case 157: + if ((0x100000001000000L & l) != 0L && kind > 73) + kind = 73; + break; + case 158: + if ((0x1000000010000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 157; + break; + case 160: + if ((0x200000002000L & l) != 0L && kind > 74) + kind = 74; + break; + case 161: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 160; + break; + case 163: + if ((0x100000001000000L & l) != 0L && kind > 75) + kind = 75; + break; + case 164: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 163; + break; + case 166: + if ((0x8000000080L & l) != 0L && kind > 76) + kind = 76; + break; + case 167: + if ((0x2000000020L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 166; + break; + case 168: + if ((0x1000000010L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 167; + break; + case 170: + if ((0x1000000010L & l) != 0L && kind > 77) + kind = 77; + break; + case 171: + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 170; + break; + case 172: + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 171; + break; + case 174: + if ((0x1000000010L & l) != 0L && kind > 78) + kind = 78; + break; + case 175: + if ((0x200000002L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 174; + break; + case 176: + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 175; + break; + case 177: + if ((0x8000000080L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 176; + break; + case 179: + if ((0x8000000080000L & l) != 0L && kind > 79) + kind = 79; + break; + case 180: + if ((0x200000002000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 179; + break; + case 182: + if ((0x8000000080000L & l) != 0L && kind > 80) + kind = 80; + break; + case 184: + if ((0x400000004000000L & l) != 0L && kind > 81) + kind = 81; + break; + case 185: + if ((0x10000000100L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 184; + break; + case 187: + if ((0x400000004000000L & l) != 0L && kind > 82) + kind = 82; + break; + case 188: + if ((0x10000000100L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 187; + break; + case 189: + if ((0x80000000800L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 188; + break; + case 192: + if ((0x7fffffe07fffffeL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddTwoStates(193, 194); + break; + case 193: + if ((0x7fffffe87fffffeL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddTwoStates(193, 194); + break; + case 194: + if (curChar == 92) + jjCheckNAddTwoStates(195, 196); + break; + case 195: + if ((0x7fffffffffffffffL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddTwoStates(193, 194); + break; + case 196: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(409, 412); + break; + case 198: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(413, 419); + break; + case 199: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(420, 422); + break; + case 200: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(423, 426); + break; + case 201: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(427, 431); + break; + case 202: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(432, 437); + break; + case 204: + if (curChar == 92) + jjCheckNAddTwoStates(195, 205); + break; + case 205: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(438, 441); + break; + case 206: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(442, 448); + break; + case 207: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(449, 451); + break; + case 208: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(452, 455); + break; + case 209: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(456, 460); + break; + case 210: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddStates(461, 466); + break; + case 211: + if ((0x20000000200000L & l) != 0L) + jjAddStates(737, 739); + break; + case 213: + case 217: + if ((0x7fffffffffffffffL & l) != 0L) + jjCheckNAddStates(473, 476); + break; + case 216: + if (curChar == 92) + jjAddStates(752, 753); + break; + case 218: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(477, 481); + break; + case 220: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(482, 489); + break; + case 221: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(490, 493); + break; + case 222: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(494, 498); + break; + case 223: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(499, 504); + break; + case 224: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(505, 511); + break; + case 226: + case 231: + if ((0x7fffffffffffffffL & l) != 0L) + jjCheckNAddStates(512, 515); + break; + case 228: + if (curChar == 92) + jjAddStates(754, 757); + break; + case 230: + if (curChar == 92) + jjAddStates(758, 759); + break; + case 232: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(516, 521); + break; + case 234: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(522, 530); + break; + case 235: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(531, 535); + break; + case 236: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(536, 541); + break; + case 237: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(542, 548); + break; + case 238: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(549, 556); + break; + case 243: + case 248: + if ((0x7fffffffffffffffL & l) != 0L) + jjCheckNAddStates(557, 560); + break; + case 245: + if (curChar == 92) + jjAddStates(760, 763); + break; + case 247: + if (curChar == 92) + jjAddStates(764, 765); + break; + case 249: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(561, 566); + break; + case 251: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(567, 575); + break; + case 252: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(576, 580); + break; + case 253: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(581, 586); + break; + case 254: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(587, 593); + break; + case 255: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(594, 601); + break; + case 260: + if ((0x100000001000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 212; + break; + case 261: + if ((0x4000000040000L & l) != 0L) + jjstateSet[jjnewStateCnt++] = 260; + break; + case 269: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjAddStates(618, 623); + break; + case 270: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 271; + break; + case 271: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 272; + break; + case 272: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAdd(273); + break; + case 273: + if ((0x7e0000007eL & l) != 0L && kind > 101) + kind = 101; + break; + case 274: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 275; + break; + case 275: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 276; + break; + case 276: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 277; + break; + case 277: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 265; + break; + case 278: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 279; + break; + case 279: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 280; + break; + case 280: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 281; + break; + case 282: + if ((0x7e0000007eL & l) != 0L) + jjstateSet[jjnewStateCnt++] = 283; + break; + case 283: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 284; + break; + case 286: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 287; + break; + case 295: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddTwoStates(296, 302); + break; + case 297: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjstateSet[jjnewStateCnt++] = 298; + break; + case 298: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(634, 637); + break; + case 299: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAdd(273); + break; + case 300: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAddTwoStates(273, 299); + break; + case 301: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 101) + kind = 101; + jjCheckNAddStates(638, 640); + break; + case 302: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(641, 645); + break; + case 303: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAdd(296); + break; + case 304: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddTwoStates(303, 296); + break; + case 305: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(646, 648); + break; + case 306: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(649, 652); + break; + case 307: + if (curChar == 92) + jjCheckNAddStates(729, 732); + break; + case 308: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(653, 656); + break; + case 309: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(657, 663); + break; + case 310: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(664, 666); + break; + case 311: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(667, 670); + break; + case 312: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(671, 675); + break; + case 313: + if ((0x7e0000007eL & l) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddStates(676, 681); + break; + case 314: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(682, 686); + break; + case 315: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(687, 694); + break; + case 316: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(695, 698); + break; + case 317: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(699, 703); + break; + case 318: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(704, 709); + break; + case 319: + if ((0x7e0000007eL & l) != 0L) + jjCheckNAddStates(710, 716); + break; + default : break; + } + } while(i != startsAt); + } + else + { + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 377: + case 61: + case 63: + if ((jjbitVec0[i2] & l2) == 0L) + break; + if (kind > 84) + kind = 84; + jjCheckNAddTwoStates(61, 62); + break; + case 72: + case 76: + if ((jjbitVec0[i2] & l2) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 4: + if ((jjbitVec0[i2] & l2) == 0L) + break; + if (kind > 34) + kind = 34; + jjCheckNAddStates(724, 728); + break; + case 378: + case 74: + if ((jjbitVec0[i2] & l2) == 0L) + break; + if (kind > 90) + kind = 90; + jjCheckNAddTwoStates(74, 75); + break; + case 375: + if ((jjbitVec0[i2] & l2) != 0L) + { + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + } + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddStates(115, 117); + break; + case 2: + if ((jjbitVec0[i2] & l2) != 0L && kind > 8) + kind = 8; + break; + case 6: + case 11: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddStates(111, 114); + break; + case 23: + case 28: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddStates(107, 110); + break; + case 42: + case 44: + case 52: + if ((jjbitVec0[i2] & l2) == 0L) + break; + if (kind > 66) + kind = 66; + jjCheckNAddTwoStates(42, 43); + break; + case 93: + case 95: + if ((jjbitVec0[i2] & l2) == 0L) + break; + if (kind > 62) + kind = 62; + jjCheckNAddTwoStates(93, 94); + break; + case 103: + case 106: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddStates(115, 117); + break; + case 193: + case 195: + case 203: + if ((jjbitVec0[i2] & l2) == 0L) + break; + if (kind > 83) + kind = 83; + jjCheckNAddTwoStates(193, 194); + break; + case 213: + case 217: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddStates(473, 476); + break; + case 226: + case 231: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddStates(512, 515); + break; + case 243: + case 248: + if ((jjbitVec0[i2] & l2) != 0L) + jjCheckNAddStates(557, 560); + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 375 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} +private int jjMoveStringLiteralDfa0_4() +{ + switch(curChar) + { + case 42: + return jjMoveStringLiteralDfa1_4(0x800L); + default : + return 1; + } +} +private int jjMoveStringLiteralDfa1_4(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + return 1; + } + switch(curChar) + { + case 47: + if ((active0 & 0x800L) != 0L) + return jjStopAtPos(1, 11); + break; + default : + return 2; + } + return 2; +} +private int jjMoveStringLiteralDfa0_2() +{ + return jjMoveNfa_2(0, 0); +} +private int jjMoveNfa_2(int startState, int curPos) +{ + int startsAt = 0; + jjnewStateCnt = 4; + int i = 1; + jjstateSet[0] = startState; + int kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0xffffffffffffdbffL & l) != 0L) + { + if (kind > 6) + kind = 6; + } + else if ((0x2400L & l) != 0L) + { + if (kind > 7) + kind = 7; + } + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 2; + break; + case 1: + if ((0x2400L & l) != 0L && kind > 7) + kind = 7; + break; + case 2: + if (curChar == 10 && kind > 7) + kind = 7; + break; + case 3: + if (curChar == 13) + jjstateSet[jjnewStateCnt++] = 2; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 0: + kind = 6; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 0: + if ((jjbitVec0[i2] & l2) != 0L && kind > 6) + kind = 6; + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 4 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} +private int jjMoveStringLiteralDfa0_3() +{ + switch(curChar) + { + case 42: + return jjMoveStringLiteralDfa1_3(0x400L); + default : + return 1; + } +} +private int jjMoveStringLiteralDfa1_3(long active0) +{ + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { + return 1; + } + switch(curChar) + { + case 47: + if ((active0 & 0x400L) != 0L) + return jjStopAtPos(1, 10); + break; + default : + return 2; + } + return 2; +} +private final int jjStopStringLiteralDfa_1(int pos, long active0) +{ + switch (pos) + { + default : + return -1; + } +} +private final int jjStartNfa_1(int pos, long active0) +{ + return jjMoveNfa_1(jjStopStringLiteralDfa_1(pos, active0), pos + 1); +} +private int jjMoveStringLiteralDfa0_1() +{ + switch(curChar) + { + case 125: + return jjStopAtPos(0, 4); + default : + return jjMoveNfa_1(0, 0); + } +} +private int jjMoveNfa_1(int startState, int curPos) +{ + int startsAt = 0; + jjnewStateCnt = 1; + int i = 1; + jjstateSet[0] = startState; + int kind = 0x7fffffff; + for (;;) + { + if (++jjround == 0x7fffffff) + ReInitRounds(); + if (curChar < 64) + { + long l = 1L << curChar; + do + { + switch(jjstateSet[--i]) + { + case 0: + kind = 3; + break; + default : break; + } + } while(i != startsAt); + } + else if (curChar < 128) + { + long l = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 0: + if ((0xdfffffffffffffffL & l) != 0L) + kind = 3; + break; + default : break; + } + } while(i != startsAt); + } + else + { + int i2 = (curChar & 0xff) >> 6; + long l2 = 1L << (curChar & 077); + do + { + switch(jjstateSet[--i]) + { + case 0: + if ((jjbitVec0[i2] & l2) != 0L && kind > 3) + kind = 3; + break; + default : break; + } + } while(i != startsAt); + } + if (kind != 0x7fffffff) + { + jjmatchedKind = kind; + jjmatchedPos = curPos; + kind = 0x7fffffff; + } + ++curPos; + if ((i = jjnewStateCnt) == (startsAt = 1 - (jjnewStateCnt = startsAt))) + return curPos; + try { curChar = input_stream.readChar(); } + catch(java.io.IOException e) { return curPos; } + } +} +static final int[] jjnextStates = { + 190, 191, 192, 203, 204, 321, 322, 323, 324, 325, 326, 140, 327, 328, 329, 143, + 330, 331, 332, 146, 333, 334, 335, 149, 336, 337, 338, 152, 339, 340, 341, 155, + 342, 343, 344, 158, 345, 346, 347, 161, 348, 349, 350, 164, 351, 352, 353, 168, + 354, 355, 356, 172, 357, 358, 359, 177, 360, 361, 362, 180, 363, 364, 365, 182, + 366, 367, 368, 185, 369, 370, 371, 189, 372, 373, 374, 191, 192, 203, 204, 138, + 139, 141, 144, 147, 150, 153, 156, 159, 162, 165, 169, 173, 178, 181, 183, 186, + 190, 134, 135, 115, 122, 123, 132, 40, 41, 52, 53, 23, 24, 25, 27, 6, + 7, 8, 10, 103, 104, 105, 6, 13, 7, 8, 10, 14, 6, 15, 13, 7, + 8, 10, 16, 17, 18, 6, 13, 7, 8, 10, 6, 15, 13, 7, 8, 10, + 6, 15, 13, 7, 8, 10, 16, 6, 15, 13, 7, 8, 10, 16, 17, 23, + 30, 24, 25, 27, 31, 23, 32, 30, 24, 25, 27, 33, 34, 35, 23, 30, + 24, 25, 27, 23, 32, 30, 24, 25, 27, 23, 32, 30, 24, 25, 27, 33, + 23, 32, 30, 24, 25, 27, 33, 34, 42, 46, 43, 47, 42, 48, 46, 43, + 49, 50, 51, 42, 46, 43, 42, 48, 46, 43, 42, 48, 46, 43, 49, 42, + 48, 46, 43, 49, 50, 46, 42, 43, 55, 56, 46, 42, 43, 57, 58, 59, + 46, 42, 43, 56, 46, 42, 43, 56, 46, 42, 43, 57, 56, 46, 42, 43, + 57, 58, 61, 65, 62, 66, 61, 67, 65, 62, 68, 69, 70, 61, 65, 62, + 61, 67, 65, 62, 61, 67, 65, 62, 68, 61, 67, 65, 62, 68, 69, 74, + 78, 75, 79, 74, 80, 78, 75, 81, 82, 83, 74, 78, 75, 74, 80, 78, + 75, 74, 80, 78, 75, 81, 74, 80, 78, 75, 81, 82, 78, 74, 75, 87, + 88, 78, 74, 75, 89, 90, 91, 78, 74, 75, 88, 78, 74, 75, 88, 78, + 74, 75, 89, 88, 78, 74, 75, 89, 90, 93, 97, 94, 98, 93, 99, 97, + 94, 100, 101, 102, 93, 97, 94, 93, 99, 97, 94, 93, 99, 97, 94, 100, + 93, 99, 97, 94, 100, 101, 103, 108, 104, 105, 109, 103, 110, 108, 104, 105, + 111, 112, 113, 103, 108, 104, 105, 103, 110, 108, 104, 105, 103, 110, 108, 104, + 105, 111, 103, 110, 108, 104, 105, 111, 112, 193, 197, 194, 198, 193, 199, 197, + 194, 200, 201, 202, 193, 197, 194, 193, 199, 197, 194, 193, 199, 197, 194, 200, + 193, 199, 197, 194, 200, 201, 197, 193, 194, 206, 207, 197, 193, 194, 208, 209, + 210, 197, 193, 194, 207, 197, 193, 194, 207, 197, 193, 194, 208, 207, 197, 193, + 194, 208, 209, 213, 225, 242, 215, 216, 259, 213, 214, 215, 216, 213, 215, 216, + 219, 220, 213, 221, 215, 216, 219, 222, 223, 224, 213, 215, 216, 219, 213, 221, + 215, 216, 219, 213, 221, 215, 216, 219, 222, 213, 221, 215, 216, 219, 222, 223, + 226, 227, 228, 230, 226, 233, 227, 228, 230, 234, 226, 235, 233, 227, 228, 230, + 236, 237, 238, 226, 233, 227, 228, 230, 226, 235, 233, 227, 228, 230, 226, 235, + 233, 227, 228, 230, 236, 226, 235, 233, 227, 228, 230, 236, 237, 243, 244, 245, + 247, 243, 250, 244, 245, 247, 251, 243, 252, 250, 244, 245, 247, 253, 254, 255, + 243, 250, 244, 245, 247, 243, 252, 250, 244, 245, 247, 243, 252, 250, 244, 245, + 247, 253, 243, 252, 250, 244, 245, 247, 253, 254, 213, 225, 242, 214, 215, 216, + 259, 263, 269, 265, 266, 267, 268, 265, 266, 267, 270, 274, 278, 282, 286, 290, + 265, 288, 289, 265, 291, 292, 293, 265, 291, 292, 273, 299, 300, 301, 273, 299, + 300, 303, 296, 304, 305, 306, 303, 296, 304, 303, 296, 304, 305, 97, 93, 94, + 309, 310, 97, 93, 94, 311, 312, 313, 97, 93, 94, 310, 97, 93, 94, 310, + 97, 93, 94, 311, 310, 97, 93, 94, 311, 312, 108, 103, 104, 105, 315, 316, + 108, 103, 104, 105, 317, 318, 319, 108, 103, 104, 105, 316, 108, 103, 104, 105, + 316, 108, 103, 104, 105, 317, 316, 108, 103, 104, 105, 317, 318, 372, 191, 192, + 203, 204, 63, 64, 93, 103, 104, 105, 94, 95, 308, 106, 314, 72, 73, 84, + 85, 261, 262, 294, 9, 19, 21, 20, 11, 12, 26, 36, 38, 37, 28, 29, + 217, 218, 229, 239, 241, 240, 231, 232, 246, 256, 258, 257, 248, 249, +}; + +/** Token literal values. */ +public static final String[] jjstrLiteralImages = { +"", null, null, null, null, null, null, null, null, null, null, null, null, +"\74\41\55\55", "\55\55\76", "\173", "\175", "\174\75", "\176\75", "\75", "\53", "\55", "\54", +"\73", "\76", "\57", "\133", "\135", "\52", "\46", "\56", "\50", "\51", "\72", null, +null, null, null, null, null, null, null, null, null, null, null, null, null, null, +null, null, null, null, null, null, null, null, null, null, null, null, null, null, +null, null, null, null, null, null, null, null, null, null, null, null, null, null, +null, null, null, null, null, null, null, null, null, null, null, null, null, null, +null, null, null, null, null, null, null, null, null, null, null, null, null, }; + +/** Lexer state names. */ +public static final String[] lexStateNames = { + "DEFAULT", + "IN_INTERPOLATION", + "IN_SINGLE_LINE_COMMENT", + "IN_FORMAL_COMMENT", + "IN_MULTI_LINE_COMMENT", +}; + +/** Lex State array. */ +public static final int[] jjnewLexState = { + -1, -1, 1, -1, 0, 2, -1, 0, 3, 4, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, +}; +static final long[] jjtoToken = { + 0xfffff807ffffe003L, 0xe00ffffffeL, +}; +static final long[] jjtoSkip = { + 0xc90L, 0x0L, +}; +static final long[] jjtoSpecial = { + 0x410L, 0x0L, +}; +static final long[] jjtoMore = { + 0x136cL, 0x0L, +}; +protected CharStream input_stream; +private final int[] jjrounds = new int[375]; +private final int[] jjstateSet = new int[750]; +private final StringBuilder jjimage = new StringBuilder(); +private StringBuilder image = jjimage; +private int jjimageLen; +private int lengthOfMatch; +protected char curChar; +/** Constructor. */ +public ParserTokenManager(CharStream stream){ + input_stream = stream; +} + +/** Constructor. */ +public ParserTokenManager(CharStream stream, int lexState){ + this(stream); + SwitchTo(lexState); +} + +/** Reinitialise parser. */ +public void ReInit(CharStream stream) +{ + jjmatchedPos = jjnewStateCnt = 0; + curLexState = defaultLexState; + input_stream = stream; + ReInitRounds(); +} +private void ReInitRounds() +{ + int i; + jjround = 0x80000001; + for (i = 375; i-- > 0;) + jjrounds[i] = 0x80000000; +} + +/** Reinitialise parser. */ +public void ReInit(CharStream stream, int lexState) +{ + ReInit(stream); + SwitchTo(lexState); +} + +/** Switch to specified lex state. */ +public void SwitchTo(int lexState) +{ + if (lexState >= 5 || lexState < 0) + throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE); + else + curLexState = lexState; +} + +protected Token jjFillToken() +{ + final Token t; + final String curTokenImage; + final int beginLine; + final int endLine; + final int beginColumn; + final int endColumn; + String im = jjstrLiteralImages[jjmatchedKind]; + curTokenImage = (im == null) ? input_stream.GetImage() : im; + beginLine = input_stream.getBeginLine(); + beginColumn = input_stream.getBeginColumn(); + endLine = input_stream.getEndLine(); + endColumn = input_stream.getEndColumn(); + t = Token.newToken(jjmatchedKind, curTokenImage); + + t.beginLine = beginLine; + t.endLine = endLine; + t.beginColumn = beginColumn; + t.endColumn = endColumn; + + return t; +} + +int curLexState = 0; +int defaultLexState = 0; +int jjnewStateCnt; +int jjround; +int jjmatchedPos; +int jjmatchedKind; + +/** Get the next Token. */ +public Token getNextToken() +{ + Token specialToken = null; + Token matchedToken; + int curPos = 0; + + EOFLoop : + for (;;) + { + try + { + curChar = input_stream.BeginToken(); + } + catch(java.io.IOException e) + { + jjmatchedKind = 0; + matchedToken = jjFillToken(); + matchedToken.specialToken = specialToken; + return matchedToken; + } + image = jjimage; + image.setLength(0); + jjimageLen = 0; + + for (;;) + { + switch(curLexState) + { + case 0: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_0(); + if (jjmatchedPos == 0 && jjmatchedKind > 103) + { + jjmatchedKind = 103; + } + break; + case 1: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_1(); + break; + case 2: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_2(); + break; + case 3: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_3(); + if (jjmatchedPos == 0 && jjmatchedKind > 12) + { + jjmatchedKind = 12; + } + break; + case 4: + jjmatchedKind = 0x7fffffff; + jjmatchedPos = 0; + curPos = jjMoveStringLiteralDfa0_4(); + if (jjmatchedPos == 0 && jjmatchedKind > 12) + { + jjmatchedKind = 12; + } + break; + } + if (jjmatchedKind != 0x7fffffff) + { + if (jjmatchedPos + 1 < curPos) + input_stream.backup(curPos - jjmatchedPos - 1); + if ((jjtoToken[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + matchedToken.specialToken = specialToken; + TokenLexicalActions(matchedToken); + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + return matchedToken; + } + else if ((jjtoSkip[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + if ((jjtoSpecial[jjmatchedKind >> 6] & (1L << (jjmatchedKind & 077))) != 0L) + { + matchedToken = jjFillToken(); + if (specialToken == null) + specialToken = matchedToken; + else + { + matchedToken.specialToken = specialToken; + specialToken = (specialToken.next = matchedToken); + } + SkipLexicalActions(matchedToken); + } + else + SkipLexicalActions(null); + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + continue EOFLoop; + } + MoreLexicalActions(); + if (jjnewLexState[jjmatchedKind] != -1) + curLexState = jjnewLexState[jjmatchedKind]; + curPos = 0; + jjmatchedKind = 0x7fffffff; + try { + curChar = input_stream.readChar(); + continue; + } + catch (java.io.IOException e1) { } + } + int error_line = input_stream.getEndLine(); + int error_column = input_stream.getEndColumn(); + String error_after = null; + boolean EOFSeen = false; + try { input_stream.readChar(); input_stream.backup(1); } + catch (java.io.IOException e1) { + EOFSeen = true; + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + if (curChar == '\n' || curChar == '\r') { + error_line++; + error_column = 0; + } + else + error_column++; + } + if (!EOFSeen) { + input_stream.backup(1); + error_after = curPos <= 1 ? "" : input_stream.GetImage(); + } + throw new TokenMgrError(EOFSeen, curLexState, error_line, error_column, error_after, curChar, TokenMgrError.LEXICAL_ERROR); + } + } +} + +void SkipLexicalActions(Token matchedToken) +{ + switch(jjmatchedKind) + { + default : + break; + } +} +void MoreLexicalActions() +{ + jjimageLen += (lengthOfMatch = jjmatchedPos + 1); + switch(jjmatchedKind) + { + case 8 : + image.append(input_stream.GetSuffix(jjimageLen)); + jjimageLen = 0; + input_stream.backup(1); + break; + default : + break; + } +} +void TokenLexicalActions(Token matchedToken) +{ + switch(jjmatchedKind) + { + case 1 : + image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1))); + image = Parser.SPACE; + break; + default : + break; + } +} +private void jjCheckNAdd(int state) +{ + if (jjrounds[state] != jjround) + { + jjstateSet[jjnewStateCnt++] = state; + jjrounds[state] = jjround; + } +} +private void jjAddStates(int start, int end) +{ + do { + jjstateSet[jjnewStateCnt++] = jjnextStates[start]; + } while (start++ != end); +} +private void jjCheckNAddTwoStates(int state1, int state2) +{ + jjCheckNAdd(state1); + jjCheckNAdd(state2); +} + +private void jjCheckNAddStates(int start, int end) +{ + do { + jjCheckNAdd(jjnextStates[start]); + } while (start++ != end); +} + +} diff --git a/sass/src/com/vaadin/sass/parser/SCSSLexicalUnit.java b/sass/src/com/vaadin/sass/parser/SCSSLexicalUnit.java new file mode 100644 index 0000000000..8c2fa4018d --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/SCSSLexicalUnit.java @@ -0,0 +1,16 @@ +package com.vaadin.sass.parser; + +import org.w3c.css.sac.LexicalUnit; + +public interface SCSSLexicalUnit extends LexicalUnit { + static final short SCSS_VARIABLE = 100; + + LexicalUnitImpl divide(LexicalUnitImpl denominator); + + LexicalUnitImpl add(LexicalUnitImpl another); + + LexicalUnitImpl minus(LexicalUnitImpl another); + + LexicalUnitImpl multiply(LexicalUnitImpl another); + +} diff --git a/sass/src/com/vaadin/sass/parser/SelectorListImpl.java b/sass/src/com/vaadin/sass/parser/SelectorListImpl.java new file mode 100644 index 0000000000..634fe57647 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/SelectorListImpl.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 1999 World Wide Web Consortium, + * (Massachusetts Institute of Technology, Institut National de + * Recherche en Informatique et en Automatique, Keio University). All + * Rights Reserved. This program is distributed under the W3C's Software + * Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details. + * + * $Id: SelectorListImpl.java,v 1.1 2000/08/07 01:16:21 plehegar Exp $ + */ +package com.vaadin.sass.parser; + +import org.w3c.css.sac.Selector; +import org.w3c.css.sac.SelectorList; + +/** + * @version $Revision: 1.1 $ + * @author Philippe Le Hegaret + */ +public class SelectorListImpl implements SelectorList { + + Selector[] selectors = new Selector[5]; + int current; + + @Override + public Selector item(int index) { + if ((index < 0) || (index >= current)) { + return null; + } + return selectors[index]; + } + + public Selector itemSelector(int index) { + if ((index < 0) || (index >= current)) { + return null; + } + return selectors[index]; + } + + @Override + public int getLength() { + return current; + } + + public void addSelector(Selector selector) { + if (current == selectors.length) { + Selector[] old = selectors; + selectors = new Selector[old.length + old.length]; + System.arraycopy(old, 0, selectors, 0, old.length); + } + selectors[current++] = selector; + } + + public void replaceSelector(int index, Selector selector) { + if ((index >= 0) && (index < current)) { + selectors[index] = selector; + } + } +} diff --git a/sass/src/com/vaadin/sass/parser/Selectors.java b/sass/src/com/vaadin/sass/parser/Selectors.java new file mode 100644 index 0000000000..bec8d66294 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/Selectors.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 1999 World Wide Web Consortium, + * (Massachusetts Institute of Technology, Institut National de + * Recherche en Informatique et en Automatique, Keio University). All + * Rights Reserved. This program is distributed under the W3C's Software + * Intellectual Property License. This program 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 W3C License http://www.w3.org/Consortium/Legal/ for more details. + * + * $Id: Selectors.java,v 1.1 2000/02/14 16:58:31 plehegar Exp $ + */ +package com.vaadin.sass.parser; + +import org.w3c.css.sac.SelectorList; +import org.w3c.css.sac.Selector; + +/** + * @version $Revision: 1.1 $ + * @author Philippe Le Hegaret + */ +class Selectors implements SelectorList { + + Selector[] selectors = new Selector[5]; + int current; + + public Selector item(int index) { + if ((index < 0) || (index >= current)) { + return null; + } + return selectors[index]; + } + + public Selector itemSelector(int index) { + if ((index < 0) || (index >= current)) { + return null; + } + return selectors[index]; + } + + public int getLength() { + return current; + } + + void addSelector(Selector selector) { + if (current == selectors.length) { + Selector[] old = selectors; + selectors = new Selector[old.length + old.length]; + System.arraycopy(old, 0, selectors, 0, old.length); + } + selectors[current++] = selector; + } +} diff --git a/sass/src/com/vaadin/sass/parser/ThrowedParseException.java b/sass/src/com/vaadin/sass/parser/ThrowedParseException.java new file mode 100644 index 0000000000..5c1a9e8f33 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/ThrowedParseException.java @@ -0,0 +1,26 @@ +/* + * (c) COPYRIGHT 1999 World Wide Web Consortium + * (Massachusetts Institute of Technology, Institut National de Recherche + * en Informatique et en Automatique, Keio University). + * All Rights Reserved. http://www.w3.org/Consortium/Legal/ + * + * $Id: ThrowedParseException.java,v 1.1 1999/06/09 15:21:33 plehegar Exp $ + */ +package com.vaadin.sass.parser; + +/** + * @version $Revision: 1.1 $ + * @author Philippe Le Hegaret + */ +class ThrowedParseException extends RuntimeException { + private static final long serialVersionUID = -7926371344505913546L; + + ParseException e; + + /** + * Creates a new ThrowedParseException + */ + ThrowedParseException(ParseException e) { + this.e = e; + } +} diff --git a/sass/src/com/vaadin/sass/parser/Token.java b/sass/src/com/vaadin/sass/parser/Token.java new file mode 100644 index 0000000000..554b97896e --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/Token.java @@ -0,0 +1,131 @@ +/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */ +/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */ +package com.vaadin.sass.parser; + +/** + * Describes the input token stream. + */ + +public class Token implements java.io.Serializable { + + /** + * The version identifier for this Serializable class. + * Increment only if the serialized form of the + * class changes. + */ + private static final long serialVersionUID = 1L; + + /** + * An integer that describes the kind of this token. This numbering + * system is determined by JavaCCParser, and a table of these numbers is + * stored in the file ...Constants.java. + */ + public int kind; + + /** The line number of the first character of this Token. */ + public int beginLine; + /** The column number of the first character of this Token. */ + public int beginColumn; + /** The line number of the last character of this Token. */ + public int endLine; + /** The column number of the last character of this Token. */ + public int endColumn; + + /** + * The string image of the token. + */ + public String image; + + /** + * A reference to the next regular (non-special) token from the input + * stream. If this is the last token from the input stream, or if the + * token manager has not read tokens beyond this one, this field is + * set to null. This is true only if this token is also a regular + * token. Otherwise, see below for a description of the contents of + * this field. + */ + public Token next; + + /** + * This field is used to access special tokens that occur prior to this + * token, but after the immediately preceding regular (non-special) token. + * If there are no such special tokens, this field is set to null. + * When there are more than one such special token, this field refers + * to the last of these special tokens, which in turn refers to the next + * previous special token through its specialToken field, and so on + * until the first special token (whose specialToken field is null). + * The next fields of special tokens refer to other special tokens that + * immediately follow it (without an intervening regular token). If there + * is no such token, this field is null. + */ + public Token specialToken; + + /** + * An optional attribute value of the Token. + * Tokens which are not used as syntactic sugar will often contain + * meaningful values that will be used later on by the compiler or + * interpreter. This attribute value is often different from the image. + * Any subclass of Token that actually wants to return a non-null value can + * override this method as appropriate. + */ + public Object getValue() { + return null; + } + + /** + * No-argument constructor + */ + public Token() {} + + /** + * Constructs a new token for the specified Image. + */ + public Token(int kind) + { + this(kind, null); + } + + /** + * Constructs a new token for the specified Image and Kind. + */ + public Token(int kind, String image) + { + this.kind = kind; + this.image = image; + } + + /** + * Returns the image. + */ + public String toString() + { + return image; + } + + /** + * Returns a new Token object, by default. However, if you want, you + * can create and return subclass objects based on the value of ofKind. + * Simply add the cases to the switch for all those special cases. + * For example, if you have a subclass of Token called IDToken that + * you want to create if ofKind is ID, simply add something like : + * + * case MyParserConstants.ID : return new IDToken(ofKind, image); + * + * to the following switch statement. Then you can cast matchedToken + * variable to the appropriate type and use sit in your lexical actions. + */ + public static Token newToken(int ofKind, String image) + { + switch(ofKind) + { + default : return new Token(ofKind, image); + } + } + + public static Token newToken(int ofKind) + { + return newToken(ofKind, null); + } + +} +/* JavaCC - OriginalChecksum=fd921a11cd37e391729b9460c71d3ad6 (do not edit this line) */ diff --git a/sass/src/com/vaadin/sass/parser/TokenMgrError.java b/sass/src/com/vaadin/sass/parser/TokenMgrError.java new file mode 100644 index 0000000000..311bf0d9b3 --- /dev/null +++ b/sass/src/com/vaadin/sass/parser/TokenMgrError.java @@ -0,0 +1,147 @@ +/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */ +/* JavaCCOptions: */ +package com.vaadin.sass.parser; + +/** Token Manager Error. */ +public class TokenMgrError extends Error +{ + + /** + * The version identifier for this Serializable class. + * Increment only if the serialized form of the + * class changes. + */ + private static final long serialVersionUID = 1L; + + /* + * Ordinals for various reasons why an Error of this type can be thrown. + */ + + /** + * Lexical error occurred. + */ + static final int LEXICAL_ERROR = 0; + + /** + * An attempt was made to create a second instance of a static token manager. + */ + static final int STATIC_LEXER_ERROR = 1; + + /** + * Tried to change to an invalid lexical state. + */ + static final int INVALID_LEXICAL_STATE = 2; + + /** + * Detected (and bailed out of) an infinite loop in the token manager. + */ + static final int LOOP_DETECTED = 3; + + /** + * Indicates the reason why the exception is thrown. It will have + * one of the above 4 values. + */ + int errorCode; + + /** + * Replaces unprintable characters by their escaped (or unicode escaped) + * equivalents in the given string + */ + protected static final String addEscapes(String str) { + StringBuffer retval = new StringBuffer(); + char ch; + for (int i = 0; i < str.length(); i++) { + switch (str.charAt(i)) + { + case 0 : + continue; + case '\b': + retval.append("\\b"); + continue; + case '\t': + retval.append("\\t"); + continue; + case '\n': + retval.append("\\n"); + continue; + case '\f': + retval.append("\\f"); + continue; + case '\r': + retval.append("\\r"); + continue; + case '\"': + retval.append("\\\""); + continue; + case '\'': + retval.append("\\\'"); + continue; + case '\\': + retval.append("\\\\"); + continue; + default: + if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) { + String s = "0000" + Integer.toString(ch, 16); + retval.append("\\u" + s.substring(s.length() - 4, s.length())); + } else { + retval.append(ch); + } + continue; + } + } + return retval.toString(); + } + + /** + * Returns a detailed message for the Error when it is thrown by the + * token manager to indicate a lexical error. + * Parameters : + * EOFSeen : indicates if EOF caused the lexical error + * curLexState : lexical state in which this error occurred + * errorLine : line number when the error occurred + * errorColumn : column number when the error occurred + * errorAfter : prefix that was seen before this error occurred + * curchar : the offending character + * Note: You can customize the lexical error message by modifying this method. + */ + protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) { + return("Lexical error at line " + + errorLine + ", column " + + errorColumn + ". Encountered: " + + (EOFSeen ? " " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") + + "after : \"" + addEscapes(errorAfter) + "\""); + } + + /** + * You can also modify the body of this method to customize your error messages. + * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not + * of end-users concern, so you can return something like : + * + * "Internal Error : Please file a bug report .... " + * + * from this method for such cases in the release version of your parser. + */ + public String getMessage() { + return super.getMessage(); + } + + /* + * Constructors of various flavors follow. + */ + + /** No arg constructor. */ + public TokenMgrError() { + } + + /** Constructor with message and reason. */ + public TokenMgrError(String message, int reason) { + super(message); + errorCode = reason; + } + + /** Full Constructor. */ + public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) { + this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason); + } +} +/* JavaCC - OriginalChecksum=7d5524d89510a94f7c2ac022e99c24c3 (do not edit this line) */ diff --git a/sass/src/com/vaadin/sass/selector/CompositeSelector.java b/sass/src/com/vaadin/sass/selector/CompositeSelector.java new file mode 100644 index 0000000000..cd6026a3a2 --- /dev/null +++ b/sass/src/com/vaadin/sass/selector/CompositeSelector.java @@ -0,0 +1,27 @@ +package com.vaadin.sass.selector; + +import org.w3c.css.sac.Selector; + +public class CompositeSelector implements Selector { + public static final short SCSS_COMPOSITE_SELECTOR = 100; + private Selector first; + private Selector second; + + public CompositeSelector(Selector first, Selector second) { + this.first = first; + this.second = second; + } + + public Selector getFirst() { + return first; + } + + public Selector getSecond() { + return second; + } + + @Override + public short getSelectorType() { + return SCSS_COMPOSITE_SELECTOR; + } +} diff --git a/sass/src/com/vaadin/sass/selector/SelectorUtil.java b/sass/src/com/vaadin/sass/selector/SelectorUtil.java new file mode 100644 index 0000000000..92fc332c59 --- /dev/null +++ b/sass/src/com/vaadin/sass/selector/SelectorUtil.java @@ -0,0 +1,292 @@ +package com.vaadin.sass.selector; + +import org.w3c.css.sac.CombinatorCondition; +import org.w3c.css.sac.Condition; +import org.w3c.css.sac.ConditionFactory; +import org.w3c.css.sac.ConditionalSelector; +import org.w3c.css.sac.DescendantSelector; +import org.w3c.css.sac.ElementSelector; +import org.w3c.css.sac.Selector; +import org.w3c.css.sac.SelectorFactory; +import org.w3c.css.sac.SelectorList; +import org.w3c.css.sac.SiblingSelector; +import org.w3c.css.sac.SimpleSelector; +import org.w3c.flute.parser.selectors.AndConditionImpl; +import org.w3c.flute.parser.selectors.AttributeConditionImpl; +import org.w3c.flute.parser.selectors.ClassConditionImpl; +import org.w3c.flute.parser.selectors.ConditionFactoryImpl; +import org.w3c.flute.parser.selectors.DirectAdjacentSelectorImpl; +import org.w3c.flute.parser.selectors.ElementSelectorImpl; +import org.w3c.flute.parser.selectors.IdConditionImpl; +import org.w3c.flute.parser.selectors.PseudoClassConditionImpl; +import org.w3c.flute.parser.selectors.PseudoElementSelectorImpl; +import org.w3c.flute.parser.selectors.SelectorFactoryImpl; + +import com.vaadin.sass.parser.SelectorListImpl; + +public class SelectorUtil { + + public static String toString(CompositeSelector compositeSelector) { + StringBuilder builder = new StringBuilder(); + if (compositeSelector != null) { + if (compositeSelector.getFirst() != null) { + builder.append(toString(compositeSelector.getFirst())).append( + " "); + } + if (compositeSelector.getSecond() != null) { + builder.append(toString(compositeSelector.getSecond())); + } + } + return builder.toString(); + } + + public static String toString(SelectorList selectorList) { + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < selectorList.getLength(); i++) { + String selectorString = toString(selectorList.item(i)); + stringBuilder.append(selectorString); + if (selectorList.getLength() > i + 1) { + stringBuilder.append(", "); + } + } + return stringBuilder.toString(); + } + + public static String toString(Selector selector) { + if (selector == null) { + return ""; + } + if (selector.getSelectorType() == Selector.SAC_CONDITIONAL_SELECTOR) { + StringBuilder stringBuilder = new StringBuilder(); + ConditionalSelector conditionalSelector = (ConditionalSelector) selector; + String simpleSelectorString = toString(conditionalSelector + .getSimpleSelector()); + if (simpleSelectorString != null) { + stringBuilder.append(simpleSelectorString); + } + String conditionString = getConditionString(conditionalSelector + .getCondition()); + stringBuilder.append(conditionString); + return stringBuilder.toString(); + } else if (selector.getSelectorType() == Selector.SAC_DESCENDANT_SELECTOR) { + return getDecendantSelectorString((DescendantSelector) selector, + " "); + } else if (selector.getSelectorType() == Selector.SAC_CHILD_SELECTOR) { + DescendantSelector childSelector = (DescendantSelector) selector; + String seperator = " > "; + if (childSelector.getSimpleSelector() instanceof PseudoElementSelectorImpl) { + seperator = "::"; + } + return getDecendantSelectorString((DescendantSelector) selector, + seperator); + } else if (selector.getSelectorType() == Selector.SAC_ELEMENT_NODE_SELECTOR) { + ElementSelectorImpl elementSelector = (ElementSelectorImpl) selector; + return elementSelector.getLocalName() == null ? "" + : elementSelector.getLocalName(); + } else if (selector.getSelectorType() == Selector.SAC_DIRECT_ADJACENT_SELECTOR) { + DirectAdjacentSelectorImpl directAdjacentSelector = (DirectAdjacentSelectorImpl) selector; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder + .append(toString(directAdjacentSelector.getSelector())); + stringBuilder.append(" + "); + stringBuilder.append(toString(directAdjacentSelector + .getSiblingSelector())); + return stringBuilder.toString(); + } else if (selector.getSelectorType() == Selector.SAC_PSEUDO_ELEMENT_SELECTOR) { + PseudoElementSelectorImpl pseudoElementSelectorImpl = (PseudoElementSelectorImpl) selector; + return pseudoElementSelectorImpl.getLocalName(); + } else if (selector.getSelectorType() == CompositeSelector.SCSS_COMPOSITE_SELECTOR) { + return toString((CompositeSelector) selector); + } else { + System.out.println("SU !Unknown selector type, type: " + + selector.getSelectorType() + ", " + selector.toString()); + } + return ""; + } + + private static String getDecendantSelectorString( + DescendantSelector selector, String separator) { + StringBuilder stringBuilder = new StringBuilder(); + String ancestor = toString(selector.getAncestorSelector()); + String simpleSelector = toString(selector.getSimpleSelector()); + stringBuilder.append(ancestor); + stringBuilder.append(separator); + stringBuilder.append(simpleSelector); + return stringBuilder.toString(); + } + + private static String getConditionString(Condition condition) { + short conditionType = condition.getConditionType(); + if (conditionType == Condition.SAC_CLASS_CONDITION) { + ClassConditionImpl classCondition = (ClassConditionImpl) condition; + return "." + classCondition.getValue(); + } else if (conditionType == Condition.SAC_ID_CONDITION) { + IdConditionImpl idCondition = (IdConditionImpl) condition; + return "#" + idCondition.getValue(); + } else if (conditionType == Condition.SAC_AND_CONDITION) { + AndConditionImpl andCondition = (AndConditionImpl) condition; + return getConditionString(andCondition.getFirstCondition()) + + getConditionString(andCondition.getSecondCondition()); + } else if (conditionType == Condition.SAC_ATTRIBUTE_CONDITION) { + AttributeConditionImpl attributeCondition = (AttributeConditionImpl) condition; + StringBuilder string = new StringBuilder(); + string.append('['); + string.append(attributeCondition.getLocalName()); + String value = attributeCondition.getValue(); + if ("true".equals(value) || "false".equals(value)) { + string.append("=").append(value).append(']'); + } else { + string.append("=\""); + string.append(attributeCondition.getValue()); + string.append("\"]"); + } + return string.toString(); + } else if (conditionType == Condition.SAC_PSEUDO_CLASS_CONDITION) { + PseudoClassConditionImpl pseudoClassCondition = (PseudoClassConditionImpl) condition; + return ":" + pseudoClassCondition.getValue(); + } else { + System.out.println("CU !condition type not identified, type: " + + conditionType + ", " + condition.toString()); + return ""; + } + } + + public static boolean hasParentSelector(SelectorList selectorList) { + String selectorString = toString(selectorList); + return selectorString.contains("&"); + } + + public static SelectorList createNewSelectorListFromAnOldOneWithSomPartReplaced( + SelectorList oldList, String toBeReplacedSelectorName, + SelectorList candidateSelectorList) throws Exception { + if (candidateSelectorList.getLength() != 1) { + throw new Exception("Candidate selector should not be a list"); + } + if (!(candidateSelectorList.item(0) instanceof SimpleSelector)) { + throw new Exception( + "Candidate selector should only be a SimpleSelector"); + } + SelectorListImpl newSelectorList = new SelectorListImpl(); + SimpleSelector candidateSelector = (SimpleSelector) candidateSelectorList + .item(0); + for (int i = 0; i < oldList.getLength(); i++) { + Selector selector = oldList.item(i); + newSelectorList.addSelector(createSelectorWithSomePartReplaced( + selector, toBeReplacedSelectorName, candidateSelector)); + } + return newSelectorList; + } + + private static Selector createSelectorWithSomePartReplaced( + Selector selector, String toBeReplacedSelectorName, + SimpleSelector candidateSelector) { + if (!toString(selector).contains(toBeReplacedSelectorName)) { + return selector; + } + SelectorFactory factory = new SelectorFactoryImpl(); + if (selector instanceof SimpleSelector) { + return createSimpleSelectorWithSomePartReplaced( + (SimpleSelector) selector, toBeReplacedSelectorName, + candidateSelector); + } else if (selector instanceof DescendantSelector) { + DescendantSelector descendantSelector = (DescendantSelector) selector; + Selector ancestor = descendantSelector.getAncestorSelector(); + SimpleSelector simpleSelector = descendantSelector + .getSimpleSelector(); + return factory.createDescendantSelector( + createSelectorWithSomePartReplaced(ancestor, + toBeReplacedSelectorName, candidateSelector), + createSimpleSelectorWithSomePartReplaced(simpleSelector, + toBeReplacedSelectorName, candidateSelector)); + } else if (selector instanceof DirectAdjacentSelectorImpl) { + SiblingSelector siblingSelector = (SiblingSelector) selector; + Selector ancestor = siblingSelector.getSelector(); + SimpleSelector simpleSelector = siblingSelector + .getSiblingSelector(); + return factory.createDirectAdjacentSelector( + Selector.SAC_DIRECT_ADJACENT_SELECTOR, ancestor, + simpleSelector); + } else if (selector instanceof CompositeSelector) { + CompositeSelector compositeSelector = (CompositeSelector) selector; + Selector first = compositeSelector.getFirst(); + Selector second = compositeSelector.getSecond(); + return new CompositeSelector(createSelectorWithSomePartReplaced( + first, toBeReplacedSelectorName, candidateSelector), + createSelectorWithSomePartReplaced(second, + toBeReplacedSelectorName, candidateSelector)); + } + return null; + } + + private static SimpleSelector createSimpleSelectorWithSomePartReplaced( + SimpleSelector simpleSelector, String toBeReplacedSelectorName, + SimpleSelector candidateSelector) { + if (simpleSelector == null + || !toString(simpleSelector).contains(toBeReplacedSelectorName)) { + return simpleSelector; + } + if (simpleSelector instanceof ElementSelector + && candidateSelector instanceof ElementSelector) { + return candidateSelector; + } + if (simpleSelector instanceof ConditionalSelector) { + return createConditionSelectorWithSomePartReplaced( + (ConditionalSelector) simpleSelector, + toBeReplacedSelectorName, candidateSelector); + } + return simpleSelector; + } + + private static ConditionalSelector createConditionSelectorWithSomePartReplaced( + ConditionalSelector oldConditionSelector, + String toBeReplacedSelectorName, SimpleSelector candidateSelector) { + if (oldConditionSelector == null + || !toString(oldConditionSelector).contains( + toBeReplacedSelectorName)) { + return oldConditionSelector; + } + SelectorFactory selectorFactory = new SelectorFactoryImpl(); + if (candidateSelector instanceof ElementSelector) { + return selectorFactory.createConditionalSelector(candidateSelector, + oldConditionSelector.getCondition()); + } + if (candidateSelector instanceof ConditionalSelector) { + // TODO some cases not covered. + ConditionalSelector candidateConditionSelector = (ConditionalSelector) candidateSelector; + Condition newCondition = createConditionWithSomePartReplaced( + oldConditionSelector.getCondition(), + toBeReplacedSelectorName, + candidateConditionSelector.getCondition()); + return selectorFactory.createConditionalSelector( + oldConditionSelector.getSimpleSelector(), newCondition); + } + return oldConditionSelector; + } + + private static Condition createConditionWithSomePartReplaced( + Condition oldCondition, String toBeReplaced, Condition candidate) { + if (oldCondition == null + || !getConditionString(oldCondition).contains(toBeReplaced)) { + return oldCondition; + } + if (oldCondition.getConditionType() == Condition.SAC_AND_CONDITION) { + ConditionFactory conditionFactory = new ConditionFactoryImpl(); + CombinatorCondition oldCombinatorCondition = (CombinatorCondition) oldCondition; + Condition newFirstCondition = createConditionWithSomePartReplaced( + oldCombinatorCondition.getFirstCondition(), toBeReplaced, + candidate); + Condition newSecondCondition = createConditionWithSomePartReplaced( + oldCombinatorCondition.getSecondCondition(), toBeReplaced, + candidate); + return conditionFactory.createAndCondition(newFirstCondition, + newSecondCondition); + } else { + return candidate; + } + } + + public static boolean equals(Selector one, Selector another) { + return one == null ? another == null : toString(one).equals( + toString(another)); + } +} diff --git a/sass/src/com/vaadin/sass/tree/BlockNode.java b/sass/src/com/vaadin/sass/tree/BlockNode.java new file mode 100644 index 0000000000..946a6b92e2 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/BlockNode.java @@ -0,0 +1,57 @@ +package com.vaadin.sass.tree; + +import org.w3c.css.sac.SelectorList; + +import com.vaadin.sass.parser.SelectorListImpl; +import com.vaadin.sass.selector.SelectorUtil; + +public class BlockNode extends Node { + + private static final long serialVersionUID = 5742962631468325048L; + + SelectorList selectorList; + + public BlockNode(SelectorList selectorList) { + this.selectorList = selectorList; + } + + public SelectorList getSelectorList() { + return selectorList; + } + + public void setSelectorList(SelectorList selectorList) { + this.selectorList = selectorList; + } + + public String toString(boolean indent) { + StringBuilder string = new StringBuilder(); + string.append(SelectorUtil.toString(selectorList)); + string.append(" {\n"); + for (Node child : children) { + if (indent) { + string.append("\t"); + } + string.append("\t" + child.toString() + "\n"); + } + if (indent) { + string.append("\t"); + } + string.append("}"); + return string.toString(); + } + + @Override + public String toString() { + return toString(false); + } + + @Override + protected Object clone() throws CloneNotSupportedException { + SelectorListImpl clonedSelectorList = new SelectorListImpl(); + for (int i = 0; i < selectorList.getLength(); i++) { + clonedSelectorList.addSelector(selectorList.item(i)); + } + return null; + // BlockNode clone = new BlockNode() + } +} diff --git a/sass/src/com/vaadin/sass/tree/EachNode.java b/sass/src/com/vaadin/sass/tree/EachNode.java new file mode 100644 index 0000000000..e60663b790 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/EachNode.java @@ -0,0 +1,22 @@ +package com.vaadin.sass.tree; + +public class EachNode extends Node { + private static final long serialVersionUID = 7943948981204906221L; + + private String var; + private String list; + private String body; + + public EachNode(String var, String list, String body) { + super(); + this.var = var; + this.list = list; + this.body = body; + } + + @Override + public String toString() { + return "Each Node: {variable: " + var + ", list: " + list + ", body: " + + body + "}"; + } +} diff --git a/sass/src/com/vaadin/sass/tree/ExtendNode.java b/sass/src/com/vaadin/sass/tree/ExtendNode.java new file mode 100644 index 0000000000..2e49637067 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/ExtendNode.java @@ -0,0 +1,19 @@ +package com.vaadin.sass.tree; + +import org.w3c.css.sac.SelectorList; + +public class ExtendNode extends Node { + private static final long serialVersionUID = 3301805078983796878L; + + SelectorList list; + + public ExtendNode(SelectorList list) { + super(); + this.list = list; + } + + public SelectorList getList() { + return list; + } + +} diff --git a/sass/src/com/vaadin/sass/tree/ForNode.java b/sass/src/com/vaadin/sass/tree/ForNode.java new file mode 100644 index 0000000000..ae083a025c --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/ForNode.java @@ -0,0 +1,28 @@ +package com.vaadin.sass.tree; + +public class ForNode extends Node { + private static final long serialVersionUID = -1159180539216623335L; + + String var; + String from; + String to; + boolean exclusive; + String body; + + public ForNode(String var, String from, String to, boolean exclusive, + String body) { + super(); + this.var = var; + this.from = from; + this.to = to; + this.exclusive = exclusive; + this.body = body; + } + + @Override + public String toString() { + return "For Node: " + "{variable: " + var + ", from:" + from + ", to: " + + to + ", exclusive: " + exclusive + ", body" + body; + } + +} diff --git a/sass/src/com/vaadin/sass/tree/FunctionNode.java b/sass/src/com/vaadin/sass/tree/FunctionNode.java new file mode 100644 index 0000000000..898a2f9986 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/FunctionNode.java @@ -0,0 +1,26 @@ +package com.vaadin.sass.tree; + +public class FunctionNode extends Node { + private static final long serialVersionUID = -5383104165955523923L; + + private String name; + private String args; + private String body; + + public FunctionNode(String name) { + super(); + this.name = name; + } + + public FunctionNode(String name, String args, String body) { + this.name = name; + this.args = args; + this.body = body; + } + + @Override + public String toString() { + return "Function Node: {name: " + name + ", args: " + args + ", body: " + + body + "}"; + } +} diff --git a/sass/src/com/vaadin/sass/tree/IfNode.java b/sass/src/com/vaadin/sass/tree/IfNode.java new file mode 100644 index 0000000000..148ab1eda1 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/IfNode.java @@ -0,0 +1,6 @@ +package com.vaadin.sass.tree; + +public class IfNode extends Node { + private static final long serialVersionUID = 1561250630856748066L; + +} diff --git a/sass/src/com/vaadin/sass/tree/ImportNode.java b/sass/src/com/vaadin/sass/tree/ImportNode.java new file mode 100644 index 0000000000..46657df425 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/ImportNode.java @@ -0,0 +1,55 @@ +package com.vaadin.sass.tree; + +import org.w3c.css.sac.SACMediaList; + +public class ImportNode extends Node { + private static final long serialVersionUID = 5671255892282668438L; + + private String uri; + private SACMediaList ml; + private boolean isURL; + + public ImportNode(String uri, SACMediaList ml, boolean isURL) { + super(); + this.uri = uri; + this.ml = ml; + this.isURL = isURL; + } + + public boolean isPureCssImport() { + return (isURL || uri.endsWith(".css") || uri.startsWith("http://") || hasMediaQueries()); + } + + private boolean hasMediaQueries() { + return (ml != null && ml.getLength() >= 1 && !"all".equals(ml.item(0))); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder("@import "); + if (isURL) { + builder.append("url(").append(uri).append(")"); + } else { + builder.append("\"").append(uri).append("\""); + } + if (hasMediaQueries()) { + for (int i = 0; i < ml.getLength(); i++) { + builder.append(" ").append(ml.item(i)); + } + } + builder.append(";"); + return builder.toString(); + } + + public String getUri() { + return uri; + } + + public void setUri(String uri) { + this.uri = uri; + } + + public SACMediaList getMl() { + return ml; + } +} diff --git a/sass/src/com/vaadin/sass/tree/MediaNode.java b/sass/src/com/vaadin/sass/tree/MediaNode.java new file mode 100644 index 0000000000..5a824f07c8 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/MediaNode.java @@ -0,0 +1,43 @@ +package com.vaadin.sass.tree; + +import org.w3c.css.sac.SACMediaList; + +public class MediaNode extends Node { + private static final long serialVersionUID = 2502097081457509523L; + + SACMediaList media; + + public MediaNode(SACMediaList media) { + super(); + this.media = media; + } + + public SACMediaList getMedia() { + return media; + } + + public void setMedia(SACMediaList media) { + this.media = media; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder("@media "); + if (media != null) { + for (int i = 0; i < media.getLength(); i++) { + builder.append(media.item(i)); + } + } + builder.append(" {\n"); + for (Node child : children) { + if (child instanceof BlockNode) { + builder.append("\t" + ((BlockNode) child).toString(true) + "\n"); + } else { + builder.append("\t" + child.toString() + "\n"); + } + + } + builder.append("}"); + return builder.toString(); + } +} diff --git a/sass/src/com/vaadin/sass/tree/MixinDefNode.java b/sass/src/com/vaadin/sass/tree/MixinDefNode.java new file mode 100644 index 0000000000..891724fa72 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/MixinDefNode.java @@ -0,0 +1,51 @@ +package com.vaadin.sass.tree; + +import java.util.ArrayList; +import java.util.Collection; + +public class MixinDefNode extends Node { + private static final long serialVersionUID = 5469294053247343948L; + + private String name; + private ArrayList arglist; + private String args; + private String body; + + public MixinDefNode(String name, Collection args) { + super(); + this.name = name; + arglist = new ArrayList(); + if (args != null && !args.isEmpty()) { + arglist.addAll(args); + } + } + + public MixinDefNode(String name, String args, String body) { + this.name = name; + this.args = args; + this.body = body; + } + + @Override + public String toString() { + return "Mixin Definition Node: {name: " + name + ", args: " + args + + ", body: " + body + "}"; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ArrayList getArglist() { + return arglist; + } + + public void setArglist(ArrayList arglist) { + this.arglist = arglist; + } + +} diff --git a/sass/src/com/vaadin/sass/tree/MixinNode.java b/sass/src/com/vaadin/sass/tree/MixinNode.java new file mode 100644 index 0000000000..596765d00e --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/MixinNode.java @@ -0,0 +1,43 @@ +package com.vaadin.sass.tree; + +import java.util.ArrayList; +import java.util.Collection; + +import org.w3c.css.sac.LexicalUnit; + +public class MixinNode extends Node { + private static final long serialVersionUID = 4725008226813110658L; + + private String name; + private ArrayList arglist; + + public MixinNode(String name, Collection args) { + super(); + this.name = name; + arglist = new ArrayList(); + if (args != null && !args.isEmpty()) { + arglist.addAll(args); + } + } + + @Override + public String toString() { + return "name: " + name + " args: " + arglist; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public ArrayList getArglist() { + return arglist; + } + + public void setArglist(ArrayList arglist) { + this.arglist = arglist; + } +} diff --git a/sass/src/com/vaadin/sass/tree/NestPropertiesNode.java b/sass/src/com/vaadin/sass/tree/NestPropertiesNode.java new file mode 100644 index 0000000000..51a4649629 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/NestPropertiesNode.java @@ -0,0 +1,40 @@ +package com.vaadin.sass.tree; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +public class NestPropertiesNode extends Node { + private static final long serialVersionUID = 3671253315690598308L; + + public NestPropertiesNode(String name) { + super(); + this.name = name; + } + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Collection unNesting() { + List result = new ArrayList(); + for (Node child : children) { + result.add(createNewRuleNodeFromChild((RuleNode) child)); + } + return result; + } + + public RuleNode createNewRuleNodeFromChild(RuleNode child) { + StringBuilder builder = new StringBuilder(name); + builder.append("-").append(child.getVariable()); + RuleNode newRuleNode = new RuleNode(builder.toString(), + child.getValue(), child.isImportant(), null); + return newRuleNode; + } +} diff --git a/sass/src/com/vaadin/sass/tree/Node.java b/sass/src/com/vaadin/sass/tree/Node.java new file mode 100644 index 0000000000..2e539473ce --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/Node.java @@ -0,0 +1,92 @@ +package com.vaadin.sass.tree; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +public abstract class Node implements Serializable { + private static final long serialVersionUID = 5914711715839294816L; + + protected ArrayList children; + private String fileName; + + protected String rawString; + protected List variables; + + public Node() { + children = new ArrayList(); + variables = new ArrayList(); + } + + public Node(String raw) { + this(); + rawString = raw; + } + + public void appendAll(Collection nodes) { + if (nodes != null && !nodes.isEmpty()) { + children.addAll(nodes); + } + } + + public void appendChild(Node node) { + if (node != null) { + children.add(node); + } + } + + public void appendChild(Node node, Node after) { + if (node != null) { + int index = children.indexOf(after); + if (index != -1) { + children.add(index + 1, node); + } else { + throw new NullPointerException("after-node was not found"); + } + } + } + + public void removeChild(Node node) { + if (node != null) { + children.remove(node); + } + } + + public ArrayList getChildren() { + return children; + } + + public void setChildren(ArrayList children) { + this.children = children; + } + + public boolean hasChildren() { + return !children.isEmpty(); + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileName() { + return fileName; + } + + @Override + public String toString() { + return ""; + } + + public String getRawString() { + return rawString; + } + + public void addVariable(String var) { + variables.add(var); + } + + public void removeVariable(String var) { + variables.remove(var); + } +} diff --git a/sass/src/com/vaadin/sass/tree/RuleNode.java b/sass/src/com/vaadin/sass/tree/RuleNode.java new file mode 100644 index 0000000000..1683a727c0 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/RuleNode.java @@ -0,0 +1,64 @@ +package com.vaadin.sass.tree; + +import org.w3c.css.sac.LexicalUnit; + +public class RuleNode extends Node { + private static final long serialVersionUID = 6653493127869037022L; + + String variable; + LexicalUnit value; + String comment; + private boolean important; + + public RuleNode(String variable, LexicalUnit value, boolean important, + String comment) { + this.variable = variable; + this.value = value; + this.important = important; + this.comment = comment; + } + + public String getVariable() { + return variable; + } + + public void setVariable(String variable) { + this.variable = variable; + } + + public LexicalUnit getValue() { + return value; + } + + public void setValue(LexicalUnit value) { + this.value = value; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append(variable).append(": ").append(value.toString()); + builder.append(important ? " !important;" : ";"); + if (comment != null) { + builder.append(comment); + } + return builder.toString(); + } + + public boolean isImportant() { + return important; + } + + public void setImportant(boolean important) { + this.important = important; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + +} diff --git a/sass/src/com/vaadin/sass/tree/VariableNode.java b/sass/src/com/vaadin/sass/tree/VariableNode.java new file mode 100644 index 0000000000..3a7a5fe710 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/VariableNode.java @@ -0,0 +1,51 @@ +package com.vaadin.sass.tree; + +import org.w3c.css.sac.LexicalUnit; + +public class VariableNode extends Node { + private static final long serialVersionUID = 7003372557547748734L; + + private String name; + private LexicalUnit expr; + private boolean guarded; + + public VariableNode(String name, LexicalUnit expr, boolean guarded) { + super(); + this.name = name; + this.expr = expr; + this.guarded = guarded; + } + + public VariableNode(String name, String raw) { + super(raw); + this.name = name; + } + + public LexicalUnit getExpr() { + return expr; + } + + public void setExpr(LexicalUnit expr) { + this.expr = expr; + } + + public String getName() { + return name; + } + + public boolean isGuarded() { + return guarded; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder("$"); + builder.append(name).append(": ").append(expr); + return builder.toString(); + } + + public void setGuarded(boolean guarded) { + this.guarded = guarded; + } + +} diff --git a/sass/src/com/vaadin/sass/tree/WhileNode.java b/sass/src/com/vaadin/sass/tree/WhileNode.java new file mode 100644 index 0000000000..3ec3b2eb69 --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/WhileNode.java @@ -0,0 +1,20 @@ +package com.vaadin.sass.tree; + + +public class WhileNode extends Node { + private static final long serialVersionUID = 7593896018196027279L; + + private String condition; + private String body; + + public WhileNode(String condition, String body) { + this.condition = condition; + this.body = body; + } + + @Override + public String toString() { + return "While Node: { condition: " + condition + ", body:" + body + "}"; + } + +} diff --git a/sass/src/com/vaadin/sass/util/ColorUtil.java b/sass/src/com/vaadin/sass/util/ColorUtil.java new file mode 100644 index 0000000000..4a9769ac89 --- /dev/null +++ b/sass/src/com/vaadin/sass/util/ColorUtil.java @@ -0,0 +1,290 @@ +package com.vaadin.sass.util; + +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.parser.LexicalUnitImpl; + +public class ColorUtil { + public static LexicalUnitImpl hexColorToHsl(LexicalUnitImpl hexColor) { + String s = hexColor.getStringValue().substring(1); + int r = 0, g = 0, b = 0; + if (s.length() == 3) { + String sh = s.substring(0, 1); + r = Integer.parseInt(sh + sh, 16); + sh = s.substring(1, 2); + g = Integer.parseInt(sh + sh, 16); + sh = s.substring(2, 3); + b = Integer.parseInt(sh + sh, 16); + } else if (s.length() == 6) { + r = Integer.parseInt(s.substring(0, 2), 16); + g = Integer.parseInt(s.substring(2, 4), 16); + b = Integer.parseInt(s.substring(4, 6), 16); + } + int hsl[] = calculateHsl(r, g, b); + + LexicalUnitImpl hslParams = createHslParameters(hsl[0], hsl[1], hsl[2], + hexColor.getLineNumber(), hexColor.getColumnNumber(), + (LexicalUnitImpl) hexColor.getPreviousLexicalUnit()); + + return LexicalUnitImpl.createFunction(hexColor.getLineNumber(), + hexColor.getColumnNumber(), + (LexicalUnitImpl) hexColor.getPreviousLexicalUnit(), "hsl", + hslParams); + } + + public static LexicalUnitImpl hslToHexColor(LexicalUnitImpl hsl, int lengh) { + int[] rgb = calculateRgb(hsl); + StringBuilder builder = new StringBuilder("#"); + for (int i = 0; i < 3; i++) { + String color = Integer.toHexString(rgb[i]); + if (lengh == 3) { + if (color.length() == 1) { + color = "0" + color; + } + } + if (lengh == 6) { + color = color.substring(0, 1); + } + builder.append(color); + } + return LexicalUnitImpl.createIdent(hsl.getLineNumber(), + hsl.getColumnNumber(), + (LexicalUnitImpl) hsl.getPreviousLexicalUnit(), + builder.toString()); + } + + private static int[] calculateRgb(LexicalUnitImpl hsl) { + LexicalUnitImpl hslParam = hsl.getParameters(); + LexicalUnitImpl hue = null; + LexicalUnitImpl saturation = null; + LexicalUnitImpl lightness = null; + int i = 0; + while (i < 5) { + switch (i) { + case 0: + hue = hslParam; + break; + case 2: + saturation = hslParam; + break; + case 4: + lightness = hslParam; + break; + case 1: + case 3: + break; + } + hslParam = (LexicalUnitImpl) hslParam.getNextLexicalUnit(); + i++; + } + float h = ((hue.getFloatValue() % 360) + 360) % 360 / 360; + float s = saturation.getFloatValue() / 100; + float l = lightness.getFloatValue() / 100; + float m2, m1; + int[] rgb = new int[3]; + m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s; + m1 = l * 2 - m2; + rgb[0] = Math.round(hueToRgb(m1, m2, h + 1f / 3) * 255); + rgb[1] = Math.round(hueToRgb(m1, m2, h) * 255); + rgb[2] = Math.round(hueToRgb(m1, m2, h - 1f / 3) * 255); + return rgb; + } + + public static LexicalUnitImpl rgbToHsl(LexicalUnitImpl rgb) { + LexicalUnitImpl rgbParam = rgb.getParameters(); + LexicalUnitImpl red = null; + LexicalUnitImpl green = null; + LexicalUnitImpl blue = null; + int i = 0; + while (i < 5) { + switch (i) { + case 0: + red = rgbParam; + break; + case 2: + green = rgbParam; + break; + case 4: + blue = rgbParam; + break; + case 1: + case 3: + break; + } + rgbParam = (LexicalUnitImpl) rgbParam.getNextLexicalUnit(); + i++; + } + + int hsl[] = calculateHsl(red.getIntegerValue(), + green.getIntegerValue(), blue.getIntegerValue()); + + rgbParam = rgb.getParameters(); + + LexicalUnitImpl hslParams = createHslParameters(hsl[0], hsl[1], hsl[2], + rgbParam.getLineNumber(), rgbParam.getColumnNumber(), + (LexicalUnitImpl) rgbParam.getPreviousLexicalUnit()); + + return LexicalUnitImpl.createFunction(rgb.getLineNumber(), + rgb.getColumnNumber(), + (LexicalUnitImpl) rgb.getPreviousLexicalUnit(), "hsl", + hslParams); + } + + private static int[] calculateHsl(int red, int green, int blue) { + int[] hsl = new int[3]; + + float r = red / 255f; + float g = green / 255f; + float b = blue / 255f; + + float max = Math.max(Math.max(r, g), b); + float min = Math.min(Math.min(r, g), b); + float d = max - min; + + float h = 0f, s = 0f, l = 0f; + + if (max == min) { + h = 0; + } + if (max == r) { + h = 60 * (g - b) / d; + } else if (max == g) { + h = 60 * (b - r) / d + 120; + } else if (max == b) { + h = 60 * (r - g) / d + 240; + } + + l = (max + min) / 2f; + + if (max == min) { + s = 0; + } else if (l < 0.5) { + s = d / (2 * l); + } else { + s = d / (2 - 2 * l); + } + + hsl[0] = Math.round(h % 360); + hsl[1] = Math.round(s * 100); + hsl[2] = Math.round(l * 100); + + return hsl; + } + + public static LexicalUnitImpl hslToRgb(LexicalUnitImpl hsl) { + int[] rgb = calculateRgb(hsl); + LexicalUnitImpl hslParam = hsl.getParameters(); + LexicalUnitImpl rgbParams = createRgbParameters(rgb[0], rgb[1], rgb[2], + hslParam.getLineNumber(), hslParam.getColumnNumber(), + (LexicalUnitImpl) hslParam.getPreviousLexicalUnit()); + + return LexicalUnitImpl.createFunction(hsl.getLineNumber(), + hsl.getColumnNumber(), + (LexicalUnitImpl) hsl.getPreviousLexicalUnit(), "rgb", + rgbParams); + } + + private static float hueToRgb(float m1, float m2, float h) { + if (h < 0) { + h = h + 1; + } + if (h > 1) { + h = h - 1; + } + if (h * 6 < 1) { + return m1 + (m2 - m1) * h * 6; + } + if (h * 2 < 1) { + return m2; + } + if (h * 3 < 2) { + return m1 + (m2 - m1) * (2f / 3 - h) * 6; + } + return m1; + } + + private static LexicalUnitImpl createRgbParameters(int r, int g, int b, + int ln, int cn, LexicalUnitImpl prev) { + LexicalUnitImpl red = LexicalUnitImpl.createInteger(ln, cn, prev, r); + LexicalUnitImpl firstComma = LexicalUnitImpl.createComma(ln, cn, red); + LexicalUnitImpl green = LexicalUnitImpl.createInteger(ln, cn, + firstComma, g); + LexicalUnitImpl secondComma = LexicalUnitImpl + .createComma(ln, cn, green); + LexicalUnitImpl.createInteger(ln, cn, secondComma, b); + return red; + } + + private static LexicalUnitImpl createHslParameters(int h, int s, int l, + int ln, int cn, LexicalUnitImpl prev) { + LexicalUnitImpl hue = LexicalUnitImpl.createInteger(ln, cn, prev, h); + LexicalUnitImpl firstComma = LexicalUnitImpl.createComma(ln, cn, hue); + LexicalUnitImpl saturation = LexicalUnitImpl.createPercentage(ln, cn, + firstComma, s); + LexicalUnitImpl secondComma = LexicalUnitImpl.createComma(ln, cn, + saturation); + LexicalUnitImpl.createPercentage(ln, cn, secondComma, l); + return hue; + } + + public static LexicalUnitImpl darken(LexicalUnitImpl darkenFunc) { + LexicalUnitImpl color = darkenFunc.getParameters(); + LexicalUnit amount = color.getNextLexicalUnit().getNextLexicalUnit(); + LexicalUnitImpl pre = (LexicalUnitImpl) darkenFunc + .getPreviousLexicalUnit(); + + return adjust(color, amount, ColorOperation.Darken, pre); + } + + private static LexicalUnitImpl adjust(LexicalUnitImpl color, + LexicalUnit amount, ColorOperation op, LexicalUnitImpl pre) { + if (color.getLexicalUnitType() == LexicalUnit.SAC_FUNCTION) { + LexicalUnit funcParam = color.getParameters(); + if ("hsl".equals(color.getFunctionName())) { + LexicalUnit lightness = funcParam; + for (int index = 0; index < 4; index++) { + lightness = lightness.getNextLexicalUnit(); + } + float newValue = 0f; + if (op == ColorOperation.Darken) { + newValue = lightness.getFloatValue() + - amount.getFloatValue(); + newValue = newValue < 0 ? 0 : newValue; + } else if (op == ColorOperation.Lighten) { + newValue = lightness.getFloatValue() + + amount.getFloatValue(); + newValue = newValue > 100 ? 100 : newValue; + } + ((LexicalUnitImpl) lightness).setFloatValue(newValue); + return LexicalUnitImpl.createFunction(color.getLineNumber(), + color.getColumnNumber(), pre, color.getFunctionName(), + funcParam); + } + + } else if (color.getLexicalUnitType() == LexicalUnit.SAC_IDENT) { + if (color.getStringValue().startsWith("#")) { + return hslToHexColor( + adjust(hexColorToHsl(color), amount, op, pre), color + .getStringValue().substring(1).length()); + } + } else if (color.getLexicalUnitType() == LexicalUnit.SAC_RGBCOLOR) { + LexicalUnitImpl hsl = rgbToHsl(color); + LexicalUnitImpl hslAfterDarken = adjust(hsl, amount, op, pre); + return hslToRgb(hslAfterDarken); + } + return color; + } + + public static LexicalUnitImpl lighten(LexicalUnitImpl lightenFunc) { + LexicalUnitImpl color = lightenFunc.getParameters(); + LexicalUnit amount = color.getNextLexicalUnit().getNextLexicalUnit(); + LexicalUnitImpl pre = (LexicalUnitImpl) lightenFunc + .getPreviousLexicalUnit(); + + return adjust(color, amount, ColorOperation.Lighten, pre); + } + + enum ColorOperation { + Darken, Lighten + } +} diff --git a/sass/src/com/vaadin/sass/util/DeepCopy.java b/sass/src/com/vaadin/sass/util/DeepCopy.java new file mode 100644 index 0000000000..bf77118b6b --- /dev/null +++ b/sass/src/com/vaadin/sass/util/DeepCopy.java @@ -0,0 +1,44 @@ +package com.vaadin.sass.util; + +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +/** + * Utility for making deep copies (vs. clone()'s shallow copies) of objects. + * Objects are first serialized and then deserialized. Error checking is fairly + * minimal in this implementation. If an object is encountered that cannot be + * serialized (or that references an object that cannot be serialized) an error + * is printed to System.err and null is returned. Depending on your specific + * application, it might make more sense to have copy(...) re-throw the + * exception. + */ +public class DeepCopy { + + /** + * Returns a copy of the object, or null if the object cannot be serialized. + */ + public static Object copy(Object orig) { + Object obj = null; + try { + // Write the object out to a byte array + FastByteArrayOutputStream fbos = new FastByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(fbos); + out.writeObject(orig); + out.flush(); + out.close(); + + // Retrieve an input stream from the byte array and read + // a copy of the object back in. + ObjectInputStream in = new ObjectInputStream(fbos.getInputStream()); + obj = in.readObject(); + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } catch (ClassNotFoundException cnfe) { + cnfe.printStackTrace(); + } + return obj; + } + +} \ No newline at end of file diff --git a/sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java b/sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java new file mode 100644 index 0000000000..0f23f4b8fe --- /dev/null +++ b/sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java @@ -0,0 +1,66 @@ +package com.vaadin.sass.util; + +import java.io.InputStream; + +/** + * ByteArrayInputStream implementation that does not synchronize methods. + */ +public class FastByteArrayInputStream extends InputStream { + /** + * Our byte buffer + */ + protected byte[] buf = null; + + /** + * Number of bytes that we can read from the buffer + */ + protected int count = 0; + + /** + * Number of bytes that have been read from the buffer + */ + protected int pos = 0; + + public FastByteArrayInputStream(byte[] buf, int count) { + this.buf = buf; + this.count = count; + } + + @Override + public final int available() { + return count - pos; + } + + @Override + public final int read() { + return (pos < count) ? (buf[pos++] & 0xff) : -1; + } + + @Override + public final int read(byte[] b, int off, int len) { + if (pos >= count) { + return -1; + } + + if ((pos + len) > count) { + len = (count - pos); + } + + System.arraycopy(buf, pos, b, off, len); + pos += len; + return len; + } + + @Override + public final long skip(long n) { + if ((pos + n) > count) { + n = count - pos; + } + if (n < 0) { + return 0; + } + pos += n; + return n; + } + +} diff --git a/sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java b/sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java new file mode 100644 index 0000000000..3c1c572d41 --- /dev/null +++ b/sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java @@ -0,0 +1,87 @@ +package com.vaadin.sass.util; + +import java.io.InputStream; +import java.io.OutputStream; + +/** + * ByteArrayOutputStream implementation that doesn't synchronize methods and + * doesn't copy the data on toByteArray(). + */ +public class FastByteArrayOutputStream extends OutputStream { + /** + * Buffer and size + */ + protected byte[] buf = null; + protected int size = 0; + + /** + * Constructs a stream with buffer capacity size 5K + */ + public FastByteArrayOutputStream() { + this(5 * 1024); + } + + /** + * Constructs a stream with the given initial size + */ + public FastByteArrayOutputStream(int initSize) { + size = 0; + buf = new byte[initSize]; + } + + /** + * Ensures that we have a large enough buffer for the given size. + */ + private void verifyBufferSize(int sz) { + if (sz > buf.length) { + byte[] old = buf; + buf = new byte[Math.max(sz, 2 * buf.length)]; + System.arraycopy(old, 0, buf, 0, old.length); + old = null; + } + } + + public int getSize() { + return size; + } + + /** + * Returns the byte array containing the written data. Note that this array + * will almost always be larger than the amount of data actually written. + */ + public byte[] getByteArray() { + return buf; + } + + @Override + public final void write(byte b[]) { + verifyBufferSize(size + b.length); + System.arraycopy(b, 0, buf, size, b.length); + size += b.length; + } + + @Override + public final void write(byte b[], int off, int len) { + verifyBufferSize(size + len); + System.arraycopy(b, off, buf, size, len); + size += len; + } + + @Override + public final void write(int b) { + verifyBufferSize(size + 1); + buf[size++] = (byte) b; + } + + public void reset() { + size = 0; + } + + /** + * Returns a ByteArrayInputStream for reading back the written data + */ + public InputStream getInputStream() { + return new FastByteArrayInputStream(buf, size); + } + +} diff --git a/sass/src/com/vaadin/sass/util/StringUtil.java b/sass/src/com/vaadin/sass/util/StringUtil.java new file mode 100644 index 0000000000..6b57407859 --- /dev/null +++ b/sass/src/com/vaadin/sass/util/StringUtil.java @@ -0,0 +1,120 @@ +package com.vaadin.sass.util; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +public class StringUtil { + private static final String FOLDER_SEPARATOR = "/"; // folder separator + + private static final String WINDOWS_FOLDER_SEPARATOR = "\\"; // Windows + // folder + // separator + + private static final String TOP_PATH = ".."; // top folder + + private static final String CURRENT_PATH = "."; // current folder + + public static String cleanPath(String path) { + String pathToUse = replace(path, WINDOWS_FOLDER_SEPARATOR, + FOLDER_SEPARATOR); + String[] pathArray = delimitedListToStringArray(pathToUse, + FOLDER_SEPARATOR); + List pathElements = new LinkedList(); + int tops = 0; + for (int i = pathArray.length - 1; i >= 0; i--) { + if (CURRENT_PATH.equals(pathArray[i])) { + // do nothing + } else if (TOP_PATH.equals(pathArray[i])) { + tops++; + } else { + if (tops > 0) { + tops--; + } else { + pathElements.add(0, pathArray[i]); + } + } + } + for (int i = 0; i < tops; i++) { + pathElements.add(0, TOP_PATH); + } + return collectionToDelimitedString(pathElements, FOLDER_SEPARATOR); + } + + public static String replace(String inString, String oldPattern, + String newPattern) { + if (inString == null) { + return null; + } + if (oldPattern == null || newPattern == null) { + return inString; + } + + StringBuffer sbuf = new StringBuffer(); + // output StringBuffer we'll build up + int pos = 0; // our position in the old string + int index = inString.indexOf(oldPattern); + // the index of an occurrence we've found, or -1 + int patLen = oldPattern.length(); + while (index >= 0) { + sbuf.append(inString.substring(pos, index)); + sbuf.append(newPattern); + pos = index + patLen; + index = inString.indexOf(oldPattern, pos); + } + sbuf.append(inString.substring(pos)); + + // remember to append any characters to the right of a match + return sbuf.toString(); + } + + public static String[] delimitedListToStringArray(String str, + String delimiter) { + if (str == null) { + return new String[0]; + } + if (delimiter == null) { + return new String[] { str }; + } + + List result = new ArrayList(); + int pos = 0; + int delPos = 0; + while ((delPos = str.indexOf(delimiter, pos)) != -1) { + result.add(str.substring(pos, delPos)); + pos = delPos + delimiter.length(); + } + if (str.length() > 0 && pos <= str.length()) { + // Add rest of String, but not in case of empty input. + result.add(str.substring(pos)); + } + + return (String[]) result.toArray(new String[result.size()]); + } + + public static String collectionToDelimitedString(Collection coll, + String delim, String prefix, String suffix) { + if (coll == null) { + return ""; + } + + StringBuffer sb = new StringBuffer(); + Iterator it = coll.iterator(); + int i = 0; + while (it.hasNext()) { + if (i > 0) { + sb.append(delim); + } + sb.append(prefix).append(it.next()).append(suffix); + i++; + } + return sb.toString(); + } + + public static String collectionToDelimitedString(Collection coll, + String delim) { + return collectionToDelimitedString(coll, delim, "", ""); + } +} diff --git a/sass/src/com/vaadin/sass/visitor/BlockVisitor.java b/sass/src/com/vaadin/sass/visitor/BlockVisitor.java new file mode 100644 index 0000000000..a05f082a82 --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/BlockVisitor.java @@ -0,0 +1,60 @@ +package com.vaadin.sass.visitor; + +import java.util.HashSet; +import java.util.Set; + +import org.w3c.css.sac.Selector; +import org.w3c.css.sac.SelectorList; + +import com.vaadin.sass.parser.SelectorListImpl; +import com.vaadin.sass.selector.CompositeSelector; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.Node; + +public class BlockVisitor implements Visitor { + + @Override + public void traverse(Node node) { + traverse(null, node); + } + + private void traverse(Node parent, Node node) { + Node after = node; + Set toBeDeleted = new HashSet(); + for (int pos = 0; pos < node.getChildren().size(); pos++) { + Node child = node.getChildren().get(pos); + + traverse(node, child); + + if (child instanceof BlockNode && node instanceof BlockNode + && parent != null) { + combineParentSelectorListToChild(node, child); + toBeDeleted.add(child); + parent.appendChild(child, after); + after = child; + } + } + for (Node child : toBeDeleted) { + node.removeChild(child); + } + } + + private void combineParentSelectorListToChild(Node parent, Node child) { + if (parent instanceof BlockNode && child instanceof BlockNode) { + SelectorListImpl newList = new SelectorListImpl(); + SelectorList parentSelectors = ((BlockNode) parent) + .getSelectorList(); + SelectorList childSelectors = ((BlockNode) child).getSelectorList(); + for (int i = 0; i < parentSelectors.getLength(); i++) { + Selector parentSelector = parentSelectors.item(i); + for (int j = 0; j < childSelectors.getLength(); j++) { + Selector childSelector = childSelectors.item(j); + newList.addSelector(new CompositeSelector(parentSelector, + childSelector)); + } + + } + ((BlockNode) child).setSelectorList(newList); + } + } +} diff --git a/sass/src/com/vaadin/sass/visitor/ExtendVisitor.java b/sass/src/com/vaadin/sass/visitor/ExtendVisitor.java new file mode 100644 index 0000000000..5dbea402e3 --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/ExtendVisitor.java @@ -0,0 +1,98 @@ +package com.vaadin.sass.visitor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.w3c.css.sac.SelectorList; + +import com.vaadin.sass.parser.SelectorListImpl; +import com.vaadin.sass.selector.SelectorUtil; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.ExtendNode; +import com.vaadin.sass.tree.Node; + +public class ExtendVisitor implements Visitor { + private Map> extendsMap = new HashMap>(); + + @Override + public void traverse(Node node) throws Exception { + buildExtendsMap(node); + modifyTree(node); + } + + private void modifyTree(Node node) throws Exception { + for (Node child : node.getChildren()) { + if (child instanceof BlockNode) { + BlockNode blockNode = (BlockNode) child; + String selectorString = SelectorUtil.toString(blockNode + .getSelectorList()); + if (extendsMap.get(selectorString) != null) { + for (SelectorList sList : extendsMap.get(selectorString)) { + SelectorList newList = SelectorUtil + .createNewSelectorListFromAnOldOneWithSomPartReplaced( + blockNode.getSelectorList(), + selectorString, sList); + addAdditionalSelectorListToBlockNode(blockNode, newList); + } + } else { + for (Entry> entry : extendsMap + .entrySet()) { + if (selectorString.contains(entry.getKey())) { + for (SelectorList sList : entry.getValue()) { + SelectorList newList = SelectorUtil + .createNewSelectorListFromAnOldOneWithSomPartReplaced( + blockNode.getSelectorList(), + entry.getKey(), sList); + addAdditionalSelectorListToBlockNode(blockNode, + newList); + } + } + } + } + } else { + buildExtendsMap(child); + } + } + + } + + private void buildExtendsMap(Node node) { + if (node instanceof BlockNode) { + BlockNode blockNode = (BlockNode) node; + for (Node child : new ArrayList(node.getChildren())) { + if (child instanceof ExtendNode) { + ExtendNode extendNode = (ExtendNode) child; + String extendedString = SelectorUtil.toString(extendNode + .getList()); + if (extendsMap.get(extendedString) == null) { + extendsMap.put(extendedString, + new ArrayList()); + } + extendsMap.get(extendedString).add( + blockNode.getSelectorList()); + node.removeChild(child); + } else { + buildExtendsMap(child); + } + } + } else { + for (Node child : node.getChildren()) { + buildExtendsMap(child); + } + } + + } + + private void addAdditionalSelectorListToBlockNode(BlockNode blockNode, + SelectorList list) { + if (list != null) { + for (int i = 0; i < list.getLength(); i++) { + ((SelectorListImpl) blockNode.getSelectorList()) + .addSelector(list.item(i)); + } + } + } +} diff --git a/sass/src/com/vaadin/sass/visitor/ImportVisitor.java b/sass/src/com/vaadin/sass/visitor/ImportVisitor.java new file mode 100644 index 0000000000..50fc822920 --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/ImportVisitor.java @@ -0,0 +1,87 @@ +package com.vaadin.sass.visitor; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; + +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.parser.LexicalUnitImpl; +import com.vaadin.sass.tree.ImportNode; +import com.vaadin.sass.tree.Node; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.util.StringUtil; + +public class ImportVisitor implements Visitor { + + @Override + public void traverse(Node node) { + for (Node child : new ArrayList(node.getChildren())) { + if (child instanceof ImportNode) { + ImportNode importNode = (ImportNode) child; + if (!importNode.isPureCssImport()) { + StringBuilder filePathBuilder = new StringBuilder( + node.getFileName()); + filePathBuilder.append(File.separatorChar).append( + importNode.getUri()); + if (!filePathBuilder.toString().endsWith(".scss")) { + filePathBuilder.append(".scss"); + } + try { + ScssStylesheet imported = ScssStylesheet.get(new File( + filePathBuilder.toString())); + traverse(imported); + String prefix = getUrlPrefix(importNode.getUri()); + if (prefix != null) { + updateUrlInImportedSheet(imported, prefix); + } + Node pre = importNode; + for (Node importedChild : imported.getChildren()) { + node.appendChild(importedChild, pre); + pre = importedChild; + } + node.removeChild(importNode); + } catch (CSSException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + } + + private String getUrlPrefix(String url) { + if (url == null) { + return null; + } + int pos = url.lastIndexOf(File.separatorChar); + if (pos == -1) { + return null; + } + return url.substring(0, pos + 1); + } + + private void updateUrlInImportedSheet(Node node, String prefix) { + for (Node child : node.getChildren()) { + if (child instanceof RuleNode) { + LexicalUnit value = ((RuleNode) child).getValue(); + while (value != null) { + if (value.getLexicalUnitType() == LexicalUnit.SAC_URI) { + String path = value.getStringValue(); + if (!path.startsWith("/") && !path.contains(":")) { + path = prefix + path; + path = StringUtil.cleanPath(path); + ((LexicalUnitImpl) value).setStringValue(path); + } + } + value = value.getNextLexicalUnit(); + } + + } + updateUrlInImportedSheet(child, prefix); + } + } +} diff --git a/sass/src/com/vaadin/sass/visitor/MixinVisitor.java b/sass/src/com/vaadin/sass/visitor/MixinVisitor.java new file mode 100644 index 0000000000..b1c0a3a6b1 --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/MixinVisitor.java @@ -0,0 +1,77 @@ +package com.vaadin.sass.visitor; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.vaadin.sass.tree.MixinDefNode; +import com.vaadin.sass.tree.MixinNode; +import com.vaadin.sass.tree.Node; +import com.vaadin.sass.tree.VariableNode; +import com.vaadin.sass.util.DeepCopy; + +public class MixinVisitor implements Visitor { + Map mixinDefs = new HashMap(); + + @Override + public void traverse(Node node) throws Exception { + // create mixin map. + for (Node child : node.getChildren()) { + if (child instanceof MixinDefNode) { + mixinDefs.put(((MixinDefNode) child).getName(), + (MixinDefNode) child); + } + } + + replaceMixins(node); + + // delete MixinDefNode + for (Node child : new ArrayList(node.getChildren())) { + if (child instanceof MixinDefNode) { + node.removeChild(child); + } + } + } + + private void replaceMixins(Node node) throws Exception { + for (Node child : new ArrayList(node.getChildren())) { + replaceMixins(child); + if (child instanceof MixinNode) { + MixinNode mixinNode = (MixinNode) child; + MixinDefNode mixinDef = mixinDefs.get(mixinNode.getName()); + if (mixinDef == null) { + throw new Exception("Mixin Definition: " + + mixinNode.getName() + " not found"); + } + replaceMixinNode(node, mixinNode, mixinDef); + } + } + } + + private void replaceMixinNode(Node current, MixinNode mixinNode, + MixinDefNode mixinDef) { + Node pre = mixinNode; + if (mixinDef.getArglist().isEmpty()) { + for (Node child : mixinDef.getChildren()) { + current.appendChild(child, pre); + pre = child; + } + } else { + for (int i = 0; i < mixinDef.getArglist().size(); i++) { + VariableNode arg = (VariableNode) DeepCopy.copy(mixinDef + .getArglist().get(i)); + if (i < mixinNode.getArglist().size()) { + arg.setExpr(mixinNode.getArglist().get(i)); + } + current.appendChild(arg, pre); + pre = arg; + } + for (Node child : mixinDef.getChildren()) { + Node clonedChild = (Node) DeepCopy.copy(child); + current.appendChild(clonedChild, pre); + pre = clonedChild; + } + } + current.removeChild(mixinNode); + } +} diff --git a/sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java b/sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java new file mode 100644 index 0000000000..d84917379d --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java @@ -0,0 +1,27 @@ +package com.vaadin.sass.visitor; + +import java.util.ArrayList; + +import com.vaadin.sass.tree.NestPropertiesNode; +import com.vaadin.sass.tree.Node; +import com.vaadin.sass.tree.RuleNode; + +public class NestPropertiesVisitor implements Visitor { + + @Override + public void traverse(Node node) { + for (Node child : new ArrayList(node.getChildren())) { + if (child instanceof NestPropertiesNode) { + Node previous = child; + for (RuleNode unNested : ((NestPropertiesNode) child) + .unNesting()) { + node.appendChild(unNested, previous); + previous = unNested; + node.removeChild(child); + } + } else { + traverse(child); + } + } + } +} diff --git a/sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java b/sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java new file mode 100644 index 0000000000..011b47fc61 --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java @@ -0,0 +1,42 @@ +package com.vaadin.sass.visitor; + +import java.util.ArrayList; + +import org.w3c.css.sac.SelectorList; + +import com.vaadin.sass.selector.SelectorUtil; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.Node; + +public class ParentSelectorVisitor implements Visitor { + + @Override + public void traverse(Node node) throws Exception { + for (Node child : new ArrayList(node.getChildren())) { + if (child instanceof BlockNode) { + traverse(node, (BlockNode) child); + } + } + } + + private void traverse(Node parent, BlockNode block) throws Exception { + Node pre = block; + for (Node child : new ArrayList(block.getChildren())) { + if (child instanceof BlockNode) { + BlockNode blockChild = (BlockNode) child; + traverse(block, blockChild); + if (SelectorUtil + .hasParentSelector(blockChild.getSelectorList())) { + parent.appendChild(child, pre); + pre = child; + block.removeChild(child); + SelectorList newSelectorList = SelectorUtil + .createNewSelectorListFromAnOldOneWithSomPartReplaced( + blockChild.getSelectorList(), "&", + block.getSelectorList()); + blockChild.setSelectorList(newSelectorList); + } + } + } + } +} diff --git a/sass/src/com/vaadin/sass/visitor/VariableVisitor.java b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java new file mode 100644 index 0000000000..71c43e362b --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java @@ -0,0 +1,52 @@ +package com.vaadin.sass.visitor; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.parser.LexicalUnitImpl; +import com.vaadin.sass.parser.SCSSLexicalUnit; +import com.vaadin.sass.tree.Node; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; + +public class VariableVisitor implements Visitor { + + @Override + public void traverse(Node node) { + Map variables = new HashMap(); + traverse(node, variables); + } + + private void traverse(Node node, Map variables) { + if (node instanceof RuleNode) { + LexicalUnit value = ((RuleNode) node).getValue(); + for (String variable : variables.keySet()) { + if (value.getLexicalUnitType() == SCSSLexicalUnit.SCSS_VARIABLE) { + if (value.getStringValue().contains(variable)) { + LexicalUnitImpl lexVal = (LexicalUnitImpl) value; + lexVal.replaceValue(variables.get(variable)); + } + } + } + } else { + Set toBeDeleted = new HashSet(); + for (Node child : node.getChildren()) { + if (child instanceof VariableNode) { + variables.put(((VariableNode) child).getName(), + (LexicalUnitImpl) ((VariableNode) child).getExpr()); + toBeDeleted.add(child); + } else { + traverse(child, new HashMap( + variables)); + } + } + for (Node child : toBeDeleted) { + node.removeChild(child); + } + } + } +} diff --git a/sass/src/com/vaadin/sass/visitor/Visitor.java b/sass/src/com/vaadin/sass/visitor/Visitor.java new file mode 100644 index 0000000000..ae2c2b9800 --- /dev/null +++ b/sass/src/com/vaadin/sass/visitor/Visitor.java @@ -0,0 +1,8 @@ +package com.vaadin.sass.visitor; + +import com.vaadin.sass.tree.Node; + +public interface Visitor { + + public void traverse(Node node) throws Exception; +} diff --git a/tests/sass/resources/basic/comments.css b/tests/sass/resources/basic/comments.css new file mode 100644 index 0000000000..96d6b312c8 --- /dev/null +++ b/tests/sass/resources/basic/comments.css @@ -0,0 +1,9 @@ +.v-button:focus { + background-image: url(img/left-focus.png);/** sprite-ref: buttons */ + outline: none; +} + +.v-button:focus .v-button-wrap { + background-image: url(img/right-focus.png);/** sprite-ref: buttons; sprite-alignment: right */ + outline: none; +} \ No newline at end of file diff --git a/tests/sass/resources/basic/empty_block.css b/tests/sass/resources/basic/empty_block.css new file mode 100644 index 0000000000..31c0b47032 --- /dev/null +++ b/tests/sass/resources/basic/empty_block.css @@ -0,0 +1,2 @@ +.v-panel-deco { +} \ No newline at end of file diff --git a/tests/sass/resources/basic/media.css b/tests/sass/resources/basic/media.css new file mode 100644 index 0000000000..f1188835ba --- /dev/null +++ b/tests/sass/resources/basic/media.css @@ -0,0 +1,27 @@ +.v-view { + height: 100%; + width: 100%; + overflow: auto; + outline: none; + margin-top: -1px; + border-top: 1px solid transparent; + position: relative; +} + +@media print { + .v-generated-body { + height: auto; + min-height: 20cm; + overflow: visible; + } + .v-app { + height: auto; + min-height: 20cm; + } + .v-view { + overflow: visible; + } + .v-gridlayout { + overflow: visible !important; + } +} \ No newline at end of file diff --git a/tests/sass/resources/basic/properties.css b/tests/sass/resources/basic/properties.css new file mode 100644 index 0000000000..bdc17af233 --- /dev/null +++ b/tests/sass/resources/basic/properties.css @@ -0,0 +1,72 @@ +.all-the-properties { + font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; ; + position: absolute;; + overflow: hidden; + outline: none; + text-align: left; + zoom: 1; + white-space: nowrap; + background: #123456; + border-bottom: 1px solid #ffffff; + filter: alpha(opacity = 30); + cursor: pointer; + overflow: auto; + width: 100%; + display: inline-block; +} + +.missing-semicolon-on-last-row { + color: red; + background-color: blue +} + +.lexical-value-test { + margin: none; + margin: 0px; + margin: 0; + margin: 0.5px; + margin: 2px; + margin: -0.5px; + margin: -2px; + margin: 10px 20px; + margin: -10px 20px; + margin: 20px -10px -20px 40px; + margin-right: -0.5px; +} + +.background-positioning { + background-position: 0 0; + background-position: left top; + background-position: left 40px; + background-position: 50px left; + background-position: right -286px; +} + +.user-select-rules { + user-select: none; + -ie-user-select: none; +} + +.box-sizing-rules { + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.user-select-and-box-sizing-combined { + -khtml-user-select: none; + -moz-user-select: none; + -ie-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +@media print { + .v-generated-body { + height: auto; + min-height: 20cm; + overflow: visible; + } +} diff --git a/tests/sass/resources/basic/reindeer.css b/tests/sass/resources/basic/reindeer.css new file mode 100644 index 0000000000..e32d917b49 --- /dev/null +++ b/tests/sass/resources/basic/reindeer.css @@ -0,0 +1,5905 @@ +.v-theme-version:after { + content: "6_8_0_dev-20120306"; +} + +.v-theme-version-6_8_0_dev-20120306 { + display: none; +} + +.v-absolutelayout-wrapper { + position: absolute; + overflow: hidden; +} + +.v-accordion { + position: relative; + outline: none; + overflow: hidden; + text-align: left; +} + +.v-accordion-item { + position: relative; + zoom: 1; +} + +.v-accordion-item-caption { + overflow: hidden; + white-space: nowrap; + background: #eeeeee; + border-bottom: 1px solid #dddddd; +} + +.v-accordion-item-caption .v-caption { + cursor: pointer; +} + +.v-accordion-item-open .v-accordion-item-caption .v-caption { + cursor: default; +} + +.v-accordion-item-content { + position: absolute; + overflow: auto; + width: 100%; +} + +.v-button { + display: inline-block; + zoom: 1; + text-align: center; + text-decoration: none; + border: 2px outset #dddddd; + background: #eeeeee; + cursor: pointer; + white-space: nowrap; + margin: 0; + padding: 0.2em 1em; + color: inherit; + font: inherit; + line-height: normal; + -khtml-user-select: none; + -moz-user-select: none; + -ie-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.v-button.v-disabled { + cursor: default; +} + +.v-ie6 .v-button { + display: inline; +} + +.v-ie7 .v-button { + display: inline; +} + +.v-button-wrap, .v-button-caption { + vertical-align: middle; + white-space: nowrap; + font: inherit; + color: inherit; + line-height: normal; +} + +.v-button .v-icon, .v-nativebutton .v-icon { + vertical-align: middle; + margin-right: 3px; + border: none; +} + +.v-button .v-errorindicator, .v-nativebutton .v-errorindicator { + display: inline-block; + zoom: 1; + vertical-align: middle; + float: none; +} + +.v-button-link, .v-nativebutton-link { + border: none; + text-align: left; + background: transparent; + padding: 0; + color: inherit; + -khtml-user-select: text; + -moz-user-select: text; + -ie-user-select: text; + user-select: text; +} + +.v-sa .v-button-link:focus { + outline-offset: -3px; +} + +.v-button-link .v-button-caption, .v-nativebutton-link .v-nativebutton-caption { + text-decoration: underline; + color: inherit; + text-align: left; +} + +.v-nativebutton { + text-align: center; + cursor: pointer; + white-space: nowrap; + margin: 0; + color: inherit; + font: inherit; + line-height: normal; +} + +.v-nativebutton .v-nativebutton-caption { + vertical-align: middle; + white-space: nowrap; + font: inherit; + color: inherit; +} + +.v-nativebutton .v-icon { + vertical-align: middle; + margin-right: 3px; +} + +.v-nativebutton .v-errorindicator { + display: inline-block; + zoom: 1; + float: none; +} + +.v-ie6 .v-nativebutton { + width: 1px; +} + +.v-ie .v-nativebutton { + overflow: visible; + padding-left: 1em; + padding-right: 1em; +} + +.v-ie .v-nativebutton-link { + padding: 0; +} + +.v-checkbox { + display: block; +} + +.v-checkbox, .v-checkbox label, .v-checkbox input, .v-checkbox .v-icon { + vertical-align: middle; + white-space: nowrap; +} + +.v-ie6 .v-checkbox, .v-ie7 .v-checkbox { + vertical-align: baseline; +} + +.v-checkbox .v-icon { + margin: 0 2px; +} + +.v-checkbox .v-errorindicator { + float: none; + display: inline; + display: inline-block; + zoom: 1; +} + +.v-captionwrapper { + text-align: left; +} + +.v-caption { + overflow: hidden; + white-space: nowrap; +} + +.v-errorindicator { + float: left; +} + +.v-caption .v-icon { + float: left; + padding-right: 2px; + vertical-align: middle; +} + +.v-caption .v-captiontext { + float: left; + overflow: hidden; + vertical-align: middle; +} + +.v-caption .v-required-field-indicator { + float: left; +} + +.v-caption-clearelem { + clear: both; + width: 0; + height: 0; + overflow: hidden; +} + +.v-ie6 .v-errorindicator, .v-ie6 .v-icon, .v-ie6 .v-captiontext, .v-ie6 .v-required-field-indicator { + display: inline; +} + +.v-ie9 .v-gridlayout-margin > div > div > .v-caption, .v-ie9 .v-verticallayout > div > div > .v-caption, .v-ie9 .v-horizontallayout > div > div > .v-caption { + margin-right: -0.5px; +} + +.v-generated-body { + width: 100%; + height: 100%; + border: 0; + margin: 0; + overflow: hidden; +} + +.v-app { + height: 100%; +} + +.v-app, .v-window, .v-popupview-popup, .v-label, .v-caption { + cursor: default; +} + +div.v-app-loading { + background-image: url(../base/common/img/loading-indicator.gif); + background-repeat: no-repeat; + background-position: 50%; + width: 100%; + height: 100%; +} + +.v-view { + height: 100%; + width: 100%; + overflow: auto; + outline: none; + margin-top: -1px; + border-top: 1px solid transparent; + position: relative; +} + +@media print { + .v-generated-body { + height: auto; + min-height: 20cm; + overflow: visible; + } + .v-app { + height: auto; + min-height: 20cm; + } + .v-view { + overflow: visible; + } + .v-gridlayout { + overflow: visible !important; + } +} + +.v-view:active, .v-view:focus { + outline: none; +} + +.v-app select, .v-window select { + margin: 0; +} + +.v-disabled { + opacity: 0.3; + filter: alpha(opacity = 30); + cursor: default; +} + +.v-disabled * { + cursor: default; +} + +.v-disabled .v-disabled { + opacity: 1; +} + +.v-required-field-indicator { + padding-left: 2px; + color: red; +} + +.v-form fieldset { + border: none; + padding: 0; + margin: 0; +} + +.v-tooltip { + cursor: default; + background: #ffffff; +} + +.v-tooltip-text { + overflow: auto; +} + +.v-tooltip .v-errormessage { + overflow: auto; +} + +.v-contextmenu { + background: #ffffff; +} + +.v-contextmenu .gwt-MenuItem { + cursor: pointer; + vertical-align: middle; + padding: 0; + border: 0; + margin: 0; +} + +.v-contextmenu .gwt-MenuItem div { + cursor: pointer; + vertical-align: middle; + white-space: nowrap; +} + +.v-contextmenu .gwt-MenuItem-selected div { + background: #aaaaaa; + color: #ffffff; +} + +.v-contextmenu table { + border-collapse: collapse; + margin: 0; + padding: 0; +} + +.v-contextmenu .gwt-MenuItem img { + margin-right: 1em; + vertical-align: middle; +} + +.v-label pre { + margin: 0; +} + +.v-label-undef-w { + white-space: nowrap; +} + +.v-label h1, .v-label h2, .v-label h3, .v-label h4, .v-label h5, .v-label h6 { + line-height: normal; +} + +.v-loading-indicator, .v-loading-indicator-delay, .v-loading-indicator-wait { + position: absolute; + top: 0; + right: 0; + z-index: 30000; + width: 31px; + height: 31px; + background: transparent url(../base/common/img/loading-indicator.gif); + margin-right: 5px; + margin-top: 5px; +} + +.v-loading-indicator-delay { + background-image: url(../base/common/img/loading-indicator-delay.gif); +} + +.v-loading-indicator-wait { + background-image: url(../base/common/img/loading-indicator-wait.gif); +} + +.v-debug-console { + background: #ffffff; + opacity: 0.9; + border: 1px solid #000000; + font-family: sans-serif; +} + +.v-debug-console-caption { + background: #000000; + border-bottom: 1px solid grey; + color: white; + font-weight: bold; +} + +.v-debug-console-content { + font-size: x-small; + overflow: auto; + white-space: pre; +} + +.v-debug-console-content input { + font-size: xx-small; +} + +.v-app .invalidlayout, .v-app .invalidlayout * { + background: #ff9999 !important; +} + +.v-app input[type="text"], .v-app input[type="password"], .v-app input[type="reset"], .v-app select, .v-app textarea, .v-window input[type="text"], .v-window input[type="password"], .v-window input[type="reset"], .v-window select, .v-window textarea { + padding: 2px; +} + +.v-drag-element { + z-index: 60000; + position: absolute; + opacity: 0.5; + filter: alpha(opacity = 50); + cursor: default; +} + +.v-csslayout { + overflow: hidden; +} + +.v-csslayout-margin-top { + padding-top: 12px; +} + +.v-csslayout-margin-bottom { + padding-bottom: 12px; +} + +.v-csslayout-margin-left { + padding-left: 12px; +} + +.v-csslayout-margin-right { + padding-right: 12px; +} + +.v-customcomponent { + overflow: hidden; +} + +.v-customlayout { + overflow: hidden; +} + +.v-datefield { + white-space: nowrap; + float: left; +} + +.v-datefield-textfield { + vertical-align: top; +} + +.v-datefield-button { + cursor: pointer; +} + +.v-datefield-prompt .v-datefield-textfield { + color: #999999; + font-style: italic; +} + +.v-datefield .v-datefield-button-readonly { + display: none; +} + +.v-datefield-calendarpanel table { + width: 100%; +} + +.v-datefield-calendarpanel td { + padding: 0; + margin: 0; +} + +.v-datefield-calendarpanel:focus { + outline: none; +} + +.v-datefield-calendarpanel-header td { + text-align: center; +} + +.v-datefield-calendarpanel-month { + text-align: center; + white-space: nowrap; +} + +.v-datefield-calendarpanel-weeknumber { + color: #999999; + border-right: 1px solid #dddddd; + font-size: 0.9em; +} + +.v-datefield-calendarpanel-day, .v-datefield-calendarpanel-day-today { + cursor: pointer; +} + +.v-datefield-calendarpanel-day-today { + border: 1px solid #dddddd; +} + +.v-disabled .v-datefield-calendarpanel-day, .v-disabled .v-datefield-calendarpanel-day-today { + cursor: default; +} + +.v-datefield-calendarpanel-day-disabled { + cursor: default; + opacity: 0.5; +} + +.v-datefield-calendarpanel-day-selected { + cursor: default; + background: #333333; + color: #ffffff; +} + +.v-datefield-calendarpanel-day-focused { + outline: 1px dotted black; +} + +.v-datefield-calendarpanel-day-offmonth { + color: #666666; +} + +.v-ie6 .v-datefield-calendarpanel-day, .v-ie7 .v-datefield-calendarpanel-day { + margin: 1px; +} + +.v-ie6 .v-datefield-calendarpanel-day-focused, .v-ie7 .v-datefield-calendarpanel-day-focused { + border: 1px dotted black; + margin: 0px; +} + +.v-datefield-time { + white-space: nowrap; +} + +.v-datefield-time .v-label { + display: inline; +} + +.v-datefield-popup { + background: #ffffff; +} + +.v-ie6 .v-disabled .v-datefield-button, .v-ie6 .v-disabled .v-datefield-textfield, .v-ie7 .v-disabled .v-datefield-button, .v-ie7 .v-disabled .v-datefield-textfield { + filter: alpha(opacity = 30); +} + +.v-ddwrapper { + padding: 2px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + position: relative; +} + +[draggable=true] { + -khtml-user-drag: element; + -webkit-user-drag: element; + -khtml-user-select: none; + -webkit-user-select: none; +} + +.v-ie .v-ddwrapper a.drag-start { + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + opacity: 0; + background-color: cyan; + filter: alpha(opacity = 0); +} + +.v-ddwrapper-over { + border: 2px solid #1d9dff; + background-color: #bcdcff; + padding: 0; +} + +.v-ddwrapper-over { + background-color: rgba(169, 209, 255, 0.6); +} + +.no-box-drag-hints .v-ddwrapper-over { + border: none; + background-color: transparent; + padding: 2px; +} + +.v-app .v-ddwrapper-over-top, .v-window .v-ddwrapper-over-top, .v-popupview-popup .v-ddwrapper-over-top { + border: none; + border-top: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-top: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-app .v-ddwrapper-over-bottom, .v-window .v-ddwrapper-over-bottom, .v-popupview-popup .v-ddwrapper-over-bottom { + border: none; + border-bottom: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-bottom: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-app .v-ddwrapper-over-left, .v-window .v-ddwrapper-over-left, .v-popupview-popup .v-ddwrapper-over-left { + border: none; + border-left: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-left: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-app .v-ddwrapper-over-right, .v-window .v-ddwrapper-over-right, .v-popupview-popup .v-ddwrapper-over-right { + border: none; + border-right: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-right: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-ddwrapper, .v-ddwrapper-over, .v-app .v-ddwrapper-over-top, .v-window .v-ddwrapper-over-top, .v-popupview-popup .v-ddwrapper-over-top, .v-app .v-ddwrapper-over-bottom, .v-window .v-ddwrapper-over-bottom, .v-popupview-popup .v-ddwrapper-over-bottom, .v-app .v-ddwrapper-over-left, .v-window .v-ddwrapper-over-left, .v-popupview-popup .v-ddwrapper-over-left, .v-app .v-ddwrapper-over-right, .v-window .v-ddwrapper-over-right, .v-popupview-popup .v-ddwrapper-over-right { + border-color: rgba(0, 109, 232, 0.6); +} + +.v-ddwrapper-over-top:before, .v-ddwrapper-over-bottom:after, .v-ddwrapper-over-left:before, .v-ddwrapper-over-right:before { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + margin-left: -2px; + background: transparent url(../base/common/img/drag-slot-dot.png) no-repeat; +} + +.v-ddwrapper-over-bottom:after { + margin-top: -2px; +} + +.v-ddwrapper-over-left:before, .v-ddwrapper-over-right:before { + background-position: 0 -6px; + margin-top: -2px; + margin-left: -4px; +} + +.v-ddwrapper-over-right:before { + position: relative; + margin-bottom: -4px; + margin-right: -4px; + margin-left: 0; + width: auto; + background-position: 100% -6px; +} + +.no-horizontal-drag-hints .v-ddwrapper-over-left { + padding-left: 2px; + border-left: none; +} + +.no-horizontal-drag-hints .v-ddwrapper-over-right { + padding-right: 2px; + border-right: none; +} + +.no-vertical-drag-hints .v-ddwrapper-over-top { + padding-top: 2px; + border-top: none; +} + +.no-vertical-drag-hints .v-ddwrapper-over-bottom { + padding-bottom: 2px; + border-bottom: none; +} + +.no-horizontal-drag-hints .v-ddwrapper-over-left:before, .no-horizontal-drag-hints .v-ddwrapper-over-right:before, .no-vertical-drag-hints .v-ddwrapper-over-top:before, .no-vertical-drag-hints .v-ddwrapper-over-bottom:after { + display: none; +} + +.v-table .v-embedded-image { + display: inline-block; +} + +.v-formlayout-cell .v-errorindicator { + display: block; +} + +.v-formlayout-error-indicator { + width: 12px; +} + +.v-formlayout-captioncell { + text-align: right; + white-space: nowrap; +} + +.v-formlayout-captioncell .v-caption { + overflow: visible; +} + +.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { + padding-top: 6px; +} + +.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-captioncell, .v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-contentcell, .v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 0; +} + +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 12px; +} + +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { + padding-bottom: 12px; +} + +.v-formlayout-margin-left .v-formlayout-captioncell { + padding-left: 12px; +} + +.v-formlayout-margin-right .v-formlayout-contentcell { + padding-right: 12px; +} + +.v-formlayout-captioncell .v-caption .v-required-field-indicator { + float: none; +} + +.v-gridlayout-margin-top { + padding-top: 12px; +} + +.v-gridlayout-margin-bottom { + padding-bottom: 12px; +} + +.v-gridlayout-margin-left { + padding-left: 12px; +} + +.v-gridlayout-margin-right { + padding-right: 12px; +} + +.v-gridlayout-spacing-on { + padding-left: 6px; + padding-top: 6px; + overflow: hidden; +} + +.v-gridlayout-spacing, .v-gridlayout-spacing-off { + padding-left: 0; + padding-top: 0; +} + +.v-gridlayout-spacing-off { + overflow: hidden; +} + +.v-ie6 .v-gridlayout, .v-ie7 .v-gridlayout { + overflow: hidden; +} + +.v-link { + white-space: nowrap; +} + +.v-link a { + vertical-align: middle; + text-decoration: none; +} + +.v-link span { + text-decoration: underline; + vertical-align: middle; +} + +.v-disabled a { + cursor: default; +} + +.v-link img { + vertical-align: middle; + border: none; +} + +.v-loginform { + height: 140px; + width: 200px; +} + +.v-app-loginpage .v-button, .v-app-loginpage .v-button { + float: left; +} + +.v-menubar { + float: left; + white-space: nowrap; +} + +.v-menubar .v-menubar-menuitem { + cursor: default; + vertical-align: middle; + white-space: nowrap; + display: inline; + display: inline-block; + zoom: 1; +} + +.v-menubar .v-menubar-menuitem-caption .v-icon { + vertical-align: middle; + white-space: nowrap; +} + +.v-menubar-submenu { + background: #ffffff; +} + +.v-menubar-menuitem-selected { + background: #333333; + color: #ffffff; +} + +.v-menubar-submenu .v-menubar-menuitem { + cursor: default; + display: block; + position: relative; + padding-right: 1.5em; +} + +.v-menubar-submenu .v-menubar-menuitem-caption { + display: block; +} + +.v-menubar-submenu .v-menubar-menuitem *, .v-menubar-submenu .v-menubar-menuitem-caption * { + white-space: nowrap; +} + +.v-menubar-submenu-indicator { + display: none; + font-family: arial, helvetica, sans-serif; +} + +.v-menubar-submenu .v-menubar-submenu-indicator { + display: block; + position: absolute; + right: 0; + width: 1em; + height: 1em; + font-size: 0.9em; +} + +.v-menubar-menuitem-disabled, .v-menubar span.v-menubar-menuitem-disabled:hover, .v-menubar span.v-menubar-menuitem-disabled:focus, .v-menubar span.v-menubar-menuitem-disabled:active { + color: #999999; +} + +.v-menubar-more-menuitem { + font-family: arial, helvetica, sans-serif; +} + +.v-menubar-separator { + overflow: hidden; +} + +.v-menubar-separator span { + display: block; + text-indent: -9999px; + font-size: 1px; + line-height: 1px; + border-top: 1px solid #dddddd; + margin: 3px 0 2px; + overflow: hidden; +} + +.v-menubar .v-icon, .v-menubar-submenu .v-icon { + margin-right: 3px; +} + +.v-menubar:focus, .v-menubar-popup:focus, .v-menubar-popup .popupContent:focus, .v-menubar-popup .popupContent .v-menubar-submenu:focus { + outline: none; +} + +.v-menubar-submenu-check-column .v-menubar-menuitem { + padding-left: 6px; +} + +.v-menubar-submenu-check-column .v-menubar-menuitem-caption { + padding-left: 18px; +} + +.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { + background: transparent url(../base/menubar/img/check.gif) no-repeat left; +} + +.v-Notification { + background: #999999; + color: #ffffff; + cursor: pointer; + overflow: hidden; + padding: 1em; + max-width: 85%; +} + +.v-Notification h1, .v-Notification p, .v-Notification-error h1, .v-Notification-error p, .v-Notification-warning h1, .v-Notification-warning p { + display: inline; + margin: 0 0.5em 0 0; +} + +.v-Notification-warning { + background: orange; +} + +.v-Notification-error { + background: red; +} + +.v-Notification-tray h1 { + display: block; +} + +.v-Notification-tray p { + display: block; +} + +.v-Notification-system { + background-color: red; + opacity: 0.7; + filter: alpha(opacity = 70); +} + +.v-Notification-system h1 { + display: block; + margin: 0; +} + +.v-orderedlayout-margin-top, .v-horizontallayout-margin-top, .v-verticallayout-margin-top { + padding-top: 12px; +} + +.v-orderedlayout-margin-right, .v-horizontallayout-margin-right, .v-verticallayout-margin-right { + padding-right: 12px; +} + +.v-orderedlayout-margin-bottom, .v-horizontallayout-margin-bottom, .v-verticallayout-margin-bottom { + padding-bottom: 12px; +} + +.v-orderedlayout-margin-left, .v-horizontallayout-margin-left, .v-verticallayout-margin-left { + padding-left: 12px; +} + +.v-orderedlayout-spacing-on, .v-horizontallayout-spacing-on, .v-verticallayout-spacing-on { + padding-top: 6px; + padding-left: 6px; +} + +.v-orderedlayout-spacing-off, .v-horizontallayout-spacing-off, .v-verticallayout-spacing-off { + padding-top: 0; + padding-left: 0; +} + +.v-ie6 .v-orderedlayout, .v-ie6 .v-horizontallayout, .v-ie6 .v-verticallayout, .v-ie7 .v-orderedlayout, .v-ie7 .v-horizontallayout, .v-ie7 .v-verticallayout { + overflow: hidden; +} + +.v-panel, .v-panel-caption, .v-panel-content, .v-panel-deco, .v-panel-light, .v-panel-caption-light, .v-panel-content-light, .v-panel-deco-light { + outline: none; + text-align: left; +} + +.v-panel-caption .v-errorindicator { + float: none; + display: inline; +} + +.v-panel-caption .v-icon { + display: inline; + vertical-align: middle; +} + +.v-panel-caption span { + vertical-align: middle; +} + +.v-panel-caption { + white-space: nowrap; + overflow: hidden; + font-weight: bold; +} + +.v-panel-nocaption { + overflow: hidden; +} + +.v-panel-content { + overflow: auto; +} + +.v-panel-deco { +} + +.v-popupview { + cursor: pointer; + text-decoration: underline; + white-space: nowrap; +} + +.v-popupview-popup { + overflow: auto; +} + +.v-popupview-loading { + width: 30px; + height: 30px; + background: transparent url(../base/common/img/ajax-loader-medium.gif) no-repeat 50%; +} + +.v-progressindicator { + overflow: hidden; + width: 150px; +} + +.v-progressindicator-wrapper { + overflow: hidden; + height: 7px; + border: 1px solid #dddddd; +} + +.v-progressindicator-indicator { + height: 7px; + overflow: hidden; + background: #dddddd; +} + +div.v-progressindicator-indeterminate { + height: 20px; + width: 20px; + overflow: hidden; + background: #ffffff url(../base/common/img/ajax-loader-medium.gif) no-repeat 50%; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; +} + +.v-progressindicator-indeterminate .v-progressindicator-wrapper, .v-progressindicator-indeterminate .v-progressindicator-indicator, .v-progressindicator-indeterminate-disabled .v-progressindicator-wrapper, .v-progressindicator-indeterminate-disabled .v-progressindicator-indicator { + display: none; +} + +div.v-progressindicator-indeterminate-disabled { + height: 20px; + width: 20px; + overflow: hidden; + background: transparent; +} + +.v-select { + text-align: left; +} + +.v-select-optiongroup .v-select-option { + display: block; + white-space: nowrap; +} + +.v-select-optiongroup .v-icon { + vertical-align: middle; + white-space: nowrap; + margin: 0 2px; +} + +.v-ie .v-select-optiongroup .v-select-option { + zoom: 1; +} + +.v-select-select { + display: block; +} + +.v-select-twincol { + white-space: nowrap; +} + +.v-select-twincol-options { + float: left; +} + +.v-select-twincol-caption-left { + float: left; + overflow: hidden; + text-overflow: ellipsis; +} + +.v-select-twincol-selections { + font-weight: bold; +} + +.v-select-twincol-caption-right { + float: right; + overflow: hidden; + text-overflow: ellipsis; +} + +.v-select-twincol-buttons { + float: left; + text-align: center; +} + +.v-select-twincol-buttons .v-select-twincol-deco { + clear: both; +} + +.v-select-twincol .v-textfield { + display: block; + float: left; + clear: left; +} + +.v-select-twincol .v-button { + float: left; +} + +.v-select-twincol-buttons .v-button { + float: none; +} + +.v-filterselect { + white-space: nowrap; + text-align: left; +} + +.v-filterselect .v-icon { + float: left; +} + +.v-app .v-filterselect-input, .v-window .v-filterselect-input, .v-popupview-popup .v-filterselect-input { + float: left; + -webkit-border-radius: 0px; +} + +.v-filterselect-prompt .v-filterselect-input { + color: #999999; + font-style: italic; +} + +.v-filterselect-button { + float: right; + cursor: pointer; + width: 1em; + height: 1em; + background: transparent url(../base/common/img/sprites.png) no-repeat -5px -8px; +} + +.v-filterselect.v-readonly .v-filterselect-button { + display: none; +} + +.v-filterselect.v-readonly, .v-filterselect.v-readonly .v-filterselect-input { + background: transparent; +} + +.v-filterselect-suggestpopup { + background: #ffffff; + border: 1px solid #eeeeee; +} + +.v-filterselect-suggestmenu table { + border-collapse: collapse; + border: none; +} + +.v-filterselect-suggestmenu .gwt-MenuItem { + white-space: nowrap; +} + +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + margin-right: 3px; + vertical-align: middle; +} + +.v-filterselect-suggestmenu .gwt-MenuItem span { + vertical-align: middle; +} + +.v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: #333333; + color: #ffffff; +} + +.v-filterselect-nextpage, .v-filterselect-nextpage-off, .v-filterselect-prevpage-off, .v-filterselect-prevpage { + width: 100%; + background: #aaaaaa; + text-align: center; + overflow: hidden; + cursor: pointer; +} + +.v-filterselect-nextpage-off, .v-filterselect-prevpage-off { + color: #666666; + opacity: 0.5; + filter: alpha(opacity = 50); + cursor: default; +} + +.v-filterselect-nextpage-off span, .v-filterselect-prevpage-off span { + cursor: default; +} + +.v-filterselect-status { + white-space: nowrap; + text-align: center; +} + +.v-filterselect-no-input .v-filterselect-input { + cursor: default; +} + +.v-shadow { + position: absolute; +} + +.v-shadow .top-left { + position: absolute; + overflow: hidden; + top: -3px; + left: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/top-left.png); +} + +.v-shadow .top { + position: absolute; + overflow: hidden; + top: -3px; + left: 5px; + height: 10px; + right: 5px; + background: transparent url(../base/shadow/img/top.png); +} + +.v-shadow .top-right { + position: absolute; + overflow: hidden; + top: -3px; + right: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/top-right.png); +} + +.v-shadow .left { + position: absolute; + overflow: hidden; + top: 7px; + left: -5px; + width: 10px; + bottom: 3px; + background: transparent url(../base/shadow/img/left.png); +} + +.v-shadow .center { + position: absolute; + overflow: hidden; + top: 7px; + left: 5px; + bottom: 3px; + right: 5px; + background: transparent url(../base/shadow/img/center.png); +} + +.v-shadow .right { + position: absolute; + overflow: hidden; + top: 7px; + right: -5px; + width: 10px; + bottom: 3px; + background: transparent url(../base/shadow/img/right.png); +} + +.v-shadow .bottom-left { + position: absolute; + overflow: hidden; + bottom: -7px; + left: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/bottom-left.png); +} + +.v-shadow .bottom { + position: absolute; + overflow: hidden; + bottom: -7px; + left: 5px; + right: 5px; + height: 10px; + background: transparent url(../base/shadow/img/bottom.png); +} + +.v-shadow .bottom-right { + position: absolute; + overflow: hidden; + bottom: -7px; + right: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/bottom-right.png); +} + +.v-ie6 .v-shadow * { + display: none; +} + +.v-ie6 .v-shadow { + background: #000000; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2 ) alpha(opacity = 20); + margin-top: -2px; + margin-left: -2px; +} + +.v-slider { + margin: 5px 0; +} + +.v-slider-base { + height: 2px; + border-top: 1px solid #dddddd; + background: #eeeeee; + border-left: 1px solid #dddddd; + border-right: 1px solid #eeeeee; +} + +.v-slider-handle { + background: #aaaaaa; + width: 12px; + height: 12px; + margin-top: -5px; + font-size: 0; +} + +.v-slider-vertical { + width: 2px; + height: auto; + margin: 0 5px; + border: none; + border-left: 1px solid #cccfd0; + border-right: 1px solid #cccfd0; +} + +.v-slider-vertical .v-slider-base { + width: 2px; + border-bottom: 1px solid #eeeeee; + border-right: none; +} + +.v-slider-vertical .v-slider-handle { + width: 12px; + height: 12px; + font-size: 0; + margin-left: -5px; +} + +.v-slider-feedback { + padding: 2px 5px; + background: #444444; + color: #ffffff; + font-size: 11px; + line-height: 13px; + font-weight: bold; + font-family: Arial, Helvetica, sans-serif; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + margin: -2px 0 0 2px; + text-shadow: 0 1px 0 #000000; +} + +.v-ie6 .v-slider, .v-ie6 .v-slider-vertical { + margin: 0; +} + +.v-ie6 .v-slider .v-slider-handle { + margin: -1px 0; +} + +.v-ie6 .v-slider-vertical .v-slider-handle { + margin: 0 -1px; +} + +.v-splitpanel-horizontal, .v-splitpanel-vertical { + overflow: hidden; +} + +.v-splitpanel-hsplitter { + width: 6px; + font-size: 1px; +} + +.v-splitpanel-hsplitter div { + width: 6px; + font-size: 1px; + position: absolute; + top: 0; + bottom: 0; + background: #dddddd; + cursor: e-resize; + cursor: col-resize; +} + +.v-disabled .v-splitpanel-hsplitter div { + cursor: default; +} + +.v-splitpanel-vsplitter { + height: 6px; + font-size: 1px; +} + +.v-splitpanel-vsplitter div { + height: 6px; + font-size: 1px; + background: #dddddd; + cursor: s-resize; + cursor: row-resize; +} + +.v-disabled .v-splitpanel-vsplitter div { + cursor: default; +} + +.v-ie6 .v-splitpanel-hsplitter div { + height: 99%; +} + +.v-ie6 .v-splitpanel-first-container, .v-ie6 .v-splitpanel-second-container, .v-ie7 .v-splitpanel-first-container, .v-ie7 .v-splitpanel-second-container { + position: relative; +} + +.v-table { + overflow: hidden; + text-align: left; +} + +.v-ie7 .v-table { + overflow: visible; +} + +.v-table-header-wrap { + overflow: hidden; + border: 1px solid #aaaaaa; + border-bottom: none; + background: #efefef; +} + +.v-table-header table, .v-table-table { + border-spacing: 0; + border-collapse: separate; + margin: 0; + padding: 0; + border: 0; +} + +.v-table-header td { + padding: 0; +} + +.v-table-header-cell, .v-table-header-cell-asc, .v-table-header-cell-desc { + cursor: pointer; +} + +.v-table.v-disabled .v-table-header-cell, .v-table.v-disabled .v-table-header-cell-asc, .v-table.v-disabled .v-table-header-cell-desc { + cursor: default; +} + +.v-table-footer-wrap { + overflow: hidden; + border: 1px solid #aaaaaa; + border-top: none; + background: #efefef; +} + +.v-table-footer table { + border-spacing: 0; + border-collapse: collapse; + margin: 0; + padding: 0; + border: 0; +} + +.v-table-footer td { + padding: 0; + border-right: 1px solid #aaaaaa; +} + +.v-table-footer-cell { + cursor: pointer; +} + +.v-table-footer-container { + float: right; + padding-right: 6px; + overflow: hidden; + white-space: nowrap; +} + +.v-table-resizer { + display: block; + height: 1.2em; + float: right; + background: #aaaaaa; + cursor: e-resize; + cursor: col-resize; + width: 1px; + overflow: hidden; +} + +.v-table.v-disabled .v-table-resizer { + cursor: default; +} + +.v-table-caption-container { + overflow: hidden; + white-space: nowrap; + margin-left: 6px; +} + +.v-ie7 .v-table-caption-container-align-right { + margin-left: 0px; + padding-left: 6px; +} + +.v-table-caption-container-align-right { + float: right; +} + +.v-table-sort-indicator { + width: 0px; + height: 1.2em; + float: right; +} + +.v-table-header-cell-asc .v-table-sort-indicator, .v-table-header-cell-desc .v-table-sort-indicator { + width: 16px; + height: 1.2em; + float: right; +} + +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent url(../base/common/img/sprites.png) no-repeat right 6px; +} + +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent url(../base/common/img/sprites.png) no-repeat right -10px; +} + +.v-table-caption-container-align-center { + text-align: center; +} + +.v-table-caption-container-align-right { + text-align: right; +} + +.v-table-caption-container .v-icon, .v-table-header-drag .v-icon { + vertical-align: middle; +} + +.v-table-body { + border: 1px solid #aaaaaa; +} + +.v-table-row-spacer { + height: 10px; + overflow: hidden; +} + +.v-table-row, .v-table-row-odd { + background: #ffffff; + border: 0; + margin: 0; + padding: 0; + cursor: pointer; +} + +.v-table-generated-row { + background: #efefef; +} + +.v-table-body-noselection .v-table-row, .v-table-body-noselection .v-table-row-odd { + cursor: default; +} + +.v-table .v-selected { + background: #999999; + color: #ffffff; +} + +.v-table-cell-content { + white-space: nowrap; + overflow: hidden; + padding: 0 6px; + border-right: 1px solid #aaaaaa; +} + +.v-table-cell-wrapper { + white-space: nowrap; + overflow: hidden; +} + +.v-table-cell-wrapper-align-center { + text-align: center; +} + +.v-table-cell-wrapper-align-right { + text-align: right; +} + +.v-table-column-selector { + float: right; + background: transparent url(../base/common/img/sprites.png) no-repeat 4px -37px; + margin: -1.2em 0 0 0; + height: 1.2em; + width: 14px; + position: relative; + cursor: pointer; +} + +.v-table.v-disabled .v-table-column-selector { + cursor: default; +} + +.v-ie6 .v-table-column-selector, .v-ie7 .v-table-column-selector { + position: static; +} + +.v-table-focus-slot-left { + border-left: 2px solid #999999; + float: none; + margin-bottom: -1.2em; + width: auto; + background: transparent; + border-right: 1px solid #aaaaaa; +} + +.v-table-focus-slot-right { + border-right: 2px solid #999999; + margin-left: -2px; +} + +.v-table-header-drag { + position: absolute; + background: #efefef; + border: 1px solid #eeeeee; + opacity: 0.9; + filter: alpha(opacity = 90); + margin-top: 20px; + z-index: 30000; +} + +.v-table-header-drag .v-icon { + vertical-align: middle; +} + +.v-table-scrollposition { + width: 160px; + background: #eeeeee; + border: 1px solid #aaaaaa; +} + +.v-table-scrollposition span { + display: block; + text-align: center; +} + +.v-table-body:focus, .v-table-body-wrapper:focus { + outline: none; +} + +.v-table-body.focused { + border-color: #388ddd; +} + +.v-table-focus .v-table-cell-content { + border-top: 1px dotted #0066bd; + border-bottom: 1px dotted #0066bd; +} + +.v-table-focus .v-table-cell-wrapper { + margin-top: -1px; + margin-bottom: -1px; +} + +.v-on { +} + +.v-off { + color: #dddddd; +} + +.v-table-drag .v-table-body { + border-color: #1d9dff; +} + +.v-table-row-drag-middle .v-table-cell-content { + background-color: #bcdcff; +} + +.v-table-row-drag-top .v-table-cell-content { + border-top: 2px solid #1d9dff; +} + +.v-table-row-drag-top .v-table-cell-wrapper { + margin-top: -2px; +} + +.v-table-row-drag-bottom .v-table-cell-content { + border-bottom: 2px solid #1d9dff; +} + +.v-table-row-drag-bottom .v-table-cell-wrapper { + margin-bottom: -2px; +} + +.v-table-row-drag-top .v-table-cell-content:first-child:before, .v-table-row-drag-bottom .v-table-cell-content:first-child:after { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + margin-left: -6px; + background: transparent url(../base/common/img/drag-slot-dot.png); +} + +.v-ff .v-table-row-drag-bottom .v-table-cell-content:first-child:after, .v-ie .v-table-row-drag-bottom .v-table-cell-content:first-child:after { + margin-top: -2px; +} + +.v-tabsheet, .v-tabsheet-content, .v-tabsheet-deco { + outline: none; + text-align: left; +} + +.v-tabsheet-tabs { + empty-cells: hide; + border-collapse: collapse; + margin: 0; + padding: 0; + border: 0; + width: 100%; + overflow: hidden; +} + +.v-tabsheet-tabitemcell:focus { + outline: none; +} + +.v-tabsheet-tabitemcell, .v-tabsheet-spacertd { + margin: 0; + padding: 0; + vertical-align: bottom; +} + +.v-tabsheet-spacertd { + width: 100%; +} + +.v-tabsheet-spacertd div { + border-left: 1px solid #aaaaaa; + border-bottom: 1px solid #aaaaaa; + height: 1em; + padding: 0.2em 0; +} + +.v-tabsheet-hidetabs .v-tabsheet-tabcontainer { + display: none; +} + +.v-tabsheet-scroller { + white-space: nowrap; + text-align: right; + margin-top: -1em; +} + +.v-ff2 .v-tabsheet-scroller { + position: relative; +} + +.v-disabled .v-tabsheet-scroller { + display: none; +} + +.v-tabsheet-scrollerPrev, .v-tabsheet-scrollerNext, .v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerNext-disabled { + border: 1px solid #aaaaaa; + background: #ffffff; + width: 12px; + height: 1em; + cursor: pointer; +} + +.v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerNext-disabled { + opacity: 0.5; + cursor: default; +} + +.v-tabsheet-tabs .v-caption, .v-tabsheet-tabs .v-caption span { + white-space: nowrap; +} + +.v-tabsheet-caption-close { + display: inline; + display: inline-block; + zoom: 1; + width: 16px; + height: 16px; + text-align: center; + font-weight: bold; + cursor: pointer; + vertical-align: middle; + user-select: none; + -khtml-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} + +.v-tabsheet .v-disabled .v-tabsheet-caption-close { + cursor: default; + visibility: hidden; +} + +.v-tabsheet-tabitem:hover .v-tabsheet-caption-close, .v-ie6 .v-tabsheet-caption-close { + visibility: visible; +} + +.v-ie6 .v-tabsheet-caption-close { + float: right; +} + +.v-tabsheet-tabitem { + border: 1px solid #aaaaaa; + border-right: none; + cursor: pointer; + padding: 0.2em 0.5em; +} + +.v-tabsheet-tabitem .v-caption { + cursor: inherit; +} + +.v-tabsheet.v-disabled .v-tabsheet-tabitem, .v-tabsheet-tabitemcell-disabled .v-tabsheet-tabitem { + cursor: default; +} + +.v-tabsheet-tabitem-selected { + cursor: default; + border-bottom-color: #ffffff; +} + +.v-tabsheet-tabitem-selected .v-caption { + cursor: default; +} + +.v-tabsheet-content { + border: 1px solid #aaaaaa; + border-top: none; + border-bottom: none; + position: relative; +} + +.v-ie6 .v-tabsheet-content, .v-ie7 .v-tabsheet-content { + zoom: 1; +} + +.v-tabsheet-deco { + height: 1px; + background: #aaaaaa; + overflow: hidden; +} + +.v-tabsheet-hidetabs .v-tabsheet-content { + border: none; +} + +.v-tabsheet-hidetabs .v-tabsheet-deco { + height: 0; +} + +.v-textfield { + text-align: left; +} + +.v-textarea { + resize: none; +} + +.v-textfield-focus, .v-textarea-focus { +} + +input.v-textfield-prompt, textarea.v-textarea-prompt { + color: #999999; + font-style: italic; +} + +input.v-textfield-readonly, textarea.v-textarea-readonly { + background: transparent; + border: none; + resize: none; +} + +input.v-disabled, textarea.v-disabled { + resize: none; +} + +input.v-textfield-readonly:focus, textarea.v-textarea-readonly:focus { + outline: none; +} + +.v-sa input:focus, .v-sa textarea:focus { + outline-width: medium; +} + +.v-richtextarea { + border: 1px solid #aaaaaa; + overflow: hidden; +} + +.v-richtextarea .gwt-RichTextArea { + background: #ffffff; + border: none; +} + +.v-richtextarea .gwt-RichTextToolbar { + white-space: nowrap; + background: #959595 url(../base/textfield/img/richtext-toolbar-bg.png) repeat-x 0 -42px; + border-bottom: 1px solid #7d7d7d; + padding: 2px; + overflow: hidden; +} + +.v-richtextarea .gwt-RichTextToolbar-top { + padding-bottom: 1px; + overflow: hidden; + white-space: normal; +} + +.v-richtextarea .gwt-RichTextToolbar-bottom { + clear: left; + overflow: hidden; + white-space: nowrap; +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton { + float: left; + display: inline; + width: 22px; + height: 21px; + overflow: hidden; + background: transparent url(../base/textfield/img/richtext-toolbar-bg.png) repeat-x; + cursor: pointer; + margin-right: 2px; + text-align: center; +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down, .v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down-hovering, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down-hovering { + background-position: 0 -21px; +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton img, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton img { +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ListBox { + width: 24.5%; + margin-right: 2px; +} + +.v-richtextarea-readonly { + border: none; +} + +.v-tree { + text-align: left; + overflow: hidden; + padding: 1px 0; + outline: none; +} + +.v-tree-node { + background: transparent url(../base/common/img/sprites.png) no-repeat 5px -37px; + padding: 1px 0; +} + +.v-tree-node-caption:focus { + outline: none; +} + +div.v-tree-node-leaf { + background: transparent; +} + +.v-tree-node-expanded { + background: transparent url(../base/common/img/sprites.png) no-repeat -5px -10px; +} + +.v-tree-node-caption { + margin-left: 1em; +} + +.v-tree-node span { + cursor: pointer; +} + +.v-tree-node-caption div { + white-space: nowrap; +} + +.v-tree-node-caption span, .v-tree-node-caption .v-icon { + vertical-align: middle; +} + +.v-tree-node-selected span { + background: #999999; + color: #ffffff; +} + +.v-tree-node-children { + padding-left: 1em; +} + +.v-tree-node-ie6compatnode { + display: none; +} + +.v-ie6 .v-tree-node-ie6compatnode { + display: inline; + float: left; + background: orange; + margin: 0; + width: 0.8em; + height: 0.8em; + padding: 0.1em; + filter: alpha(opacity = 0); +} + +.v-ie6 .v-tree-node, .v-ie6 .v-tree-node-children { + clear: left; +} + +.v-tree .v-tree-node-drag-top { + border-top: 2px solid #1d9dff; + margin-top: -1px; + padding-top: 0; +} + +.v-tree .v-tree-node-drag-bottom { + border-bottom: 2px solid #1d9dff; + margin-bottom: -1px; + padding-bottom: 0; +} + +.v-tree .v-tree-node-drag-top:before, .v-tree .v-tree-node-drag-bottom:after, .v-tree .v-tree-node-caption-drag-center:after { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + background: transparent url(../base/common/img/drag-slot-dot.png); +} + +.v-tree .v-tree-node-drag-bottom:after { + margin-top: -2px; +} + +.v-tree .v-tree-node-caption-drag-center:after { + margin-left: 14px; +} + +.v-ff .v-tree .v-tree-node-caption-drag-center:after, .v-ie .v-tree .v-tree-node-caption-drag-center:after { + margin-top: -2px; +} + +.v-tree .v-tree-node-drag-top { + background-position: 5px -38px; +} + +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: -5px -11px; +} + +.v-tree .v-tree-node-caption-drag-center div { + border: 2px solid #1d9dff; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin: -2px 2px -2px -2px; + background-color: #bcdcff; +} + +.v-ie6 .v-tree .v-tree-node-caption-drag-center div { + margin: -2px; +} + +.v-tree .v-tree-node-caption-drag-center div { + background-color: rgba(169, 209, 255, 0.6); +} + +.v-tree .v-tree-node-caption-drag-center div, .v-tree .v-tree-node-drag-top, .v-tree .v-tree-node-drag-bottom { + border-color: rgba(0, 109, 232, 0.6); +} + +.v-tree-connectors .v-tree-node-caption { + padding-top: 1px; +} + +.v-tree-connectors .v-tree-node { + background: transparent url(../base/tree/img/connector-expand.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-expanded { + background: transparent url(../base/tree/img/connector-collapse.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-last { + background: transparent url(../base/tree/img/connector-expand-last.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-expanded.v-tree-node-last { + background: transparent url(../base/tree/img/connector-collapse-last.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-leaf { + background: transparent url(../base/tree/img/connector-leaf.png) repeat-y 2px 50%; +} + +.v-tree-connectors .v-tree-node-leaf-last { + background: transparent url(../base/tree/img/connector-leaf-last.png) repeat-y 2px 50%; +} + +.v-tree-connectors .v-tree-node-children { + background: transparent url(../base/tree/img/connector.png) repeat-y 2px 0; +} + +.v-tree-connectors .v-tree-node-children-last { + background: transparent; +} + +.v-tree-connectors .v-tree-node-drag-top, .v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { + background-position: 2px -53px; +} + +.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { + background-position: 2px 50%; +} + +.v-ie6 .v-tree-connectors .v-tree-node { + background: transparent url(../base/tree/img/connector-expand-ie6.png) no-repeat 2px -52px; +} + +.v-ie6 .v-tree-connectors .v-tree-node-expanded { + background: transparent url(../base/tree/img/connector-collapse-ie6.png) no-repeat 2px -52px; +} + +.v-ie6 .v-tree-connectors .v-tree-node-last { + background: transparent url(../base/tree/img/connector-expand-last-ie6.png) no-repeat 2px -52px; +} + +.v-ie6 .v-tree-connectors .v-tree-node-last.v-tree-node-expanded { + background: transparent url(../base/tree/img/connector-collapse-last-ie6.png) no-repeat 2px -52px; +} + +.v-treetable-treespacer { + display: inline-block; + background: transparent; + height: 10px; + width: 18px; +} + +.v-ie7 .v-treetable-treespacer { + height: 100%; +} + +.v-treetable-node-closed { + background: url(../base/treetable/img/arrow-right.png) right center no-repeat; +} + +.v-ie6 .v-treetable-node-closed { + background-image: url(../base/treetable/img/arrow-right.gif); +} + +.v-treetable-node-open { + background: url(../base/treetable/img/arrow-down.png) right center no-repeat; +} + +.v-ie6 .v-treetable-node-open { + background-image: url(../base/treetable/img/arrow-down.gif); +} + +.v-treetable .v-checkbox { + display: inline-block; + padding-bottom: 4px; +} + +.v-treetable .v-table-row .v-table-cell-content, .v-treetable .v-table-row-odd .v-table-cell-content { + position: relative; + z-index: 10; +} + +.v-treetable .v-table-body .v-table-table .v-table-row-animating { + zoom: 1; + z-index: 1; +} + +.v-treetable .v-table-body .v-table-table .v-table-row-animating, .v-treetable .v-table-body .v-table-table .v-table-row-animating .v-table-cell-content { + background: transparent; +} + +.v-treetable-animation-clone { + border-spacing: 0; + zoom: 1; +} + +div.v-treetable-animation-clone-wrapper { + position: absolute; + z-index: 2; + background-color: #ffffff; +} + +div.v-treetable-animation-clone-wrapper table.v-treetable-animation-clone { + background-color: #ffffff; +} + +div table.v-treetable-animation-clone tr.v-table-row, div table.v-treetable-animation-clone tr.v-table-row-odd, div table.v-treetable-animation-clone tr.v-table-row td.v-table-cell-content, div table.v-treetable-animation-clone tr.v-table-row-odd td.v-table-cell-content { + visibility: visible; +} + +.v-upload { + white-space: nowrap; +} + +.v-ie6 .v-upload, .v-ie7 .v-upload { + margin: 0; +} + +.v-upload-immediate { + position: relative; + margin: 0; + overflow: hidden; +} + +.v-ff .v-upload-immediate, .v-op .v-upload-immediate { + display: inline-block; +} + +.v-upload-immediate input { + opacity: 0; + filter: alpha(opacity = 0); + z-index: 2; + position: absolute; + right: 0; + height: 21px; + text-align: right; + border: none; + background: transparent; +} + +.v-upload-immediate button { + position: relative; + left: 0; + top: 0; + width: 100%; + text-align: left; +} + +.v-window { + background: #ffffff; +} + +.v-window-outerheader { + padding: 0.3em 1em; + height: 1em; +} + +.v-window-outerheader, .v-window-draggingCurtain { + cursor: move; +} + +.v-window-header { + font-weight: bold; +} + +div.v-window-header { + white-space: nowrap; + text-overflow: ellipsis; + -ms-text-overflow: ellipsis; + overflow: hidden; + padding: 0; +} + +.v-ie6 .v-window-header { + width: 100%; +} + +.v-window-header .v-icon { + vertical-align: middle; +} + +.v-window-contents, x:-moz-any-link { + overflow: hidden; +} + +.v-window-contents, x:-moz-any-link, x:default { + overflow: visible; +} + +.v-window-contents > div { + outline: none; +} + +.v-window-footer { + overflow: hidden; + zoom: 1; + height: 10px; + position: relative; + cursor: move; +} + +.v-window-resizebox { + width: 10px; + height: 10px; + background: #dddddd; + overflow: hidden; + position: absolute; + right: 0; +} + +.v-window-resizebox, .v-window-resizingCurtain { + cursor: se-resize; +} + +.v-window div.v-window-footer-noresize { + height: 0; +} + +.v-window-resizebox-disabled { + cursor: default; + display: none; +} + +.v-window-closebox { + position: absolute; + top: 0; + right: 0; + width: 1em; + height: 1em; + background: red; + cursor: pointer; + overflow: hidden; +} + +.v-window-modalitycurtain { + top: 0; + left: 0; + background: #999999; + opacity: 0.5; + position: fixed; + width: 100%; + height: 100%; + filter: alpha(opacity = 50); +} + +.v-ie6 .v-window-modalitycurtain { + position: absolute; + top: expression(document.documentElement.scrollTop + "px"); +} + +.v-ie6 .v-window { + width: 0; +} + +.v-shadow-window { + position: absolute; +} + +.v-shadow-window .top-left { + position: absolute; + overflow: hidden; + top: -10px; + left: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/top-left.png); +} + +.v-shadow-window .top { + position: absolute; + overflow: hidden; + top: -10px; + left: 13px; + height: 28px; + right: 13px; + background: transparent url(../base/window/img/shadow/top.png); +} + +.v-shadow-window .top-right { + position: absolute; + overflow: hidden; + top: -10px; + right: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/top-right.png); +} + +.v-shadow-window .left { + position: absolute; + overflow: hidden; + top: 18px; + left: -15px; + width: 28px; + bottom: 10px; + background: transparent url(../base/window/img/shadow/left.png); +} + +.v-shadow-window .center { + position: absolute; + overflow: hidden; + top: 18px; + left: 13px; + bottom: 10px; + right: 13px; + background: transparent url(../base/window/img/shadow/center.png); +} + +.v-shadow-window .right { + position: absolute; + overflow: hidden; + top: 18px; + right: -15px; + width: 28px; + bottom: 10px; + background: transparent url(../base/window/img/shadow/right.png); +} + +.v-shadow-window .bottom-left { + position: absolute; + overflow: hidden; + bottom: -18px; + left: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/bottom-left.png); +} + +.v-shadow-window .bottom { + position: absolute; + overflow: hidden; + bottom: -18px; + left: 13px; + right: 13px; + height: 28px; + background: transparent url(../base/window/img/shadow/bottom.png); +} + +.v-shadow-window .bottom-right { + position: absolute; + overflow: hidden; + bottom: -18px; + right: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/bottom-right.png); +} + +.v-ie6 .v-shadow-window * { + display: none; +} + +.v-ie6 .v-shadow-window { + background: #000000; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=5 ) alpha(opacity = 20); + margin-top: 2px; + margin-left: 2px; +} + +.v-accordion { + border: 1px solid #bebebe; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + overflow: hidden; +} + +.v-accordion-item { + background-color: #ffffff; +} + +.v-accordion-item-caption { + height: 19px; + background: #e4e4e4 repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -0px; + font-size: 11px; + line-height: normal; + border-top: 1px solid #bebebe; + text-shadow: #ffffff 0 1px 0; +} + +.v-accordion-item-first .v-accordion-item-caption { + border-top: none; +} + +.v-accordion-item-caption .v-caption { + padding: 3px 0 5px 10px; +} + +.v-ie .v-accordion-item-caption .v-caption { + padding: 2px 0 6px 10px; +} + +.v-accordion-item-open .v-accordion-item-caption { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -19px; + border-bottom: 1px solid #bbbbbb; +} + +.v-accordion-item-caption .v-icon { + margin-top: -1px; +} + +.v-ie .v-accordion-item-caption .v-icon { + vertical-align: top; +} + +.v-accordion-borderless { + border: none; + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; +} + +.v-button:focus { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -0px; + outline: none; +} + +.v-button:focus .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -26px; + outline: none; +} + +.v-button:active, .v-button.v-pressed { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -52px; + outline: none; +} + +.v-button:active .v-button-wrap, .v-button.v-pressed .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -78px; + outline: none; +} + +.v-button, .v-disabled.v-button { + height: 26px; + padding: 0 0 0 6px; + background-color: transparent; + background-repeat: no-repeat; + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -104px; + border: none; + cursor: default; +} + +.v-button-wrap, .v-disabled.v-button .v-button-wrap { + display: block; + height: 22px; + padding: 4px 15px 0 9px; + background-color: transparent; + background-repeat: no-repeat; + background-position: right top; + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -130px; +} + +.v-button-caption { + color: #222222; + text-shadow: #ffffff 0 1px 0; + font-weight: bold; + font-size: 11px; + line-height: 16px; +} + +.black .v-button:focus { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -0px; +} + +.black .v-button:focus .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -26px; +} + +.black .v-button:active, .black .v-button.v-pressed { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -52px; +} + +.black .v-button:active .v-button-wrap, .black .v-button.v-pressed .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -78px; +} + +.black .v-button, .black .v-disabled.v-button { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -104px; +} + +.black .v-button-wrap, .black .v-disabled.v-button .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -130px; +} + +.black .v-button-caption { + color: #c9ccce; + text-shadow: #121314 0 -1px 0; +} + +.v-button-primary:focus { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -156px; +} + +.v-button-primary:focus .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -182px; +} + +.v-button-primary:active, .v-button-primary.v-pressed { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -208px; +} + +.v-button-primary:active .v-button-wrap, .v-button-primary.v-pressed .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -234px; +} + +.v-button-primary, .v-disabled.v-button-primary { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -260px; +} + +.v-button-primary .v-button-wrap, .v-disabled.v-button-primary .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -286px; +} + +.black .v-button-primary:focus { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -156px; +} + +.black .v-button-primary:focus .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -182px; + color: #eaf4fb; +} + +.black .v-button-primary:active, .black .v-button-primary.v-pressed { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -208px; +} + +.black .v-button-primary:active .v-button-wrap, .black .v-button-primary.v-pressed .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -234px; +} + +.black .v-button-primary, .black .v-disabled.v-button-primary { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -260px; +} + +.black .v-button-primary .v-button-wrap, .black .v-disabled.v-button-primary .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -286px; +} + +.v-button-small:focus { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -312px; +} + +.v-button-small:focus .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -332px; +} + +.v-button-small:active, .v-button-small.v-pressed { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -352px; +} + +.v-button-small:active .v-button-wrap, .v-button-small.v-pressed .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -372px; +} + +.v-button-small, .v-disabled.v-button-small { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -392px; + height: 20px; +} + +.v-button-small .v-button-wrap, .v-disabled.v-button-small .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -412px; + height: 19px; + padding: 1px 14px 0 8px; +} + +.v-button-small .v-button-caption { + font-weight: normal; +} + +.black .v-button-small:focus { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -312px; +} + +.black .v-button-small:focus .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -332px; +} + +.black .v-button-small:active, .black .v-button-small.v-pressed { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -352px; +} + +.black .v-button-small:active .v-button-wrap, .black .v-button-small.v-pressed .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -372px; +} + +.black .v-button-small, .black .v-disabled.v-button-small { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -392px; +} + +.black .v-button-small .v-button-wrap, .black .v-disabled.v-button-small .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -412px; +} + +.v-button.v-button-link, .v-button.v-button-link:focus, .v-button.v-button-link:active, .v-button-link.v-pressed, .v-disabled.v-button.v-button-link, .v-button.v-button-link .v-button-wrap, .v-button.v-button-link:focus .v-button-wrap, .v-button.v-button-link:active .v-button-wrap, .v-button-link.v-pressed .v-button-wrap, .v-disabled.v-button.v-button-link .v-button-wrap { + background: transparent; + height: auto; + padding: 0; + cursor: pointer; + line-height: inherit; +} + +.v-button.v-button-link.v-disabled, .v-button.v-button-link.v-disabled .v-button-wrap { + cursor: default; +} + +.v-button-link .v-button-caption, .v-nativebutton-link .v-nativebutton-caption { + line-height: inherit; + font-weight: normal; + color: #1b699f; + font-size: 12px; + text-shadow: none; +} + +.v-button-link:focus .v-button-caption, .v-nativebutton-link:focus .v-nativebutton-caption { + outline: 1px dotted #1b699f; +} + +.v-ff2 .v-button .v-button-caption { + display: -moz-inline-box; + padding-top: 6px; + height: 20px; +} + +.v-ie6 .v-nativebutton-link, .v-ie7 .v-nativebutton-link, .v-ie8 .v-nativebutton-link { + padding: 0; + text-align: left; +} + +.v-ie6 .v-button { + border: 1px solid #b3b3b3; + border-bottom-color: #9a9a9a; + background: #d8d8d8 url(button/img/right.png) no-repeat 0 -1px; + padding: 0 15px; + height: 23px; +} + +.v-ie6 .v-button .v-button-wrap { + background: transparent; + height: 20px; + padding: 3px 0 0; + display: inline; + zoom: 1; +} + +.v-ie6 .v-button-primary { + background-image: url(button/img/primary-right.png); +} + +.v-ie6 .v-button-small { + background-image: url(button/img/small-right.png); + height: 17px; +} + +.v-ie6 .v-button-small .v-button-wrap { + height: 17px; + padding: 0; +} + +.v-ie6 .v-button.v-pressed { + background: transparent url(button/img/right-pressed.png) no-repeat 0 -1px; +} + +.v-ie6 .blue .v-button { + border-color: #84949c; + border-top-color: #83939b; + border-bottom-color: #888d91; +} + +.v-ie6 .black .v-button { + border: 1px solid #0d0e0f; + background: #202224 url(button/img/black/right.png) no-repeat 0 -1px; + color: #c9ccce; +} + +.v-ie6 .black .v-button-primary { + background-image: url(button/img/black/primary-right.png); +} + +.v-ie6 .black .v-button-small { + background-image: url(button/img/black/small-right.png); +} + +.v-ie6 .black .v-button.v-pressed { + background-image: url(button/img/black/right-pressed.png); +} + +.v-ie6 .v-button-link, .v-ie6 .black .v-button-link { + background: transparent; + border: none; + height: auto; + line-height: normal; + padding: 0; +} + +.v-ie6 .v-button-link .v-button-wrap, .v-ie6 .black .v-button-link .v-button-wrap { + padding: 0; + height: auto; +} + +.v-generated-body, .v-app { + background: #f5f5f5; +} + +.v-app, .v-window, .v-popupview-popup, .v-tooltip, .v-app input, .v-app select, .v-app button, .v-app textarea, .v-window input, .v-window select, .v-window button, .v-window textarea, .v-popupview-popup input, .v-popupview-popup select, .v-popupview-popup button, .v-popupview-popup textarea, .v-filterselect-suggestpopup, .v-datefield-popup, .v-contextmenu, .v-Notification, .v-menubar-submenu, .v-drag-element, .v-table-header-drag { + font-family: Arial, Helvetica, Tahoma, Verdana, sans-serif; + font-size: 12px; + line-height: normal; + color: #222222; +} + +.v-app .black, .v-window-black, .v-window .black, .v-popupview-popup .black { + color: #c9ccce; + text-shadow: #000000 0 0 1px; +} + +.v-errorindicator { + width: 13px; + height: 16px; + background: transparent url(common/icons/error.png) no-repeat 50%; +} + +.v-ie6 .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-tooltip { + background-color: #fffcdd; + border: 1px solid #b8b295; + font-size: 11px; + color: #222222; +} + +.v-tooltip-text { + padding: 2px 4px; +} + +.v-tooltip .v-errormessage { + padding: 3px 4px; + background: #ffecc6; + color: #b74100; + border: none; + border-top: 1px solid #fff3dc; +} + +.v-tooltip .v-errormessage h2 { + font-size: 16px; + font-weight: normal; + color: #ab3101; + margin: 2px 0 8px 0; +} + +.v-tooltip .v-errormessage h3 { + font-size: 13px; + font-weight: bold; + margin: 1px 0 4px 0; +} + +.v-contextmenu { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; + padding: 4px 0; +} + +.v-contextmenu .gwt-MenuItem { + padding: 1px 12px 1px 8px; + height: 16px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + cursor: default; +} + +.v-contextmenu .gwt-MenuItem .v-icon { + margin-right: 3px; +} + +.v-contextmenu .gwt-MenuItem-selected { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -38px; + color: #ffffff; + text-shadow: #3b5a7a 0 1px 0; +} + +.v-ie .v-contextmenu .gwt-MenuItem-selected { + background-image: url(common/img/sel-bg.png); + background-position: left top; +} + +.v-contextmenu .gwt-MenuItem-selected div { + background: transparent; + cursor: default; +} + +.portlet .v-app { + background: transparent; +} + +.portlet .v-app .v-radiobutton input, .portlet .v-window .v-radiobutton input, .portlet .v-popupview-popup .v-radiobutton input, .portlet .v-app .v-checkbox input, .portlet .v-window .v-checkbox input, .portlet .v-popupview-popup .v-checkbox input { + margin-right: 3px; + background: transparent; +} + +input.v-textfield-readonly:focus { + background-color: transparent; +} + +.v-datefield-calendarpanel { + border-collapse: collapse; + margin: 0; + padding: 0; + height: auto !important; +} + +.v-datefield-year .v-datefield-calendarpanel-prevmonth, .v-datefield-year .v-datefield-calendarpanel-nextmonth { + display: none; +} + +.v-datefield-calendarpanel td { + vertical-align: top; +} + +td.v-datefield-calendarpanel-month { + height: 23px; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -58px; +} + +span.v-datefield-calendarpanel-month { + display: block; + text-align: center; + height: 16px; + padding: 3px 10px 0 10px; + border-left: 1px solid #efefef; + border-right: 1px solid #d8d8d8; + text-shadow: #ffffff 0 1px 0; + overflow: hidden; + margin-top: 1px; +} + +.v-datefield-year .v-datefield-calendarpanel-month { + width: 35px; +} + +.v-datefield-month .v-datefield-calendarpanel-month, .v-datefield-day .v-datefield-calendarpanel-month, .v-datefield-full .v-datefield-calendarpanel-month { + width: 124px; +} + +.v-datefield-month, .v-datefield-day, .v-datefield-full { + min-width: 240px; +} + +.v-ff2 .v-datefield-month, .v-ff2 .v-datefield-day, .v-ff2 .v-datefield-full { + min-width: 254px; +} + +.v-datefield-popupcalendar, .v-ff2 .v-datefield-popupcalendar { + min-width: 0; +} + +.v-datefield-year .v-datefield-calendarpanel { + width: 100px; +} + +td.v-datefield-calendarpanel-prevyear { + text-align: right; +} + +td.v-datefield-calendarpanel-nextyear { + text-align: left; +} + +.v-datefield-calendarpanel-prevyear button, .v-datefield-calendarpanel-nextyear button, .v-datefield-calendarpanel-prevmonth button, .v-datefield-calendarpanel-nextmonth button { + width: 24px; + height: 23px; + border: none; + background: transparent; + background-repeat: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -81px; + overflow: hidden; + padding: 0; + text-indent: -9999px; + outline: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.v-ie .v-datefield-calendarpanel-prevyear button, .v-ie .v-datefield-calendarpanel-nextyear button, .v-ie .v-datefield-calendarpanel-prevmonth button, .v-ie .v-datefield-calendarpanel-nextmonth button { + text-indent: 0; + font-size: 1px; +} + +.v-datefield-calendarpanel-nextyear button { + background-position: left top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -104px; +} + +.v-datefield-calendarpanel-prevyear button:active, .v-ie .v-datefield-calendarpanel-prevyear button.v-pressed { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -127px; +} + +.v-datefield-calendarpanel-nextyear button:active, .v-ie .v-datefield-calendarpanel-nextyear button.v-pressed { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -150px; +} + +.v-datefield-calendarpanel-prevmonth, .v-datefield-calendarpanel-nextmonth { + width: 24px; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -173px; +} + +.v-datefield-calendarpanel-prevmonth button, .v-datefield-calendarpanel-nextmonth button { + width: 100%; + height: 21px; + border-left: 1px solid #efefef; + border-right: 1px solid #d8d8d8; + background: transparent; + background-position: center top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -196px; + min-width: 24px; + margin-top: 1px; +} + +.v-ie .v-datefield-calendarpanel-prevmonth button, .v-ie .v-datefield-calendarpanel-nextmonth button { + border: none; +} + +.v-ie6 .v-datefield-calendarpanel-prevmonth button, .v-ie6 .v-datefield-calendarpanel-nextmonth button { + width: 24px; +} + +.v-datefield-calendarpanel-nextmonth button { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -217px; +} + +.v-datefield-calendarpanel-prevmonth button:active, .v-ie .v-datefield-calendarpanel-prevmonth button.v-pressed { + background-position: center top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -238px; +} + +.v-datefield-calendarpanel-nextmonth button:active, .v-ie .v-datefield-calendarpanel-nextmonth button.v-pressed { + background-position: center top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -259px; +} + +.v-datefield-calendarpanel-body, .v-datefield-calendarpanel-time { + text-align: center; + vertical-align: top; +} + +.v-datefield-calendarpanel-body table { + border-collapse: collapse; + margin: 0; + padding: 0; + width: 220px; + margin: 0 auto; +} + +.v-datefield-calendarpanel-weekdays td { + width: 14.2%; + overflow: hidden; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -280px; + font-size: 10px; + line-height: normal; + text-transform: uppercase; + color: #eaeff1; + text-shadow: #3b4651 0 -1px 0; + vertical-align: top; +} + +.v-datefield-calendarpanel-weeknumbers td { + width: 12.4%; +} + +.v-datefield-calendarpanel-weekdays strong { + display: block; + text-align: right; + padding: 1px 5px 0 0; + height: 14px; + border-top: 1px solid #596775; +} + +.v-datefield-calendarpanel-weekdays .v-first { + background-repeat: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -299px; +} + +.v-datefield-calendarpanel-weekdays .v-last { + background-repeat: no-repeat; + background-position: right top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -318px; +} + +.v-ie .v-datefield-calendarpanel-weekdays td { + background: url(datefield/img/weekday-bg.png) repeat-x; + background-position: left top; +} + +.v-ie .v-datefield-calendarpanel .v-first { + background: url(datefield/img/weekday-first.png) no-repeat; +} + +.v-ie .v-datefield-calendarpanel .v-last { + background: url(datefield/img/weekday-last.png) no-repeat right top; +} + +.v-datefield-calendarpanel-body td { + text-align: right; + height: 19px; +} + +.v-datefield-calendarpanel-day, .v-datefield-calendarpanel-weeknumber, .v-datefield-calendarpanel-day-today { + padding: 2px 5px 2px 0; + display: block; + margin: 1px 0 0 5px; +} + +.v-datefield-calendarpanel-weeknumber { + margin: 0; + padding-top: 4px; + padding-bottom: 3px; +} + +.v-datefield-calendarpanel-day-today { + color: #4095d1; + border: none; +} + +.v-datefield-calendarpanel-day-selected { + background: #507ba3; + color: #ffffff; + text-shadow: #3b5b79 0 1px 0; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.v-datefield-calendarpanel-time select { + padding: 0; + font-size: 11px; +} + +.v-datefield-popup { + background: #f8f8f9; + padding: 8px 4px; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} + +.v-sa .v-datefield-popup, .v-ff3 .v-datefield-popup, .v-op .v-datefield-popup { + background: rgba(255, 255, 255, 0.95); +} + +.v-datefield-year .v-datefield-textfield { + width: 4em; +} + +.v-datefield-month .v-datefield-textfield { + width: 5em; +} + +.v-datefield-day .v-datefield-textfield { + width: 5.5em; +} + +.v-datefield-full .v-datefield-textfield { + width: 12em; +} + +.v-datefield-popupcalendar input.v-datefield-textfield { + border-right-width: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0; + height: 14px; +} + +.v-datefield.v-readonly input.v-datefield-textfield { + border-right-width: 1px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +.v-datefield-prompt .v-datefield-textfield { + color: #999999; + font-style: normal; +} + +.v-datefield-popupcalendar .v-datefield-button { + width: 24px; + height: 23px; + background: transparent; + border: none; + padding: 0; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -337px; + cursor: pointer; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.v-datefield-popupcalendar .v-datefield-button:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -360px; +} + +.black .v-datefield-popupcalendar .v-datefield-button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -0px; +} + +.black .v-datefield-popupcalendar .v-datefield-button:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -23px; +} + +.v-ie6 .v-datefield-popupcalendar .v-datefield-button { + margin-top: 1px; +} + +.black td.v-datefield-calendarpanel-month { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -46px; + height: 21px; +} + +.black span.v-datefield-calendarpanel-month { + border-left: 1px solid #333638; + border-right: 1px solid #232527; + color: #c9ccce; + text-shadow: #000000 0 -1px 0; + padding: 4px 10px 1px 10px; + margin-top: 0; +} + +.black .v-datefield-calendarpanel-prevyear button, .black .v-datefield-calendarpanel-nextyear button, .black .v-datefield-calendarpanel-prevmonth button, .black .v-datefield-calendarpanel-nextmonth button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -67px; + height: 21px; +} + +.black .v-datefield-calendarpanel-nextyear button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -88px; +} + +.black .v-datefield-calendarpanel-prevyear button:active, .v-ie .black .v-datefield-calendarpanel-prevyear button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -109px; +} + +.black .v-datefield-calendarpanel-nextyear button:active, .v-ie .black .v-datefield-calendarpanel-nextyear button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -130px; +} + +.black .v-datefield-calendarpanel-prevmonth, .black .v-datefield-calendarpanel-nextmonth { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -151px; +} + +.black .v-datefield-calendarpanel-prevmonth button, .black .v-datefield-calendarpanel-nextmonth button { + border-left: 1px solid #333638; + border-right: 1px solid #232527; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -172px; + margin-top: 0; +} + +.black .v-datefield-calendarpanel-nextmonth button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -193px; +} + +.black .v-datefield-calendarpanel-prevmonth button:active, .v-ie .black .v-datefield-calendarpanel-prevmonth button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -214px; +} + +.black .v-datefield-calendarpanel-nextmonth button:active, .v-ie .black .v-datefield-calendarpanel-nextmonth button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -235px; +} + +.v-ie .black .v-datefield-calendarpanel-prevmonth button, .v-ie .black .v-datefield-calendarpanel-nextmonth button { + border: none; +} + +.black .v-datefield-calendarpanel-weekdays td { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -256px; + color: #0a0b0b; + text-shadow: #5a5c5e 0 1px 0; +} + +.black .v-datefield-calendarpanel-weekdays strong { + border-top-color: #1b1c1d; +} + +.black .v-datefield-calendarpanel .v-first { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -275px; +} + +.black .v-datefield-calendarpanel .v-last { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: right -294px; +} + +.black .v-datefield-prompt .v-datefield-textfield { + color: #5f6366; +} + +.v-formlayout-errorcell { + width: 13px; +} + +.v-formlayout-cell .v-errorindicator { + width: 13px; + height: 16px; + background: transparent url(common/icons/error.png) no-repeat 50%; +} + +.v-ie6 .v-formlayout-cell .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-formlayout-captioncell { + text-align: right; + white-space: nowrap; +} + +.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { + padding-top: 8px; +} + +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 15px; +} + +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { + padding-bottom: 15px; +} + +.v-formlayout-margin-left .v-formlayout-captioncell { + padding-left: 18px; +} + +.v-formlayout-margin-right .v-formlayout-contentcell { + padding-right: 18px; +} + +.v-form-errormessage { + background: transparent url(common/icons/error.png) no-repeat 3px 2px; + padding-left: 20px; + margin-bottom: 5px; + margin-top: 5px; + min-height: 20px; +} + +.v-ie6 .v-form-errormessage { + height: 20px; + background-image: url(common/icons/error-ie6.png); +} + +.v-form fieldset { + border: none; + border-top: 1px solid #babfc0; +} + +.v-form-nocaption fieldset { + border: none; +} + +.v-form-nocaption legend { + display: none; +} + +.v-form legend { + margin: 0 0 0 20px; + padding: 0 5px; + font-weight: bold; + color: #222222; +} + +.black .v-form legend { + color: #e3e6e8; +} + +.v-label { + line-height: 18px; +} + +.white .black, .blue .black { + color: #c9ccce; + text-shadow: 0 0 1px #000000; +} + +.black .v-label-h1, .black .v-label-h2, .black .v-caption-h1, .black .v-caption-h2, .white .black .v-label-h1, .white .black .v-label-h2, .white .black .v-caption-h1, .white .black .v-caption-h2, .blue .black .v-label-h1, .blue .black .v-label-h2, .blue .black .v-caption-h1, .blue .black .v-caption-h2 { + color: #ffffff; + text-shadow: rgba(0, 0, 0, 0.8) 0 2px 2px; +} + +.black .v-label-light, .white .black .v-label-light { + color: #72787c; +} + +.black .v-label hr, .white .black .v-label hr { + background: #0c0d0e; + color: #0c0d0e; + border-bottom-color: #292b2e; +} + +.v-app .white, .v-window .white, .v-app .blue, .v-window .blue { + color: #222222; + text-shadow: none; +} + +.blue .v-label-h1, .blue .v-label-h2, .blue .v-caption-h1, .blue .v-caption-h2, .white .blue .v-label-h1, .white .blue .v-label-h2, .white .blue .v-caption-h1, .white .blue .v-caption-h2 { + color: #ffffff; + text-shadow: rgba(0, 0, 0, 0.3) 0 1px 1px; +} + +.blue .v-label-light, .white .blue .v-label-light { + color: #6e7c83; +} + +.blue .v-label hr, .white .blue .v-label hr { + background: #a3bcc9; + color: #a3bcc9; + border-bottom-color: #cfe2eb; +} + +.v-label-h1, .v-label-h2, .v-caption-h1, .v-caption-h2, .white .v-label-h1, .white .v-label-h2, .white .v-caption-h1, .white .v-caption-h2 { + font-family: Helvetica, Arial, "Lucida Grande", Geneva, Tahoma, Verdana, sans-serif; + font-size: 24px; + line-height: 30px; + font-weight: bold; + color: #44698b; + letter-spacing: -0.02em; + text-shadow: #ffffff 0 -1px 1px; +} + +.v-label-h2, .v-caption-h2, .white .v-label-h2, .white .v-caption-h2 { + font-size: 16px; + line-height: 22px; +} + +.v-label-light, .white .v-label-light { + font-size: 11px; + line-height: 13px; + color: #707070; +} + +.v-label hr, .white .v-label hr { + height: 2px; + overflow: hidden; + background: #dcdcdc; + color: #dcdcdc; + border: none; + border-bottom: 1px solid #ffffff; +} + +.v-sa .v-label hr, .v-ie8 .v-label hr { + height: 1px; +} + +.v-table .v-label { + line-height: normal; +} + +.v-orderedlayout-margin-top, .v-horizontallayout-margin-top, .v-verticallayout-margin-top { + padding-top: 18px; +} + +.v-orderedlayout-margin-right, .v-horizontallayout-margin-right, .v-verticallayout-margin-right { + padding-right: 18px; +} + +.v-orderedlayout-margin-bottom, .v-horizontallayout-margin-bottom, .v-verticallayout-margin-bottom { + padding-bottom: 18px; +} + +.v-orderedlayout-margin-left, .v-horizontallayout-margin-left, .v-verticallayout-margin-left { + padding-left: 18px; +} + +.v-orderedlayout-spacing-on, .v-horizontallayout-spacing-on, .v-verticallayout-spacing-on { + padding-top: 7px; + padding-left: 6px; +} + +.v-gridlayout-margin-top { + padding-top: 24px; +} + +.v-gridlayout-margin-bottom { + padding-bottom: 24px; +} + +.v-gridlayout-margin-left { + padding-left: 24px; +} + +.v-gridlayout-margin-right { + padding-right: 24px; +} + +.v-gridlayout-spacing-on { + padding-left: 12px; + padding-top: 12px; +} + +.v-verticallayout-blue, .v-horizontallayout-blue, .v-orderedlayout-blue, .v-gridlayout-blue, .v-csslayout-blue, .v-formlayout-blue, .v-splitpanel-vertical-blue, .v-splitpanel-horizontal-blue { + background-color: #bcd3de; +} + +.v-panel-content > div.blue { + background-color: #bcd3de; +} + +.v-verticallayout-white, .v-horizontallayout-white, .v-orderedlayout-white, .v-gridlayout-white, .v-csslayout-white, .v-formlayout-white, .v-splitpanel-vertical-white, .v-splitpanel-horizontal-white { + background-color: #ffffff; + color: #222222; +} + +.v-panel-content > div.white { + background-color: #ffffff; + color: #222222; +} + +.v-verticallayout-black, .v-horizontallayout-black, .v-orderedlayout-black, .v-gridlayout-black, .v-csslayout-black, .v-formlayout-black, .v-splitpanel-vertical-black, .v-splitpanel-horizontal-black { + background: #1e2022 url(layouts/img/black-bg.png) repeat-x; +} + +.v-panel-content > div.black { + background: #1e2022 url(layouts/img/black-bg.png) repeat-x; +} + +.v-link a:link span { + color: #1b699f; +} + +.v-link a:visited span { + color: #5c7485; +} + +.v-link a:hover span { + color: #2483c4; +} + +.v-menubar { + height: 23px; + background: #323336 repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -383px; + color: #d1d3d6; + text-shadow: rgba(0, 0, 0, 0.9) 0 1px 0; + padding: 0 8px; +} + +.v-menubar .v-menubar-menuitem { + padding: 3px 8px; + height: 17px; + line-height: 16px; +} + +.v-menubar .v-menubar-menuitem:hover { + color: #ffffff; +} + +.v-menubar-submenu { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; + padding: 4px 0; +} + +.v-menubar-submenu .v-menubar-menuitem { + padding: 1px 26px 1px 10px; + line-height: 16px; +} + +.v-menubar-submenu .v-menubar-menuitem-caption .v-icon { + vertical-align: middle; +} + +.v-menubar .v-menubar-menuitem-selected, .v-menubar-submenu .v-menubar-menuitem-selected { + background: #4d749f repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -406px; + color: #ffffff; + text-shadow: 0 1px 0 #3b5a7a; +} + +.v-menubar .v-menubar-menuitem-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -426px; +} + +.v-menubar-submenu .v-menubar-submenu-indicator { + background: transparent url(menubar/img/submenu-icon.png) no-repeat right 70%; + width: 26px; + height: 16px; + text-indent: -9999px; +} + +.v-menubar-submenu .v-menubar-menuitem-selected .v-menubar-submenu-indicator { + background-image: url(menubar/img/submenu-icon-hover.png); +} + +.v-menubar-submenu-check-column .v-menubar-menuitem { + padding-left: 6px; +} + +.v-menubar-submenu-check-column .v-menubar-menuitem-caption { + padding-left: 18px; +} + +.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/checked.png) no-repeat left; +} + +.v-menubar-submenu .v-menubar-menuitem-unchecked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/unchecked.png) no-repeat left; +} + +.v-menubar-submenu .v-menubar-menuitem-selected-checked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/checked-selected.png) no-repeat left; +} + +.v-menubar-submenu .v-menubar-menuitem-selected-unchecked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/unchecked-selected.png) no-repeat left; +} + +.v-Notification { + color: #ffffff; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + font-size: 100%; + background: #c8ccd0; + font-weight: bold; +} + +.v-ie9 .v-Notification H1 { + font-weight: bold; +} + +.v-Notification p { + line-height: 1.3; +} + +.v-Notification-warning { + background: #fdf3b5; + color: #ca9a61; + border: 3px solid #fee3af; +} + +.v-Notification-error { + background: #b40000 url(notification/img/error-close.png) no-repeat right top; + border: 3px solid #ca3030; +} + +.v-Notification-tray { + margin: 0 5px 5px 0; + background: #3b3c3e; + border: 2px solid #585b5c; + padding: 0.8em 0.9em; +} + +.v-Notification-tray h1 { + font-size: 14px; + line-height: 18px; +} + +.v-Notification-tray p { + font-size: 12px; + font-weight: normal; +} + +.v-Notification-system { + background-color: #b40000; +} + +.blue .v-panel-caption, .blue .v-panel-nocaption, .blue .v-panel-content { + border-color: #a8bcc5; +} + +.v-panel-caption, .v-panel-nocaption, .white .v-panel-caption, .white .v-panel-nocaption { + border-bottom: 1px solid #e5e5e5; + line-height: 16px; +} + +.v-webkit .v-panel-caption, .v-webkit .v-panel-nocaption, .v-gecko .v-panel-caption, .v-gecko .v-panel-nocaption, .v-ie9 .v-panel-caption, .v-ie9 .v-panel-nocaption { + border-bottom-color: rgba(0, 0, 0, 0.08); +} + +.v-panel-caption { + padding-bottom: 2px; +} + +.v-panel-content, .white .v-panel-content { + border: 1px solid #dcdcdc; + border-bottom: none; + border-top: none; +} + +.v-webkit .v-panel-content, .v-gecko .v-panel-content, .v-ie9 .v-panel-content { + border-top-color: rgba(0, 0, 0, 0.07); +} + +.v-panel-content > div { + background: #ffffff; + min-height: 100%; +} + +.v-ie6 .v-panel-content { + background: #ffffff; +} + +.blue .v-panel-deco { + border-color: #92a3ac; + background: #adc2cd; +} + +.v-panel-deco, .white .v-panel-deco { + height: 1px; + border-top: 1px solid #bebebe; + background: #e2e2e2; + overflow: hidden; +} + +.v-wekit .v-panel-deco, .v-gecko .v-panel-deco, .v-ie9 .v-panel-deco { + border-top-color: rgba(0, 0, 0, 0.1); + background: rgba(0, 0, 0, 0.08); +} + +.v-panel-caption .v-errorindicator { + height: 16px; + width: 13px; + background: url(common/icons/error.png) no-repeat 50%; + display: inline; + display: inline-block; + vertical-align: middle; +} + +.v-ie6 .v-panel-caption .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-panel-light .v-panel-caption-light, .v-panel-light .v-panel-nocaption-light { + border: none; +} + +.v-panel-light .v-panel-content-light { + border: none; +} + +.v-panel-content-light > div { + background: transparent; +} + +.v-ie6 .v-panel-content-light { + background: transparent; +} + +.v-panel-light .v-panel-deco-light { + height: 0; + border: none; +} + +.v-popupview { + color: #1b699f; +} + +.v-popupview:hover { + color: #2483c4; +} + +.v-popupview-popup { + background: #ffffff; + padding: 3px; +} + +.v-progressindicator-wrapper { + background: #dfe2e4 url(progressindicator/img/base.gif) repeat-x; + border: 1px solid #bfbfbf; +} + +.v-disabled .v-progressindicator-wrapper { + background-image: url(progressindicator/img/disabled.gif); +} + +.v-progressindicator-indicator { + background: #f7f9f9 url(progressindicator/img/progress.png); +} + +.v-filterselect { + height: 24px; + background-repeat: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -450px; + padding-left: 2px; +} + +.v-ie6 .v-filterselect { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -475px; +} + +.v-app .v-filterselect-input, .v-window .v-filterselect-input, .v-popupview-popup .v-filterselect-input { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -499px; + border: none; + height: 16px; +} + +.v-app input.v-filterselect-input, .v-window input.v-filterselect-input, .v-popupview-popup input.v-filterselect-input { + padding: 4px 0 4px 2px; +} + +.v-filterselect-prompt .v-filterselect-input { + font-style: normal; +} + +.v-filterselect-input:focus { + outline: none; +} + +.v-filterselect-focus { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -524px; +} + +.v-ie6 .v-filterselect-focus { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -549px; +} + +.v-filterselect-focus .v-filterselect-input { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -573px; +} + +.v-filterselect-button { + overflow: hidden; + width: 25px; + height: 24px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -597px; + cursor: default; +} + +.v-filterselect-button:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -622px; +} + +.v-filterselect-button:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -646px; +} + +.v-filterselect-focus .v-filterselect-button { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -670px; +} + +.v-filterselect-focus .v-filterselect-button:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -694px; +} + +.v-filterselect-focus .v-filterselect-button:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -718px; +} + +.v-disabled .v-filterselect-button:hover, .v-readonly .v-filterselect-button:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -742px; +} + +.v-filterselect-suggestpopup { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; +} + +.v-filterselect-suggestmenu { + margin: 4px 0; +} + +.v-filterselect-suggestmenu .gwt-MenuItem { + padding: 1px 8px; + height: 16px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + cursor: default; +} + +.v-ff .v-filterselect-suggestmenu .gwt-MenuItem { + height: 18px; +} + +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + margin-right: 3px; +} + +.v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -766px; + color: #ffffff; + text-shadow: #3b5a7a 0 1px 0; +} + +.v-filterselect-nextpage, .v-filterselect-nextpage-off, .v-filterselect-prevpage-off, .v-filterselect-prevpage { + height: 11px; + width: 100%; + background: transparent; + margin-bottom: -4px; +} + +.v-filterselect-nextpage, .v-filterselect-nextpage-off { + margin: -4px 0 0; +} + +.v-filterselect-nextpage:hover { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -786px; +} + +.v-filterselect-prevpage:hover { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -797px; +} + +.v-filterselect-nextpage:active { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -808px; +} + +.v-filterselect-prevpage:active { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -819px; +} + +.v-filterselect-nextpage-off span, .v-filterselect-prevpage-off span { + display: none; +} + +.v-filterselect-nextpage span, .v-filterselect-prevpage span { + display: block; + height: 11px; + width: 100%; + overflow: hidden; + text-indent: -99999px; + background: transparent no-repeat center 3px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -830px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} + +.v-filterselect-prevpage span { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -841px; +} + +.v-filterselect-nextpage:hover span { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -852px; +} + +.v-filterselect-prevpage:hover span { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -863px; +} + +.v-filterselect-status { + text-shadow: #e9eaeb 0 1px 0; + font-size: 11px; + line-height: normal; + width: 100%; + padding: 3px 0; + height: 11px; + overflow: hidden; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -874px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} + +.v-ie .v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: transparent url(common/img/sel-bg.png) repeat-x; +} + +.v-ie .v-filterselect-nextpage:hover { + background: transparent url(select/img/page-down-hover.png) repeat-x; +} + +.v-ie .v-filterselect-prevpage:hover { + background: transparent url(select/img/page-up-hover.png) repeat-x; +} + +.v-ie .v-filterselect-prevpage span { + background: transparent url(select/img/arrow-up.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-nextpage span { + background: transparent url(select/img/arrow-down.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-prevpage:hover span { + background: transparent url(select/img/arrow-up-hover.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-nextpage:hover span { + background: transparent url(select/img/arrow-down-hover.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-status { + background: transparent url(select/img/status-bg.png) repeat-x; +} + +.v-filterselect .v-icon { + width: 16px; + position: relative; +} + +.v-filterselect .v-icon + .v-filterselect-input { + margin-left: -16px; + padding-left: 18px; +} + +.black .v-filterselect { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -310px; +} + +.v-ie6 .black .v-filterselect { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -334px; +} + +.v-app .black .v-filterselect-input, .v-window .black .v-filterselect-input, .v-window-black .v-filterselect-input, .v-popupview-popup .black .v-filterselect-input { + color: #c9ccce; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -358px; +} + +.black .v-filterselect-focus { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -382px; +} + +.v-ie6 .black .v-filterselect-focus { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -406px; +} + +.black .v-filterselect-focus .v-filterselect-input { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -430px; +} + +.black .v-filterselect-button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -454px; +} + +.black .v-filterselect-button:hover { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -478px; +} + +.black .v-filterselect-button:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -502px; +} + +.black .v-filterselect-focus .v-filterselect-button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -526px; +} + +.black .v-filterselect-focus .v-filterselect-button:hover { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -550px; +} + +.black .v-filterselect-focus .v-filterselect-button:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -574px; +} + +.black .v-disabled .v-filterselect-button:hover, .black .v-readonly .v-filterselect-button:hover { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -598px; +} + +.black .v-filterselect-prompt .v-filterselect-input { + color: #5f6366; +} + +.black .v-select select, .black .v-select-twincol select { + border-color: #38393a; + border-top-color: #2c2d2e; + border-bottom-color: #3e3f3f; + background: #151717; + color: #c9ccce; +} + +.v-ie6 .v-select-twincol-buttons .v-button { + padding-left: 12px; + padding-right: 12px; +} + +.v-ie6 .v-filterselect.v-readonly, .v-ie6 .v-filterselect .v-filterselect-input-readonly { + background: transparent; +} + +.v-slider { + border-top: 1px solid #9a9c9e; + border-bottom: 1px solid #bdbfc1; + margin: 4px 0; +} + +.v-slider-base { + height: 1px; + background: #e0e2e2; + border-top: 1px solid #adb0b1; + border-left: 1px solid #a0a3a6; + border-right: 1px solid #a0a3a6; +} + +.v-slider-handle { + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -891px; + width: 10px; + height: 10px; + margin-top: -5px; +} + +.v-slider-handle-active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -901px; +} + +.v-slider-vertical { + width: 2px; + margin: 0 5px; + border: none; + border-left: 1px solid #9a9c9e; + border-right: 1px solid #bdbfc1; +} + +.v-slider-vertical .v-slider-base { + width: 2px; + border-left: 1px solid #adb0b1; + border-right: none; + border-top: 1px solid #adb0b1; + border-bottom: 1px solid #adb0b1; +} + +.v-slider-vertical .v-slider-handle { + width: 10px; + height: 10px; + margin-left: -5px; +} + +.v-splitpanel-hsplitter, .v-splitpanel-hsplitter-locked { + width: 7px; + background-repeat: repeat-y; + background-image: url(common/img/horizontal-sprites.png); + background-position: -0px top; +} + +.v-splitpanel-hsplitter div { + width: 7px; + height: 100%; + background: transparent; + background-repeat: no-repeat; + background-position: 50%; + background-image: url(common/img/horizontal-sprites.png); + background-position: -7px center; +} + +.v-splitpanel-vsplitter, .v-splitpanel-vsplitter-locked { + height: 7px; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -911px; +} + +.v-splitpanel-vsplitter div { + height: 7px; + background: transparent; + background-repeat: no-repeat; + background-position: 50%; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -918px; +} + +.blue .v-splitpanel-hsplitter-small, .blue .v-splitpanel-hsplitter-small-locked { + background: #7c8a91; +} + +.black .v-splitpanel-hsplitter-small, .black .v-splitpanel-hsplitter-small-locked { + background: #4e5253; +} + +.v-splitpanel-hsplitter-small, .v-splitpanel-hsplitter-small-locked, .white .v-splitpanel-hsplitter-small, .white .v-splitpanel-hsplitter-small-locked { + width: 1px; + background: #949698; +} + +.v-splitpanel-vsplitter-small, .v-splitpanel-vsplitter-small-locked, .white .v-splitpanel-vsplitter-small, .white .v-splitpanel-vsplitter-small-locked { + height: 1px; + background: #949698; +} + +.v-splitpanel-hsplitter-small div { + width: 5px; + margin-left: -2px; + background: transparent; +} + +.v-splitpanel-vsplitter-small div { + height: 5px; + margin-top: -2px; + background: transparent; +} + +.blue .v-table-header-wrap { + border-color: #92a2aa; +} + +.blue .v-table-body { + border-color: #92a2aa; + border-top-color: #c2c3c4; +} + +.v-table-header-wrap, .white .v-table-header-wrap, .v-table-footer-wrap, .white .v-table-footer-wrap, .v-table-header-drag { + border-color: #c2c3c4; + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -925px; + height: 20px; + text-transform: uppercase; + font-size: 10px; + font-weight: bold; + color: #222222; + text-shadow: #f3f5f8 0 1px 0; + line-height: normal; +} + +.v-ie6 .v-table, .v-ie6 .v-table-header-wrap, .v-ie6 .v-table-footer-wrap, .v-ie6 .v-table-column-selector { + position: relative; +} + +.v-ie6 .v-table.v-disabled, .v-ie7 .v-table.v-disabled { + position: relative; +} + +.v-table-footer-wrap, .white .v-table-footer-wrap { + text-transform: none; + font-size: 12px; + font-weight: normal; +} + +.v-table-footer td, .white .v-table-footer td { + border-color: #c2c3c4; +} + +.v-table-footer-container { + padding-right: 7px; +} + +.v-table-header, .v-table-footer, .v-table-footer table { + height: 20px; +} + +.v-table-caption-container, .v-table-header-drag { + padding-top: 4px; + padding-right: 4px; +} + +.v-table-caption-container .v-icon, .v-table-header-drag .v-icon { + height: 16px; + margin: -4px 3px 0 0; + vertical-align: middle; +} + +.v-ie .v-table-caption-container .v-icon, .v-ie .v-table-header-drag .v-icon { + margin-top: -3px; +} + +.v-table-resizer { + height: 20px; + width: 2px; + background: transparent; + border-right: 1px solid #c2c3c4; +} + +.v-table-sort-indicator { + background: transparent; + width: 0px; + height: 20px; +} + +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent no-repeat right 7px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -945px; + width: 16px; +} + +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent no-repeat right 7px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -965px; + width: 16px; +} + +.v-table-body, .white .v-table-body { + border-color: #c2c3c4; + background: #ffffff; +} + +.v-table-cell-content { + padding-top: 0; + border-right-color: #d3d4d5; + vertical-align: top; +} + +.v-table-cell-wrapper { + padding-top: 3px; + padding-bottom: 3px; +} + +.v-table-row-odd { + background: #eff0f1; +} + +.v-table-generated-row { + background: #dcdee0; + text-transform: uppercase; + font-size: 10px; + font-weight: bold; + color: #222222; + text-shadow: #f3f5f8 0 1px 0; + line-height: normal; +} + +.v-table-generated-row .v-table-cell-content { + padding-top: 1px; + padding-bottom: 2px; +} + +.v-table-cell-content:last-child { + border-right-color: transparent; +} + +.v-table .v-selected, .black .v-table .v-selected { + background: #4d749f url(common/img/sel-bg.png) repeat-x; + color: #ffffff; + text-shadow: #3b5a7a 0 1px 0; +} + +.v-table .v-selected .v-table-cell-content { + border-right-color: #466c90; +} + +.v-table-column-selector { + width: 16px; + height: 20px; + margin-top: -20px; + background: transparent no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -985px; +} + +.v-table-column-selector:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1005px; +} + +.v-table-focus-slot-left { + border-left: 1px solid #222222; + margin-bottom: -20px; + width: auto; +} + +.v-table-focus-slot-right { + border-right-color: #222222; + margin-right: 0; +} + +.v-table-header-drag { + padding-left: 6px; + height: 16px; +} + +.v-table-header-drag img { + height: 16px; + margin: -3px 3px 0 0; +} + +.v-table-scrollposition { + width: auto; + background: transparent; + border: none; +} + +.v-table-scrollposition span { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1025px; + border: 1px solid #939494; + border: none; + border-radius-bottomleft: 4px; + border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + height: 13px; + padding: 4px 30px; + white-space: nowrap; + color: #222222; + text-shadow: #ffffff 0 1px 0; + position: relative; + top: 1px; + -webkit-box-shadow: rgba(0, 0, 0, 0.5) 0 1px 2px; + -moz-box-shadow: rgba(0, 0, 0, 0.5) 0 1px 2px; +} + +.v-table-borderless .v-table-scrollposition span { + top: 0; +} + +.v-contextmenu .v-on, .v-contextmenu .v-off { + display: inline-block; + zoom: 1; + background: transparent no-repeat 0 4px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1047px; + padding-left: 12px; + padding-right: 4px; +} + +.v-contextmenu .v-off { + background-image: none; + color: #666666; +} + +.v-contextmenu .gwt-MenuItem-selected .v-on { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1061px; +} + +.v-table-strong .v-table-header-wrap, .v-table-strong .v-table-header-drag { + border-color: #2b3033; + border-top-color: #2b3033; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1076px; + color: #e7e9ea; + text-shadow: #000000 0 -1px 0; +} + +.v-table-strong .v-table-body { + border-top-color: #2b3033; +} + +.v-table-strong .v-table-resizer { + border-right-color: #1c1f21; +} + +.v-table-strong .v-table-header-cell-asc .v-table-sort-indicator { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1096px; +} + +.v-table-strong .v-table-header-cell-desc .v-table-sort-indicator { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1115px; +} + +.v-table-strong .v-table-column-selector { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1134px; +} + +.v-table-strong .v-table-column-selector:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1154px; +} + +.v-table-strong .v-table-focus-slot-left, .v-table-strong .v-table-focus-slot-right { + border-color: #9ca1a5; +} + +.black .v-table-header-wrap, .black .v-table-header-drag { + border-color: #252729; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -622px; + color: #e7eaee; + text-shadow: #000000 0 -1px 0; +} + +.black .v-table-resizer { + border-right-color: #252729; +} + +.black .v-table-header-cell-asc .v-table-sort-indicator { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: right -642px; +} + +.black .v-table-header-cell-desc .v-table-sort-indicator { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: right -661px; +} + +.black .v-table-column-selector { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -680px; +} + +.black .v-table-column-selector:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -700px; +} + +.black .v-table-focus-slot-left, .black .v-table-focus-slot-right { + border-color: #9ca1a5; +} + +.black .v-table-body { + border-color: #252729; + background: transparent; +} + +.black .v-table-cell-content { + border-right-color: #252729; + border-bottom: 1px solid #252729; +} + +.black .v-table-cell-wrapper { + padding-bottom: 2px; +} + +.black .v-table-row-odd { + background: transparent; +} + +.black .v-table .v-selected .v-table-cell-content { + border-bottom: 1px solid #4d749f; +} + +.v-table-borderless .v-table-header-wrap, .v-table-borderless .v-table-body { + border: none; +} + +.v-tabsheet-tabitemcell, .v-tabsheet-spacertd { + height: 32px; +} + +.v-tabsheet-tabitemcell { + background: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1174px; + padding-left: 3px; +} + +.v-tabsheet-tabitemcell-first { + padding-left: 10px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1206px; +} + +.v-tabsheet-tabitem, .v-tabsheet-spacertd div { + border: none; + height: 32px; + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1238px; + padding: 0; + color: #222222; + text-shadow: #ffffff 0 1px 0; +} + +.v-tabsheet-tabitem .v-caption { + border: none; + height: 23px; + background: no-repeat right top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1270px; + padding: 9px 8px 0 6px; +} + +.v-tabsheet-tabitem .v-caption-closable { + padding-right: 0; + padding-left: 17px; +} + +.v-tabsheet-tabitem .v-captiontext { + height: 16px; + line-height: 16px; +} + +.v-tabsheet-caption-close { + float: right; + width: 19px; + height: 18px; + margin: -1px -1px 0; + padding-left: 2px; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1302px; + cursor: default; + text-indent: -999px; + overflow: hidden; + font-size: 14px; + font-weight: normal; +} + +.v-ff .v-tabsheet-caption-close, .v-ie7 .v-tabsheet-caption-close { + margin-top: -17px; +} + +.v-ie6 .v-tabsheet-caption-close { + float: none; +} + +.v-tabsheet-caption-close:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1320px; +} + +.v-tabsheet-caption-close:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1338px; +} + +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1356px; +} + +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1374px; +} + +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1392px; +} + +.v-tabsheet-tabitemcell-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1410px; +} + +.v-tabsheet-tabitemcell-selected-first { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1442px; +} + +.v-tabsheet-tabitem-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1474px; + color: #232930; +} + +.v-tabsheet-tabitem-selected .v-caption { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1506px; +} + +.v-tabsheet-spacertd div { + margin-right: 4px; +} + +.v-tabsheet-spacertd { + background: transparent no-repeat right top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1538px; +} + +.blue .v-tabsheet-content { + border-color: #a8bcc5; +} + +.v-tabsheet-content, .white .v-tabsheet-content { + border: 1px solid #dcdcdc; + border-bottom: none; + border-top: none; + color: #222222; + text-shadow: none; +} + +.v-tabsheet-tabsheetpanel { + background: #ffffff; +} + +.v-sa .v-tabsheet-content, .v-ff3 .v-tabsheet-content { + border-color: rgba(0, 0, 0, 0.1); +} + +.blue .v-tabsheet-deco { + border-color: #92a3ac; + background: #adc2cd; +} + +.v-tabsheet-deco, .white .v-tabsheet-deco { + height: 1px; + border-top: 1px solid #bebebe; + background: #e2e2e2; + overflow: hidden; +} + +.v-sa .v-tabsheet-deco, .v-ff3 .v-tabsheet-deco { + border-top-color: rgba(0, 0, 0, 0.1); + background: rgba(0, 0, 0, 0.08); +} + +.v-tabsheet-tabs .v-icon, .v-tabsheet-tabs .v-captiontext, .v-tabsheet-tabs .v-errorindicator { + display: inline; + float: none; +} + +.v-sa .v-tabsheet-tabs .v-captiontext { + display: inline-block; +} + +.v-tabsheet-tabs .v-icon { + width: 16px !important; + height: 16px !important; +} + +.v-tabsheet-tabs .v-errorindicator { + display: inline-block; + width: 13px; + height: 16px; + background: transparent url(common/icons/error.png) no-repeat 50%; +} + +.v-ff2 .v-tabsheet-tabs .v-icon, .v-ff2 .v-tabsheet-tabs .v-errorindicator { + display: -moz-inline-stack; +} + +.v-ie6 .v-tabsheet-tabs .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-ie .v-tabsheet-tabs .v-errorindicator { + zoom: 1; + display: inline; +} + +.v-ie8 .v-tabsheet-tabs .v-errorindicator, .v-ie9 .v-tabsheet-tabs .v-errorindicator { + display: inline-block; +} + +.v-tabsheet-scroller { + height: 31px; + margin-top: -31px; + padding: 0 3px 0 4px; + border-right: 1px solid #c2c2c2; + border-left: 1px solid #cfcfcf; + position: relative; + float: right; + background: transparent url(tabsheet/img/framed/tab-bg.png) repeat-x left -1px; + width: 36px; +} + +.v-tabsheet-scroller button { + margin-top: 7px; +} + +.v-tabsheet-scrollerPrev, .v-tabsheet-scrollerNext, .v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerNext-disabled { + border: none; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1570px; + width: 18px; + height: 17px; + overflow: hidden; +} + +.v-tabsheet-scroller button::-moz-focus-inner { + border: none; +} + +.v-tabsheet-scrollerNext { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1587px; +} + +.v-tabsheet-scrollerPrev:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1604px; +} + +.v-tabsheet-scrollerNext:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1621px; +} + +.v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerPrev-disabled:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1638px; + opacity: 1; + filter: none; +} + +.v-tabsheet-scrollerNext-disabled, .v-tabsheet-scrollerNext-disabled:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1655px; + opacity: 1; + filter: none; +} + +.v-tabsheet-borderless .v-tabsheet-tabitemcell-first { + padding-left: 7px; + background: url(tabsheet/img/framed/tab-first-left.png) no-repeat -3px 0; +} + +.v-tabsheet-borderless .v-tabsheet-tabitemcell-selected-first { + background: url(tabsheet/img/framed/tab-first-left-sel.png) no-repeat -3px 0; +} + +.v-tabsheet-borderless .v-tabsheet-spacertd div { + margin-right: 0; +} + +.v-tabsheet-borderless .v-tabsheet-spacertd { + background: transparent; +} + +.v-tabsheet-borderless .v-tabsheet-content { + border: none; +} + +.v-tabsheet-borderless .v-tabsheet-deco { + height: 0; + border-top: none; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, .blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, .blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + border-color: #7c8a91; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + color: #7c8a91; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #bcd3de; + background: #778d98; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #4f6874; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, .white .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div { + border-bottom: 1px solid #bfbfbf; + height: auto; + background: transparent; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell, .v-tabsheet-tabs-minimal .v-tabsheet-spacertd { + height: auto; + background: transparent; + padding-left: 0; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem, .white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem { + border: none; + border-bottom: 1px solid #bfbfbf; + color: #4d748f; + padding: 0; + height: auto; + background: transparent; + text-shadow: none; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption { + padding: 5px 16px; + height: auto; + background: transparent; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell-selected { + background: transparent; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected, .white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + background: transparent; + border: 1px solid #bfbfbf; + border-bottom: none; + color: #222222; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption { + background: transparent; + padding: 4px 15px 6px 15px; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption-closable, .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption-closable { + padding-right: 6px; +} + +.v-tabsheet-content-minimal, .white .v-tabsheet-content-minimal { + border: none; +} + +.v-tabsheet-content-minimal .v-tabsheet-tabsheetpanel { + background: transparent; +} + +.v-tabsheet-deco-minimal, .white .v-tabsheet-deco-minimal { + height: 0; + border: none; +} + +.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller { + margin-top: -20px; + height: 17px; + padding: 0; + border: none; + background: transparent; +} + +.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller button { + margin-top: 0; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close, .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + text-indent: 0; + background: transparent; + margin-left: 3px; + margin-right: -3px; + padding: 0; + color: #999999; + width: 14px; + height: 14px; + line-height: 14px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + margin-top: 1px; +} + +.v-ff .v-tabsheet-tabs-minimal .v-tabsheet-caption-close, .v-ie7 .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + margin-top: -15px; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, .white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #ffffff; + background: #aaaaaa; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active, .white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #777777; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, .black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, .black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + border-color: #3e4044; + color: #6a7f89; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + color: #c9ccce; +} + +.black .v-tabsheet-content-minimal, .black .v-tabsheet-content-bar { + color: #c9ccce; + text-shadow: #000000 0 0 1px; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + color: #72787c; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #1d2021; + background: #4d5154; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #626669; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell, .v-tabsheet-tabs-bar .v-tabsheet-spacertd { + height: 20px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-spacertd { + background: transparent; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1673px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-first { + padding-left: 6px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1693px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem, .v-tabsheet-tabs-bar .v-tabsheet-spacertd div { + height: 20px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1713px; + font-size: 11px; + margin: 0; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption { + height: 18px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1733px; + padding: 2px 12px 0 10px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption-closable, .v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption-closable { + padding-right: 8px; + padding-left: 14px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close, .v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover, .v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { + text-indent: 0; + background: transparent; + margin-left: 3px; + margin-right: -3px; + padding: 1px 0 0 1px; + color: #3c3c3c; + width: 13px; + height: 13px; + line-height: 12px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close { + margin-top: 1px; +} + +.v-ff .v-tabsheet-tabs-bar .v-tabsheet-caption-close, .v-ie7 .v-tabsheet-tabs-bar .v-tabsheet-caption-close { + margin-top: -14px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover { + background: #bfbfbf; + -webkit-box-shadow: 0 1px 0 #ffffff; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { + background: #a9a9a9; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + color: #404142; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { + background: #5e666e; + color: #ffffff; + text-shadow: 0 -1px 0 #222222; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { + background: #404142; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1753px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected-first { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1773px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1793px; + color: #232930; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1813px; +} + +.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller { + margin-top: -20px; + height: 19px; + border-right: none; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1833px; +} + +.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller button { + margin-top: 1px; +} + +.v-tabsheet-content-bar, .white .v-tabsheet-content-bar { + border: none; +} + +.v-tabsheet-content-bar .v-tabsheet-tabsheetpanel { + background: transparent; +} + +.v-tabsheet-deco-bar, .white .v-tabsheet-deco-bar { + height: 0; + border: none; +} + +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem .v-tabsheet-caption-close, .v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { + visibility: hidden; +} + +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected .v-tabsheet-caption-close, .v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected:hover .v-tabsheet-caption-close { + visibility: visible; +} + +.v-tabsheet-tabs-hover-closable .v-tabsheet-caption-close { + visibility: hidden; +} + +.v-tabsheet-tabs-hover-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { + visibility: visible; +} + +.blue .v-textfield, .blue .v-textarea { + border-color: #92a2aa; + border-top-color: #7c8a90; + border-bottom-color: #a1b3bc; +} + +.v-textfield, .v-textarea, .white .v-textfield, .white .v-textarea { + border: 1px solid #bcbdbe; + border-top-color: #a2a3a4; + border-bottom-color: #d2d3d4; + background: #ffffff; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1853px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + margin: 0; + height: 15px; + line-height: normal; +} + +.v-textarea, .white .v-textarea { + background-image: none; + height: auto; +} + +.v-app input.v-textfield, .v-window input.v-textfield, .v-app textarea.v-textarea, .v-window textarea.v-textarea { + padding: 3px 3px 4px; +} + +.v-app .v-textfield-focus, .v-window .v-textfield-focus, .v-popupview-popup .v-textfield-focus, .v-app .v-textarea-focus, .v-window .v-textarea-focus, .v-popupview-popup .v-textarea-focus { + border-color: #5b97d0; + border-top-color: #4f83b4; + border-bottom-color: #5ca0df; + outline: none; + background-color: #ffffff; +} + +input.v-textfield-prompt, textarea.v-textarea-prompt { + font-style: normal; + color: #999999; +} + +.v-app input.v-textfield-small { + font-size: 11px; + line-height: normal; + height: auto; + padding: 2px; +} + +.v-app textarea.v-textarea-small { + font-size: 11px; +} + +.v-table input.v-textfield { + padding: 1px 2px; + height: auto; + line-height: normal; +} + +.v-table-cell-wrapper > input.v-textfield { + margin-top: -2px; + margin-bottom: -2px; +} + +.v-ie6 .v-table-cell-wrapper input.v-textfield { + margin-top: -2px; + margin-bottom: -2px; +} + +.v-ie6 .v-table-cell-wrapper div input.v-textfield { + margin-top: 0; + margin-bottom: 0; +} + +.black .v-textfield, .black .v-textarea { + border-color: #38393a; + border-top-color: #2c2d2e; + border-bottom-color: #3e3f3f; + background: #151717; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -720px; + color: #c9ccce; + text-shadow: #000000 0 0 1px; +} + +.black .v-textarea { + background-image: none; +} + +.v-app .black .v-textfield-focus, .v-window-black .v-textfield-focus, .v-window .black .v-textfield-focus, .v-popupview-popup .black .v-textfield-focus, .v-app .black .v-textarea-focus, .v-window-black .v-textarea-focus, .v-window .black .v-textarea-focus, .v-popupview-popup .black .v-textarea-focus { + border-color: #4b7192; + border-top-color: #3b5a75; + border-bottom-color: #507596; + background-color: #151717; +} + +.black input.v-textfield-prompt { + color: #5f6366; +} + +input.v-textfield-readonly, .black input.v-textfield-readonly, textarea.v-textarea-readonly, .black textarea.v-textarea-readonly { + border: none; + background: transparent; +} + +.v-tree-node { + background: transparent url(tree/img/arrows.png) no-repeat 6px -10px; +} + +.v-ie6 .v-tree-node { + background-image: url(tree/img/arrows-ie6.png); + background-repeat: no-repeat; +} + +.v-ie6 div.v-tree-node-leaf { + background: transparent; +} + +.v-tree-node-expanded { + background-position: -7px 5px; +} + +.v-tree-node-caption { + margin-left: 16px; + padding-bottom: 1px; +} + +.v-tree-node span { + padding: 1px 2px; + display: inline-block; +} + +.v-tree-node-selected span { + background: #4d749f repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1876px; + color: #ffffff; + padding: 1px 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + text-shadow: #2b425a 0 1px 0; + display: inline-block; +} + +.v-tree-node-children { + padding-left: 16px; +} + +.v-ie6 .v-tree-node-ie6compatnode { + width: 14px; + height: 10px; + padding: 1px; +} + +.v-tree-node-caption.v-tree-node-focused span { + padding-left: 1px; + padding-top: 0px; + padding-bottom: 0px; +} + +.v-tree-node-focused span { + border: 1px dotted black; +} + +.v-ie6 .v-tree-node-ie6compatnode.v-tree-node-focused { + padding-left: 0px; +} + +.v-tree .v-tree-node-drag-top { + background-position: 6px -11px; +} + +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: -7px 4px; +} + +.v-tree-connectors .v-tree-node-drag-top, .v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { + background-position: 2px -53px; +} + +.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { + background-position: 2px 50%; +} + +.v-window { + background: transparent; +} + +.v-window-wrap { + border: 1px solid #808386; +} + +.v-sa .v-window-wrap, .v-ff3 .v-window-wrap, .v-op .v-window-wrap { + border-color: rgba(0, 0, 0, 0.2); +} + +.v-ff2 .v-window-wrap, .v-ie6 .v-window-wrap { + border: none; +} + +.v-ff2 .v-window-outerheader, .v-ie6 .v-window-outerheader { + border: 1px solid #808386; + border-bottom: none; +} + +.v-ff2 .v-window-contents, .v-ie6 .v-window-contents { + border: 1px solid #808386; + border-top: none; + border-bottom: none; +} + +.v-ff2 .v-window-footer, .v-ie6 .v-window-footer { + border: 1px solid #808386; + border-top: none; +} + +.v-window-outerheader { + padding: 12px 32px 0 14px; + height: 25px; + background: black repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1896px; +} + +.v-window-header { + font-weight: bold; + font-size: 12px; + line-height: normal; + color: #ffffff; + text-shadow: #000000 0 -1px 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -ms-text-overflow: ellipsis; +} + +.v-window-error .v-window-header { + padding-left: 13px; + background: transparent url(common/icons/error.png) no-repeat 0 50%; +} + +.v-ie6 .v-window-error .v-window-header { + background-image: url(common/icons/error-ie6.png); +} + +.v-window-resizebox { + width: 15px; + height: 15px; + cursor: se-resize; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1933px; +} + +.v-window-footer { + background-color: white; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1948px; + height: 15px; +} + +.v-window-closebox { + top: 12px; + right: 10px; + width: 15px; + height: 16px; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1963px; +} + +.v-window-closebox:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1979px; +} + +.v-window-closebox:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1995px; +} + +.v-window-contents { + background: #ffffff; +} + +.v-window-modalitycurtain { + background: #56595b; +} + +.v-window-light .v-window-outerheader { + background: transparent; + padding: 15px 32px 0 18px; + height: 23px; +} + +.v-window-light .v-window-header { + font-size: 16px; + color: #292e34; + text-shadow: none; +} + +.v-window-light .v-window-resizebox { + width: 12px; + height: 12px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2011px; +} + +.v-window-light .v-window-footer { + background: transparent; + height: 12px; +} + +.v-window-light .v-window-closebox { + right: 1px; + top: 17px; + width: 19px; + height: 15px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2023px; +} + +.v-window-light .v-window-closebox:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2038px; +} + +.v-window-light .v-window-closebox:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2053px; +} + +.v-window-light .v-window-contents { + background: transparent; +} + +.v-window-light .v-window-wrap2 { + background: #f7f7f8 repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2068px; +} + +.v-ie6 .v-window-light .v-window-wrap2 { + background-image: none; +} + +.v-window-black .v-window-wrap { + border-color: #2e3030; + border-radius: 8px; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + overflow: hidden; +} + +.v-sa .v-window-black .v-window-wrap, .v-ff3 .v-window-black .v-window-wrap, .v-op .v-window-black .v-window-wrap { + border-color: rgba(0, 0, 0, 0.8); +} + +.v-window-black .v-window-wrap2 { + background-color: #1d2021; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; +} + +.v-sa .v-window-black .v-window-wrap2, .v-ff3 .v-window-black .v-window-wrap2, .v-op .v-window-black .v-window-wrap2 { + background-color: rgba(29, 32, 33, 0.9); +} + +.v-window-black .v-window-outerheader { + height: auto; + padding: 7px 14px; + height: 15px; + background: transparent repeat-x; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -743px; + text-align: center; + -moz-border-radius-topright: 7px; + -moz-border-radius-topleft: 7px; + -webkit-border-top-right-radius: 7px; + -webkit-border-top-left-radius: 7px; + overflow: hidden; + border: none; +} + +.v-window-black .v-window-header { + font-size: 12px; + font-weight: normal; + color: #dddfe1; +} + +.v-window-black .v-window-closebox { + top: 8px; +} + +.v-window-black .v-window-footer { + background: transparent; + border: none; + height: 14px; +} + +.v-window-black .v-window-resizebox { + background: transparent no-repeat; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -772px; + width: 14px; + height: 14px; +} + +.v-ie6 .v-window-black .v-window-resizebox { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -786px; +} + +.v-ie6 .v-window-black .v-window-contents { + background: transparent url(window/img/black/content-bg-ie6.png) repeat-x; +} + +.v-window-black .v-window-contents { + border: none; + background: transparent repeat-x; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -800px; +} \ No newline at end of file diff --git a/tests/sass/resources/basic/selectors.css b/tests/sass/resources/basic/selectors.css new file mode 100644 index 0000000000..50c5fb7cc5 --- /dev/null +++ b/tests/sass/resources/basic/selectors.css @@ -0,0 +1,103 @@ +.foo { + color: red; +} + +.foo-bar { + color: red; +} + +.foo_bar { + color: red; +} + +.foo .bar { + color: red; +} + +.foo .bar .baz .fee .roo { + color: red; +} + +.foo.bar.baz.fee.roo { + color: red; +} + +.foo.bar .baz.fee.roo .dar { + color: red; +} + +.foo > .bar { + color: red; +} + +#foo { + color: red; +} + +#foo .bar { + color: red; +} + +.foo #bar { + color: red; +} + +#foo.bar { + color: red; +} + +#foo, #bar, .baz, .roo .dar { + color: red; +} + +#foo a, .foo pre img { + color: red; +} + +#foo a.bar { + color: red; +} + +a:link { + color: red; +} + +a.foo:visited, .bar { + color: red; +} + +.v-app input[type="text"] { + color: red; +} + +.foo + .bar { + color: red; +} + +h1 + .foo { + color: red; +} + +.foo * { + color: red; +} + +.foo * h1 { + color: red; +} + +h1 * .foo { + color: red; +} + +* .foo { + color: red; +} + +p::abc { + color: red; +} + +p:first { + color: red; +} \ No newline at end of file diff --git a/tests/sass/resources/css/control-directives.scss b/tests/sass/resources/css/control-directives.scss new file mode 100644 index 0000000000..0a6f1f7233 --- /dev/null +++ b/tests/sass/resources/css/control-directives.scss @@ -0,0 +1 @@ +Implement a sane test case. \ No newline at end of file diff --git a/tests/sass/resources/css/extends.css b/tests/sass/resources/css/extends.css new file mode 100644 index 0000000000..d1c903f166 --- /dev/null +++ b/tests/sass/resources/css/extends.css @@ -0,0 +1,13 @@ +.error, .badError { + border: 1px #f00; + background: #fdd; +} + +.error.intrusion, .badError.intrusion { + font-size: 1.3em; + font-weight: bold; +} + +.badError { + border-width: 3px; +} \ No newline at end of file diff --git a/tests/sass/resources/css/functions.css b/tests/sass/resources/css/functions.css new file mode 100644 index 0000000000..3757096667 --- /dev/null +++ b/tests/sass/resources/css/functions.css @@ -0,0 +1,14 @@ +.main { + margin: 2px; + border: 11px; + border: 10px; + border: 10px; + color: hsl(0, 0%, 30%); + color: hsl(25, 100%, 50%); + color: rgb(36, 0, 0); + color: rgb(240, 0, 0); + color: #200; + color: #240000; + color: #f00; + color: #f00000; +} diff --git a/tests/sass/resources/css/imports.css b/tests/sass/resources/css/imports.css new file mode 100644 index 0000000000..5b1001802a --- /dev/null +++ b/tests/sass/resources/css/imports.css @@ -0,0 +1,11 @@ +.caption { + border: 1px solid black; + background: #ff0000; + padding: 10px; + margin: 10px; +} + +.text { + font-weight: bold; + color: red; +} \ No newline at end of file diff --git a/tests/sass/resources/css/mixins.css b/tests/sass/resources/css/mixins.css new file mode 100644 index 0000000000..cd5c9b85aa --- /dev/null +++ b/tests/sass/resources/css/mixins.css @@ -0,0 +1,41 @@ +.main { + border: 1px solid black; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + font-family: arial; + font-size: 16px; + font-weight: bold; +} + +.footer { + border: 2px solid black; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; +} + +.header { + width: 100%; +} + +.main { + width: 100%; + height: 100%; +} + +.footer { + width: 100%; +} + +@media print { + .v-view { + overflow: visible; + } +} + +font-family: arial; + +font-size: 16px; + +font-weight: bold; \ No newline at end of file diff --git a/tests/sass/resources/css/nested-properties.css b/tests/sass/resources/css/nested-properties.css new file mode 100644 index 0000000000..79b21e632b --- /dev/null +++ b/tests/sass/resources/css/nested-properties.css @@ -0,0 +1,5 @@ +li { + font-family: serif; + font-weight: bold; + font-size: 1.2em; +} \ No newline at end of file diff --git a/tests/sass/resources/css/nesting.css b/tests/sass/resources/css/nesting.css new file mode 100644 index 0000000000..2400c73d43 --- /dev/null +++ b/tests/sass/resources/css/nesting.css @@ -0,0 +1,47 @@ +.top-bar { + color: red; +} + +.top-bar .alt { + color: blue; +} + +.menu { + background-color: red; +} + +.menu a { + color: blue; +} + +.caption { + padding: 10px; +} + +.caption .text, .caption .header { + color: green; +} + +.footer { + padding: 10px; +} + +.footer .left, .footer .right { + color: purple; +} + +.footer .left a, .footer .right a { + color: orange; +} + +.main { + color: red; +} + +.main .second.third { + color: blue; +} + +.main .second.third .fourth { + color: black; +} diff --git a/tests/sass/resources/css/parent-import.css b/tests/sass/resources/css/parent-import.css new file mode 100644 index 0000000000..f67d17f8b4 --- /dev/null +++ b/tests/sass/resources/css/parent-import.css @@ -0,0 +1,25 @@ +.content-navigation { + border-color: #3bbfce; + color: #0000ff; +} + +.border { + padding: 8px; + margin: 8px; + border-color: #3bbfce; +} + +.body { + background-image: url(../folder-test2/bg.png); + background: transparent url(../folder-test2/img/loading-indicator.gif); + background-image: url(http://abc/bg.png); + background-image: url(/abc/bg.png); +} + +.base { + color: red; +} + +.text { + font-weight: bold; +} \ No newline at end of file diff --git a/tests/sass/resources/css/parent-selector.css b/tests/sass/resources/css/parent-selector.css new file mode 100644 index 0000000000..9c7140e313 --- /dev/null +++ b/tests/sass/resources/css/parent-selector.css @@ -0,0 +1,24 @@ +a { + font-weight: bold; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +body.firefox a { + font-weight: normal; +} + +#main { + color: black; +} + +#main a { + font-weight: bold; +} + +#main a:hover { + color: red; +} \ No newline at end of file diff --git a/tests/sass/resources/css/variables.css b/tests/sass/resources/css/variables.css new file mode 100644 index 0000000000..67ca5fdb7a --- /dev/null +++ b/tests/sass/resources/css/variables.css @@ -0,0 +1,11 @@ +.content-navigation { + border-color: #3bbfce; + color: #0000ff; + font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; +} + +.border { + padding: 8px; + margin: 8px; + border-color: #3bbfce; +} \ No newline at end of file diff --git a/tests/sass/resources/scss/_partial-for-import.scss b/tests/sass/resources/scss/_partial-for-import.scss new file mode 100644 index 0000000000..32c3149a5b --- /dev/null +++ b/tests/sass/resources/scss/_partial-for-import.scss @@ -0,0 +1,9 @@ +$foo : red; + +.caption { + $side: right; + border: 1px solid black; + background: #ff0000; + padding: 10px; + margin: 10px; +} \ No newline at end of file diff --git a/tests/sass/resources/scss/control-directives.scss b/tests/sass/resources/scss/control-directives.scss new file mode 100644 index 0000000000..febd563f19 --- /dev/null +++ b/tests/sass/resources/scss/control-directives.scss @@ -0,0 +1,14 @@ +@for $i from 1 through 3 { + .item-#{$i} { width: 2em * $i; } +} + +@while $i > 0 { + .item-#{$i} { width: 2em * $i; } + $i: $i - 2; +} + +@each $animal in puma, sea-slug, egret, salamander { + .#{$animal}-icon { + background-image: url('/images/#{$animal}.png'); + } +} \ No newline at end of file diff --git a/tests/sass/resources/scss/extends.scss b/tests/sass/resources/scss/extends.scss new file mode 100644 index 0000000000..c9e0f85381 --- /dev/null +++ b/tests/sass/resources/scss/extends.scss @@ -0,0 +1,13 @@ +.error { + border: 1px #f00; + background: #fdd; +} +.error.intrusion { + font-size: 1.3em; + font-weight: bold; +} + +.badError { + @extend .error; + border-width: 3px; +} \ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test/parent-import.scss b/tests/sass/resources/scss/folder-test/parent-import.scss new file mode 100644 index 0000000000..b3f6c8000e --- /dev/null +++ b/tests/sass/resources/scss/folder-test/parent-import.scss @@ -0,0 +1,6 @@ +@import "../folder-test2/variables.scss"; +@import "../folder-test2/url"; +@import "../folder-test2/base-imported.scss"; +.text { + font-weight: bold; +} \ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/base-imported.scss b/tests/sass/resources/scss/folder-test2/base-imported.scss new file mode 100644 index 0000000000..17d801e4aa --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/base-imported.scss @@ -0,0 +1 @@ +@import "base.scss"; \ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/base.scss b/tests/sass/resources/scss/folder-test2/base.scss new file mode 100644 index 0000000000..57ca0bb7a2 --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/base.scss @@ -0,0 +1,3 @@ +.base{ + color: red; +} \ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/url.scss b/tests/sass/resources/scss/folder-test2/url.scss new file mode 100644 index 0000000000..a4be967ad7 --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/url.scss @@ -0,0 +1,6 @@ +.body{ + background-image: url(bg.png); + background: transparent url(img/loading-indicator.gif); + background-image: url(http://abc/bg.png); + background-image: url(/abc/bg.png); +} \ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/variables.scss b/tests/sass/resources/scss/folder-test2/variables.scss new file mode 100644 index 0000000000..2d06d36650 --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/variables.scss @@ -0,0 +1,14 @@ +$blue: #3bbfce; +$margin: 8px; + +.content-navigation { + border-color: $blue; + $blue: #0000ff; + color: $blue; +} + +.border { + padding: $margin; + margin: $margin; + border-color: $blue; +} \ No newline at end of file diff --git a/tests/sass/resources/scss/functions.scss b/tests/sass/resources/scss/functions.scss new file mode 100644 index 0000000000..abf6f6187d --- /dev/null +++ b/tests/sass/resources/scss/functions.scss @@ -0,0 +1,16 @@ +.main { + margin: abs(-2px); + border: ceil(10.4px); + border: floor(10.4px); + border: round(10.4px); + color: lighten(hsl(0, 0%, 0%), 30%); + color: darken(hsl(25, 100%, 80%), 30%); + color: darken(rgb(136, 0, 0), 20%); + color: lighten(rgb(136, 0, 0), 20%); + color: darken(#880000, 20%); + color: darken(#800, 20%); + color: lighten(#880000, 20%); + color: lighten(#800, 20%); +} + + diff --git a/tests/sass/resources/scss/imports.scss b/tests/sass/resources/scss/imports.scss new file mode 100644 index 0000000000..4d53a120d2 --- /dev/null +++ b/tests/sass/resources/scss/imports.scss @@ -0,0 +1,6 @@ +@import "_partial-for-import"; + +.text { + font-weight: bold; + color: $foo; +} diff --git a/tests/sass/resources/scss/interpolation.scss b/tests/sass/resources/scss/interpolation.scss new file mode 100644 index 0000000000..5859a9838b --- /dev/null +++ b/tests/sass/resources/scss/interpolation.scss @@ -0,0 +1,3 @@ +$name: foo; +$attr: border; +p.#{$name}abc { abc#{$attr}-color: blue } \ No newline at end of file diff --git a/tests/sass/resources/scss/mixins.scss b/tests/sass/resources/scss/mixins.scss new file mode 100644 index 0000000000..f16c9a0e06 --- /dev/null +++ b/tests/sass/resources/scss/mixins.scss @@ -0,0 +1,44 @@ +//asfdasdf + +@mixin font-settings { + font-family: arial; + font-size: 16px; + font-weight: bold; +} + +@mixin rounded-borders($thickness, $radius : 3px) { + border: $thickness solid black; + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + border-radius: $radius; +} + +.main { + @include rounded-borders(1px); + @include font-settings; +} + +.footer { + @include rounded-borders(2px, 10px); +} + +@mixin layout { + .header { + width: 100%; + } + .main { + width: 100%; + height: 100%; + } + + .footer { + width: 100%; + } + @media print { + .v-view { + overflow: visible; + } + } + @include font-settings; +} +@include layout; \ No newline at end of file diff --git a/tests/sass/resources/scss/nested-properties.scss b/tests/sass/resources/scss/nested-properties.scss new file mode 100644 index 0000000000..e12a83aa2d --- /dev/null +++ b/tests/sass/resources/scss/nested-properties.scss @@ -0,0 +1,7 @@ +li { + font: { + family: serif;; + weight: bold; + size: 1.2em + } +} \ No newline at end of file diff --git a/tests/sass/resources/scss/nesting.scss b/tests/sass/resources/scss/nesting.scss new file mode 100644 index 0000000000..0336c9e86d --- /dev/null +++ b/tests/sass/resources/scss/nesting.scss @@ -0,0 +1,40 @@ +.top-bar { + color: red; + .alt { + color: blue; + } +} + +.menu { + background-color: red; + a { + color: blue; + } +} + +.caption { + padding: 10px; + .text, .header { + color: green; + } +} + +.footer { + padding: 10px; + .left, .right { + color: purple; + a { + color: orange; + } + } +} + +.main { + color: red; + .second.third { + color: blue; + .fourth { + color: black; + } + } +} \ No newline at end of file diff --git a/tests/sass/resources/scss/parent-selector.scss b/tests/sass/resources/scss/parent-selector.scss new file mode 100644 index 0000000000..3d0f694801 --- /dev/null +++ b/tests/sass/resources/scss/parent-selector.scss @@ -0,0 +1,14 @@ +a { + font-weight: bold; + text-decoration: none; + &:hover { text-decoration: underline; } + body.firefox & { font-weight: normal; } +} + +#main { + color: black; + a { + font-weight: bold; + &:hover { color: red; } + } +} \ No newline at end of file diff --git a/tests/sass/resources/scss/reference-parent-selector.css b/tests/sass/resources/scss/reference-parent-selector.css new file mode 100644 index 0000000000..733c8fd42d --- /dev/null +++ b/tests/sass/resources/scss/reference-parent-selector.css @@ -0,0 +1,6 @@ +a { + color: #660000; + &:hover {color: #000000;} + &:visited {color:#660066;} + &:active {color: #ffffff;} +} \ No newline at end of file diff --git a/tests/sass/resources/scss/variables.scss b/tests/sass/resources/scss/variables.scss new file mode 100644 index 0000000000..2b39ef4a8d --- /dev/null +++ b/tests/sass/resources/scss/variables.scss @@ -0,0 +1,16 @@ +$blue: #3bbfce; +$margin: 8px; +$chameleon-font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; + +.content-navigation { + border-color: $blue; + $blue: #0000ff; + color: $blue; + font-family: $chameleon-font-family; +} + +.border { + padding: $margin; + margin: $margin; + border-color: $blue; +} \ No newline at end of file diff --git a/tests/sass/src/com/vaadin/sass/AllTests.java b/tests/sass/src/com/vaadin/sass/AllTests.java new file mode 100644 index 0000000000..574b1a4d93 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/AllTests.java @@ -0,0 +1,11 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ CssTestSuite.class, ScssTestSuite.class, VisitorTestSuite.class }) +public class AllTests { + +} diff --git a/tests/sass/src/com/vaadin/sass/CssTestSuite.java b/tests/sass/src/com/vaadin/sass/CssTestSuite.java new file mode 100644 index 0000000000..e15da68e0c --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/CssTestSuite.java @@ -0,0 +1,17 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import com.vaadin.sass.testcases.css.Comments; +import com.vaadin.sass.testcases.css.Media; +import com.vaadin.sass.testcases.css.Properties; +import com.vaadin.sass.testcases.css.Reindeer; +import com.vaadin.sass.testcases.css.Selectors; + +@RunWith(Suite.class) +@SuiteClasses({ Selectors.class, Properties.class, Reindeer.class, Media.class, + Comments.class }) +public class CssTestSuite { +} diff --git a/tests/sass/src/com/vaadin/sass/ScssTestSuite.java b/tests/sass/src/com/vaadin/sass/ScssTestSuite.java new file mode 100644 index 0000000000..9ab0a76597 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/ScssTestSuite.java @@ -0,0 +1,26 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import com.vaadin.sass.testcases.scss.ControlDirectives; +import com.vaadin.sass.testcases.scss.Extends; +import com.vaadin.sass.testcases.scss.Functions; +import com.vaadin.sass.testcases.scss.Imports; +import com.vaadin.sass.testcases.scss.Mixins; +import com.vaadin.sass.testcases.scss.NestedProperties; +import com.vaadin.sass.testcases.scss.Nesting; +import com.vaadin.sass.testcases.scss.ParentImports; +import com.vaadin.sass.testcases.scss.ParentSelector; +import com.vaadin.sass.testcases.scss.Variables; +import com.vaadin.sass.tree.ImportNodeTest; + +@RunWith(Suite.class) +@SuiteClasses({ ControlDirectives.class, Extends.class, Functions.class, + ImportNodeTest.class, Imports.class, Mixins.class, + NestedProperties.class, Nesting.class, ParentImports.class, + Variables.class, ParentSelector.class }) +public class ScssTestSuite { + +} diff --git a/tests/sass/src/com/vaadin/sass/TestBase.java b/tests/sass/src/com/vaadin/sass/TestBase.java new file mode 100644 index 0000000000..6947d24961 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/TestBase.java @@ -0,0 +1,84 @@ +package com.vaadin.sass; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.net.URISyntaxException; + +import org.w3c.css.sac.CSSException; + +public class TestBase { + + protected ScssStylesheet stylesheet; + protected String originalScss; + protected String parsedScss; + protected String comparisonCss; + + public ScssStylesheet getStyleSheet(String filename) + throws URISyntaxException, CSSException, IOException { + File file = getFile(filename); + stylesheet = ScssStylesheet.get(file); + return stylesheet; + } + + public File getFile(String filename) throws URISyntaxException, + CSSException, IOException { + return new File(getClass().getResource(filename).toURI()); + } + + public String getFileContent(String filename) throws IOException, + CSSException, URISyntaxException { + File file = getFile(filename); + return getFileContent(file); + } + + /** + * Read in the full content of a file into a string. + * + * @param file + * the file to be read + * @return a String with the content of the + * @throws IOException + * when file reading fails + */ + public String getFileContent(File file) throws IOException { + StringBuilder content = new StringBuilder(); + + FileReader fileReader = new FileReader(file); + BufferedReader bufferedReader = new BufferedReader(fileReader); + String line = null; + // Handle the first line separately to get the right amount of line + // separators in the loop + if ((line = bufferedReader.readLine()) != null) { + content.append(line); + } + // Handle the rest of the lines + while ((line = bufferedReader.readLine()) != null) { + content.append(System.getProperty("line.separator")); + content.append(line); + } + bufferedReader.close(); + return content.toString(); + } + + public boolean testParser(String file) throws CSSException, IOException, + URISyntaxException { + originalScss = getFileContent(file); + ScssStylesheet sheet = getStyleSheet(file); + parsedScss = sheet.toString(); + return parsedScss.equals(originalScss); + } + + public boolean testCompiler(String scss, String css) { + try { + comparisonCss = getFileContent(css); + ScssStylesheet sheet = getStyleSheet(scss); + sheet.compile(); + parsedScss = sheet.toString(); + } catch (Exception e) { + return false; + } + return parsedScss.equals(comparisonCss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java b/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java new file mode 100644 index 0000000000..46dfce6fe1 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java @@ -0,0 +1,14 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import com.vaadin.sass.testcases.visitor.MixinVisitorTest; +import com.vaadin.sass.testcases.visitor.NestedPropertiesVisitorTest; + +@RunWith(Suite.class) +@SuiteClasses({ NestedPropertiesVisitorTest.class, MixinVisitorTest.class }) +public class VisitorTestSuite { + +} diff --git a/tests/sass/src/com/vaadin/sass/parser/ParserTest.java b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java new file mode 100644 index 0000000000..db7754406d --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java @@ -0,0 +1,49 @@ +package com.vaadin.sass.parser; + +import java.io.IOException; +import java.io.StringReader; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.InputSource; +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; + +public class ParserTest { + + @Test + public void testParsePropertyValue() throws CSSException, IOException { + Parser parser = new Parser(); + + LexicalUnit value = parser.parsePropertyValue(new InputSource( + new StringReader("$margin/2;"))); + + Assert.assertEquals("margin", value.getStringValue()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, + value.getLexicalUnitType()); + value = value.getNextLexicalUnit(); + Assert.assertEquals(LexicalUnit.SAC_OPERATOR_SLASH, + value.getLexicalUnitType()); + value = value.getNextLexicalUnit(); + Assert.assertEquals(LexicalUnit.SAC_INTEGER, value.getLexicalUnitType()); + Assert.assertEquals(2, value.getIntegerValue()); + + } + + @Test + public void testCanIngoreSingleLineComment() { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + try { + parser.parseStyleSheet(new InputSource(new StringReader( + "//kjaljsföajsfalkj\n@12abcg;"))); + Assert.assertTrue(true); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + } +} \ No newline at end of file diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java new file mode 100644 index 0000000000..c0690418e2 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java @@ -0,0 +1,23 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Comments extends TestBase { + String css = "/basic/comments.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java new file mode 100644 index 0000000000..c80ebeac56 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java @@ -0,0 +1,23 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class EmptyBlock extends TestBase { + String css = "/basic/empty_block.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java new file mode 100644 index 0000000000..fd57f1c982 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java @@ -0,0 +1,33 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; + +public class Interpolation extends TestBase { + String scss = "/scss/interpolation.scss"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + + Assert.assertEquals(3, root.getChildren().size()); + BlockNode blockNodeWithInterpolation = (BlockNode) root.getChildren() + .get(2); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java new file mode 100644 index 0000000000..21ab421ce4 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Media extends TestBase { + + String css = "/basic/media.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java new file mode 100644 index 0000000000..e140a40a97 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Properties extends TestBase { + + String css = "/basic/properties.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java new file mode 100644 index 0000000000..9a82096026 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Reindeer extends TestBase { + + String css = "/basic/reindeer.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java new file mode 100644 index 0000000000..f8259e85c3 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Selectors extends TestBase { + + String css = "/basic/selectors.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java new file mode 100644 index 0000000000..d42199d1a6 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java @@ -0,0 +1,40 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; + +public class ControlDirectives extends TestBase { + + String scss = "/scss/control-directives.scss"; + String css = "/css/control-directives.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertNotNull(root); + Assert.fail("Implement assert nodes"); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java new file mode 100644 index 0000000000..fa0d323528 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java @@ -0,0 +1,40 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.ExtendNode; + +public class Extends extends TestBase { + String scss = "/scss/extends.scss"; + String css = "/css/extends.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + + Assert.assertTrue(root.getChildren().get(2).getChildren().get(0) instanceof ExtendNode); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java new file mode 100644 index 0000000000..d3085f675c --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java @@ -0,0 +1,42 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; + +public class Functions extends TestBase { + + String scss = "/scss/functions.scss"; + String css = "/css/functions.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(1, root.getChildren().size()); + BlockNode blockNode = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(12, blockNode.getChildren().size()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java new file mode 100644 index 0000000000..bcee04f46f --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java @@ -0,0 +1,42 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.ImportNode; + +public class Imports extends TestBase { + + String scss = "/scss/imports.scss"; + String css = "/css/imports.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + ImportNode importNode = (ImportNode) root.getChildren().get(0); + Assert.assertEquals("_partial-for-import", importNode.getUri()); + Assert.assertFalse(importNode.isPureCssImport()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java new file mode 100644 index 0000000000..a4ecf75a35 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java @@ -0,0 +1,103 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.MediaNode; +import com.vaadin.sass.tree.MixinDefNode; +import com.vaadin.sass.tree.MixinNode; + +public class Mixins extends TestBase { + + String scss = "/scss/mixins.scss"; + String css = "/css/mixins.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + + MixinDefNode mixinDefNode0 = (MixinDefNode) root.getChildren().get(0); + Assert.assertEquals("font-settings", mixinDefNode0.getName()); + Assert.assertTrue(mixinDefNode0.getArglist().isEmpty()); + Assert.assertEquals(3, mixinDefNode0.getChildren().size()); + + MixinDefNode mixinDefNode1 = (MixinDefNode) root.getChildren().get(1); + Assert.assertEquals("rounded-borders", mixinDefNode1.getName()); + Assert.assertEquals(2, mixinDefNode1.getArglist().size()); + Assert.assertEquals("thickness", mixinDefNode1.getArglist().get(0) + .getName()); + Assert.assertEquals("radius", mixinDefNode1.getArglist().get(1) + .getName()); + Assert.assertEquals(LexicalUnit.SAC_PIXEL, mixinDefNode1.getArglist() + .get(1).getExpr().getLexicalUnitType()); + Assert.assertEquals(3f, mixinDefNode1.getArglist().get(1).getExpr() + .getFloatValue()); + + Assert.assertEquals(4, mixinDefNode1.getChildren().size()); + + BlockNode mainBlockNode = (BlockNode) root.getChildren().get(2); + Assert.assertEquals(2, mainBlockNode.getChildren().size()); + MixinNode mixinNode0MainBlock = (MixinNode) mainBlockNode.getChildren() + .get(0); + Assert.assertEquals("rounded-borders", mixinNode0MainBlock.getName()); + Assert.assertEquals(1f, mixinNode0MainBlock.getArglist().get(0) + .getFloatValue()); + Assert.assertEquals(LexicalUnit.SAC_PIXEL, mixinNode0MainBlock + .getArglist().get(0).getLexicalUnitType()); + MixinNode mixinNOde1MainBlock = (MixinNode) mainBlockNode.getChildren() + .get(1); + Assert.assertEquals("font-settings", mixinNOde1MainBlock.getName()); + Assert.assertTrue(mixinNOde1MainBlock.getArglist().isEmpty()); + + MixinNode mixinNode1MainBlock = (MixinNode) mainBlockNode.getChildren() + .get(1); + Assert.assertTrue(mixinNode1MainBlock.getArglist().isEmpty()); + + BlockNode footerBlockNode = (BlockNode) root.getChildren().get(3); + MixinNode mixinNodeFooterBlock = (MixinNode) footerBlockNode + .getChildren().get(0); + Assert.assertEquals(2f, mixinNodeFooterBlock.getArglist().get(0) + .getFloatValue()); + Assert.assertEquals("px", mixinNodeFooterBlock.getArglist().get(0) + .getDimensionUnitText()); + + Assert.assertEquals(10f, mixinNodeFooterBlock.getArglist().get(1) + .getFloatValue()); + Assert.assertEquals("px", mixinNodeFooterBlock.getArglist().get(1) + .getDimensionUnitText()); + + Assert.assertTrue(root.getChildren().get(4) instanceof MixinDefNode); + Assert.assertTrue(root.getChildren().get(4).getChildren().get(3) instanceof MediaNode); + Assert.assertTrue(root.getChildren().get(4).getChildren().get(4) instanceof MixinNode); + + MixinNode topLevelMixin = (MixinNode) root.getChildren().get(5); + Assert.assertEquals("layout", topLevelMixin.getName()); + + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } + +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java new file mode 100644 index 0000000000..a236eeac12 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java @@ -0,0 +1,57 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.NestPropertiesNode; +import com.vaadin.sass.tree.RuleNode; + +public class NestedProperties extends TestBase { + String scss = "/scss/nested-properties.scss"; + String css = "/css/nested-properties.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(1, root.getChildren().size()); + + BlockNode blockNode = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(1, blockNode.getChildren().size()); + + NestPropertiesNode nestPropertiesNode = (NestPropertiesNode) blockNode + .getChildren().get(0); + Assert.assertEquals("font", nestPropertiesNode.getName()); + RuleNode nestedProperty0 = (RuleNode) nestPropertiesNode.getChildren() + .get(0); + RuleNode nestedProperty1 = (RuleNode) nestPropertiesNode.getChildren() + .get(1); + RuleNode nestedProperty2 = (RuleNode) nestPropertiesNode.getChildren() + .get(2); + Assert.assertEquals("family", nestedProperty0.getVariable()); + Assert.assertEquals("weight", nestedProperty1.getVariable()); + Assert.assertEquals("size", nestedProperty2.getVariable()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java new file mode 100644 index 0000000000..1ca8bc762b --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java @@ -0,0 +1,75 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; + +public class Nesting extends TestBase { + + String scss = "/scss/nesting.scss"; + String css = "/css/nesting.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(5, root.getChildren().size()); + + BlockNode blockNode0 = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(2, blockNode0.getChildren().size()); + BlockNode nestedBlock0 = (BlockNode) blockNode0.getChildren().get(1); + org.junit.Assert.assertEquals(1, nestedBlock0.getChildren().size()); + + BlockNode blockNode1 = (BlockNode) root.getChildren().get(1); + Assert.assertEquals(2, blockNode1.getChildren().size()); + BlockNode nestedBlockInBlock1 = (BlockNode) blockNode1.getChildren() + .get(1); + Assert.assertEquals(1, nestedBlockInBlock1.getChildren().size()); + + BlockNode blockNode2 = (BlockNode) root.getChildren().get(2); + Assert.assertEquals(2, blockNode2.getChildren().size()); + BlockNode nestedBlockInBlock2 = (BlockNode) blockNode2.getChildren() + .get(1); + Assert.assertEquals(1, nestedBlockInBlock2.getChildren().size()); + + BlockNode blockNode3 = (BlockNode) root.getChildren().get(3); + Assert.assertEquals(2, blockNode3.getChildren().size()); + BlockNode nestedBlockInBlock3 = (BlockNode) blockNode3.getChildren() + .get(1); + Assert.assertEquals(2, nestedBlockInBlock3.getChildren().size()); + BlockNode nestednestedBlockInBlock3 = (BlockNode) nestedBlockInBlock3 + .getChildren().get(1); + Assert.assertEquals(1, nestednestedBlockInBlock3.getChildren().size()); + + BlockNode blockNode4 = (BlockNode) root.getChildren().get(4); + Assert.assertEquals(2, blockNode4.getChildren().size()); + BlockNode nestedBlockInBlock4 = (BlockNode) blockNode3.getChildren() + .get(1); + Assert.assertEquals(2, nestedBlockInBlock4.getChildren().size()); + BlockNode nestednestedBlockInBlock4 = (BlockNode) nestedBlockInBlock3 + .getChildren().get(1); + Assert.assertEquals(1, nestednestedBlockInBlock4.getChildren().size()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java new file mode 100644 index 0000000000..b25c8417b8 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java @@ -0,0 +1,52 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.ImportNode; + +public class ParentImports extends TestBase { + + String scss = "/scss/folder-test/parent-import.scss"; + String css = "/css/parent-import.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + ImportNode importVariableNode = (ImportNode) root.getChildren().get(0); + Assert.assertEquals("../folder-test2/variables.scss", + importVariableNode.getUri()); + Assert.assertFalse(importVariableNode.isPureCssImport()); + + ImportNode importURLNode = (ImportNode) root.getChildren().get(1); + Assert.assertEquals("../folder-test2/url", importURLNode.getUri()); + Assert.assertFalse(importURLNode.isPureCssImport()); + + ImportNode importImportNode = (ImportNode) root.getChildren().get(2); + Assert.assertEquals("../folder-test2/base-imported.scss", + importImportNode.getUri()); + Assert.assertFalse(importImportNode.isPureCssImport()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java new file mode 100644 index 0000000000..0df3fde8eb --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java @@ -0,0 +1,47 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.selector.SelectorUtil; +import com.vaadin.sass.tree.BlockNode; + +public class ParentSelector extends TestBase { + String scss = "/scss/parent-selector.scss"; + String css = "/css/parent-selector.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + BlockNode blockNode = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(4, blockNode.getChildren().size()); + BlockNode nestedBlock1 = (BlockNode) blockNode.getChildren().get(2); + Assert.assertEquals("&:hover", + SelectorUtil.toString(nestedBlock1.getSelectorList())); + BlockNode nestedBlock2 = (BlockNode) blockNode.getChildren().get(3); + Assert.assertEquals("body.firefox &", + SelectorUtil.toString(nestedBlock2.getSelectorList())); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java new file mode 100644 index 0000000000..df6bd41fe1 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java @@ -0,0 +1,94 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.parser.SCSSLexicalUnit; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; + +public class Variables extends TestBase { + + String scss = "/scss/variables.scss"; + String css = "/css/variables.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(5, root.getChildren().size()); + + VariableNode varNode1 = (VariableNode) root.getChildren().get(0); + Assert.assertEquals("blue", varNode1.getName()); + // Assert.assertEquals("blue", varNode1.getExpr().); + + VariableNode varNode2 = (VariableNode) root.getChildren().get(1); + Assert.assertEquals("margin", varNode2.getName()); + Assert.assertEquals(8f, varNode2.getExpr().getFloatValue()); + Assert.assertEquals("px", varNode2.getExpr().getDimensionUnitText()); + + VariableNode varNode3 = (VariableNode) root.getChildren().get(2); + Assert.assertEquals("chameleon-font-family", varNode3.getName()); + + BlockNode blockNode1 = (BlockNode) root.getChildren().get(3); + Assert.assertEquals(4, blockNode1.getChildren().size()); + RuleNode ruleNode1Block1 = (RuleNode) blockNode1.getChildren().get(0); + Assert.assertEquals("border-color", ruleNode1Block1.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode1Block1 + .getValue().getLexicalUnitType()); + Assert.assertEquals("blue", ruleNode1Block1.getValue().getStringValue()); + + VariableNode varNode1Block1 = (VariableNode) blockNode1.getChildren() + .get(1); + Assert.assertEquals("blue", varNode1Block1.getName()); + + RuleNode ruleNode2Block1 = (RuleNode) blockNode1.getChildren().get(2); + Assert.assertEquals("color", ruleNode2Block1.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode2Block1 + .getValue().getLexicalUnitType()); + Assert.assertEquals("blue", ruleNode2Block1.getValue().getStringValue()); + + BlockNode blockNode2 = (BlockNode) root.getChildren().get(4); + RuleNode ruleNode1Block2 = (RuleNode) blockNode2.getChildren().get(0); + Assert.assertEquals("padding", ruleNode1Block2.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode1Block2 + .getValue().getLexicalUnitType()); + Assert.assertEquals("margin", ruleNode1Block2.getValue() + .getStringValue()); + + RuleNode ruleNode2Block2 = (RuleNode) blockNode2.getChildren().get(1); + Assert.assertEquals("margin", ruleNode2Block2.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode2Block2 + .getValue().getLexicalUnitType()); + Assert.assertEquals("margin", ruleNode2Block2.getValue() + .getStringValue()); + + RuleNode ruleNode3Block2 = (RuleNode) blockNode2.getChildren().get(2); + Assert.assertEquals("border-color", ruleNode3Block2.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode1Block2 + .getValue().getLexicalUnitType()); + Assert.assertEquals("blue", ruleNode3Block2.getValue().getStringValue()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java new file mode 100644 index 0000000000..0bc6cb8799 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java @@ -0,0 +1,9 @@ +package com.vaadin.sass.testcases.visitor; + +import org.junit.Test; + +public class ImportVisitorTest { + @Test + public void canHandleNestedImports() { + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java new file mode 100644 index 0000000000..8030d4e0b1 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java @@ -0,0 +1,263 @@ +package com.vaadin.sass.testcases.visitor; + +import java.util.ArrayList; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.LexicalUnit; + +import com.steadystate.css.parser.LexicalUnitImpl; +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.parser.SCSSLexicalUnit; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.MixinDefNode; +import com.vaadin.sass.tree.MixinNode; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; +import com.vaadin.sass.visitor.MixinVisitor; + +public class MixinVisitorTest { + private MixinVisitor mixinVisitor = new MixinVisitor(); + + @Test + public void testTraversMixinWithoutArgs() { + ScssStylesheet root = new ScssStylesheet(); + MixinDefNode mixinDefNoArgs = new MixinDefNode("no-args", null); + BlockNode blockNode = new BlockNode(null); + mixinDefNoArgs.appendChild(blockNode); + root.appendChild(mixinDefNoArgs); + + BlockNode blockWithMixin = new BlockNode(null); + MixinNode mixin = new MixinNode("no-args", null); + blockWithMixin.appendChild(mixin); + root.appendChild(blockWithMixin); + + try { + mixinVisitor.traverse(root); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + + Assert.assertEquals(1, root.getChildren().size()); + BlockNode child = (BlockNode) root.getChildren().get(0); + BlockNode fromMixin = (BlockNode) child.getChildren().get(0); + Assert.assertFalse(fromMixin.hasChildren()); + } + + @Test + public void testTraverseMixinWithNonDefaultArgs() { + ScssStylesheet root = new ScssStylesheet(); + ArrayList args = new ArrayList(); + args.add(new VariableNode("arg", null, false)); + MixinDefNode mixinDefWithNonDefaultArg = new MixinDefNode( + "non-default-arg", args); + BlockNode blockNode = new BlockNode(null); + mixinDefWithNonDefaultArg.appendChild(blockNode); + root.appendChild(mixinDefWithNonDefaultArg); + + BlockNode blockWithMixin = new BlockNode(null); + ArrayList includeArgs = new ArrayList(); + LexicalUnit includeArg = LexicalUnitImpl.createPixel(null, 1f); + includeArgs.add(includeArg); + MixinNode mixin = new MixinNode("non-default-arg", includeArgs); + blockWithMixin.appendChild(mixin); + root.appendChild(blockWithMixin); + + try { + mixinVisitor.traverse(root); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + + Assert.assertEquals(1, root.getChildren().size()); + BlockNode child = (BlockNode) root.getChildren().get(0); + VariableNode varNode = (VariableNode) child.getChildren().get(0); + Assert.assertEquals("arg", varNode.getName()); + Assert.assertEquals(LexicalUnit.SAC_PIXEL, varNode.getExpr() + .getLexicalUnitType()); + Assert.assertEquals(1f, varNode.getExpr().getFloatValue(), 0); + BlockNode fromMixin = (BlockNode) child.getChildren().get(1); + Assert.assertFalse(fromMixin.hasChildren()); + + } + + @Test + public void testTraverseMixinWithDefaultArgs() { + ScssStylesheet root = new ScssStylesheet(); + ArrayList args = new ArrayList(); + args.add(new VariableNode("arg", LexicalUnitImpl.createPixel(null, 1f), + false)); + MixinDefNode mixinDefWithNonDefaultArg = new MixinDefNode( + "default-arg", args); + BlockNode blockNode = new BlockNode(null); + mixinDefWithNonDefaultArg.appendChild(blockNode); + root.appendChild(mixinDefWithNonDefaultArg); + + BlockNode blockWithMixin = new BlockNode(null); + MixinNode mixin = new MixinNode("default-arg", null); + blockWithMixin.appendChild(mixin); + root.appendChild(blockWithMixin); + + try { + mixinVisitor.traverse(root); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + + Assert.assertEquals(1, root.getChildren().size()); + BlockNode child = (BlockNode) root.getChildren().get(0); + VariableNode varNode = (VariableNode) child.getChildren().get(0); + Assert.assertEquals("arg", varNode.getName()); + Assert.assertEquals(LexicalUnit.SAC_PIXEL, varNode.getExpr() + .getLexicalUnitType()); + Assert.assertEquals(1f, varNode.getExpr().getFloatValue(), 0); + BlockNode fromMixin = (BlockNode) child.getChildren().get(1); + Assert.assertFalse(fromMixin.hasChildren()); + + } + + @Test + public void testMixinWithoutArgument() { + /* + * ArrayList args = new ArrayList(); args.add("arg"); + * MixinDefNode mixinDefWithArgs = new MixinDefNode("with-args", args); + * RuleNode ruleNode = new RuleNode("var", + * com.vaadin.sass.parser.LexicalUnitImpl.createVariable(0, 0, null, + * "arg"), false); mixinDefWithArgs.appendChild(ruleNode); + */ + ScssStylesheet root = new ScssStylesheet(); + MixinDefNode mixinDefNoArgs = new MixinDefNode("table-base", null); + BlockNode thBlockNode = new BlockNode(null); + RuleNode textAlignRuleNode = new RuleNode("text-align", + LexicalUnitImpl.createString(null, "center"), false, null); + thBlockNode.appendChild(textAlignRuleNode); + RuleNode fontWeightRuleNode = new RuleNode("font-weight", + LexicalUnitImpl.createString(null, "bold"), false, null); + thBlockNode.appendChild(fontWeightRuleNode); + mixinDefNoArgs.appendChild(thBlockNode); + + BlockNode tdthBlockNode = new BlockNode(null); + RuleNode paddingRuleNode = new RuleNode("padding", + LexicalUnitImpl.createPixel(null, 2f), false, null); + tdthBlockNode.appendChild(paddingRuleNode); + mixinDefNoArgs.appendChild(tdthBlockNode); + root.appendChild(mixinDefNoArgs); + + BlockNode dataBlock = new BlockNode(null); + MixinNode mixinNode = new MixinNode("table-base", null); + dataBlock.appendChild(mixinNode); + root.appendChild(dataBlock); + + try { + mixinVisitor.traverse(root); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + + Assert.assertEquals(1, root.getChildren().size()); + dataBlock = (BlockNode) root.getChildren().get(0); + BlockNode thBlock = (BlockNode) dataBlock.getChildren().get(0); + Assert.assertEquals(2, thBlock.getChildren().size()); + BlockNode thtdBlock = (BlockNode) dataBlock.getChildren().get(1); + Assert.assertEquals(1, thtdBlock.getChildren().size()); + + /* + * Assert.assertEquals(2, root.getChildren().size()); BlockNode + * datathBlockNode = (BlockNode) root.getChildren().get(0); + * Assert.assertEquals(LexicalUnit.SAC_IDENT, datathBlockNode + * .getSelectorList().item(0).getSelectorType()); + * Assert.assertEquals("text-align", ((RuleNode) datathBlockNode + * .getChildren().get(0)).getVariable()); Assert.assertEquals("center", + * ((RuleNode) datathBlockNode.getChildren() + * .get(0)).getValue().getStringValue()); + * Assert.assertEquals("font-weight", ((RuleNode) datathBlockNode + * .getChildren().get(1)).getVariable()); Assert.assertEquals("bold", + * ((RuleNode) datathBlockNode.getChildren() + * .get(1)).getValue().getStringValue()); + * + * BlockNode datathdatatdBlockNode = (BlockNode) + * root.getChildren().get(1); Assert.assertEquals(LexicalUnit.SAC_IDENT, + * datathdatatdBlockNode .getSelectorList().item(0).getSelectorType()); + * Assert.assertEquals(LexicalUnit.SAC_IDENT, datathdatatdBlockNode + * .getSelectorList().item(1).getSelectorType()); + * Assert.assertEquals("padding", ((RuleNode) datathdatatdBlockNode + * .getChildren().get(0)).getVariable()); Assert.assertEquals(2.0f, + * ((RuleNode) datathdatatdBlockNode + * .getChildren().get(0)).getValue().getFloatValue(), 0); + * Assert.assertEquals(LexicalUnit.SAC_PIXEL, ((RuleNode) + * datathdatatdBlockNode.getChildren().get(0)) + * .getValue().getLexicalUnitType()); + */ + + } + + @Test + public void testMixinWithArgument() { + ScssStylesheet root = new ScssStylesheet(); + ArrayList argNameList = new ArrayList(); + argNameList.add(new VariableNode("dist", null, false)); + MixinDefNode mixinDef = new MixinDefNode("left", argNameList); + + RuleNode floatRuleNode = new RuleNode("float", + LexicalUnitImpl.createString(null, "left"), false, null); + mixinDef.appendChild(floatRuleNode); + RuleNode marginLeftRuleNode = new RuleNode("margin-left", + com.vaadin.sass.parser.LexicalUnitImpl.createVariable(0, 0, + null, "dist"), false, null); + mixinDef.appendChild(marginLeftRuleNode); + root.appendChild(mixinDef); + + BlockNode dataBlock = new BlockNode(null); + ArrayList argValueList = new ArrayList(); + LexicalUnit arg = LexicalUnitImpl.createPixel(null, 10f); + argValueList.add(arg); + MixinNode mixinNode = new MixinNode("left", argValueList); + dataBlock.appendChild(mixinNode); + root.appendChild(dataBlock); + + try { + mixinVisitor.traverse(root); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + + Assert.assertEquals(1, root.getChildren().size()); + BlockNode dataBlockNode = (BlockNode) root.getChildren().get(0); + VariableNode variable = (VariableNode) dataBlockNode.getChildren().get( + 0); + Assert.assertEquals("dist", variable.getName()); + Assert.assertEquals("float", ((RuleNode) dataBlockNode.getChildren() + .get(1)).getVariable()); + Assert.assertEquals("left", ((RuleNode) dataBlockNode.getChildren() + .get(1)).getValue().getStringValue()); + Assert.assertEquals("margin-left", ((RuleNode) dataBlockNode + .getChildren().get(2)).getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, + ((RuleNode) dataBlockNode.getChildren().get(2)).getValue() + .getLexicalUnitType()); + } + + @Test + public void testTopLevelInclude() { + ScssStylesheet root = new ScssStylesheet(); + + MixinDefNode defNode = new MixinDefNode("mixin", null); + defNode.appendChild(new RuleNode("var", null, false, null)); + root.appendChild(defNode); + + MixinNode mixinNode = new MixinNode("mixin", null); + root.appendChild(mixinNode); + + try { + mixinVisitor.traverse(root); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + + Assert.assertEquals(1, root.getChildren().size()); + RuleNode varRule = (RuleNode) root.getChildren().get(0); + Assert.assertEquals("var", varRule.getVariable()); + + } + +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java new file mode 100644 index 0000000000..48705c157e --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java @@ -0,0 +1,51 @@ +package com.vaadin.sass.testcases.visitor; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.tree.NestPropertiesNode; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; +import com.vaadin.sass.visitor.NestPropertiesVisitor; + +public class NestedPropertiesVisitorTest { + private NestPropertiesVisitor visitor = new NestPropertiesVisitor(); + + @Test + public void testEmptyTreeNoChange() { + ScssStylesheet root = new ScssStylesheet(); + Assert.assertFalse(root.hasChildren()); + visitor.traverse(root); + Assert.assertFalse(root.hasChildren()); + } + + @Test + public void testNoNestPropertiesNodeNoChange() { + ScssStylesheet root = new ScssStylesheet(); + root.appendChild(new VariableNode("", "")); + Assert.assertEquals(1, root.getChildren().size()); + visitor.traverse(root); + Assert.assertEquals(1, root.getChildren().size()); + } + + @Test + public void testNestedPropertiesCanBeUnnested() { + ScssStylesheet root = new ScssStylesheet(); + NestPropertiesNode nested = new NestPropertiesNode("nested"); + RuleNode child0 = new RuleNode("child0", null, false, null); + RuleNode child1 = new RuleNode("child1", null, true, null); + nested.appendChild(child0); + nested.appendChild(child1); + root.appendChild(nested); + + Assert.assertEquals(1, root.getChildren().size()); + visitor.traverse(root); + Assert.assertEquals(2, root.getChildren().size()); + + for (int i = 0; i < root.getChildren().size(); i++) { + RuleNode node = (RuleNode) root.getChildren().get(i); + Assert.assertEquals("nested-child" + i, node.getVariable()); + } + } +} diff --git a/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java b/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java new file mode 100644 index 0000000000..ff7e4d9034 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java @@ -0,0 +1,60 @@ +package com.vaadin.sass.tree; + +import org.junit.Assert; +import org.junit.Test; + +import com.steadystate.css.parser.SACMediaListImpl; + +public class ImportNodeTest { + @Test + public void testIsPureCssImportShouldReturnTrueWhenIsURL() { + ImportNode node = new ImportNode("", null, true); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnTrueWhenStartsWithHttp() { + ImportNode node = new ImportNode("http://abc", null, false); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnTrueWhenEndsWithCss() { + ImportNode node = new ImportNode("abc.css", null, false); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnTrueWhenHasMediaQueries() { + SACMediaListImpl ml = new SACMediaListImpl(); + ml.add("screen"); + ImportNode node = new ImportNode("", ml, false); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnFalseInOtherCases() { + ImportNode node = new ImportNode("", null, false); + Assert.assertFalse(node.isPureCssImport()); + } + + @Test + public void testToStringWhenIsURL() { + ImportNode node = new ImportNode("test", null, true); + Assert.assertEquals("@import url(test);", node.toString()); + } + + @Test + public void testToStringWhenIsNotURL() { + ImportNode node = new ImportNode("test", null, false); + Assert.assertEquals("@import \"test\";", node.toString()); + } + + @Test + public void testToStringWithMediaQueries() { + SACMediaListImpl ml = new SACMediaListImpl(); + ml.add("screen"); + ImportNode node = new ImportNode("test", ml, true); + Assert.assertEquals("@import url(test) screen;", node.toString()); + } +} -- cgit v1.2.3 From 620e096b45f27ecc5aa85d164ca8b81df000e593 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Wed, 8 Aug 2012 13:25:44 +0300 Subject: Compile and unit test SASS during build (#9223) --- build/build.xml | 124 ++++++++++++++++++++++++++++++++++------- build/ivy/buildhelpers-ivy.xml | 8 ++- 2 files changed, 112 insertions(+), 20 deletions(-) diff --git a/build/build.xml b/build/build.xml index f7d910e4b0..39d27464fc 100644 --- a/build/build.xml +++ b/build/build.xml @@ -25,10 +25,14 @@ + + + + @@ -60,12 +64,6 @@ - - - @@ -81,12 +79,6 @@ - - - @@ -99,6 +91,16 @@ + + + + + + + + + + @@ -118,9 +120,13 @@ + + + + @@ -220,7 +226,11 @@ - + + + + + @@ -330,17 +340,20 @@ Copying non java/html/css/xml files such as images. @@ -411,6 +440,11 @@ + + + + + @@ -424,6 +458,14 @@ + + + + + + + + @@ -505,6 +547,14 @@ + Compiling SASS JUnit tests + + + + + + + Compiling src (TestBench tests) @@ -516,21 +566,33 @@ - + - - + + + + + + - + + + + + + + Combining default themes css files + + - + @@ -731,8 +793,10 @@ + + @@ -853,6 +917,11 @@ + + + + + @@ -1109,6 +1178,7 @@ + @@ -1171,6 +1241,22 @@ ##teamcity[publishArtifacts '${result-path}/coverage'] + + + + + + + + + + + + + + + + diff --git a/build/ivy/buildhelpers-ivy.xml b/build/ivy/buildhelpers-ivy.xml index afccd85973..13e89eb734 100644 --- a/build/ivy/buildhelpers-ivy.xml +++ b/build/ivy/buildhelpers-ivy.xml @@ -8,6 +8,12 @@ - + + + + \ No newline at end of file -- cgit v1.2.3 From cfa455d6cfd4a535fd77cbc76637a57e7024e9ac Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Wed, 8 Aug 2012 14:27:31 +0300 Subject: Standard themes in SCSS form, updated CompileDefaultTheme (#9223) Conversion performed for most themes trivial, just rename file and wrap in a mixin. For chameleon compounds, also nesting used. In some cases, related small files combined in a single SCSS file Chameleon accordion and select contain fixes other than just a missing semicolon. --- .../themes/base/absolutelayout/absolutelayout.css | 15 - .../themes/base/absolutelayout/absolutelayout.scss | 19 ++ .../VAADIN/themes/base/accordion/accordion.css | 26 -- .../VAADIN/themes/base/accordion/accordion.scss | 30 ++ WebContent/VAADIN/themes/base/base.scss | 34 ++ WebContent/VAADIN/themes/base/button/button.css | 159 --------- WebContent/VAADIN/themes/base/button/button.scss | 163 +++++++++ WebContent/VAADIN/themes/base/caption/caption.css | 23 -- WebContent/VAADIN/themes/base/caption/caption.scss | 27 ++ WebContent/VAADIN/themes/base/common/common.css | 251 -------------- WebContent/VAADIN/themes/base/common/common.scss | 255 ++++++++++++++ .../VAADIN/themes/base/csslayout/csslayout.css | 28 -- .../VAADIN/themes/base/csslayout/csslayout.scss | 32 ++ .../base/customcomponent/customcomponent.css | 3 - .../base/customcomponent/customcomponent.scss | 7 + .../themes/base/customlayout/customlayout.css | 3 - .../themes/base/customlayout/customlayout.scss | 7 + .../VAADIN/themes/base/datefield/datefield.css | 89 ----- .../VAADIN/themes/base/datefield/datefield.scss | 93 +++++ .../VAADIN/themes/base/dragwrapper/dragwrapper.css | 158 --------- .../themes/base/dragwrapper/dragwrapper.scss | 162 +++++++++ .../VAADIN/themes/base/embedded/embedded.css | 5 - .../VAADIN/themes/base/embedded/embedded.scss | 8 + .../VAADIN/themes/base/formlayout/formlayout.css | 52 --- .../VAADIN/themes/base/formlayout/formlayout.scss | 56 ++++ .../VAADIN/themes/base/gridlayout/gridlayout.css | 31 -- .../VAADIN/themes/base/gridlayout/gridlayout.scss | 35 ++ WebContent/VAADIN/themes/base/label/label.css | 3 - WebContent/VAADIN/themes/base/label/label.scss | 7 + WebContent/VAADIN/themes/base/link/link.css | 18 - WebContent/VAADIN/themes/base/link/link.scss | 22 ++ .../VAADIN/themes/base/loginform/loginform.css | 9 - .../VAADIN/themes/base/loginform/loginform.scss | 13 + WebContent/VAADIN/themes/base/menubar/menubar.css | 94 ------ WebContent/VAADIN/themes/base/menubar/menubar.scss | 98 ++++++ .../themes/base/notification/notification.css | 39 --- .../themes/base/notification/notification.scss | 43 +++ .../themes/base/orderedlayout/orderedlayout.css | 43 --- .../themes/base/orderedlayout/orderedlayout.scss | 47 +++ .../VAADIN/themes/base/paintable/paintable.css | 5 - .../VAADIN/themes/base/paintable/paintable.scss | 9 + WebContent/VAADIN/themes/base/panel/panel.css | 43 --- WebContent/VAADIN/themes/base/panel/panel.scss | 47 +++ .../VAADIN/themes/base/popupview/popupview.css | 13 - .../VAADIN/themes/base/popupview/popupview.scss | 17 + .../base/progressindicator/progressindicator.css | 31 -- .../base/progressindicator/progressindicator.scss | 35 ++ WebContent/VAADIN/themes/base/select/select.css | 164 --------- WebContent/VAADIN/themes/base/select/select.scss | 168 ++++++++++ WebContent/VAADIN/themes/base/shadow/shadow.css | 68 ---- WebContent/VAADIN/themes/base/shadow/shadow.scss | 72 ++++ WebContent/VAADIN/themes/base/slider/slider.css | 65 ---- WebContent/VAADIN/themes/base/slider/slider.scss | 69 ++++ .../VAADIN/themes/base/splitpanel/splitpanel.css | 31 -- .../VAADIN/themes/base/splitpanel/splitpanel.scss | 35 ++ WebContent/VAADIN/themes/base/styles.scss | 45 +++ WebContent/VAADIN/themes/base/table/table.css | 284 ---------------- WebContent/VAADIN/themes/base/table/table.scss | 283 ++++++++++++++++ .../VAADIN/themes/base/tabsheet/tabsheet.css | 124 ------- .../VAADIN/themes/base/tabsheet/tabsheet.scss | 128 +++++++ .../VAADIN/themes/base/textfield/richtext.css | 58 ---- .../themes/base/textfield/textfield-normal.css | 47 --- .../VAADIN/themes/base/textfield/textfield.css | 2 - .../VAADIN/themes/base/textfield/textfield.scss | 118 +++++++ .../VAADIN/themes/base/tree/tree-connectors.css | 35 -- .../VAADIN/themes/base/tree/tree-default.css | 95 ------ WebContent/VAADIN/themes/base/tree/tree.css | 2 - WebContent/VAADIN/themes/base/tree/tree.scss | 141 ++++++++ .../VAADIN/themes/base/treetable/treetable.css | 65 ---- .../VAADIN/themes/base/treetable/treetable.scss | 69 ++++ WebContent/VAADIN/themes/base/upload/upload.css | 36 -- WebContent/VAADIN/themes/base/upload/upload.scss | 39 +++ WebContent/VAADIN/themes/base/window/window.css | 162 --------- WebContent/VAADIN/themes/base/window/window.scss | 166 +++++++++ WebContent/VAADIN/themes/chameleon/chameleon.scss | 10 + .../VAADIN/themes/chameleon/common/common.css | 157 --------- .../VAADIN/themes/chameleon/common/common.scss | 164 +++++++++ .../chameleon/components/accordion/accordion.css | 76 ----- .../chameleon/components/accordion/accordion.scss | 80 +++++ .../themes/chameleon/components/button/button.css | 257 -------------- .../themes/chameleon/components/button/button.scss | 261 ++++++++++++++ .../themes/chameleon/components/components.css | 17 - .../themes/chameleon/components/components.scss | 41 +++ .../chameleon/components/datefield/datefield.css | 275 --------------- .../chameleon/components/datefield/datefield.scss | 279 +++++++++++++++ .../themes/chameleon/components/label/label.css | 127 ------- .../themes/chameleon/components/label/label.scss | 131 ++++++++ .../chameleon/components/menubar/menubar.css | 24 -- .../chameleon/components/menubar/menubar.scss | 28 ++ .../components/notification/notification.css | 64 ---- .../components/notification/notification.scss | 68 ++++ .../themes/chameleon/components/panel/panel.css | 120 ------- .../themes/chameleon/components/panel/panel.scss | 124 +++++++ .../chameleon/components/popupview/popupview.css | 3 - .../chameleon/components/popupview/popupview.scss | 7 + .../progressindicator/progressindicator.css | 112 ------- .../progressindicator/progressindicator.scss | 116 +++++++ .../chameleon/components/selects/selects.css | 163 --------- .../chameleon/components/selects/selects.scss | 168 ++++++++++ .../themes/chameleon/components/slider/slider.css | 56 ---- .../themes/chameleon/components/slider/slider.scss | 60 ++++ .../chameleon/components/splitpanel/splitpanel.css | 63 ---- .../components/splitpanel/splitpanel.scss | 67 ++++ .../themes/chameleon/components/table/table.css | 163 --------- .../themes/chameleon/components/table/table.scss | 167 +++++++++ .../chameleon/components/tabsheet/tabsheet.css | 158 --------- .../chameleon/components/tabsheet/tabsheet.scss | 162 +++++++++ .../chameleon/components/textfield/textfield.css | 129 ------- .../chameleon/components/textfield/textfield.scss | 133 ++++++++ .../themes/chameleon/components/tree/tree.css | 22 -- .../themes/chameleon/components/tree/tree.scss | 26 ++ .../themes/chameleon/components/window/window.css | 53 --- .../themes/chameleon/components/window/window.scss | 57 ++++ .../VAADIN/themes/chameleon/compound/compound.css | 3 - .../VAADIN/themes/chameleon/compound/compound.scss | 134 ++++++++ .../themes/chameleon/compound/segment/segment.css | 52 --- .../compound/sidebar-menu/sidebar-menu.css | 44 --- .../themes/chameleon/compound/toolbar/toolbar.css | 21 -- WebContent/VAADIN/themes/chameleon/styles.scss | 10 + .../VAADIN/themes/liferay/accordion/accordion.css | 28 -- .../VAADIN/themes/liferay/accordion/accordion.scss | 32 ++ WebContent/VAADIN/themes/liferay/button/button.css | 104 ------ .../VAADIN/themes/liferay/button/button.scss | 108 ++++++ WebContent/VAADIN/themes/liferay/common/common.css | 35 -- .../VAADIN/themes/liferay/common/common.scss | 39 +++ .../themes/liferay/contextmenu/contextmenu.css | 40 --- .../themes/liferay/contextmenu/contextmenu.scss | 44 +++ .../VAADIN/themes/liferay/datefield/datefield.css | 166 --------- .../VAADIN/themes/liferay/datefield/datefield.scss | 170 ++++++++++ .../themes/liferay/formlayout/formlayout.css | 3 - .../themes/liferay/formlayout/formlayout.scss | 7 + WebContent/VAADIN/themes/liferay/liferay.scss | 25 ++ .../VAADIN/themes/liferay/menubar/menubar.css | 64 ---- .../VAADIN/themes/liferay/menubar/menubar.scss | 68 ++++ .../themes/liferay/notification/notification.css | 48 --- .../themes/liferay/notification/notification.scss | 52 +++ WebContent/VAADIN/themes/liferay/panel/panel.css | 82 ----- WebContent/VAADIN/themes/liferay/panel/panel.scss | 86 +++++ .../VAADIN/themes/liferay/popupview/popupview.css | 9 - .../VAADIN/themes/liferay/popupview/popupview.scss | 13 + .../progressindicator/progressindicator.css | 12 - .../progressindicator/progressindicator.scss | 16 + WebContent/VAADIN/themes/liferay/select/select.css | 77 ----- .../VAADIN/themes/liferay/select/select.scss | 81 +++++ WebContent/VAADIN/themes/liferay/slider/slider.css | 29 -- .../VAADIN/themes/liferay/slider/slider.scss | 36 ++ .../themes/liferay/splitpanel/splitpanel.css | 63 ---- .../themes/liferay/splitpanel/splitpanel.scss | 67 ++++ WebContent/VAADIN/themes/liferay/styles.scss | 28 ++ WebContent/VAADIN/themes/liferay/table/table.css | 135 -------- WebContent/VAADIN/themes/liferay/table/table.scss | 139 ++++++++ .../VAADIN/themes/liferay/tabsheet/tabsheet.css | 142 -------- .../VAADIN/themes/liferay/tabsheet/tabsheet.scss | 146 ++++++++ .../VAADIN/themes/liferay/textfield/textfield.css | 15 - .../VAADIN/themes/liferay/textfield/textfield.scss | 19 ++ WebContent/VAADIN/themes/liferay/tree/tree.css | 58 ---- WebContent/VAADIN/themes/liferay/tree/tree.scss | 62 ++++ WebContent/VAADIN/themes/liferay/window/window.css | 65 ---- .../VAADIN/themes/liferay/window/window.scss | 69 ++++ .../a-sprite-definitions/a-sprite-definitions.css | 14 - .../a-sprite-definitions/a-sprite-definitions.scss | 14 + .../VAADIN/themes/reindeer/accordion/accordion.css | 45 --- .../themes/reindeer/accordion/accordion.scss | 49 +++ .../VAADIN/themes/reindeer/button/button-ie.css | 4 - .../VAADIN/themes/reindeer/button/button-ie.scss | 8 + .../themes/reindeer/button/button-link-style.css | 35 -- .../themes/reindeer/button/button-link-style.scss | 39 +++ .../reindeer/button/button-primary-style.css | 62 ---- .../reindeer/button/button-primary-style.scss | 66 ++++ .../themes/reindeer/button/button-small-style.css | 67 ---- .../themes/reindeer/button/button-small-style.scss | 71 ++++ .../themes/reindeer/button/button-standard.css | 90 ----- .../themes/reindeer/button/button-standard.scss | 94 ++++++ .../VAADIN/themes/reindeer/button/button.css | 10 - .../VAADIN/themes/reindeer/button/button.scss | 22 ++ .../VAADIN/themes/reindeer/common/common.css | 122 ------- .../VAADIN/themes/reindeer/common/common.scss | 126 +++++++ .../VAADIN/themes/reindeer/datefield/datefield.css | 369 -------------------- .../themes/reindeer/datefield/datefield.scss | 373 +++++++++++++++++++++ .../themes/reindeer/formlayout/formlayout.css | 60 ---- .../themes/reindeer/formlayout/formlayout.scss | 64 ++++ WebContent/VAADIN/themes/reindeer/label/label.css | 122 ------- WebContent/VAADIN/themes/reindeer/label/label.scss | 126 +++++++ .../VAADIN/themes/reindeer/layouts/layouts.css | 88 ----- .../VAADIN/themes/reindeer/layouts/layouts.scss | 92 +++++ WebContent/VAADIN/themes/reindeer/link/link.css | 9 - WebContent/VAADIN/themes/reindeer/link/link.scss | 13 + .../VAADIN/themes/reindeer/menubar/menubar.css | 72 ---- .../VAADIN/themes/reindeer/menubar/menubar.scss | 76 +++++ .../themes/reindeer/notification/notification.css | 44 --- .../themes/reindeer/notification/notification.scss | 48 +++ WebContent/VAADIN/themes/reindeer/panel/panel.css | 74 ---- WebContent/VAADIN/themes/reindeer/panel/panel.scss | 78 +++++ .../VAADIN/themes/reindeer/popupview/popupview.css | 10 - .../themes/reindeer/popupview/popupview.scss | 14 + .../progressindicator/progressindicator.css | 10 - .../progressindicator/progressindicator.scss | 14 + WebContent/VAADIN/themes/reindeer/reindeer.scss | 29 ++ .../VAADIN/themes/reindeer/select/select.css | 260 -------------- .../VAADIN/themes/reindeer/select/select.scss | 264 +++++++++++++++ .../VAADIN/themes/reindeer/slider/slider.css | 41 --- .../VAADIN/themes/reindeer/slider/slider.scss | 45 +++ .../themes/reindeer/splitpanel/splitpanel.css | 66 ---- .../themes/reindeer/splitpanel/splitpanel.scss | 70 ++++ WebContent/VAADIN/themes/reindeer/styles.scss | 32 ++ WebContent/VAADIN/themes/reindeer/table/table.css | 289 ---------------- WebContent/VAADIN/themes/reindeer/table/table.scss | 293 ++++++++++++++++ .../tabsheet/tabsheet-borderless-style.css | 20 -- .../tabsheet/tabsheet-borderless-style.scss | 24 ++ .../tabsheet/tabsheet-hover-closable-style.css | 6 - .../tabsheet/tabsheet-hover-closable-style.scss | 10 + .../reindeer/tabsheet/tabsheet-minimal-style.css | 145 -------- .../reindeer/tabsheet/tabsheet-minimal-style.scss | 149 ++++++++ .../reindeer/tabsheet/tabsheet-normal-style.css | 152 --------- .../reindeer/tabsheet/tabsheet-normal-style.scss | 156 +++++++++ .../themes/reindeer/tabsheet/tabsheet-scroller.css | 51 --- .../reindeer/tabsheet/tabsheet-scroller.scss | 55 +++ .../tabsheet/tabsheet-selected-closable-style.css | 8 - .../tabsheet/tabsheet-selected-closable-style.scss | 12 + .../reindeer/tabsheet/tabsheet-small-style.css | 109 ------ .../reindeer/tabsheet/tabsheet-small-style.scss | 113 +++++++ .../VAADIN/themes/reindeer/tabsheet/tabsheet.css | 8 - .../VAADIN/themes/reindeer/tabsheet/tabsheet.scss | 20 ++ .../VAADIN/themes/reindeer/textfield/textfield.css | 116 ------- .../themes/reindeer/textfield/textfield.scss | 120 +++++++ WebContent/VAADIN/themes/reindeer/tree/tree.css | 51 --- WebContent/VAADIN/themes/reindeer/tree/tree.scss | 55 +++ .../VAADIN/themes/reindeer/window/window.css | 182 ---------- .../VAADIN/themes/reindeer/window/window.scss | 186 ++++++++++ .../themes/runo/absolutelayout/absolutelayout.css | 4 - .../themes/runo/absolutelayout/absolutelayout.scss | 8 + .../VAADIN/themes/runo/accordion/accordion.css | 48 --- .../VAADIN/themes/runo/accordion/accordion.scss | 52 +++ WebContent/VAADIN/themes/runo/button/button.css | 156 --------- WebContent/VAADIN/themes/runo/button/button.scss | 160 +++++++++ WebContent/VAADIN/themes/runo/caption/caption.css | 8 - WebContent/VAADIN/themes/runo/caption/caption.scss | 12 + WebContent/VAADIN/themes/runo/common/common.css | 108 ------ WebContent/VAADIN/themes/runo/common/common.scss | 112 +++++++ .../VAADIN/themes/runo/datefield/datefield.css | 145 -------- .../VAADIN/themes/runo/datefield/datefield.scss | 149 ++++++++ .../VAADIN/themes/runo/formlayout/formlayout.css | 54 --- .../VAADIN/themes/runo/formlayout/formlayout.scss | 58 ++++ .../VAADIN/themes/runo/gridlayout/gridlayout.css | 16 - .../VAADIN/themes/runo/gridlayout/gridlayout.scss | 20 ++ WebContent/VAADIN/themes/runo/label/label.css | 70 ---- WebContent/VAADIN/themes/runo/label/label.scss | 74 ++++ WebContent/VAADIN/themes/runo/link/link.css | 3 - WebContent/VAADIN/themes/runo/link/link.scss | 7 + WebContent/VAADIN/themes/runo/menubar/menubar.css | 35 -- WebContent/VAADIN/themes/runo/menubar/menubar.scss | 39 +++ .../themes/runo/notification/notification.css | 67 ---- .../themes/runo/notification/notification.scss | 71 ++++ .../themes/runo/orderedlayout/orderedlayout.css | 108 ------ .../themes/runo/orderedlayout/orderedlayout.scss | 112 +++++++ WebContent/VAADIN/themes/runo/panel/panel.css | 79 ----- WebContent/VAADIN/themes/runo/panel/panel.scss | 83 +++++ .../VAADIN/themes/runo/popupview/popupview.css | 9 - .../VAADIN/themes/runo/popupview/popupview.scss | 13 + .../runo/progressindicator/progressindicator.css | 19 -- .../runo/progressindicator/progressindicator.scss | 23 ++ WebContent/VAADIN/themes/runo/runo.scss | 27 ++ WebContent/VAADIN/themes/runo/select/select.css | 160 --------- WebContent/VAADIN/themes/runo/select/select.scss | 163 +++++++++ WebContent/VAADIN/themes/runo/shadow/shadow.css | 68 ---- WebContent/VAADIN/themes/runo/shadow/shadow.scss | 72 ++++ WebContent/VAADIN/themes/runo/slider/slider.css | 70 ---- WebContent/VAADIN/themes/runo/slider/slider.scss | 73 ++++ .../VAADIN/themes/runo/splitpanel/splitpanel.css | 84 ----- .../VAADIN/themes/runo/splitpanel/splitpanel.scss | 88 +++++ WebContent/VAADIN/themes/runo/styles.scss | 32 ++ WebContent/VAADIN/themes/runo/table/table.css | 202 ----------- WebContent/VAADIN/themes/runo/table/table.scss | 206 ++++++++++++ .../VAADIN/themes/runo/tabsheet/tabsheet.css | 253 -------------- .../VAADIN/themes/runo/tabsheet/tabsheet.scss | 257 ++++++++++++++ .../VAADIN/themes/runo/textfield/textfield.css | 45 --- .../VAADIN/themes/runo/textfield/textfield.scss | 49 +++ WebContent/VAADIN/themes/runo/tree/tree.css | 57 ---- WebContent/VAADIN/themes/runo/tree/tree.scss | 61 ++++ WebContent/VAADIN/themes/runo/window/window.css | 141 -------- WebContent/VAADIN/themes/runo/window/window.scss | 145 ++++++++ .../vaadin/buildhelpers/CompileDefaultTheme.java | 206 ++++-------- 282 files changed, 11441 insertions(+), 10683 deletions(-) delete mode 100644 WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.css create mode 100644 WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.scss delete mode 100644 WebContent/VAADIN/themes/base/accordion/accordion.css create mode 100644 WebContent/VAADIN/themes/base/accordion/accordion.scss create mode 100644 WebContent/VAADIN/themes/base/base.scss delete mode 100644 WebContent/VAADIN/themes/base/button/button.css create mode 100644 WebContent/VAADIN/themes/base/button/button.scss delete mode 100644 WebContent/VAADIN/themes/base/caption/caption.css create mode 100644 WebContent/VAADIN/themes/base/caption/caption.scss delete mode 100644 WebContent/VAADIN/themes/base/common/common.css create mode 100644 WebContent/VAADIN/themes/base/common/common.scss delete mode 100644 WebContent/VAADIN/themes/base/csslayout/csslayout.css create mode 100644 WebContent/VAADIN/themes/base/csslayout/csslayout.scss delete mode 100644 WebContent/VAADIN/themes/base/customcomponent/customcomponent.css create mode 100644 WebContent/VAADIN/themes/base/customcomponent/customcomponent.scss delete mode 100644 WebContent/VAADIN/themes/base/customlayout/customlayout.css create mode 100644 WebContent/VAADIN/themes/base/customlayout/customlayout.scss delete mode 100644 WebContent/VAADIN/themes/base/datefield/datefield.css create mode 100644 WebContent/VAADIN/themes/base/datefield/datefield.scss delete mode 100644 WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.css create mode 100644 WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.scss delete mode 100644 WebContent/VAADIN/themes/base/embedded/embedded.css create mode 100644 WebContent/VAADIN/themes/base/embedded/embedded.scss delete mode 100644 WebContent/VAADIN/themes/base/formlayout/formlayout.css create mode 100644 WebContent/VAADIN/themes/base/formlayout/formlayout.scss delete mode 100644 WebContent/VAADIN/themes/base/gridlayout/gridlayout.css create mode 100644 WebContent/VAADIN/themes/base/gridlayout/gridlayout.scss delete mode 100644 WebContent/VAADIN/themes/base/label/label.css create mode 100644 WebContent/VAADIN/themes/base/label/label.scss delete mode 100644 WebContent/VAADIN/themes/base/link/link.css create mode 100644 WebContent/VAADIN/themes/base/link/link.scss delete mode 100644 WebContent/VAADIN/themes/base/loginform/loginform.css create mode 100644 WebContent/VAADIN/themes/base/loginform/loginform.scss delete mode 100644 WebContent/VAADIN/themes/base/menubar/menubar.css create mode 100644 WebContent/VAADIN/themes/base/menubar/menubar.scss delete mode 100644 WebContent/VAADIN/themes/base/notification/notification.css create mode 100644 WebContent/VAADIN/themes/base/notification/notification.scss delete mode 100644 WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.css create mode 100644 WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.scss delete mode 100644 WebContent/VAADIN/themes/base/paintable/paintable.css create mode 100644 WebContent/VAADIN/themes/base/paintable/paintable.scss delete mode 100644 WebContent/VAADIN/themes/base/panel/panel.css create mode 100644 WebContent/VAADIN/themes/base/panel/panel.scss delete mode 100644 WebContent/VAADIN/themes/base/popupview/popupview.css create mode 100644 WebContent/VAADIN/themes/base/popupview/popupview.scss delete mode 100644 WebContent/VAADIN/themes/base/progressindicator/progressindicator.css create mode 100644 WebContent/VAADIN/themes/base/progressindicator/progressindicator.scss delete mode 100644 WebContent/VAADIN/themes/base/select/select.css create mode 100644 WebContent/VAADIN/themes/base/select/select.scss delete mode 100644 WebContent/VAADIN/themes/base/shadow/shadow.css create mode 100644 WebContent/VAADIN/themes/base/shadow/shadow.scss delete mode 100644 WebContent/VAADIN/themes/base/slider/slider.css create mode 100644 WebContent/VAADIN/themes/base/slider/slider.scss delete mode 100644 WebContent/VAADIN/themes/base/splitpanel/splitpanel.css create mode 100644 WebContent/VAADIN/themes/base/splitpanel/splitpanel.scss create mode 100644 WebContent/VAADIN/themes/base/styles.scss delete mode 100644 WebContent/VAADIN/themes/base/table/table.css create mode 100644 WebContent/VAADIN/themes/base/table/table.scss delete mode 100644 WebContent/VAADIN/themes/base/tabsheet/tabsheet.css create mode 100644 WebContent/VAADIN/themes/base/tabsheet/tabsheet.scss delete mode 100644 WebContent/VAADIN/themes/base/textfield/richtext.css delete mode 100644 WebContent/VAADIN/themes/base/textfield/textfield-normal.css delete mode 100644 WebContent/VAADIN/themes/base/textfield/textfield.css create mode 100644 WebContent/VAADIN/themes/base/textfield/textfield.scss delete mode 100644 WebContent/VAADIN/themes/base/tree/tree-connectors.css delete mode 100644 WebContent/VAADIN/themes/base/tree/tree-default.css delete mode 100644 WebContent/VAADIN/themes/base/tree/tree.css create mode 100644 WebContent/VAADIN/themes/base/tree/tree.scss delete mode 100644 WebContent/VAADIN/themes/base/treetable/treetable.css create mode 100644 WebContent/VAADIN/themes/base/treetable/treetable.scss delete mode 100644 WebContent/VAADIN/themes/base/upload/upload.css create mode 100644 WebContent/VAADIN/themes/base/upload/upload.scss delete mode 100644 WebContent/VAADIN/themes/base/window/window.css create mode 100644 WebContent/VAADIN/themes/base/window/window.scss create mode 100644 WebContent/VAADIN/themes/chameleon/chameleon.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/common/common.css create mode 100644 WebContent/VAADIN/themes/chameleon/common/common.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/accordion/accordion.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/accordion/accordion.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/button/button.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/button/button.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/components.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/components.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/datefield/datefield.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/label/label.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/label/label.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/menubar/menubar.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/menubar/menubar.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/notification/notification.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/notification/notification.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/panel/panel.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/panel/panel.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/popupview/popupview.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/popupview/popupview.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/selects/selects.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/selects/selects.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/slider/slider.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/slider/slider.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/table/table.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/table/table.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/textfield/textfield.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/tree/tree.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/tree/tree.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/components/window/window.css create mode 100644 WebContent/VAADIN/themes/chameleon/components/window/window.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/compound/compound.css create mode 100644 WebContent/VAADIN/themes/chameleon/compound/compound.scss delete mode 100644 WebContent/VAADIN/themes/chameleon/compound/segment/segment.css delete mode 100644 WebContent/VAADIN/themes/chameleon/compound/sidebar-menu/sidebar-menu.css delete mode 100644 WebContent/VAADIN/themes/chameleon/compound/toolbar/toolbar.css create mode 100644 WebContent/VAADIN/themes/chameleon/styles.scss delete mode 100644 WebContent/VAADIN/themes/liferay/accordion/accordion.css create mode 100644 WebContent/VAADIN/themes/liferay/accordion/accordion.scss delete mode 100644 WebContent/VAADIN/themes/liferay/button/button.css create mode 100644 WebContent/VAADIN/themes/liferay/button/button.scss delete mode 100644 WebContent/VAADIN/themes/liferay/common/common.css create mode 100644 WebContent/VAADIN/themes/liferay/common/common.scss delete mode 100644 WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.css create mode 100644 WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.scss delete mode 100644 WebContent/VAADIN/themes/liferay/datefield/datefield.css create mode 100644 WebContent/VAADIN/themes/liferay/datefield/datefield.scss delete mode 100644 WebContent/VAADIN/themes/liferay/formlayout/formlayout.css create mode 100644 WebContent/VAADIN/themes/liferay/formlayout/formlayout.scss create mode 100644 WebContent/VAADIN/themes/liferay/liferay.scss delete mode 100644 WebContent/VAADIN/themes/liferay/menubar/menubar.css create mode 100644 WebContent/VAADIN/themes/liferay/menubar/menubar.scss delete mode 100644 WebContent/VAADIN/themes/liferay/notification/notification.css create mode 100644 WebContent/VAADIN/themes/liferay/notification/notification.scss delete mode 100644 WebContent/VAADIN/themes/liferay/panel/panel.css create mode 100644 WebContent/VAADIN/themes/liferay/panel/panel.scss delete mode 100644 WebContent/VAADIN/themes/liferay/popupview/popupview.css create mode 100644 WebContent/VAADIN/themes/liferay/popupview/popupview.scss delete mode 100644 WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.css create mode 100644 WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.scss delete mode 100644 WebContent/VAADIN/themes/liferay/select/select.css create mode 100644 WebContent/VAADIN/themes/liferay/select/select.scss delete mode 100644 WebContent/VAADIN/themes/liferay/slider/slider.css create mode 100644 WebContent/VAADIN/themes/liferay/slider/slider.scss delete mode 100644 WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.css create mode 100644 WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.scss create mode 100644 WebContent/VAADIN/themes/liferay/styles.scss delete mode 100644 WebContent/VAADIN/themes/liferay/table/table.css create mode 100644 WebContent/VAADIN/themes/liferay/table/table.scss delete mode 100644 WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.css create mode 100644 WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.scss delete mode 100644 WebContent/VAADIN/themes/liferay/textfield/textfield.css create mode 100644 WebContent/VAADIN/themes/liferay/textfield/textfield.scss delete mode 100644 WebContent/VAADIN/themes/liferay/tree/tree.css create mode 100644 WebContent/VAADIN/themes/liferay/tree/tree.scss delete mode 100644 WebContent/VAADIN/themes/liferay/window/window.css create mode 100644 WebContent/VAADIN/themes/liferay/window/window.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.css create mode 100644 WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/accordion/accordion.css create mode 100644 WebContent/VAADIN/themes/reindeer/accordion/accordion.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/button/button-ie.css create mode 100644 WebContent/VAADIN/themes/reindeer/button/button-ie.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/button/button-link-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/button/button-link-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/button/button-primary-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/button/button-primary-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/button/button-small-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/button/button-small-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/button/button-standard.css create mode 100644 WebContent/VAADIN/themes/reindeer/button/button-standard.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/button/button.css create mode 100644 WebContent/VAADIN/themes/reindeer/button/button.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/common/common.css create mode 100644 WebContent/VAADIN/themes/reindeer/common/common.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/datefield/datefield.css create mode 100644 WebContent/VAADIN/themes/reindeer/datefield/datefield.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/formlayout/formlayout.css create mode 100644 WebContent/VAADIN/themes/reindeer/formlayout/formlayout.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/label/label.css create mode 100644 WebContent/VAADIN/themes/reindeer/label/label.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/layouts/layouts.css create mode 100644 WebContent/VAADIN/themes/reindeer/layouts/layouts.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/link/link.css create mode 100644 WebContent/VAADIN/themes/reindeer/link/link.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/menubar/menubar.css create mode 100644 WebContent/VAADIN/themes/reindeer/menubar/menubar.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/notification/notification.css create mode 100644 WebContent/VAADIN/themes/reindeer/notification/notification.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/panel/panel.css create mode 100644 WebContent/VAADIN/themes/reindeer/panel/panel.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/popupview/popupview.css create mode 100644 WebContent/VAADIN/themes/reindeer/popupview/popupview.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.css create mode 100644 WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.scss create mode 100644 WebContent/VAADIN/themes/reindeer/reindeer.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/select/select.css create mode 100644 WebContent/VAADIN/themes/reindeer/select/select.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/slider/slider.css create mode 100644 WebContent/VAADIN/themes/reindeer/slider/slider.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.css create mode 100644 WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.scss create mode 100644 WebContent/VAADIN/themes/reindeer/styles.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/table/table.css create mode 100644 WebContent/VAADIN/themes/reindeer/table/table.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.css create mode 100644 WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/textfield/textfield.css create mode 100644 WebContent/VAADIN/themes/reindeer/textfield/textfield.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/tree/tree.css create mode 100644 WebContent/VAADIN/themes/reindeer/tree/tree.scss delete mode 100644 WebContent/VAADIN/themes/reindeer/window/window.css create mode 100644 WebContent/VAADIN/themes/reindeer/window/window.scss delete mode 100644 WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.css create mode 100644 WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.scss delete mode 100644 WebContent/VAADIN/themes/runo/accordion/accordion.css create mode 100644 WebContent/VAADIN/themes/runo/accordion/accordion.scss delete mode 100644 WebContent/VAADIN/themes/runo/button/button.css create mode 100644 WebContent/VAADIN/themes/runo/button/button.scss delete mode 100644 WebContent/VAADIN/themes/runo/caption/caption.css create mode 100644 WebContent/VAADIN/themes/runo/caption/caption.scss delete mode 100644 WebContent/VAADIN/themes/runo/common/common.css create mode 100644 WebContent/VAADIN/themes/runo/common/common.scss delete mode 100644 WebContent/VAADIN/themes/runo/datefield/datefield.css create mode 100644 WebContent/VAADIN/themes/runo/datefield/datefield.scss delete mode 100644 WebContent/VAADIN/themes/runo/formlayout/formlayout.css create mode 100644 WebContent/VAADIN/themes/runo/formlayout/formlayout.scss delete mode 100644 WebContent/VAADIN/themes/runo/gridlayout/gridlayout.css create mode 100644 WebContent/VAADIN/themes/runo/gridlayout/gridlayout.scss delete mode 100644 WebContent/VAADIN/themes/runo/label/label.css create mode 100644 WebContent/VAADIN/themes/runo/label/label.scss delete mode 100644 WebContent/VAADIN/themes/runo/link/link.css create mode 100644 WebContent/VAADIN/themes/runo/link/link.scss delete mode 100644 WebContent/VAADIN/themes/runo/menubar/menubar.css create mode 100644 WebContent/VAADIN/themes/runo/menubar/menubar.scss delete mode 100644 WebContent/VAADIN/themes/runo/notification/notification.css create mode 100644 WebContent/VAADIN/themes/runo/notification/notification.scss delete mode 100644 WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.css create mode 100644 WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.scss delete mode 100644 WebContent/VAADIN/themes/runo/panel/panel.css create mode 100644 WebContent/VAADIN/themes/runo/panel/panel.scss delete mode 100644 WebContent/VAADIN/themes/runo/popupview/popupview.css create mode 100644 WebContent/VAADIN/themes/runo/popupview/popupview.scss delete mode 100644 WebContent/VAADIN/themes/runo/progressindicator/progressindicator.css create mode 100644 WebContent/VAADIN/themes/runo/progressindicator/progressindicator.scss create mode 100644 WebContent/VAADIN/themes/runo/runo.scss delete mode 100644 WebContent/VAADIN/themes/runo/select/select.css create mode 100644 WebContent/VAADIN/themes/runo/select/select.scss delete mode 100644 WebContent/VAADIN/themes/runo/shadow/shadow.css create mode 100644 WebContent/VAADIN/themes/runo/shadow/shadow.scss delete mode 100644 WebContent/VAADIN/themes/runo/slider/slider.css create mode 100644 WebContent/VAADIN/themes/runo/slider/slider.scss delete mode 100644 WebContent/VAADIN/themes/runo/splitpanel/splitpanel.css create mode 100644 WebContent/VAADIN/themes/runo/splitpanel/splitpanel.scss create mode 100644 WebContent/VAADIN/themes/runo/styles.scss delete mode 100644 WebContent/VAADIN/themes/runo/table/table.css create mode 100644 WebContent/VAADIN/themes/runo/table/table.scss delete mode 100644 WebContent/VAADIN/themes/runo/tabsheet/tabsheet.css create mode 100644 WebContent/VAADIN/themes/runo/tabsheet/tabsheet.scss delete mode 100644 WebContent/VAADIN/themes/runo/textfield/textfield.css create mode 100644 WebContent/VAADIN/themes/runo/textfield/textfield.scss delete mode 100644 WebContent/VAADIN/themes/runo/tree/tree.css create mode 100644 WebContent/VAADIN/themes/runo/tree/tree.scss delete mode 100644 WebContent/VAADIN/themes/runo/window/window.css create mode 100644 WebContent/VAADIN/themes/runo/window/window.scss diff --git a/WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.css b/WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.css deleted file mode 100644 index 4373c52922..0000000000 --- a/WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.css +++ /dev/null @@ -1,15 +0,0 @@ -.v-absolutelayout-wrapper { - position: absolute; - overflow: hidden; -} -.v-absolutelayout-margin, .v-absolutelayout-canvas { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-absolutelayout.v-has-height > div, .v-absolutelayout.v-has-height > div > div { - height: 100%; -} -.v-absolutelayout.v-has-width > div, .v-absolutelayout.v-has-width > div > div { - width: 100%; -} diff --git a/WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.scss b/WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.scss new file mode 100644 index 0000000000..ddb030c00f --- /dev/null +++ b/WebContent/VAADIN/themes/base/absolutelayout/absolutelayout.scss @@ -0,0 +1,19 @@ +@mixin base-absolutelayout { + +.v-absolutelayout-wrapper { + position: absolute; + overflow: hidden; +} +.v-absolutelayout-margin, .v-absolutelayout-canvas { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-absolutelayout.v-has-height > div, .v-absolutelayout.v-has-height > div > div { + height: 100%; +} +.v-absolutelayout.v-has-width > div, .v-absolutelayout.v-has-width > div > div { + width: 100%; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/accordion/accordion.css b/WebContent/VAADIN/themes/base/accordion/accordion.css deleted file mode 100644 index ad762ee0ac..0000000000 --- a/WebContent/VAADIN/themes/base/accordion/accordion.css +++ /dev/null @@ -1,26 +0,0 @@ -.v-accordion { - position: relative; - outline: none; - overflow: hidden; - text-align: left /* Force default alignment */ -} -.v-accordion-item { - position: relative; - zoom: 1; -} -.v-accordion-item-caption { - overflow: hidden; - white-space: nowrap; - background: #eee; - border-bottom: 1px solid #ddd; -} -.v-accordion-item-caption .v-caption { - cursor: pointer; -} -.v-accordion-item-open .v-accordion-item-caption .v-caption { - cursor: default; -} -.v-accordion-item-content { - position: absolute; - width: 100%; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/accordion/accordion.scss b/WebContent/VAADIN/themes/base/accordion/accordion.scss new file mode 100644 index 0000000000..6f4825f16b --- /dev/null +++ b/WebContent/VAADIN/themes/base/accordion/accordion.scss @@ -0,0 +1,30 @@ +@mixin base-accordion { + +.v-accordion { + position: relative; + outline: none; + overflow: hidden; + text-align: left; /* Force default alignment */ +} +.v-accordion-item { + position: relative; + zoom: 1; +} +.v-accordion-item-caption { + overflow: hidden; + white-space: nowrap; + background: #eee; + border-bottom: 1px solid #ddd; +} +.v-accordion-item-caption .v-caption { + cursor: pointer; +} +.v-accordion-item-open .v-accordion-item-caption .v-caption { + cursor: default; +} +.v-accordion-item-content { + position: absolute; + width: 100%; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/base.scss b/WebContent/VAADIN/themes/base/base.scss new file mode 100644 index 0000000000..58f0c32af7 --- /dev/null +++ b/WebContent/VAADIN/themes/base/base.scss @@ -0,0 +1,34 @@ +@import "absolutelayout/absolutelayout.scss"; +@import "accordion/accordion.scss"; +@import "button/button.scss"; +@import "caption/caption.scss"; +@import "common/common.scss"; +@import "csslayout/csslayout.scss"; +@import "customcomponent/customcomponent.scss"; +@import "customlayout/customlayout.scss"; +@import "datefield/datefield.scss"; +@import "dragwrapper/dragwrapper.scss"; +@import "embedded/embedded.scss"; +@import "formlayout/formlayout.scss"; +@import "gridlayout/gridlayout.scss"; +@import "label/label.scss"; +@import "link/link.scss"; +@import "loginform/loginform.scss"; +@import "menubar/menubar.scss"; +@import "notification/notification.scss"; +@import "orderedlayout/orderedlayout.scss"; +@import "paintable/paintable.scss"; +@import "panel/panel.scss"; +@import "popupview/popupview.scss"; +@import "progressindicator/progressindicator.scss"; +@import "select/select.scss"; +@import "shadow/shadow.scss"; +@import "slider/slider.scss"; +@import "splitpanel/splitpanel.scss"; +@import "table/table.scss"; +@import "tabsheet/tabsheet.scss"; +@import "textfield/textfield.scss"; +@import "tree/tree.scss"; +@import "treetable/treetable.scss"; +@import "upload/upload.scss"; +@import "window/window.scss"; diff --git a/WebContent/VAADIN/themes/base/button/button.css b/WebContent/VAADIN/themes/base/button/button.css deleted file mode 100644 index 2e14d59a90..0000000000 --- a/WebContent/VAADIN/themes/base/button/button.css +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Default button (more customizable) - * -------------------------------------- */ -.v-button { - display: inline-block; - zoom: 1; - text-align: center; - text-decoration: none; - border: 2px outset #ddd; - background: #eee; - cursor: pointer; - white-space: nowrap; - margin: 0; - padding: .2em 1em; - color: inherit; - font: inherit; - line-height: normal; - -khtml-user-select: none; - -moz-user-select: none; - -ie-user-select: none; - user-select: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} - -.v-button.v-disabled { - cursor: default; -} - -.v-button-wrap, -.v-button-caption { - vertical-align: middle; - white-space: nowrap; - font: inherit; - color: inherit; - line-height: normal; - } - -.v-button .v-icon, -.v-nativebutton .v-icon { - vertical-align: middle; - margin-right: 3px; - border: none; - } - -.v-button .v-errorindicator, -.v-nativebutton .v-errorindicator { - display: inline-block; - zoom: 1; - vertical-align: middle; - float: none; -} - -/* Link style (we really should deprecate this) */ -.v-button-link, -.v-nativebutton-link { - border: none; - text-align: left; - background: transparent; - padding: 0; - color: inherit; - -khtml-user-select: text; - -moz-user-select: text; - -ie-user-select: text; - user-select: text; -} - -/* Inset Safari focus outline a bit */ -.v-sa .v-button-link:focus{ - outline-offset: -3px; - } - -.v-button-link .v-button-caption, -.v-nativebutton-link .v-nativebutton-caption { - text-decoration: underline; - color: inherit; - text-align: left; - } - - -/* - * NativeButton styles (html button element) - * -------------------------------------- */ -.v-nativebutton { - text-align: center; - cursor: pointer; - white-space: nowrap; - margin: 0; - color: inherit; - font: inherit; - line-height: normal; - } -.v-nativebutton .v-nativebutton-caption { - vertical-align: middle; - white-space: nowrap; - font: inherit; - color: inherit; - } - -.v-nativebutton .v-icon { - vertical-align: middle; - margin-right: 3px; - } - -.v-nativebutton .v-errorindicator { - display: inline-block; - zoom: 1; - float: none; -} -/* Fixes stretched buttons in IE7*/ -.v-ie .v-nativebutton { - overflow: visible; - padding-left: 1em; - padding-right: 1em; -} - -.v-ie .v-nativebutton-link { - padding: 0; -} - -/* - * Checkbox styles - * -------------------------------------- */ - - .v-checkbox { - display: block; - } - -.v-checkbox, -.v-checkbox label, -.v-checkbox input, -.v-checkbox .v-icon { - vertical-align: middle; - white-space: nowrap; -} - -.v-checkbox .v-icon { - margin: 0 2px; -} -.v-checkbox .v-errorindicator { - float: none; - display: inline; - display: inline-block; - zoom: 1; -} - - -/* Disabled by default -.v-checkbox-error { - background: #ffe0e0; -} -*/ -/* Disabled by default -.v-checkbox-required { - background: #ffe0e0; -} -*/ \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/button/button.scss b/WebContent/VAADIN/themes/base/button/button.scss new file mode 100644 index 0000000000..1d3c4abec1 --- /dev/null +++ b/WebContent/VAADIN/themes/base/button/button.scss @@ -0,0 +1,163 @@ +@mixin base-button { + +/* + * Default button (more customizable) + * -------------------------------------- */ +.v-button { + display: inline-block; + zoom: 1; + text-align: center; + text-decoration: none; + border: 2px outset #ddd; + background: #eee; + cursor: pointer; + white-space: nowrap; + margin: 0; + padding: .2em 1em; + color: inherit; + font: inherit; + line-height: normal; + -khtml-user-select: none; + -moz-user-select: none; + -ie-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.v-button.v-disabled { + cursor: default; +} + +.v-button-wrap, +.v-button-caption { + vertical-align: middle; + white-space: nowrap; + font: inherit; + color: inherit; + line-height: normal; + } + +.v-button .v-icon, +.v-nativebutton .v-icon { + vertical-align: middle; + margin-right: 3px; + border: none; + } + +.v-button .v-errorindicator, +.v-nativebutton .v-errorindicator { + display: inline-block; + zoom: 1; + vertical-align: middle; + float: none; +} + +/* Link style (we really should deprecate this) */ +.v-button-link, +.v-nativebutton-link { + border: none; + text-align: left; + background: transparent; + padding: 0; + color: inherit; + -khtml-user-select: text; + -moz-user-select: text; + -ie-user-select: text; + user-select: text; +} + +/* Inset Safari focus outline a bit */ +.v-sa .v-button-link:focus{ + outline-offset: -3px; + } + +.v-button-link .v-button-caption, +.v-nativebutton-link .v-nativebutton-caption { + text-decoration: underline; + color: inherit; + text-align: left; + } + + +/* + * NativeButton styles (html button element) + * -------------------------------------- */ +.v-nativebutton { + text-align: center; + cursor: pointer; + white-space: nowrap; + margin: 0; + color: inherit; + font: inherit; + line-height: normal; + } +.v-nativebutton .v-nativebutton-caption { + vertical-align: middle; + white-space: nowrap; + font: inherit; + color: inherit; + } + +.v-nativebutton .v-icon { + vertical-align: middle; + margin-right: 3px; + } + +.v-nativebutton .v-errorindicator { + display: inline-block; + zoom: 1; + float: none; +} +/* Fixes stretched buttons in IE7*/ +.v-ie .v-nativebutton { + overflow: visible; + padding-left: 1em; + padding-right: 1em; +} + +.v-ie .v-nativebutton-link { + padding: 0; +} + +/* + * Checkbox styles + * -------------------------------------- */ + + .v-checkbox { + display: block; + } + +.v-checkbox, +.v-checkbox label, +.v-checkbox input, +.v-checkbox .v-icon { + vertical-align: middle; + white-space: nowrap; +} + +.v-checkbox .v-icon { + margin: 0 2px; +} +.v-checkbox .v-errorindicator { + float: none; + display: inline; + display: inline-block; + zoom: 1; +} + + +/* Disabled by default +.v-checkbox-error { + background: #ffe0e0; +} +*/ +/* Disabled by default +.v-checkbox-required { + background: #ffe0e0; +} +*/ + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/caption/caption.css b/WebContent/VAADIN/themes/base/caption/caption.css deleted file mode 100644 index 364b68a226..0000000000 --- a/WebContent/VAADIN/themes/base/caption/caption.css +++ /dev/null @@ -1,23 +0,0 @@ -.v-captionwrapper { - text-align: left; /* Force default alignment */ -} -.v-caption { - overflow: hidden; - white-space: nowrap; -} -.v-errorindicator { - display: inline-block; -} -.v-caption .v-icon { - display: inline-block; - padding-right: 2px; - vertical-align: middle; -} -.v-caption .v-captiontext { - display: inline-block; - overflow: hidden; - vertical-align: middle; -} -.v-caption .v-required-field-indicator { - display: inline-block; -} diff --git a/WebContent/VAADIN/themes/base/caption/caption.scss b/WebContent/VAADIN/themes/base/caption/caption.scss new file mode 100644 index 0000000000..c6fd124ad6 --- /dev/null +++ b/WebContent/VAADIN/themes/base/caption/caption.scss @@ -0,0 +1,27 @@ +@mixin base-caption { + +.v-captionwrapper { + text-align: left; /* Force default alignment */ +} +.v-caption { + overflow: hidden; + white-space: nowrap; +} +.v-errorindicator { + display: inline-block; +} +.v-caption .v-icon { + display: inline-block; + padding-right: 2px; + vertical-align: middle; +} +.v-caption .v-captiontext { + display: inline-block; + overflow: hidden; + vertical-align: middle; +} +.v-caption .v-required-field-indicator { + display: inline-block; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/common/common.css b/WebContent/VAADIN/themes/base/common/common.css deleted file mode 100644 index d2695a8015..0000000000 --- a/WebContent/VAADIN/themes/base/common/common.css +++ /dev/null @@ -1,251 +0,0 @@ -/* References the BODY tag generated by Vaadin application servlet */ -.v-generated-body { - width: 100%; - height: 100%; - border: 0; - margin: 0; - overflow: hidden; -} -.v-app { - height: 100%; -} -/* Force arrow cursor for all elements inside the app */ -.v-app, -.v-window, -.v-popupview-popup, -.v-label, -.v-caption { - cursor: default; -} -div.v-app-loading { - /* You can use this to provide indication for the user that the application is loading. */ - /* It is applied to the same element as .v-app */ - background-image: url(img/loading-indicator.gif); - background-repeat: no-repeat; - background-position: 50%; - width: 100%; - height: 100%; -} -.v-view { - height: 100%; - width: 100%; - /* avoid scrollbars with margins in root layout */ - outline: none; - position: relative; -} -/* Prevent margin collapse */ -.v-view.v-view-embedded { - margin-top: -1px; - border-top: 1px solid transparent; -} -/** - * Try to handle printing somehow. Reasonable printing support - * needs application specific planning and CSS tuning. - */ -@media print { - .v-generated-body { - height: auto; - min-height: 20cm; - overflow: visible; - } - .v-app { - height: auto; - min-height: 20cm; - } - .v-view { - overflow: visible; - } - .v-gridlayout { - overflow: visible !important; - } -} -.v-view:active, -.v-view:focus { - outline: none; -} -.v-app select, -.v-window select { - margin: 0; -} -.v-disabled { - opacity: .3; - filter: alpha(opacity=30); - cursor: default; -} -.v-disabled * { - cursor: default; -} -* html .v-disabled { - zoom: 1; -} -*+html .v-disabled { - zoom: 1; -} -.v-disabled .v-disabled { - opacity: 1; -} -.v-required-field-indicator { - padding-left: 2px; - color: red; -} -.v-form fieldset { - border: none; - padding: 0; - margin: 0; - height: 100%; -} -.v-form-content { - height: 100%; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -/* Field modified */ /* Disabled by default -.v-modified, -.v-richtextarea.v-modified iframe.gwt-RichTextArea, -.v-checkbox.v-modified, -.v-modified .v-select-option, -.v-modified .v-textfield, -.v-modified .v-datefield-calendarpanel, -.v-modified .v-select-select, -.v-modified .v-select-twincol-selections, -.v-modified .v-select-twincol-options, -.v-modified .v-slider-base { - background: #ffffe0; -} -*/ -.v-tooltip { - cursor: default; - background: #fff; -} -.v-tooltip-text { - overflow: auto; -} -.v-tooltip .v-errormessage { - overflow: auto; -} -.v-contextmenu { - background: #fff; -} -.v-contextmenu .gwt-MenuItem { - cursor: pointer; - vertical-align: middle; - padding: 0; - border: 0; - margin: 0; -} -.v-contextmenu .gwt-MenuItem div { - cursor: pointer; - vertical-align: middle; - white-space: nowrap; -} -.v-contextmenu .gwt-MenuItem-selected div { - background: #aaa; - color: #fff; -} -.v-contextmenu table { - border-collapse: collapse; - margin: 0; - padding: 0; -} -.v-contextmenu .gwt-MenuItem img { - margin-right: 1em; - vertical-align: middle; -} -/* Margins are not supported within Label */ -.v-label pre { - margin: 0; -} -/* A label with undefined width is always considered to be on one line */ -.v-label-undef-w { - white-space: nowrap; -} -/* Revert line-height for heading elements inside labels */ -.v-label h1, -.v-label h2, -.v-label h3, -.v-label h4, -.v-label h5, -.v-label h6 { - line-height: normal; -} -/* Loading indicator states - * Note: client side expects that loading indicator has a height. It depends on - * this css property to ensure browsers have applied all required styles. - */ -.v-loading-indicator, -.v-loading-indicator-delay, -.v-loading-indicator-wait { - position: absolute; - top: 0; - right: 0; - z-index: 30000; - width: 31px; - height: 31px; - background: transparent url(img/loading-indicator.gif); - margin-right: 5px; - margin-top: 5px; -} -.v-loading-indicator-delay { - background-image: url(img/loading-indicator-delay.gif); -} -.v-loading-indicator-wait { - background-image: url(img/loading-indicator-wait.gif); -} -/* Debug dialog */ -.v-debug-console { - background: #fff; - opacity: .9; - border: 1px solid #000; - font-family: sans-serif; -} -.v-debug-console-caption { - background: #000; - border-bottom: 1px solid grey; - color: white; - font-weight: bold; -} -.v-debug-console-content { - font-size: x-small; - overflow: auto; - white-space: pre; -} -.v-debug-console-content input { - font-size: xx-small; -} -/* Debug style */ -.v-app .invalidlayout, -.v-app .invalidlayout * { - background: #f99 !important; -} -/* Fix for Liferay, issue #2384 */ -.v-app input[type="text"], -.v-app input[type="password"], -.v-app input[type="reset"], -.v-app select, -.v-app textarea , -.v-window input[type="text"], -.v-window input[type="password"], -.v-window input[type="reset"], -.v-window select, -.v-window textarea { - padding: 2px; -} - -.v-drag-element { - z-index: 60000; - /* override any other position: properties */ - position: absolute !important; - opacity: 0.5; - filter: alpha(opacity=50); - cursor: default; -} - -.v-clip { - overflow: hidden; -} - -.v-scrollable { - overflow: auto; -} diff --git a/WebContent/VAADIN/themes/base/common/common.scss b/WebContent/VAADIN/themes/base/common/common.scss new file mode 100644 index 0000000000..40bea2c9d6 --- /dev/null +++ b/WebContent/VAADIN/themes/base/common/common.scss @@ -0,0 +1,255 @@ +@mixin base-common { + +/* References the BODY tag generated by Vaadin application servlet */ +.v-generated-body { + width: 100%; + height: 100%; + border: 0; + margin: 0; + overflow: hidden; +} +.v-app { + height: 100%; +} +/* Force arrow cursor for all elements inside the app */ +.v-app, +.v-window, +.v-popupview-popup, +.v-label, +.v-caption { + cursor: default; +} +div.v-app-loading { + /* You can use this to provide indication for the user that the application is loading. */ + /* It is applied to the same element as .v-app */ + background-image: url(img/loading-indicator.gif); + background-repeat: no-repeat; + background-position: 50%; + width: 100%; + height: 100%; +} +.v-view { + height: 100%; + width: 100%; + /* avoid scrollbars with margins in root layout */ + outline: none; + position: relative; +} +/* Prevent margin collapse */ +.v-view.v-view-embedded { + margin-top: -1px; + border-top: 1px solid transparent; +} +/** + * Try to handle printing somehow. Reasonable printing support + * needs application specific planning and CSS tuning. + */ +@media print { + .v-generated-body { + height: auto; + min-height: 20cm; + overflow: visible; + } + .v-app { + height: auto; + min-height: 20cm; + } + .v-view { + overflow: visible; + } + .v-gridlayout { + overflow: visible !important; + } +} +.v-view:active, +.v-view:focus { + outline: none; +} +.v-app select, +.v-window select { + margin: 0; +} +.v-disabled { + opacity: .3; + filter: alpha(opacity=30); + cursor: default; +} +.v-disabled * { + cursor: default; +} +* html .v-disabled { + zoom: 1; +} +*+html .v-disabled { + zoom: 1; +} +.v-disabled .v-disabled { + opacity: 1; +} +.v-required-field-indicator { + padding-left: 2px; + color: red; +} +.v-form fieldset { + border: none; + padding: 0; + margin: 0; + height: 100%; +} +.v-form-content { + height: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +/* Field modified */ /* Disabled by default +.v-modified, +.v-richtextarea.v-modified iframe.gwt-RichTextArea, +.v-checkbox.v-modified, +.v-modified .v-select-option, +.v-modified .v-textfield, +.v-modified .v-datefield-calendarpanel, +.v-modified .v-select-select, +.v-modified .v-select-twincol-selections, +.v-modified .v-select-twincol-options, +.v-modified .v-slider-base { + background: #ffffe0; +} +*/ +.v-tooltip { + cursor: default; + background: #fff; +} +.v-tooltip-text { + overflow: auto; +} +.v-tooltip .v-errormessage { + overflow: auto; +} +.v-contextmenu { + background: #fff; +} +.v-contextmenu .gwt-MenuItem { + cursor: pointer; + vertical-align: middle; + padding: 0; + border: 0; + margin: 0; +} +.v-contextmenu .gwt-MenuItem div { + cursor: pointer; + vertical-align: middle; + white-space: nowrap; +} +.v-contextmenu .gwt-MenuItem-selected div { + background: #aaa; + color: #fff; +} +.v-contextmenu table { + border-collapse: collapse; + margin: 0; + padding: 0; +} +.v-contextmenu .gwt-MenuItem img { + margin-right: 1em; + vertical-align: middle; +} +/* Margins are not supported within Label */ +.v-label pre { + margin: 0; +} +/* A label with undefined width is always considered to be on one line */ +.v-label-undef-w { + white-space: nowrap; +} +/* Revert line-height for heading elements inside labels */ +.v-label h1, +.v-label h2, +.v-label h3, +.v-label h4, +.v-label h5, +.v-label h6 { + line-height: normal; +} +/* Loading indicator states + * Note: client side expects that loading indicator has a height. It depends on + * this css property to ensure browsers have applied all required styles. + */ +.v-loading-indicator, +.v-loading-indicator-delay, +.v-loading-indicator-wait { + position: absolute; + top: 0; + right: 0; + z-index: 30000; + width: 31px; + height: 31px; + background: transparent url(img/loading-indicator.gif); + margin-right: 5px; + margin-top: 5px; +} +.v-loading-indicator-delay { + background-image: url(img/loading-indicator-delay.gif); +} +.v-loading-indicator-wait { + background-image: url(img/loading-indicator-wait.gif); +} +/* Debug dialog */ +.v-debug-console { + background: #fff; + opacity: .9; + border: 1px solid #000; + font-family: sans-serif; +} +.v-debug-console-caption { + background: #000; + border-bottom: 1px solid grey; + color: white; + font-weight: bold; +} +.v-debug-console-content { + font-size: x-small; + overflow: auto; + white-space: pre; +} +.v-debug-console-content input { + font-size: xx-small; +} +/* Debug style */ +.v-app .invalidlayout, +.v-app .invalidlayout * { + background: #f99 !important; +} +/* Fix for Liferay, issue #2384 */ +.v-app input[type="text"], +.v-app input[type="password"], +.v-app input[type="reset"], +.v-app select, +.v-app textarea , +.v-window input[type="text"], +.v-window input[type="password"], +.v-window input[type="reset"], +.v-window select, +.v-window textarea { + padding: 2px; +} + +.v-drag-element { + z-index: 60000; + /* override any other position: properties */ + position: absolute !important; + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} + +.v-clip { + overflow: hidden; +} + +.v-scrollable { + overflow: auto; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/csslayout/csslayout.css b/WebContent/VAADIN/themes/base/csslayout/csslayout.css deleted file mode 100644 index 064edd28a4..0000000000 --- a/WebContent/VAADIN/themes/base/csslayout/csslayout.css +++ /dev/null @@ -1,28 +0,0 @@ -.v-csslayout { - overflow: hidden; -} -.v-csslayout-margin, .v-csslayout-container { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-has-width > .v-csslayout-margin, -.v-has-width > .v-csslayout-margin > .v-csslayout-container { - width: 100%; -} -.v-has-height > .v-csslayout-margin, -.v-has-height > .v-csslayout-margin > .v-csslayout-container { - height: 100%; -} -.v-csslayout-margin-top { - padding-top: 12px; -} -.v-csslayout-margin-bottom { - padding-bottom: 12px; -} -.v-csslayout-margin-left { - padding-left: 12px; -} -.v-csslayout-margin-right { - padding-right: 12px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/csslayout/csslayout.scss b/WebContent/VAADIN/themes/base/csslayout/csslayout.scss new file mode 100644 index 0000000000..7bd26d4197 --- /dev/null +++ b/WebContent/VAADIN/themes/base/csslayout/csslayout.scss @@ -0,0 +1,32 @@ +@mixin base-csslayout { + +.v-csslayout { + overflow: hidden; +} +.v-csslayout-margin, .v-csslayout-container { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-has-width > .v-csslayout-margin, +.v-has-width > .v-csslayout-margin > .v-csslayout-container { + width: 100%; +} +.v-has-height > .v-csslayout-margin, +.v-has-height > .v-csslayout-margin > .v-csslayout-container { + height: 100%; +} +.v-csslayout-margin-top { + padding-top: 12px; +} +.v-csslayout-margin-bottom { + padding-bottom: 12px; +} +.v-csslayout-margin-left { + padding-left: 12px; +} +.v-csslayout-margin-right { + padding-right: 12px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/customcomponent/customcomponent.css b/WebContent/VAADIN/themes/base/customcomponent/customcomponent.css deleted file mode 100644 index f6cfd31390..0000000000 --- a/WebContent/VAADIN/themes/base/customcomponent/customcomponent.css +++ /dev/null @@ -1,3 +0,0 @@ -.v-customcomponent { - overflow: hidden; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/customcomponent/customcomponent.scss b/WebContent/VAADIN/themes/base/customcomponent/customcomponent.scss new file mode 100644 index 0000000000..aaf3e75251 --- /dev/null +++ b/WebContent/VAADIN/themes/base/customcomponent/customcomponent.scss @@ -0,0 +1,7 @@ +@mixin base-customcomponent { + +.v-customcomponent { + overflow: hidden; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/customlayout/customlayout.css b/WebContent/VAADIN/themes/base/customlayout/customlayout.css deleted file mode 100644 index b9c20dbbf8..0000000000 --- a/WebContent/VAADIN/themes/base/customlayout/customlayout.css +++ /dev/null @@ -1,3 +0,0 @@ -.v-customlayout { - overflow: hidden; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/customlayout/customlayout.scss b/WebContent/VAADIN/themes/base/customlayout/customlayout.scss new file mode 100644 index 0000000000..26e1538d29 --- /dev/null +++ b/WebContent/VAADIN/themes/base/customlayout/customlayout.scss @@ -0,0 +1,7 @@ +@mixin base-customlayout { + +.v-customlayout { + overflow: hidden; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/datefield/datefield.css b/WebContent/VAADIN/themes/base/datefield/datefield.css deleted file mode 100644 index 7af440c735..0000000000 --- a/WebContent/VAADIN/themes/base/datefield/datefield.css +++ /dev/null @@ -1,89 +0,0 @@ -.v-datefield { - white-space: nowrap; - float: left; /* Force minimum width */ -} -.v-datefield-textfield { - vertical-align: top; -} -.v-datefield-button { - cursor: pointer; -} -.v-datefield-prompt .v-datefield-textfield { - color: #999; - font-style: italic; -} -.v-datefield .v-datefield-button-readonly { - display: none; -} -.v-datefield-calendarpanel table { - width: 100%; -} -.v-datefield-calendarpanel td { - padding: 0; - margin: 0; -} -.v-datefield-calendarpanel:focus { - outline:none; -} -.v-datefield-calendarpanel-header td { - text-align: center; -} -.v-datefield-calendarpanel-month { - text-align: center; - white-space: nowrap; -} -.v-datefield-calendarpanel-weeknumber { - color: #999; - border-right: 1px solid #ddd; - font-size: 0.9em; -} -.v-datefield-calendarpanel-day, -.v-datefield-calendarpanel-day-today { - cursor: pointer; -} -.v-datefield-calendarpanel-day-today { - border: 1px solid #ddd; -} -.v-disabled .v-datefield-calendarpanel-day, -.v-disabled .v-datefield-calendarpanel-day-today { - cursor: default; -} -.v-datefield-calendarpanel-day-disabled { - cursor: default; - opacity: .5; -} -.v-datefield-calendarpanel-day-selected { - cursor: default; - background: #333; - color: #fff; -} -.v-datefield-calendarpanel-day-focused { - outline: 1px dotted black; -} -.v-datefield-calendarpanel-day-offmonth { - color: #666; -} - -.v-datefield-time { - white-space: nowrap; -} -.v-datefield-time .v-label { - display: inline; -} -.v-datefield-popup { - background: #fff; -} -/* Disabled by default -.v-datefield-error .v-textfield, -.v-datefield-error .v-datefield-calendarpanel { - background: #ffe0e0; -} -*/ - -/* Disabled by default -.v-datefield-required .v-textfield, -.v-datefield-required .v-datefield-calendarpanel { - background:transparent; - background-color: #ffe0e0; -} -*/ diff --git a/WebContent/VAADIN/themes/base/datefield/datefield.scss b/WebContent/VAADIN/themes/base/datefield/datefield.scss new file mode 100644 index 0000000000..12ce3df980 --- /dev/null +++ b/WebContent/VAADIN/themes/base/datefield/datefield.scss @@ -0,0 +1,93 @@ +@mixin base-datefield { + +.v-datefield { + white-space: nowrap; + float: left; /* Force minimum width */ +} +.v-datefield-textfield { + vertical-align: top; +} +.v-datefield-button { + cursor: pointer; +} +.v-datefield-prompt .v-datefield-textfield { + color: #999; + font-style: italic; +} +.v-datefield .v-datefield-button-readonly { + display: none; +} +.v-datefield-calendarpanel table { + width: 100%; +} +.v-datefield-calendarpanel td { + padding: 0; + margin: 0; +} +.v-datefield-calendarpanel:focus { + outline:none; +} +.v-datefield-calendarpanel-header td { + text-align: center; +} +.v-datefield-calendarpanel-month { + text-align: center; + white-space: nowrap; +} +.v-datefield-calendarpanel-weeknumber { + color: #999; + border-right: 1px solid #ddd; + font-size: 0.9em; +} +.v-datefield-calendarpanel-day, +.v-datefield-calendarpanel-day-today { + cursor: pointer; +} +.v-datefield-calendarpanel-day-today { + border: 1px solid #ddd; +} +.v-disabled .v-datefield-calendarpanel-day, +.v-disabled .v-datefield-calendarpanel-day-today { + cursor: default; +} +.v-datefield-calendarpanel-day-disabled { + cursor: default; + opacity: .5; +} +.v-datefield-calendarpanel-day-selected { + cursor: default; + background: #333; + color: #fff; +} +.v-datefield-calendarpanel-day-focused { + outline: 1px dotted black; +} +.v-datefield-calendarpanel-day-offmonth { + color: #666; +} + +.v-datefield-time { + white-space: nowrap; +} +.v-datefield-time .v-label { + display: inline; +} +.v-datefield-popup { + background: #fff; +} +/* Disabled by default +.v-datefield-error .v-textfield, +.v-datefield-error .v-datefield-calendarpanel { + background: #ffe0e0; +} +*/ + +/* Disabled by default +.v-datefield-required .v-textfield, +.v-datefield-required .v-datefield-calendarpanel { + background:transparent; + background-color: #ffe0e0; +} +*/ + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.css b/WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.css deleted file mode 100644 index 2061fec8c3..0000000000 --- a/WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.css +++ /dev/null @@ -1,158 +0,0 @@ -.v-ddwrapper { - padding: 2px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - position: relative; -} -[draggable=true] { - -khtml-user-drag: element; - -webkit-user-drag: element; - -khtml-user-select: none; - -webkit-user-select: none; -} -.v-ie .v-ddwrapper a.drag-start { - display: block; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; - opacity: 0; - /* Some color needed to make it draggable */ - background-color:cyan; - filter: alpha(opacity=0); -} -.v-ddwrapper-over { - border: 2px solid #1d9dff; - background-color: #bcdcff; - padding: 0; -} -.v-ddwrapper-over { - background-color: rgba(169,209,255,.6); -} -.no-box-drag-hints .v-ddwrapper-over { - border: none; - background-color: transparent; - padding: 2px; -} -.v-app .v-ddwrapper-over-top, -.v-window .v-ddwrapper-over-top, -.v-popupview-popup .v-ddwrapper-over-top { - border: none; - border-top: 2px solid #1d9dff; - background-color: transparent; - padding: 2px; - padding-top: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.v-app .v-ddwrapper-over-bottom, -.v-window .v-ddwrapper-over-bottom, -.v-popupview-popup .v-ddwrapper-over-bottom { - border: none; - border-bottom: 2px solid #1d9dff; - background-color: transparent; - padding: 2px; - padding-bottom: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.v-app .v-ddwrapper-over-left, -.v-window .v-ddwrapper-over-left, -.v-popupview-popup .v-ddwrapper-over-left { - border: none; - border-left: 2px solid #1d9dff; - background-color: transparent; - padding: 2px; - padding-left: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.v-app .v-ddwrapper-over-right, -.v-window .v-ddwrapper-over-right, -.v-popupview-popup .v-ddwrapper-over-right { - border: none; - border-right: 2px solid #1d9dff; - background-color: transparent; - padding: 2px; - padding-right: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; -} -.v-ddwrapper, -.v-ddwrapper-over, -.v-app .v-ddwrapper-over-top, -.v-window .v-ddwrapper-over-top, -.v-popupview-popup .v-ddwrapper-over-top, -.v-app .v-ddwrapper-over-bottom, -.v-window .v-ddwrapper-over-bottom, -.v-popupview-popup .v-ddwrapper-over-bottom, -.v-app .v-ddwrapper-over-left, -.v-window .v-ddwrapper-over-left, -.v-popupview-popup .v-ddwrapper-over-left, -.v-app .v-ddwrapper-over-right, -.v-window .v-ddwrapper-over-right, -.v-popupview-popup .v-ddwrapper-over-right { - border-color: rgba(0,109,232,.6); -} - -.v-ddwrapper-over-top:before, -.v-ddwrapper-over-bottom:after, -.v-ddwrapper-over-left:before, -.v-ddwrapper-over-right:before { - display: block; - content: ""; - position: absolute; - width: 6px; - height: 6px; - margin-top: -4px; - margin-left: -2px; - background: transparent url(../common/img/drag-slot-dot.png) no-repeat; -} -.v-ddwrapper-over-bottom:after { - margin-top: -2px; -} -.v-ddwrapper-over-left:before, -.v-ddwrapper-over-right:before { - background-position: 0 -6px; - margin-top: -2px; - margin-left: -4px; -} -.v-ddwrapper-over-right:before { - position: relative; - margin-bottom: -4px; - margin-right: -4px; - margin-left: 0; - width: auto; - background-position: 100% -6px; -} - -.no-horizontal-drag-hints .v-ddwrapper-over-left { - padding-left: 2px; - border-left: none; -} -.no-horizontal-drag-hints .v-ddwrapper-over-right { - padding-right: 2px; - border-right: none; -} -.no-vertical-drag-hints .v-ddwrapper-over-top { - padding-top: 2px; - border-top: none; -} -.no-vertical-drag-hints .v-ddwrapper-over-bottom { - padding-bottom: 2px; - border-bottom: none; -} -.no-horizontal-drag-hints .v-ddwrapper-over-left:before, -.no-horizontal-drag-hints .v-ddwrapper-over-right:before, -.no-vertical-drag-hints .v-ddwrapper-over-top:before, -.no-vertical-drag-hints .v-ddwrapper-over-bottom:after { - display: none; -} diff --git a/WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.scss b/WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.scss new file mode 100644 index 0000000000..558b305742 --- /dev/null +++ b/WebContent/VAADIN/themes/base/dragwrapper/dragwrapper.scss @@ -0,0 +1,162 @@ +@mixin base-dragwrapper { + +.v-ddwrapper { + padding: 2px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + position: relative; +} +[draggable=true] { + -khtml-user-drag: element; + -webkit-user-drag: element; + -khtml-user-select: none; + -webkit-user-select: none; +} +.v-ie .v-ddwrapper a.drag-start { + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + opacity: 0; + /* Some color needed to make it draggable */ + background-color:cyan; + filter: alpha(opacity=0); +} +.v-ddwrapper-over { + border: 2px solid #1d9dff; + background-color: #bcdcff; + padding: 0; +} +.v-ddwrapper-over { + background-color: rgba(169,209,255,.6); +} +.no-box-drag-hints .v-ddwrapper-over { + border: none; + background-color: transparent; + padding: 2px; +} +.v-app .v-ddwrapper-over-top, +.v-window .v-ddwrapper-over-top, +.v-popupview-popup .v-ddwrapper-over-top { + border: none; + border-top: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-top: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.v-app .v-ddwrapper-over-bottom, +.v-window .v-ddwrapper-over-bottom, +.v-popupview-popup .v-ddwrapper-over-bottom { + border: none; + border-bottom: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-bottom: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.v-app .v-ddwrapper-over-left, +.v-window .v-ddwrapper-over-left, +.v-popupview-popup .v-ddwrapper-over-left { + border: none; + border-left: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-left: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.v-app .v-ddwrapper-over-right, +.v-window .v-ddwrapper-over-right, +.v-popupview-popup .v-ddwrapper-over-right { + border: none; + border-right: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-right: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.v-ddwrapper, +.v-ddwrapper-over, +.v-app .v-ddwrapper-over-top, +.v-window .v-ddwrapper-over-top, +.v-popupview-popup .v-ddwrapper-over-top, +.v-app .v-ddwrapper-over-bottom, +.v-window .v-ddwrapper-over-bottom, +.v-popupview-popup .v-ddwrapper-over-bottom, +.v-app .v-ddwrapper-over-left, +.v-window .v-ddwrapper-over-left, +.v-popupview-popup .v-ddwrapper-over-left, +.v-app .v-ddwrapper-over-right, +.v-window .v-ddwrapper-over-right, +.v-popupview-popup .v-ddwrapper-over-right { + border-color: rgba(0,109,232,.6); +} + +.v-ddwrapper-over-top:before, +.v-ddwrapper-over-bottom:after, +.v-ddwrapper-over-left:before, +.v-ddwrapper-over-right:before { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + margin-left: -2px; + background: transparent url(../common/img/drag-slot-dot.png) no-repeat; +} +.v-ddwrapper-over-bottom:after { + margin-top: -2px; +} +.v-ddwrapper-over-left:before, +.v-ddwrapper-over-right:before { + background-position: 0 -6px; + margin-top: -2px; + margin-left: -4px; +} +.v-ddwrapper-over-right:before { + position: relative; + margin-bottom: -4px; + margin-right: -4px; + margin-left: 0; + width: auto; + background-position: 100% -6px; +} + +.no-horizontal-drag-hints .v-ddwrapper-over-left { + padding-left: 2px; + border-left: none; +} +.no-horizontal-drag-hints .v-ddwrapper-over-right { + padding-right: 2px; + border-right: none; +} +.no-vertical-drag-hints .v-ddwrapper-over-top { + padding-top: 2px; + border-top: none; +} +.no-vertical-drag-hints .v-ddwrapper-over-bottom { + padding-bottom: 2px; + border-bottom: none; +} +.no-horizontal-drag-hints .v-ddwrapper-over-left:before, +.no-horizontal-drag-hints .v-ddwrapper-over-right:before, +.no-vertical-drag-hints .v-ddwrapper-over-top:before, +.no-vertical-drag-hints .v-ddwrapper-over-bottom:after { + display: none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/embedded/embedded.css b/WebContent/VAADIN/themes/base/embedded/embedded.css deleted file mode 100644 index eea5937e59..0000000000 --- a/WebContent/VAADIN/themes/base/embedded/embedded.css +++ /dev/null @@ -1,5 +0,0 @@ - -.v-table .v-embedded-image { - /* make embeddeds be centered in centered table cells. */ - display: inline-block; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/embedded/embedded.scss b/WebContent/VAADIN/themes/base/embedded/embedded.scss new file mode 100644 index 0000000000..53faaef2e8 --- /dev/null +++ b/WebContent/VAADIN/themes/base/embedded/embedded.scss @@ -0,0 +1,8 @@ +@mixin base-embedded { + +.v-table .v-embedded-image { + /* make embeddeds be centered in centered table cells. */ + display: inline-block; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/formlayout/formlayout.css b/WebContent/VAADIN/themes/base/formlayout/formlayout.css deleted file mode 100644 index 755a59bc89..0000000000 --- a/WebContent/VAADIN/themes/base/formlayout/formlayout.css +++ /dev/null @@ -1,52 +0,0 @@ -.v-formlayout.v-has-width > table { - width: 100%; -} -.v-formlayout.v-has-height > table { - height: 100%; -} -.v-formlayout-cell .v-errorindicator { - display: block; -} -.v-formlayout-error-indicator { - /* fix width so layout is not jumpy when error disappears */ - width: 12px; -} -.v-formlayout-captioncell { - text-align:right; - white-space: nowrap; -} -.v-formlayout-errorcell, .v-formlayout-captioncell { - width: 1px; /* Don't use any extra space */ -} -.v-formlayout-captioncell .v-caption { - overflow: visible; -} -.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, -.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, -.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { - padding-top: 6px; -} -.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-captioncell, -.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-contentcell, -.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-errorcell { - padding-top: 0; -} -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { - padding-top: 12px; -} -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { - padding-bottom: 12px; -} -.v-formlayout-margin-left .v-formlayout-captioncell { - padding-left: 12px; -} -.v-formlayout-margin-right .v-formlayout-contentcell { - padding-right: 12px; -} -.v-formlayout-captioncell .v-caption .v-required-field-indicator { - float: none; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/formlayout/formlayout.scss b/WebContent/VAADIN/themes/base/formlayout/formlayout.scss new file mode 100644 index 0000000000..a45840ebab --- /dev/null +++ b/WebContent/VAADIN/themes/base/formlayout/formlayout.scss @@ -0,0 +1,56 @@ +@mixin base-formlayout { + +.v-formlayout.v-has-width > table { + width: 100%; +} +.v-formlayout.v-has-height > table { + height: 100%; +} +.v-formlayout-cell .v-errorindicator { + display: block; +} +.v-formlayout-error-indicator { + /* fix width so layout is not jumpy when error disappears */ + width: 12px; +} +.v-formlayout-captioncell { + text-align:right; + white-space: nowrap; +} +.v-formlayout-errorcell, .v-formlayout-captioncell { + width: 1px; /* Don't use any extra space */ +} +.v-formlayout-captioncell .v-caption { + overflow: visible; +} +.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, +.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, +.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { + padding-top: 6px; +} +.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-captioncell, +.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-contentcell, +.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 0; +} +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 12px; +} +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { + padding-bottom: 12px; +} +.v-formlayout-margin-left .v-formlayout-captioncell { + padding-left: 12px; +} +.v-formlayout-margin-right .v-formlayout-contentcell { + padding-right: 12px; +} +.v-formlayout-captioncell .v-caption .v-required-field-indicator { + float: none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/gridlayout/gridlayout.css b/WebContent/VAADIN/themes/base/gridlayout/gridlayout.css deleted file mode 100644 index 9edaf152a0..0000000000 --- a/WebContent/VAADIN/themes/base/gridlayout/gridlayout.css +++ /dev/null @@ -1,31 +0,0 @@ -.v-gridlayout { - position: relative; -} -.v-gridlayout-slot { - position: absolute; -} -.v-gridlayout-margin-top { - padding-top: 12px; -} -.v-gridlayout-margin-bottom { - padding-bottom: 12px; -} -.v-gridlayout-margin-left { - padding-left: 12px; -} -.v-gridlayout-margin-right { - padding-right: 12px; -} -.v-gridlayout-spacing-on { - padding-left: 6px; - padding-top: 6px; - overflow: hidden; -} -.v-gridlayout-spacing, -.v-gridlayout-spacing-off { - padding-left: 0; - padding-top: 0; -} -.v-gridlayout-spacing-off { - overflow: hidden; -} diff --git a/WebContent/VAADIN/themes/base/gridlayout/gridlayout.scss b/WebContent/VAADIN/themes/base/gridlayout/gridlayout.scss new file mode 100644 index 0000000000..72f7437e6e --- /dev/null +++ b/WebContent/VAADIN/themes/base/gridlayout/gridlayout.scss @@ -0,0 +1,35 @@ +@mixin base-gridlayout { + +.v-gridlayout { + position: relative; +} +.v-gridlayout-slot { + position: absolute; +} +.v-gridlayout-margin-top { + padding-top: 12px; +} +.v-gridlayout-margin-bottom { + padding-bottom: 12px; +} +.v-gridlayout-margin-left { + padding-left: 12px; +} +.v-gridlayout-margin-right { + padding-right: 12px; +} +.v-gridlayout-spacing-on { + padding-left: 6px; + padding-top: 6px; + overflow: hidden; +} +.v-gridlayout-spacing, +.v-gridlayout-spacing-off { + padding-left: 0; + padding-top: 0; +} +.v-gridlayout-spacing-off { + overflow: hidden; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/label/label.css b/WebContent/VAADIN/themes/base/label/label.css deleted file mode 100644 index 366dbdf26f..0000000000 --- a/WebContent/VAADIN/themes/base/label/label.css +++ /dev/null @@ -1,3 +0,0 @@ -.v-label { - overflow: hidden; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/label/label.scss b/WebContent/VAADIN/themes/base/label/label.scss new file mode 100644 index 0000000000..e4f3f89062 --- /dev/null +++ b/WebContent/VAADIN/themes/base/label/label.scss @@ -0,0 +1,7 @@ +@mixin base-label { + +.v-label { + overflow: hidden; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/link/link.css b/WebContent/VAADIN/themes/base/link/link.css deleted file mode 100644 index 322fb3e7ba..0000000000 --- a/WebContent/VAADIN/themes/base/link/link.css +++ /dev/null @@ -1,18 +0,0 @@ -.v-link { - white-space: nowrap; -} -.v-link a { - vertical-align: middle; - text-decoration: none; -} -.v-link span { - text-decoration: underline; - vertical-align: middle; -} -.v-disabled a { - cursor: default; -} -.v-link img { - vertical-align: middle; - border:none; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/link/link.scss b/WebContent/VAADIN/themes/base/link/link.scss new file mode 100644 index 0000000000..710f95d832 --- /dev/null +++ b/WebContent/VAADIN/themes/base/link/link.scss @@ -0,0 +1,22 @@ +@mixin base-link { + +.v-link { + white-space: nowrap; +} +.v-link a { + vertical-align: middle; + text-decoration: none; +} +.v-link span { + text-decoration: underline; + vertical-align: middle; +} +.v-disabled a { + cursor: default; +} +.v-link img { + vertical-align: middle; + border:none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/loginform/loginform.css b/WebContent/VAADIN/themes/base/loginform/loginform.css deleted file mode 100644 index 109d1a0a69..0000000000 --- a/WebContent/VAADIN/themes/base/loginform/loginform.css +++ /dev/null @@ -1,9 +0,0 @@ -.v-loginform { - height: 140px; - width: 200px; -} - -.v-app-loginpage .v-button, -.v-app-loginpage .v-button { - float: left; /* Force minimum width for button */ -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/loginform/loginform.scss b/WebContent/VAADIN/themes/base/loginform/loginform.scss new file mode 100644 index 0000000000..d2784fad47 --- /dev/null +++ b/WebContent/VAADIN/themes/base/loginform/loginform.scss @@ -0,0 +1,13 @@ +@mixin base-loginform { + +.v-loginform { + height: 140px; + width: 200px; +} + +.v-app-loginpage .v-button, +.v-app-loginpage .v-button { + float: left; /* Force minimum width for button */ +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/menubar/menubar.css b/WebContent/VAADIN/themes/base/menubar/menubar.css deleted file mode 100644 index 943d0dcc21..0000000000 --- a/WebContent/VAADIN/themes/base/menubar/menubar.css +++ /dev/null @@ -1,94 +0,0 @@ -.v-menubar { - float: left; /* Force minimum width */ - white-space: nowrap; - overflow: hidden; -} -.v-menubar .v-menubar-menuitem { - cursor: default; - vertical-align: middle; - white-space: nowrap; - display: inline; - display: inline-block; - zoom: 1; -} -.v-menubar .v-menubar-menuitem-caption .v-icon { - vertical-align: middle; - white-space: nowrap; -} -.v-menubar-submenu { - background: #fff; -} -.v-menubar-menuitem-selected { - background: #333; - color: #fff; -} -.v-menubar-submenu .v-menubar-menuitem { - cursor: default; - display: block; - position: relative; - padding-right: 1.5em; -} -.v-menubar-submenu .v-menubar-menuitem-caption { - display: block; -} -.v-menubar-submenu .v-menubar-menuitem *, -.v-menubar-submenu .v-menubar-menuitem-caption * { - white-space: nowrap; -} -.v-menubar-submenu-indicator { - display: none; - /* Arial has the most coverage for geometric entity characters */ - font-family: arial, helvetica, sans-serif; -} -.v-menubar-submenu .v-menubar-submenu-indicator { - display: block; - position: absolute; - right: 0; - width: 1em; - height: 1em; - font-size: 0.9em; -} -.v-menubar-menuitem-disabled, -.v-menubar span.v-menubar-menuitem-disabled:hover, -.v-menubar span.v-menubar-menuitem-disabled:focus, -.v-menubar span.v-menubar-menuitem-disabled:active { - color: #999; -} -.v-menubar-more-menuitem { - /* Arial has the most coverage for geometric entity characters */ - font-family: arial, helvetica, sans-serif; -} -.v-menubar-separator { - overflow: hidden; -} -.v-menubar-separator span { - display: block; - text-indent: -9999px; - font-size: 1px; - line-height: 1px; - border-top: 1px solid #ddd; - margin: 3px 0 2px; - overflow: hidden; -} -.v-menubar .v-icon, -.v-menubar-submenu .v-icon { - margin-right: 3px; -} - -.v-menubar:focus, -.v-menubar-popup:focus, -.v-menubar-popup .popupContent:focus, -.v-menubar-popup .popupContent .v-menubar-submenu:focus{ - outline: none; -} -/* Checkboxes for checkable/checked menu items */ -/* Checked/unchecked requires combined style selected-(un)checked for IE6 */ -.v-menubar-submenu-check-column .v-menubar-menuitem { - padding-left: 6px; -} -.v-menubar-submenu-check-column .v-menubar-menuitem-caption { - padding-left: 18px; -} -.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { - background: transparent url(img/check.gif) no-repeat left; -} diff --git a/WebContent/VAADIN/themes/base/menubar/menubar.scss b/WebContent/VAADIN/themes/base/menubar/menubar.scss new file mode 100644 index 0000000000..79b94a63af --- /dev/null +++ b/WebContent/VAADIN/themes/base/menubar/menubar.scss @@ -0,0 +1,98 @@ +@mixin base-menubar { + +.v-menubar { + float: left; /* Force minimum width */ + white-space: nowrap; + overflow: hidden; +} +.v-menubar .v-menubar-menuitem { + cursor: default; + vertical-align: middle; + white-space: nowrap; + display: inline; + display: inline-block; + zoom: 1; +} +.v-menubar .v-menubar-menuitem-caption .v-icon { + vertical-align: middle; + white-space: nowrap; +} +.v-menubar-submenu { + background: #fff; +} +.v-menubar-menuitem-selected { + background: #333; + color: #fff; +} +.v-menubar-submenu .v-menubar-menuitem { + cursor: default; + display: block; + position: relative; + padding-right: 1.5em; +} +.v-menubar-submenu .v-menubar-menuitem-caption { + display: block; +} +.v-menubar-submenu .v-menubar-menuitem *, +.v-menubar-submenu .v-menubar-menuitem-caption * { + white-space: nowrap; +} +.v-menubar-submenu-indicator { + display: none; + /* Arial has the most coverage for geometric entity characters */ + font-family: arial, helvetica, sans-serif; +} +.v-menubar-submenu .v-menubar-submenu-indicator { + display: block; + position: absolute; + right: 0; + width: 1em; + height: 1em; + font-size: 0.9em; +} +.v-menubar-menuitem-disabled, +.v-menubar span.v-menubar-menuitem-disabled:hover, +.v-menubar span.v-menubar-menuitem-disabled:focus, +.v-menubar span.v-menubar-menuitem-disabled:active { + color: #999; +} +.v-menubar-more-menuitem { + /* Arial has the most coverage for geometric entity characters */ + font-family: arial, helvetica, sans-serif; +} +.v-menubar-separator { + overflow: hidden; +} +.v-menubar-separator span { + display: block; + text-indent: -9999px; + font-size: 1px; + line-height: 1px; + border-top: 1px solid #ddd; + margin: 3px 0 2px; + overflow: hidden; +} +.v-menubar .v-icon, +.v-menubar-submenu .v-icon { + margin-right: 3px; +} + +.v-menubar:focus, +.v-menubar-popup:focus, +.v-menubar-popup .popupContent:focus, +.v-menubar-popup .popupContent .v-menubar-submenu:focus{ + outline: none; +} +/* Checkboxes for checkable/checked menu items */ +/* Checked/unchecked requires combined style selected-(un)checked for IE6 */ +.v-menubar-submenu-check-column .v-menubar-menuitem { + padding-left: 6px; +} +.v-menubar-submenu-check-column .v-menubar-menuitem-caption { + padding-left: 18px; +} +.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { + background: transparent url(img/check.gif) no-repeat left; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/notification/notification.css b/WebContent/VAADIN/themes/base/notification/notification.css deleted file mode 100644 index ccd5b8d218..0000000000 --- a/WebContent/VAADIN/themes/base/notification/notification.css +++ /dev/null @@ -1,39 +0,0 @@ -.v-Notification { - background: #999; - color: #fff; - cursor: pointer; - overflow: hidden; - padding: 1em; - max-width:85%; - -} -.v-Notification h1, -.v-Notification p, -.v-Notification-error h1, -.v-Notification-error p, -.v-Notification-warning h1, -.v-Notification-warning p { - display: inline; - margin: 0 0.5em 0 0; -} -.v-Notification-warning { - background: orange; -} -.v-Notification-error { - background: red; -} -.v-Notification-tray h1 { - display: block; -} -.v-Notification-tray p { - display: block; -} -.v-Notification-system { - background-color: red; - opacity: .7; - filter: alpha(opacity=70); -} -.v-Notification-system h1 { - display: block; - margin: 0; -} diff --git a/WebContent/VAADIN/themes/base/notification/notification.scss b/WebContent/VAADIN/themes/base/notification/notification.scss new file mode 100644 index 0000000000..e67ac14050 --- /dev/null +++ b/WebContent/VAADIN/themes/base/notification/notification.scss @@ -0,0 +1,43 @@ +@mixin base-notification { + +.v-Notification { + background: #999; + color: #fff; + cursor: pointer; + overflow: hidden; + padding: 1em; + max-width:85%; + +} +.v-Notification h1, +.v-Notification p, +.v-Notification-error h1, +.v-Notification-error p, +.v-Notification-warning h1, +.v-Notification-warning p { + display: inline; + margin: 0 0.5em 0 0; +} +.v-Notification-warning { + background: orange; +} +.v-Notification-error { + background: red; +} +.v-Notification-tray h1 { + display: block; +} +.v-Notification-tray p { + display: block; +} +.v-Notification-system { + background-color: red; + opacity: .7; + filter: alpha(opacity=70); +} +.v-Notification-system h1 { + display: block; + margin: 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.css b/WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.css deleted file mode 100644 index 727ca92f72..0000000000 --- a/WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.css +++ /dev/null @@ -1,43 +0,0 @@ -.v-orderedlayout, -.v-horizontallayout, -.v-verticallayout { - position: relative; -} - -.v-orderedlayout-margin-top, -.v-horizontallayout-margin-top, -.v-verticallayout-margin-top { - padding-top: 12px; -} -.v-orderedlayout-margin-right, -.v-horizontallayout-margin-right, -.v-verticallayout-margin-right { - padding-right: 12px; -} -.v-orderedlayout-margin-bottom, -.v-horizontallayout-margin-bottom, -.v-verticallayout-margin-bottom { - padding-bottom: 12px; -} -.v-orderedlayout-margin-left, -.v-horizontallayout-margin-left, -.v-verticallayout-margin-left { - padding-left: 12px; -} -.v-orderedlayout-spacing-on, -.v-horizontallayout-spacing-on, -.v-verticallayout-spacing-on { - padding-top: 6px; - padding-left: 6px; -} -/* This can be used to define spacing if spacing is off server side */ -.v-orderedlayout-spacing-off, -.v-horizontallayout-spacing-off, -.v-verticallayout-spacing-off { - padding-top: 0; - padding-left: 0; -} - -.v-horizontallayout-slot, .v-verticallayout-slot { - position: absolute; -} diff --git a/WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.scss b/WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.scss new file mode 100644 index 0000000000..7820d842fc --- /dev/null +++ b/WebContent/VAADIN/themes/base/orderedlayout/orderedlayout.scss @@ -0,0 +1,47 @@ +@mixin base-orderedlayout { + +.v-orderedlayout, +.v-horizontallayout, +.v-verticallayout { + position: relative; +} + +.v-orderedlayout-margin-top, +.v-horizontallayout-margin-top, +.v-verticallayout-margin-top { + padding-top: 12px; +} +.v-orderedlayout-margin-right, +.v-horizontallayout-margin-right, +.v-verticallayout-margin-right { + padding-right: 12px; +} +.v-orderedlayout-margin-bottom, +.v-horizontallayout-margin-bottom, +.v-verticallayout-margin-bottom { + padding-bottom: 12px; +} +.v-orderedlayout-margin-left, +.v-horizontallayout-margin-left, +.v-verticallayout-margin-left { + padding-left: 12px; +} +.v-orderedlayout-spacing-on, +.v-horizontallayout-spacing-on, +.v-verticallayout-spacing-on { + padding-top: 6px; + padding-left: 6px; +} +/* This can be used to define spacing if spacing is off server side */ +.v-orderedlayout-spacing-off, +.v-horizontallayout-spacing-off, +.v-verticallayout-spacing-off { + padding-top: 0; + padding-left: 0; +} + +.v-horizontallayout-slot, .v-verticallayout-slot { + position: absolute; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/paintable/paintable.css b/WebContent/VAADIN/themes/base/paintable/paintable.css deleted file mode 100644 index 41fc0ef287..0000000000 --- a/WebContent/VAADIN/themes/base/paintable/paintable.css +++ /dev/null @@ -1,5 +0,0 @@ -.v-connector { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/paintable/paintable.scss b/WebContent/VAADIN/themes/base/paintable/paintable.scss new file mode 100644 index 0000000000..87431ee225 --- /dev/null +++ b/WebContent/VAADIN/themes/base/paintable/paintable.scss @@ -0,0 +1,9 @@ +@mixin base-paintable { + +.v-connector { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/panel/panel.css b/WebContent/VAADIN/themes/base/panel/panel.css deleted file mode 100644 index d5a9915490..0000000000 --- a/WebContent/VAADIN/themes/base/panel/panel.css +++ /dev/null @@ -1,43 +0,0 @@ -.v-panel, -.v-panel-caption, -.v-panel-content, -.v-panel-deco, -.v-panel-light, -.v-panel-caption-light, -.v-panel-content-light, -.v-panel-deco-light { - outline: none; /* Prevent selection outline which might break layouts or cause scrollbars */ - text-align: left /* Force default alignment */ -} -.v-panel-caption .v-errorindicator { - float: none; - display: inline; -} -.v-panel-caption .v-icon { - display: inline; - vertical-align: middle; -} -.v-panel-caption span { - vertical-align: middle; -} -.v-panel-caption { - white-space: nowrap; - overflow:hidden; - font-weight: bold; -} -.v-panel-nocaption { - overflow: hidden; -} -.v-panel-content { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-panel.v-has-width > .v-panel-content { - width: 100%; -} -.v-panel.v-has-height > .v-panel-content { - height: 100%; -} -.v-panel-deco { -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/panel/panel.scss b/WebContent/VAADIN/themes/base/panel/panel.scss new file mode 100644 index 0000000000..93d82cd615 --- /dev/null +++ b/WebContent/VAADIN/themes/base/panel/panel.scss @@ -0,0 +1,47 @@ +@mixin base-panel { + +.v-panel, +.v-panel-caption, +.v-panel-content, +.v-panel-deco, +.v-panel-light, +.v-panel-caption-light, +.v-panel-content-light, +.v-panel-deco-light { + outline: none; /* Prevent selection outline which might break layouts or cause scrollbars */ + text-align: left; /* Force default alignment */ +} +.v-panel-caption .v-errorindicator { + float: none; + display: inline; +} +.v-panel-caption .v-icon { + display: inline; + vertical-align: middle; +} +.v-panel-caption span { + vertical-align: middle; +} +.v-panel-caption { + white-space: nowrap; + overflow:hidden; + font-weight: bold; +} +.v-panel-nocaption { + overflow: hidden; +} +.v-panel-content { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-panel.v-has-width > .v-panel-content { + width: 100%; +} +.v-panel.v-has-height > .v-panel-content { + height: 100%; +} +.v-panel-deco { +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/popupview/popupview.css b/WebContent/VAADIN/themes/base/popupview/popupview.css deleted file mode 100644 index 8e31681c2d..0000000000 --- a/WebContent/VAADIN/themes/base/popupview/popupview.css +++ /dev/null @@ -1,13 +0,0 @@ -.v-popupview { - cursor: pointer; - text-decoration: underline; - white-space: nowrap; -} -.v-popupview-popup { - overflow: auto; -} -.v-popupview-loading { - width: 30px; - height: 30px; - background: transparent url(../common/img/ajax-loader-medium.gif) no-repeat 50%; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/popupview/popupview.scss b/WebContent/VAADIN/themes/base/popupview/popupview.scss new file mode 100644 index 0000000000..e192d0d147 --- /dev/null +++ b/WebContent/VAADIN/themes/base/popupview/popupview.scss @@ -0,0 +1,17 @@ +@mixin base-popupview { + +.v-popupview { + cursor: pointer; + text-decoration: underline; + white-space: nowrap; +} +.v-popupview-popup { + overflow: auto; +} +.v-popupview-loading { + width: 30px; + height: 30px; + background: transparent url(../common/img/ajax-loader-medium.gif) no-repeat 50%; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/progressindicator/progressindicator.css b/WebContent/VAADIN/themes/base/progressindicator/progressindicator.css deleted file mode 100644 index 4037802cf2..0000000000 --- a/WebContent/VAADIN/themes/base/progressindicator/progressindicator.css +++ /dev/null @@ -1,31 +0,0 @@ -.v-progressindicator { - width: 150px; -} -.v-progressindicator-wrapper { - height: 7px; - border: 1px solid #ddd; -} -.v-progressindicator-indicator { - height: 7px; - background: #ddd; -} -div.v-progressindicator-indeterminate { - height: 20px; - width: 20px; - background: #fff url(../common/img/ajax-loader-medium.gif) no-repeat 50%; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; -} -/* Hide obsolete elements in indeterminate mode */ -.v-progressindicator-indeterminate .v-progressindicator-wrapper, -.v-progressindicator-indeterminate .v-progressindicator-indicator, -.v-progressindicator-indeterminate-disabled .v-progressindicator-wrapper, -.v-progressindicator-indeterminate-disabled .v-progressindicator-indicator { - display: none; -} -div.v-progressindicator-indeterminate-disabled { - height: 20px; - width: 20px; - background: transparent; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/progressindicator/progressindicator.scss b/WebContent/VAADIN/themes/base/progressindicator/progressindicator.scss new file mode 100644 index 0000000000..4c1483886b --- /dev/null +++ b/WebContent/VAADIN/themes/base/progressindicator/progressindicator.scss @@ -0,0 +1,35 @@ +@mixin base-progressindicator { + +.v-progressindicator { + width: 150px; +} +.v-progressindicator-wrapper { + height: 7px; + border: 1px solid #ddd; +} +.v-progressindicator-indicator { + height: 7px; + background: #ddd; +} +div.v-progressindicator-indeterminate { + height: 20px; + width: 20px; + background: #fff url(../common/img/ajax-loader-medium.gif) no-repeat 50%; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; +} +/* Hide obsolete elements in indeterminate mode */ +.v-progressindicator-indeterminate .v-progressindicator-wrapper, +.v-progressindicator-indeterminate .v-progressindicator-indicator, +.v-progressindicator-indeterminate-disabled .v-progressindicator-wrapper, +.v-progressindicator-indeterminate-disabled .v-progressindicator-indicator { + display: none; +} +div.v-progressindicator-indeterminate-disabled { + height: 20px; + width: 20px; + background: transparent; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/select/select.css b/WebContent/VAADIN/themes/base/select/select.css deleted file mode 100644 index b9d0dda51f..0000000000 --- a/WebContent/VAADIN/themes/base/select/select.css +++ /dev/null @@ -1,164 +0,0 @@ -.v-select { - text-align: left; -} -.v-select-optiongroup .v-select-option { - display: block; - white-space: nowrap; -} -.v-select-optiongroup .v-icon { - vertical-align: middle; - white-space: nowrap; - margin: 0 2px; -} -.v-ie .v-select-optiongroup .v-select-option { - zoom: 1; -} -.v-select-select { - display: block; -} -.v-select-twincol { - white-space: nowrap; -} -.v-select-twincol-options { - float: left; -} -.v-select-twincol-caption-left { - float: left; - overflow: hidden; - text-overflow: ellipsis; -} -.v-select-twincol-selections { - font-weight: bold; -} -.v-select-twincol-caption-right { - float: right; - overflow: hidden; - text-overflow: ellipsis; -} -.v-select-twincol-buttons { - float: left; - text-align: center; -} -.v-select-twincol-buttons .v-select-twincol-deco { - clear: both; -} -.v-select-twincol .v-textfield { - display: block; - float: left; - clear: left; -} -.v-select-twincol .v-button { - float: left; -} -.v-select-twincol-buttons .v-button { - float: none; -} -.v-filterselect { - white-space: nowrap; - text-align: left; - display: inline-block; -} -.v-filterselect .v-icon { - float: left; -} -.v-app .v-filterselect-input, -.v-window .v-filterselect-input, -.v-popupview-popup .v-filterselect-input { - margin: 0; - float: left; - -webkit-border-radius: 0px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-filterselect-prompt .v-filterselect-input { - color: #999; - font-style: italic; -} -.v-filterselect-button { - display: inline-block; - cursor: pointer; - width: 1em; - height: 1em; - background: transparent url(../common/img/sprites.png) no-repeat -5px -8px; -} -.v-filterselect.v-readonly .v-filterselect-button { - display: none; -} -.v-filterselect.v-readonly, -.v-filterselect.v-readonly .v-filterselect-input { - background: transparent; -} -.v-filterselect-suggestpopup { - background: #fff; - border: 1px solid #eee; -} -.v-filterselect-suggestmenu table { - border-collapse: collapse; - border: none; -} -.v-filterselect-suggestmenu .gwt-MenuItem { - white-space: nowrap; -} -.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { - margin-right: 3px; - vertical-align: middle; -} -.v-filterselect-suggestmenu .gwt-MenuItem span { - vertical-align: middle; -} -.v-filterselect-suggestmenu .gwt-MenuItem-selected { - background: #333; - color: #fff; -} -.v-filterselect-nextpage, -.v-filterselect-nextpage-off, -.v-filterselect-prevpage-off, -.v-filterselect-prevpage { - width: 100%; - background: #aaa; - text-align: center; - overflow: hidden; - cursor: pointer; -} -.v-filterselect-nextpage-off, -.v-filterselect-prevpage-off { - color: #666; - opacity: .5; - filter: alpha(opacity=50); - cursor: default; -} -.v-filterselect-nextpage-off span, -.v-filterselect-prevpage-off span { - cursor: default; -} -.v-filterselect-status { - white-space: nowrap; - text-align: center; -} - -.v-filterselect-no-input .v-filterselect-input { - cursor: default; -} - -/* Error styles (disabled by default) - -.v-filterselect-error .v-filterselect-input, -.v-select-error .v-select-option, -.v-select-error .v-select-select, -.v-select-error .v-select-twincol-selections, -.v-select-error .v-select-twincol-options { - background: #ffaaaa; -} -*/ - -/* Required field styles (disabled by default) - -.v-filterselect-error .v-filterselect-input, -.v-select-required .v-select-option, -.v-select-required .v-select-select, -.v-select-required .v-select-twincol-selections, -.v-select-required .v-select-twincol-options { - background: #ffaaaa; -} -*/ \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/select/select.scss b/WebContent/VAADIN/themes/base/select/select.scss new file mode 100644 index 0000000000..d6ef6d3585 --- /dev/null +++ b/WebContent/VAADIN/themes/base/select/select.scss @@ -0,0 +1,168 @@ +@mixin base-select { + +.v-select { + text-align: left; +} +.v-select-optiongroup .v-select-option { + display: block; + white-space: nowrap; +} +.v-select-optiongroup .v-icon { + vertical-align: middle; + white-space: nowrap; + margin: 0 2px; +} +.v-ie .v-select-optiongroup .v-select-option { + zoom: 1; +} +.v-select-select { + display: block; +} +.v-select-twincol { + white-space: nowrap; +} +.v-select-twincol-options { + float: left; +} +.v-select-twincol-caption-left { + float: left; + overflow: hidden; + text-overflow: ellipsis; +} +.v-select-twincol-selections { + font-weight: bold; +} +.v-select-twincol-caption-right { + float: right; + overflow: hidden; + text-overflow: ellipsis; +} +.v-select-twincol-buttons { + float: left; + text-align: center; +} +.v-select-twincol-buttons .v-select-twincol-deco { + clear: both; +} +.v-select-twincol .v-textfield { + display: block; + float: left; + clear: left; +} +.v-select-twincol .v-button { + float: left; +} +.v-select-twincol-buttons .v-button { + float: none; +} +.v-filterselect { + white-space: nowrap; + text-align: left; + display: inline-block; +} +.v-filterselect .v-icon { + float: left; +} +.v-app .v-filterselect-input, +.v-window .v-filterselect-input, +.v-popupview-popup .v-filterselect-input { + margin: 0; + float: left; + -webkit-border-radius: 0px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-filterselect-prompt .v-filterselect-input { + color: #999; + font-style: italic; +} +.v-filterselect-button { + display: inline-block; + cursor: pointer; + width: 1em; + height: 1em; + background: transparent url(../common/img/sprites.png) no-repeat -5px -8px; +} +.v-filterselect.v-readonly .v-filterselect-button { + display: none; +} +.v-filterselect.v-readonly, +.v-filterselect.v-readonly .v-filterselect-input { + background: transparent; +} +.v-filterselect-suggestpopup { + background: #fff; + border: 1px solid #eee; +} +.v-filterselect-suggestmenu table { + border-collapse: collapse; + border: none; +} +.v-filterselect-suggestmenu .gwt-MenuItem { + white-space: nowrap; +} +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + margin-right: 3px; + vertical-align: middle; +} +.v-filterselect-suggestmenu .gwt-MenuItem span { + vertical-align: middle; +} +.v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: #333; + color: #fff; +} +.v-filterselect-nextpage, +.v-filterselect-nextpage-off, +.v-filterselect-prevpage-off, +.v-filterselect-prevpage { + width: 100%; + background: #aaa; + text-align: center; + overflow: hidden; + cursor: pointer; +} +.v-filterselect-nextpage-off, +.v-filterselect-prevpage-off { + color: #666; + opacity: .5; + filter: alpha(opacity=50); + cursor: default; +} +.v-filterselect-nextpage-off span, +.v-filterselect-prevpage-off span { + cursor: default; +} +.v-filterselect-status { + white-space: nowrap; + text-align: center; +} + +.v-filterselect-no-input .v-filterselect-input { + cursor: default; +} + +/* Error styles (disabled by default) + +.v-filterselect-error .v-filterselect-input, +.v-select-error .v-select-option, +.v-select-error .v-select-select, +.v-select-error .v-select-twincol-selections, +.v-select-error .v-select-twincol-options { + background: #ffaaaa; +} +*/ + +/* Required field styles (disabled by default) + +.v-filterselect-error .v-filterselect-input, +.v-select-required .v-select-option, +.v-select-required .v-select-select, +.v-select-required .v-select-twincol-selections, +.v-select-required .v-select-twincol-options { + background: #ffaaaa; +} +*/ + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/shadow/shadow.css b/WebContent/VAADIN/themes/base/shadow/shadow.css deleted file mode 100644 index c576a026bd..0000000000 --- a/WebContent/VAADIN/themes/base/shadow/shadow.css +++ /dev/null @@ -1,68 +0,0 @@ -.v-shadow { - position: absolute; -} - -.v-shadow .top-left { - position: absolute; overflow: hidden; - top: -3px; left: -5px; - width: 10px; height: 10px; - background: transparent url(img/top-left.png); -} - -.v-shadow .top { - position: absolute; overflow: hidden; - top: -3px; left: 5px; - height: 10px; right: 5px; - background: transparent url(img/top.png); -} - -.v-shadow .top-right { - position: absolute; overflow: hidden; - top: -3px; right: -5px; - width: 10px; height: 10px; - background: transparent url(img/top-right.png); -} - -.v-shadow .left { - position: absolute; overflow: hidden; - top: 7px; left: -5px; - width: 10px; - bottom: 3px; - background: transparent url(img/left.png); -} - -.v-shadow .center { - position: absolute; overflow: hidden; - top: 7px; left: 5px; - bottom: 3px; right: 5px; - background: transparent url(img/center.png); -} - -.v-shadow .right { - position: absolute; overflow: hidden; - top: 7px; right: -5px; - width: 10px; - bottom: 3px; - background: transparent url(img/right.png); -} - -.v-shadow .bottom-left { - position: absolute; overflow: hidden; - bottom: -7px; left: -5px; - width: 10px; height: 10px; - background: transparent url(img/bottom-left.png); -} - -.v-shadow .bottom { - position: absolute; overflow: hidden; - bottom: -7px; left: 5px; - right: 5px; height: 10px; - background: transparent url(img/bottom.png); -} - -.v-shadow .bottom-right { - position: absolute; overflow: hidden; - bottom: -7px; right: -5px; - width: 10px; height: 10px; - background: transparent url(img/bottom-right.png); -} diff --git a/WebContent/VAADIN/themes/base/shadow/shadow.scss b/WebContent/VAADIN/themes/base/shadow/shadow.scss new file mode 100644 index 0000000000..4e1085aa5a --- /dev/null +++ b/WebContent/VAADIN/themes/base/shadow/shadow.scss @@ -0,0 +1,72 @@ +@mixin base-shadow { + +.v-shadow { + position: absolute; +} + +.v-shadow .top-left { + position: absolute; overflow: hidden; + top: -3px; left: -5px; + width: 10px; height: 10px; + background: transparent url(img/top-left.png); +} + +.v-shadow .top { + position: absolute; overflow: hidden; + top: -3px; left: 5px; + height: 10px; right: 5px; + background: transparent url(img/top.png); +} + +.v-shadow .top-right { + position: absolute; overflow: hidden; + top: -3px; right: -5px; + width: 10px; height: 10px; + background: transparent url(img/top-right.png); +} + +.v-shadow .left { + position: absolute; overflow: hidden; + top: 7px; left: -5px; + width: 10px; + bottom: 3px; + background: transparent url(img/left.png); +} + +.v-shadow .center { + position: absolute; overflow: hidden; + top: 7px; left: 5px; + bottom: 3px; right: 5px; + background: transparent url(img/center.png); +} + +.v-shadow .right { + position: absolute; overflow: hidden; + top: 7px; right: -5px; + width: 10px; + bottom: 3px; + background: transparent url(img/right.png); +} + +.v-shadow .bottom-left { + position: absolute; overflow: hidden; + bottom: -7px; left: -5px; + width: 10px; height: 10px; + background: transparent url(img/bottom-left.png); +} + +.v-shadow .bottom { + position: absolute; overflow: hidden; + bottom: -7px; left: 5px; + right: 5px; height: 10px; + background: transparent url(img/bottom.png); +} + +.v-shadow .bottom-right { + position: absolute; overflow: hidden; + bottom: -7px; right: -5px; + width: 10px; height: 10px; + background: transparent url(img/bottom-right.png); +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/slider/slider.css b/WebContent/VAADIN/themes/base/slider/slider.css deleted file mode 100644 index 1be474f04e..0000000000 --- a/WebContent/VAADIN/themes/base/slider/slider.css +++ /dev/null @@ -1,65 +0,0 @@ -.v-slider { - margin: 5px 0; -} -.v-slider-base { - /* changing the borders will require adjustments to ISlider.java */ - height: 2px; - border-top: 1px solid #ddd; - background: #eee; - border-left: 1px solid #ddd; - border-right: 1px solid #eee; - -} -.v-slider-handle { - background: #aaa; - width: 12px; - height: 12px; - margin-top: -5px; - font-size: 0; -} - -.v-slider-vertical { - width: 2px; - height: auto; - margin: 0 5px; - border: none; - border-left: 1px solid #cccfd0; - border-right: 1px solid #cccfd0; -} -.v-slider-vertical .v-slider-base { - width: 2px; - border-bottom: 1px solid #eee; - border-right: none; -} -.v-slider-vertical .v-slider-handle { - width: 12px; - height: 12px; - font-size: 0; - margin-left: -5px; -} - -.v-slider-feedback { - padding: 2px 5px; - background: #444; - color: #fff; - font-size: 11px; - line-height: 13px; - font-weight: bold; - font-family: Arial, Helvetica, sans-serif; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - margin: -2px 0 0 2px; - text-shadow: 0 1px 0 #000; -} - -/* Disabled by default -.v-slider-error .v-slider-base { - background: #FFE0E0; -} -*/ -/* Disabled by default -.v-slider-required .v-slider-base { - background: #FFE0E0; -} -*/ diff --git a/WebContent/VAADIN/themes/base/slider/slider.scss b/WebContent/VAADIN/themes/base/slider/slider.scss new file mode 100644 index 0000000000..0c65bf1e73 --- /dev/null +++ b/WebContent/VAADIN/themes/base/slider/slider.scss @@ -0,0 +1,69 @@ +@mixin base-slider { + +.v-slider { + margin: 5px 0; +} +.v-slider-base { + /* changing the borders will require adjustments to ISlider.java */ + height: 2px; + border-top: 1px solid #ddd; + background: #eee; + border-left: 1px solid #ddd; + border-right: 1px solid #eee; + +} +.v-slider-handle { + background: #aaa; + width: 12px; + height: 12px; + margin-top: -5px; + font-size: 0; +} + +.v-slider-vertical { + width: 2px; + height: auto; + margin: 0 5px; + border: none; + border-left: 1px solid #cccfd0; + border-right: 1px solid #cccfd0; +} +.v-slider-vertical .v-slider-base { + width: 2px; + border-bottom: 1px solid #eee; + border-right: none; +} +.v-slider-vertical .v-slider-handle { + width: 12px; + height: 12px; + font-size: 0; + margin-left: -5px; +} + +.v-slider-feedback { + padding: 2px 5px; + background: #444; + color: #fff; + font-size: 11px; + line-height: 13px; + font-weight: bold; + font-family: Arial, Helvetica, sans-serif; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + margin: -2px 0 0 2px; + text-shadow: 0 1px 0 #000; +} + +/* Disabled by default +.v-slider-error .v-slider-base { + background: #FFE0E0; +} +*/ +/* Disabled by default +.v-slider-required .v-slider-base { + background: #FFE0E0; +} +*/ + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/splitpanel/splitpanel.css b/WebContent/VAADIN/themes/base/splitpanel/splitpanel.css deleted file mode 100644 index 7831a8d9ce..0000000000 --- a/WebContent/VAADIN/themes/base/splitpanel/splitpanel.css +++ /dev/null @@ -1,31 +0,0 @@ -.v-splitpanel-horizontal, -.v-splitpanel-vertical { - overflow: hidden; -} -.v-splitpanel-hsplitter { - width: 6px; -} -.v-splitpanel-hsplitter div { - width: 6px; - position: absolute; - top: 0; - bottom: 0; - background: #ddd; - cursor: e-resize; - cursor: col-resize; -} -.v-disabled .v-splitpanel-hsplitter div { - cursor: default; -} -.v-splitpanel-vsplitter { - height: 6px; -} -.v-splitpanel-vsplitter div { - height: 6px; - background: #ddd; - cursor: s-resize; - cursor: row-resize; -} -.v-disabled .v-splitpanel-vsplitter div { - cursor: default; -} diff --git a/WebContent/VAADIN/themes/base/splitpanel/splitpanel.scss b/WebContent/VAADIN/themes/base/splitpanel/splitpanel.scss new file mode 100644 index 0000000000..2c3e578b0b --- /dev/null +++ b/WebContent/VAADIN/themes/base/splitpanel/splitpanel.scss @@ -0,0 +1,35 @@ +@mixin base-splitpanel { + +.v-splitpanel-horizontal, +.v-splitpanel-vertical { + overflow: hidden; +} +.v-splitpanel-hsplitter { + width: 6px; +} +.v-splitpanel-hsplitter div { + width: 6px; + position: absolute; + top: 0; + bottom: 0; + background: #ddd; + cursor: e-resize; + cursor: col-resize; +} +.v-disabled .v-splitpanel-hsplitter div { + cursor: default; +} +.v-splitpanel-vsplitter { + height: 6px; +} +.v-splitpanel-vsplitter div { + height: 6px; + background: #ddd; + cursor: s-resize; + cursor: row-resize; +} +.v-disabled .v-splitpanel-vsplitter div { + cursor: default; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/styles.scss b/WebContent/VAADIN/themes/base/styles.scss new file mode 100644 index 0000000000..89f76947f8 --- /dev/null +++ b/WebContent/VAADIN/themes/base/styles.scss @@ -0,0 +1,45 @@ +@import "base.scss"; + +// @include base-app; + +// everything included from base theme +// other themes should enclose corresponding definitions in theme selectors + +@include base-absolutelayout; +@include base-accordion; +@include base-button; +@include base-caption; + +// here for now to preserve old semantics +@include base-common; + +@include base-csslayout; +@include base-customcomponent; +@include base-customlayout; +@include base-datefield; +@include base-dragwrapper; +@include base-embedded; +@include base-formlayout; +@include base-gridlayout; +@include base-label; +@include base-link; +@include base-loginform; +@include base-menubar; +@include base-notification; +@include base-orderedlayout; +@include base-paintable; +@include base-panel; +@include base-popupview; +@include base-progressindicator; +@include base-select; +@include base-shadow; +@include base-slider; +@include base-splitpanel; +@include base-table; +@include base-tabsheet; +@include base-textfield; +@include base-richtextarea; +@include base-tree; +@include base-treetable; +@include base-upload; +@include base-window; diff --git a/WebContent/VAADIN/themes/base/table/table.css b/WebContent/VAADIN/themes/base/table/table.css deleted file mode 100644 index 55728e3264..0000000000 --- a/WebContent/VAADIN/themes/base/table/table.css +++ /dev/null @@ -1,284 +0,0 @@ -/* Table theme building instructions - * - * Vaadin scroll table is very complex widget with dozens of features. These - * features set some limitations for theme builder. To keep things working, it - * is safest to try to just override values used in default theme and comfort to - * these instructions. - * - * Borders in table header and in table body need to be same width - * - specify vertical borders on .v-table-header-wrap and .v-table-body - * - * Table cells in body: - * - padding/border for cells is to be defined for td elements (class name: .v-table-cell-content) - * - in default theme there are no borders, but they should work. Just set border-right or border-bottom - * - no padding or border is allowed for div inside cells (class name: .v-table-cell-wrapper) element - * - background is allowed for both elements - * - * Table headers: - * - table cells in header contain .v-table-resizer and - * .v-table-caption-container div elements, which are both floated to right - * - to align header caption to body content resizer width + .v-table-caption-container - * padding right should be equal to content cells padding-right and border-right. - * - Possible cell border in header must be themed into column resizer. - * - */ -.v-table { - overflow: hidden; - text-align: left; /* Force default alignment */ -} -.v-table-header-wrap { - overflow: hidden; - border: 1px solid #aaa; - border-bottom: none; - background: #efefef; -} -.v-table-header table, -.v-table-table { - border-spacing: 0; - border-collapse: separate; - margin: 0; - padding: 0; - border: 0; -} -.v-table-header td { - padding: 0; -} -.v-table-header-cell, -.v-table-header-cell-asc, -.v-table-header-cell-desc { - cursor: pointer; -} - -.v-table.v-disabled .v-table-header-cell, -.v-table.v-disabled .v-table-header-cell-asc, -.v-table.v-disabled .v-table-header-cell-desc { - cursor: default; -} - -.v-table-footer-wrap { - overflow: hidden; - border: 1px solid #aaa; - border-top: none; - background: #efefef; -} -.v-table-footer table { - border-spacing: 0; - border-collapse: collapse; - margin: 0; - padding: 0; - border: 0; -} -.v-table-footer td { - padding: 0; - border-right: 1px solid #aaa; -} -.v-table-footer-cell { - cursor: pointer; -} -.v-table-footer-container { - float:right; - padding-right:6px; - overflow:hidden; - white-space:nowrap; -} -.v-table-resizer { - display: block; - height: 1.2em; - float: right; - background: #aaa; - cursor: e-resize; /* Opera does not support col-resize, so use e-resize instead */ - cursor: col-resize; - width: 1px; - overflow: hidden; -} -.v-table.v-disabled .v-table-resizer { - cursor: default; -} -.v-table-caption-container { - overflow: hidden; - white-space: nowrap; - margin-left: 6px; -} -.v-table-caption-container-align-right { - float: right; -} -.v-table-sort-indicator { - width: 0px; - height: 1.2em; - float: right; -} -.v-table-header-cell-asc .v-table-sort-indicator, -.v-table-header-cell-desc .v-table-sort-indicator { - width: 16px; - height: 1.2em; - float: right; -} -.v-table-header-cell-asc .v-table-sort-indicator { - background: transparent url(../common/img/sprites.png) no-repeat right 6px; -} -.v-table-header-cell-desc .v-table-sort-indicator { - background: transparent url(../common/img/sprites.png) no-repeat right -10px; -} -.v-table-caption-container-align-center { - text-align: center; -} -.v-table-caption-container-align-right { - text-align: right; -} -.v-table-caption-container .v-icon, -.v-table-header-drag .v-icon { - vertical-align: middle; -} -.v-table-body { - border: 1px solid #aaa; -} -.v-table-row-spacer { - height: 10px; - overflow: hidden; /* IE hack to allow < one line height divs */ -} -.v-table-row, -.v-table-row-odd { - background: #fff; - border: 0; - margin: 0; - padding: 0; - cursor: pointer; -} - -.v-table-generated-row { - background: #efefef; -} - -.v-table-body-noselection .v-table-row, -.v-table-body-noselection .v-table-row-odd { - cursor: default; -} -.v-table .v-selected { - background: #999; - color: #fff; -} -.v-table-cell-content { - white-space: nowrap; - overflow: hidden; - padding: 0 6px; - border-right: 1px solid #aaa; -} -.v-table-cell-wrapper { - /* Do not specify any margins, paddings or borders here */ - white-space: nowrap; - overflow: hidden; -} -.v-table-cell-wrapper-align-center { - text-align: center; -} -.v-table-cell-wrapper-align-right { - text-align: right; -} -.v-table-column-selector { - float: right; - background: transparent url(../common/img/sprites.png) no-repeat 4px -37px; - margin: -1.2em 0 0 0; - height: 1.2em; - width: 14px; - position: relative; /* hide this from IE, it works without it */ - cursor: pointer; -} -.v-table.v-disabled .v-table-column-selector { - cursor: default; -} -.v-table-focus-slot-left { - border-left: 2px solid #999; - float: none; - margin-bottom: -1.2em; - width: auto; - background: transparent; - border-right: 1px solid #aaa; -} -.v-table-focus-slot-right { - border-right: 2px solid #999; - margin-left: -2px; -} -.v-table-header-drag { - position: absolute; - background: #efefef; - border: 1px solid #eee; - opacity: 0.9; - filter: alpha(opacity=90); - margin-top: 20px; - z-index: 30000; -} -.v-table-header-drag .v-icon { - vertical-align: middle; -} -.v-table-scrollposition { - width: 160px; - background: #eee; - border: 1px solid #aaa; -} -.v-table-scrollposition span { - display: block; - text-align: center; -} -.v-table-body:focus, -.v-table-body-wrapper:focus { - outline: none; -} -.v-table-body.focused { - border-color: #388ddd; -} -.v-table-focus .v-table-cell-content { - border-top: 1px dotted #0066bd; - border-bottom: 1px dotted #0066bd; -} -.v-table-focus .v-table-cell-wrapper { - margin-top: -1px; - margin-bottom: -1px; -} -/* row in column selector */ -.v-on { - -} -.v-off { - color: #ddd; -} - -.v-table .v-checkbox { - display: inline-block; -} - -/************************************* - * Drag'n'drop styles - *************************************/ -.v-table-drag .v-table-body { - border-color: #1d9dff; -} -.v-table-row-drag-middle .v-table-cell-content { - background-color: #bcdcff; -} -.v-table-row-drag-top .v-table-cell-content { - border-top: 2px solid #1d9dff; -} -.v-table-row-drag-top .v-table-cell-wrapper { - margin-top: -2px; /* compensate the space consumed by border hint */ -} -.v-table-row-drag-bottom .v-table-cell-content { - border-bottom: 2px solid #1d9dff; -} -.v-table-row-drag-bottom .v-table-cell-wrapper { - margin-bottom: -2px; /* compensate the space consumed by border hint */ -} -.v-table-row-drag-top .v-table-cell-content:first-child:before, -.v-table-row-drag-bottom .v-table-cell-content:first-child:after { - display: block; - content: ""; - position: absolute; - width: 6px; - height: 6px; - margin-top: -4px; - margin-left: -6px; - background: transparent url(../common/img/drag-slot-dot.png); -} -.v-ff .v-table-row-drag-bottom .v-table-cell-content:first-child:after, -.v-ie .v-table-row-drag-bottom .v-table-cell-content:first-child:after { - margin-top: -2px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/table/table.scss b/WebContent/VAADIN/themes/base/table/table.scss new file mode 100644 index 0000000000..d521b5ebae --- /dev/null +++ b/WebContent/VAADIN/themes/base/table/table.scss @@ -0,0 +1,283 @@ +@mixin base-table { + +/* Table theme building instructions + * + * Vaadin scroll table is very complex widget with dozens of features. These + * features set some limitations for theme builder. To keep things working, it + * is safest to try to just override values used in default theme and comfort to + * these instructions. + * + * Borders in table header and in table body need to be same width + * - specify vertical borders on .v-table-header-wrap and .v-table-body + * + * Table cells in body: + * - padding/border for cells is to be defined for td elements (class name: .v-table-cell-content) + * - in default theme there are no borders, but they should work. Just set border-right or border-bottom + * - no padding or border is allowed for div inside cells (class name: .v-table-cell-wrapper) element + * - background is allowed for both elements + * + * Table headers: + * - table cells in header contain .v-table-resizer and + * .v-table-caption-container div elements, which are both floated to right + * - to align header caption to body content resizer width + .v-table-caption-container + * padding right should be equal to content cells padding-right and border-right. + * - Possible cell border in header must be themed into column resizer. + * + */ +.v-table { + overflow: hidden; + text-align: left; /* Force default alignment */ +} +.v-table-header-wrap { + overflow: hidden; + border: 1px solid #aaa; + border-bottom: none; + background: #efefef; +} +.v-table-header table, +.v-table-table { + border-spacing: 0; + border-collapse: separate; + margin: 0; + padding: 0; + border: 0; +} +.v-table-header td { + padding: 0; +} +.v-table-header-cell, +.v-table-header-cell-asc, +.v-table-header-cell-desc { + cursor: pointer; +} + +.v-table.v-disabled .v-table-header-cell, +.v-table.v-disabled .v-table-header-cell-asc, +.v-table.v-disabled .v-table-header-cell-desc { + cursor: default; +} + +.v-table-footer-wrap { + overflow: hidden; + border: 1px solid #aaa; + border-top: none; + background: #efefef; +} +.v-table-footer table { + border-spacing: 0; + border-collapse: collapse; + margin: 0; + padding: 0; + border: 0; +} +.v-table-footer td { + padding: 0; + border-right: 1px solid #aaa; +} +.v-table-footer-cell { + cursor: pointer; +} +.v-table-footer-container { + float:right; + padding-right:6px; + overflow:hidden; + white-space:nowrap; +} +.v-table-resizer { + display: block; + height: 1.2em; + float: right; + background: #aaa; + cursor: e-resize; /* Opera does not support col-resize, so use e-resize instead */ + cursor: col-resize; + width: 1px; + overflow: hidden; +} +.v-table.v-disabled .v-table-resizer { + cursor: default; +} +.v-table-caption-container { + overflow: hidden; + white-space: nowrap; + margin-left: 6px; +} +.v-table-caption-container-align-right { + float: right; +} +.v-table-sort-indicator { + width: 0px; + height: 1.2em; + float: right; +} +.v-table-header-cell-asc .v-table-sort-indicator, +.v-table-header-cell-desc .v-table-sort-indicator { + width: 16px; + height: 1.2em; + float: right; +} +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent url(../common/img/sprites.png) no-repeat right 6px; +} +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent url(../common/img/sprites.png) no-repeat right -10px; +} +.v-table-caption-container-align-center { + text-align: center; +} +.v-table-caption-container-align-right { + text-align: right; +} +.v-table-caption-container .v-icon, +.v-table-header-drag .v-icon { + vertical-align: middle; +} +.v-table-body { + border: 1px solid #aaa; +} +.v-table-row-spacer { + height: 10px; + overflow: hidden; /* IE hack to allow < one line height divs */ +} +.v-table-row, +.v-table-row-odd { + background: #fff; + border: 0; + margin: 0; + padding: 0; + cursor: pointer; +} + +.v-table-generated-row { + background: #efefef; +} + +.v-table-body-noselection .v-table-row, +.v-table-body-noselection .v-table-row-odd { + cursor: default; +} +.v-table .v-selected { + background: #999; + color: #fff; +} +.v-table-cell-content { + white-space: nowrap; + overflow: hidden; + padding: 0 6px; + border-right: 1px solid #aaa; +} +.v-table-cell-wrapper { + /* Do not specify any margins, paddings or borders here */ + white-space: nowrap; + overflow: hidden; +} +.v-table-cell-wrapper-align-center { + text-align: center; +} +.v-table-cell-wrapper-align-right { + text-align: right; +} +.v-table-column-selector { + float: right; + background: transparent url(../common/img/sprites.png) no-repeat 4px -37px; + margin: -1.2em 0 0 0; + height: 1.2em; + width: 14px; + position: relative; /* hide this from IE, it works without it */ + cursor: pointer; +} +.v-table.v-disabled .v-table-column-selector { + cursor: default; +} +.v-table-focus-slot-left { + border-left: 2px solid #999; + float: none; + margin-bottom: -1.2em; + width: auto; + background: transparent; + border-right: 1px solid #aaa; +} +.v-table-focus-slot-right { + border-right: 2px solid #999; + margin-left: -2px; +} +.v-table-header-drag { + position: absolute; + background: #efefef; + border: 1px solid #eee; + opacity: 0.9; + filter: alpha(opacity=90); + margin-top: 20px; + z-index: 30000; +} +.v-table-header-drag .v-icon { + vertical-align: middle; +} +.v-table-scrollposition { + width: 160px; + background: #eee; + border: 1px solid #aaa; +} +.v-table-scrollposition span { + display: block; + text-align: center; +} +.v-table-body:focus, +.v-table-body-wrapper:focus { + outline: none; +} +.v-table-body.focused { + border-color: #388ddd; +} +.v-table-focus .v-table-cell-content { + border-top: 1px dotted #0066bd; + border-bottom: 1px dotted #0066bd; +} +.v-table-focus .v-table-cell-wrapper { + margin-top: -1px; + margin-bottom: -1px; +} +/* row in column selector */ +.v-on { + +} +.v-off { + color: #ddd; +} +/************************************* + * Drag'n'drop styles + *************************************/ +.v-table-drag .v-table-body { + border-color: #1d9dff; +} +.v-table-row-drag-middle .v-table-cell-content { + background-color: #bcdcff; +} +.v-table-row-drag-top .v-table-cell-content { + border-top: 2px solid #1d9dff; +} +.v-table-row-drag-top .v-table-cell-wrapper { + margin-top: -2px; /* compensate the space consumed by border hint */ +} +.v-table-row-drag-bottom .v-table-cell-content { + border-bottom: 2px solid #1d9dff; +} +.v-table-row-drag-bottom .v-table-cell-wrapper { + margin-bottom: -2px; /* compensate the space consumed by border hint */ +} +.v-table-row-drag-top .v-table-cell-content:first-child:before, +.v-table-row-drag-bottom .v-table-cell-content:first-child:after { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + margin-left: -6px; + background: transparent url(../common/img/drag-slot-dot.png); +} +.v-ff .v-table-row-drag-bottom .v-table-cell-content:first-child:after, +.v-ie .v-table-row-drag-bottom .v-table-cell-content:first-child:after { + margin-top: -2px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/tabsheet/tabsheet.css b/WebContent/VAADIN/themes/base/tabsheet/tabsheet.css deleted file mode 100644 index d369cd99f0..0000000000 --- a/WebContent/VAADIN/themes/base/tabsheet/tabsheet.css +++ /dev/null @@ -1,124 +0,0 @@ -.v-tabsheet, -.v-tabsheet-content, -.v-tabsheet-deco { - outline: none; /* Prevent selection outline which might break layouts or cause scrollbars */ - text-align: left /* Force default alignment */ -} -.v-tabsheet-tabs { - empty-cells: hide; - border-collapse: collapse; - margin: 0; - padding: 0; - border: 0; - width: 100%; - overflow:hidden; -} -.v-tabsheet-tabitemcell:focus { - outline: none; -} -.v-tabsheet-tabitemcell, -.v-tabsheet-spacertd { - margin: 0; - padding: 0; - vertical-align: bottom; -} -.v-tabsheet-spacertd { - width: 100%; -} -.v-tabsheet-spacertd div { - border-left: 1px solid #aaa; - border-bottom: 1px solid #aaa; - height: 1em; - padding: 0.2em 0; -} -.v-tabsheet-hidetabs .v-tabsheet-tabcontainer { - display: none; -} -.v-tabsheet-scroller { - white-space: nowrap; - text-align: right; - margin-top: -1em; -} -.v-disabled .v-tabsheet-scroller { - display: none; -} -.v-tabsheet-scrollerPrev, -.v-tabsheet-scrollerNext, -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled { - border: 1px solid #aaa; - background: #fff; - width: 12px; - height: 1em; - cursor: pointer; -} -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled { - opacity: 0.5; - cursor: default; -} -.v-tabsheet-tabs .v-caption, -.v-tabsheet-tabs .v-caption span { - white-space: nowrap; -} -.v-tabsheet-caption-close { - display: inline; - display: inline-block; - zoom: 1; - width: 16px; - height: 16px; - text-align: center; - font-weight: bold; - cursor: pointer; - vertical-align: middle; - user-select: none; - -khtml-user-select: none; - -ms-user-select: none; - -moz-user-select: none; - -webkit-user-select: none; -} -.v-tabsheet .v-disabled .v-tabsheet-caption-close { - cursor: default; - visibility: hidden; -} -.v-tabsheet-tabitem:hover .v-tabsheet-caption-close { - visibility: visible; -} -.v-tabsheet-tabitem { - border: 1px solid #aaa; - border-right: none; - cursor: pointer; - padding: 0.2em 0.5em; -} -.v-tabsheet-tabitem .v-caption { - cursor: inherit; -} -.v-tabsheet.v-disabled .v-tabsheet-tabitem, -.v-tabsheet-tabitemcell-disabled .v-tabsheet-tabitem { - cursor: default; -} -.v-tabsheet-tabitem-selected { - cursor: default; - border-bottom-color: #fff; -} -.v-tabsheet-tabitem-selected .v-caption { - cursor: default; -} -.v-tabsheet-content { - border: 1px solid #aaa; - /* Vertical borders are not supported, use v-tabsheet-tabcontainer and v-tabsheet-deco to present these borders */ - border-top: none; - border-bottom: none; - position: relative; -} -.v-tabsheet-deco { - height: 1px; - background: #aaa; - overflow: hidden; -} -.v-tabsheet-hidetabs .v-tabsheet-content { - border: none; -} -.v-tabsheet-hidetabs .v-tabsheet-deco { - height: 0; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/tabsheet/tabsheet.scss b/WebContent/VAADIN/themes/base/tabsheet/tabsheet.scss new file mode 100644 index 0000000000..c58c25be58 --- /dev/null +++ b/WebContent/VAADIN/themes/base/tabsheet/tabsheet.scss @@ -0,0 +1,128 @@ +@mixin base-tabsheet { + +.v-tabsheet, +.v-tabsheet-content, +.v-tabsheet-deco { + outline: none; /* Prevent selection outline which might break layouts or cause scrollbars */ + text-align: left; /* Force default alignment */ +} +.v-tabsheet-tabs { + empty-cells: hide; + border-collapse: collapse; + margin: 0; + padding: 0; + border: 0; + width: 100%; + overflow:hidden; +} +.v-tabsheet-tabitemcell:focus { + outline: none; +} +.v-tabsheet-tabitemcell, +.v-tabsheet-spacertd { + margin: 0; + padding: 0; + vertical-align: bottom; +} +.v-tabsheet-spacertd { + width: 100%; +} +.v-tabsheet-spacertd div { + border-left: 1px solid #aaa; + border-bottom: 1px solid #aaa; + height: 1em; + padding: 0.2em 0; +} +.v-tabsheet-hidetabs .v-tabsheet-tabcontainer { + display: none; +} +.v-tabsheet-scroller { + white-space: nowrap; + text-align: right; + margin-top: -1em; +} +.v-disabled .v-tabsheet-scroller { + display: none; +} +.v-tabsheet-scrollerPrev, +.v-tabsheet-scrollerNext, +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled { + border: 1px solid #aaa; + background: #fff; + width: 12px; + height: 1em; + cursor: pointer; +} +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled { + opacity: 0.5; + cursor: default; +} +.v-tabsheet-tabs .v-caption, +.v-tabsheet-tabs .v-caption span { + white-space: nowrap; +} +.v-tabsheet-caption-close { + display: inline; + display: inline-block; + zoom: 1; + width: 16px; + height: 16px; + text-align: center; + font-weight: bold; + cursor: pointer; + vertical-align: middle; + user-select: none; + -khtml-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} +.v-tabsheet .v-disabled .v-tabsheet-caption-close { + cursor: default; + visibility: hidden; +} +.v-tabsheet-tabitem:hover .v-tabsheet-caption-close { + visibility: visible; +} +.v-tabsheet-tabitem { + border: 1px solid #aaa; + border-right: none; + cursor: pointer; + padding: 0.2em 0.5em; +} +.v-tabsheet-tabitem .v-caption { + cursor: inherit; +} +.v-tabsheet.v-disabled .v-tabsheet-tabitem, +.v-tabsheet-tabitemcell-disabled .v-tabsheet-tabitem { + cursor: default; +} +.v-tabsheet-tabitem-selected { + cursor: default; + border-bottom-color: #fff; +} +.v-tabsheet-tabitem-selected .v-caption { + cursor: default; +} +.v-tabsheet-content { + border: 1px solid #aaa; + /* Vertical borders are not supported, use v-tabsheet-tabcontainer and v-tabsheet-deco to present these borders */ + border-top: none; + border-bottom: none; + position: relative; +} +.v-tabsheet-deco { + height: 1px; + background: #aaa; + overflow: hidden; +} +.v-tabsheet-hidetabs .v-tabsheet-content { + border: none; +} +.v-tabsheet-hidetabs .v-tabsheet-deco { + height: 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/textfield/richtext.css b/WebContent/VAADIN/themes/base/textfield/richtext.css deleted file mode 100644 index 6a236886cc..0000000000 --- a/WebContent/VAADIN/themes/base/textfield/richtext.css +++ /dev/null @@ -1,58 +0,0 @@ -.v-richtextarea { - border: 1px solid #aaa; - overflow: hidden; -} -.v-richtextarea .gwt-RichTextArea { - background: #fff; - border: none; -} -.v-richtextarea .gwt-HTML { - height: 100%; -} -.v-richtextarea .gwt-RichTextToolbar { - white-space: nowrap; - background: #959595 url(img/richtext-toolbar-bg.png) repeat-x 0 -42px; - border-bottom: 1px solid #7d7d7d; - padding: 2px; - overflow: hidden; -} -.v-richtextarea .gwt-RichTextToolbar-top { - padding-bottom: 1px; - overflow: hidden; - white-space: normal; -} -.v-richtextarea .gwt-RichTextToolbar-bottom { - clear: left; - overflow: hidden; - white-space: nowrap; -} -.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton, -.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton { - float: left; - display: inline; - width: 22px; - height: 21px; - overflow: hidden; - background: transparent url(img/richtext-toolbar-bg.png) repeat-x; - cursor: pointer; - margin-right: 2px; - text-align: center; -} -.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down, -.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down, -.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down-hovering, -.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down-hovering { - background-position: 0 -21px; -} -.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton img, -.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton img { - -} -.v-richtextarea .gwt-RichTextToolbar .gwt-ListBox { - width: 24.5%; - margin-right: 2px; -} - -.v-richtextarea-readonly { - border: none; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/textfield/textfield-normal.css b/WebContent/VAADIN/themes/base/textfield/textfield-normal.css deleted file mode 100644 index 557a960c76..0000000000 --- a/WebContent/VAADIN/themes/base/textfield/textfield-normal.css +++ /dev/null @@ -1,47 +0,0 @@ -.v-textfield { - text-align: left /* Force default alignment */ -} -.v-textarea { - resize: none; -} -.v-textfield-focus, -.v-textarea-focus { -} -input.v-textfield-prompt, -textarea.v-textarea-prompt { - color: #999; - font-style: italic; -} -input.v-textfield-readonly, -textarea.v-textarea-readonly { - background: transparent; - border: none; - resize: none; -} -input.v-disabled, -textarea.v-disabled { - resize: none; -} -input.v-textfield-readonly:focus, -textarea.v-textarea-readonly:focus { - outline: none; -} -/* Disabled by default -.v-textarea-error, -.v-textfield-error, -.v-richtextarea-error iframe.gwt-RichTextArea { - background: #FFE0E0; -} -*/ -/* Disabled by default -.v-textarea-required, -.v-textfield-required, -.v-richtextarea-required iframe.gwt-RichTextArea { - background: #FFE0E0; -} -*/ -/* Safari focus glow fix */ -.v-sa input:focus, -.v-sa textarea:focus { - outline-width: medium; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/textfield/textfield.css b/WebContent/VAADIN/themes/base/textfield/textfield.css deleted file mode 100644 index 956b302efe..0000000000 --- a/WebContent/VAADIN/themes/base/textfield/textfield.css +++ /dev/null @@ -1,2 +0,0 @@ -@import "textfield-normal.css"; -@import "richtext.css"; \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/textfield/textfield.scss b/WebContent/VAADIN/themes/base/textfield/textfield.scss new file mode 100644 index 0000000000..b8e54e6887 --- /dev/null +++ b/WebContent/VAADIN/themes/base/textfield/textfield.scss @@ -0,0 +1,118 @@ +// textfield-normal.css + +@mixin base-textfield { + +.v-textfield { + text-align: left; /* Force default alignment */ +} +.v-textarea { + resize: none; +} +.v-textfield-focus, +.v-textarea-focus { +} +input.v-textfield-prompt, +textarea.v-textarea-prompt { + color: #999; + font-style: italic; +} +input.v-textfield-readonly, +textarea.v-textarea-readonly { + background: transparent; + border: none; + resize: none; +} +input.v-disabled, +textarea.v-disabled { + resize: none; +} +input.v-textfield-readonly:focus, +textarea.v-textarea-readonly:focus { + outline: none; +} +/* Disabled by default +.v-textarea-error, +.v-textfield-error, +.v-richtextarea-error iframe.gwt-RichTextArea { + background: #FFE0E0; +} +*/ +/* Disabled by default +.v-textarea-required, +.v-textfield-required, +.v-richtextarea-required iframe.gwt-RichTextArea { + background: #FFE0E0; +} +*/ +/* Safari focus glow fix */ +.v-sa input:focus, +.v-sa textarea:focus { + outline-width: medium; +} + +} + +// richtext.css + +@mixin base-richtextarea { + +.v-richtextarea { + border: 1px solid #aaa; + overflow: hidden; +} +.v-richtextarea .gwt-RichTextArea { + background: #fff; + border: none; +} +.v-richtextarea .gwt-HTML { + height: 100%; +} +.v-richtextarea .gwt-RichTextToolbar { + white-space: nowrap; + background: #959595 url(img/richtext-toolbar-bg.png) repeat-x 0 -42px; + border-bottom: 1px solid #7d7d7d; + padding: 2px; + overflow: hidden; +} +.v-richtextarea .gwt-RichTextToolbar-top { + padding-bottom: 1px; + overflow: hidden; + white-space: normal; +} +.v-richtextarea .gwt-RichTextToolbar-bottom { + clear: left; + overflow: hidden; + white-space: nowrap; +} +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton, +.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton { + float: left; + display: inline; + width: 22px; + height: 21px; + overflow: hidden; + background: transparent url(img/richtext-toolbar-bg.png) repeat-x; + cursor: pointer; + margin-right: 2px; + text-align: center; +} +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down, +.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down, +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down-hovering, +.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down-hovering { + background-position: 0 -21px; +} +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton img, +.v-richtextarea .gwt-RichTextToolbar .gwt-PushButton img { + +} +.v-richtextarea .gwt-RichTextToolbar .gwt-ListBox { + width: 24.5%; + margin-right: 2px; +} + +.v-richtextarea-readonly { + border: none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/tree/tree-connectors.css b/WebContent/VAADIN/themes/base/tree/tree-connectors.css deleted file mode 100644 index c60e41c48b..0000000000 --- a/WebContent/VAADIN/themes/base/tree/tree-connectors.css +++ /dev/null @@ -1,35 +0,0 @@ -/* Make item caption height an even number (so that the connector dots overlap nicely) */ -.v-tree-connectors .v-tree-node-caption { - padding-top: 1px; -} -.v-tree-connectors .v-tree-node { - background: transparent url(img/connector-expand.png) no-repeat 2px -52px; -} -.v-tree-connectors .v-tree-node-expanded { - background: transparent url(img/connector-collapse.png) no-repeat 2px -52px; -} -.v-tree-connectors .v-tree-node-last { - background: transparent url(img/connector-expand-last.png) no-repeat 2px -52px; -} -.v-tree-connectors .v-tree-node-expanded.v-tree-node-last { - background: transparent url(img/connector-collapse-last.png) no-repeat 2px -52px; -} -.v-tree-connectors .v-tree-node-leaf { - background: transparent url(img/connector-leaf.png) repeat-y 2px 50%; -} -.v-tree-connectors .v-tree-node-leaf-last { - background: transparent url(img/connector-leaf-last.png) repeat-y 2px 50%; -} -.v-tree-connectors .v-tree-node-children { - background: transparent url(img/connector.png) repeat-y 2px 0; -} -.v-tree-connectors .v-tree-node-children-last { - background: transparent; -} -.v-tree-connectors .v-tree-node-drag-top, -.v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { - background-position: 2px -53px; -} -.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { - background-position: 2px 50%; -} diff --git a/WebContent/VAADIN/themes/base/tree/tree-default.css b/WebContent/VAADIN/themes/base/tree/tree-default.css deleted file mode 100644 index 23721c77ae..0000000000 --- a/WebContent/VAADIN/themes/base/tree/tree-default.css +++ /dev/null @@ -1,95 +0,0 @@ -.v-tree { - text-align: left; /* Force default alignment */ - overflow: hidden; - padding: 1px 0; - outline: none; -} -.v-tree-node { - background: transparent url(../common/img/sprites.png) no-repeat 5px -37px; - padding: 1px 0; -} -.v-tree-node-caption:focus { - outline: none; -} -div.v-tree-node-leaf { - background: transparent; -} -.v-tree-node-expanded { - background: transparent url(../common/img/sprites.png) no-repeat -5px -10px; -} -.v-tree-node-caption { - margin-left: 1em; -} -.v-tree-node span { - cursor: pointer; -} -.v-tree-node-caption div { - white-space: nowrap; -} -.v-tree-node-caption span, -.v-tree-node-caption .v-icon { - vertical-align: middle; -} -.v-tree-node-selected span { - background: #999; - color: #fff; -} -.v-tree-node-children { - padding-left: 1em; -} -/*************************************** - * Drag'n'drop styles - ***************************************/ -.v-tree .v-tree-node-drag-top { - border-top: 2px solid #1d9dff; - margin-top: -1px; - padding-top: 0; -} -.v-tree .v-tree-node-drag-bottom { - border-bottom: 2px solid #1d9dff; - margin-bottom: -1px; - padding-bottom: 0; -} -.v-tree .v-tree-node-drag-top:before, -.v-tree .v-tree-node-drag-bottom:after, -.v-tree .v-tree-node-caption-drag-center:after { - display: block; - content: ""; - position: absolute; - width: 6px; - height: 6px; - margin-top: -4px; - background: transparent url(../common/img/drag-slot-dot.png); -} -.v-tree .v-tree-node-drag-bottom:after { - margin-top: -2px; -} -.v-tree .v-tree-node-caption-drag-center:after { - margin-left: 14px; -} -.v-ff .v-tree .v-tree-node-caption-drag-center:after, -.v-ie .v-tree .v-tree-node-caption-drag-center:after { - margin-top: -2px; -} -.v-tree .v-tree-node-drag-top { - background-position: 5px -38px; -} -.v-tree .v-tree-node-drag-top.v-tree-node-expanded { - background-position: -5px -11px; -} -.v-tree .v-tree-node-caption-drag-center div { - border: 2px solid #1d9dff; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - margin: -2px 2px -2px -2px; - background-color: #bcdcff; -} -.v-tree .v-tree-node-caption-drag-center div { - background-color: rgba(169,209,255,.6); -} -.v-tree .v-tree-node-caption-drag-center div, -.v-tree .v-tree-node-drag-top, -.v-tree .v-tree-node-drag-bottom { - border-color: rgba(0,109,232,.6); -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/tree/tree.css b/WebContent/VAADIN/themes/base/tree/tree.css deleted file mode 100644 index 59987731b0..0000000000 --- a/WebContent/VAADIN/themes/base/tree/tree.css +++ /dev/null @@ -1,2 +0,0 @@ -@import "tree-default.css"; -@import "tree-connectors.css"; \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/tree/tree.scss b/WebContent/VAADIN/themes/base/tree/tree.scss new file mode 100644 index 0000000000..0319bbe994 --- /dev/null +++ b/WebContent/VAADIN/themes/base/tree/tree.scss @@ -0,0 +1,141 @@ +@mixin base-tree { + +// tree-default.css + +.v-tree { + text-align: left; /* Force default alignment */ + overflow: hidden; + padding: 1px 0; + outline: none; +} +.v-tree-node { + background: transparent url(../common/img/sprites.png) no-repeat 5px -37px; + padding: 1px 0; +} +.v-tree-node-caption:focus { + outline: none; +} +div.v-tree-node-leaf { + background: transparent; +} +.v-tree-node-expanded { + background: transparent url(../common/img/sprites.png) no-repeat -5px -10px; +} +.v-tree-node-caption { + margin-left: 1em; +} +.v-tree-node span { + cursor: pointer; +} +.v-tree-node-caption div { + white-space: nowrap; +} +.v-tree-node-caption span, +.v-tree-node-caption .v-icon { + vertical-align: middle; +} +.v-tree-node-selected span { + background: #999; + color: #fff; +} +.v-tree-node-children { + padding-left: 1em; +} + +// Drag'n'drop styles + +.v-tree .v-tree-node-drag-top { + border-top: 2px solid #1d9dff; + margin-top: -1px; + padding-top: 0; +} +.v-tree .v-tree-node-drag-bottom { + border-bottom: 2px solid #1d9dff; + margin-bottom: -1px; + padding-bottom: 0; +} +.v-tree .v-tree-node-drag-top:before, +.v-tree .v-tree-node-drag-bottom:after, +.v-tree .v-tree-node-caption-drag-center:after { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + background: transparent url(../common/img/drag-slot-dot.png); +} +.v-tree .v-tree-node-drag-bottom:after { + margin-top: -2px; +} +.v-tree .v-tree-node-caption-drag-center:after { + margin-left: 14px; +} +.v-ff .v-tree .v-tree-node-caption-drag-center:after, +.v-ie .v-tree .v-tree-node-caption-drag-center:after { + margin-top: -2px; +} +.v-tree .v-tree-node-drag-top { + background-position: 5px -38px; +} +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: -5px -11px; +} +.v-tree .v-tree-node-caption-drag-center div { + border: 2px solid #1d9dff; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin: -2px 2px -2px -2px; + background-color: #bcdcff; +} +.v-tree .v-tree-node-caption-drag-center div { + background-color: rgba(169,209,255,.6); +} +.v-tree .v-tree-node-caption-drag-center div, +.v-tree .v-tree-node-drag-top, +.v-tree .v-tree-node-drag-bottom { + border-color: rgba(0,109,232,.6); +} + +// tree-connectors.css + +.v-tree-connectors { + // Make item caption height an even number (so that the connector dots overlap nicely) + .v-tree-node-caption { + padding-top: 1px; + } + .v-tree-node { + background: transparent url(img/connector-expand.png) no-repeat 2px -52px; + } + .v-tree-node-expanded { + background: transparent url(img/connector-collapse.png) no-repeat 2px -52px; + } + .v-tree-node-last { + background: transparent url(img/connector-expand-last.png) no-repeat 2px -52px; + } + .v-tree-node-expanded.v-tree-node-last { + background: transparent url(img/connector-collapse-last.png) no-repeat 2px -52px; + } + .v-tree-node-leaf { + background: transparent url(img/connector-leaf.png) repeat-y 2px 50%; + } + .v-tree-node-leaf-last { + background: transparent url(img/connector-leaf-last.png) repeat-y 2px 50%; + } + .v-tree-node-children { + background: transparent url(img/connector.png) repeat-y 2px 0; + } + .v-tree-node-children-last { + background: transparent; + } + .v-tree-node-drag-top, + .v-tree-node-expanded.v-tree-node-drag-top { + background-position: 2px -53px; + } + .v-tree-node-drag-top.v-tree-node-leaf { + background-position: 2px 50%; + } +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/treetable/treetable.css b/WebContent/VAADIN/themes/base/treetable/treetable.css deleted file mode 100644 index 4d9ad5031b..0000000000 --- a/WebContent/VAADIN/themes/base/treetable/treetable.css +++ /dev/null @@ -1,65 +0,0 @@ -.v-treetable-treespacer { - display: inline-block; - background: transparent; - height: 10px; - /* defines the amount of indent per level */ - width: 18px; - position: absolute; - left: 0; - top: 5px; -} - -.v-treetable-node-closed { - background: url(../treetable/img/arrow-right.png) right top no-repeat; -} - -.v-treetable-node-open { - background: url(../treetable/img/arrow-down.png) right top no-repeat; -} - -.v-treetable .v-checkbox { - display: inline-block; - padding-bottom: 4px; -} - -.v-treetable .v-table-row .v-table-cell-content, -.v-treetable .v-table-row-odd .v-table-cell-content { - position: relative; - z-index: 10; -} - -.v-treetable .v-table-cell-wrapper { - position: relative; -} - -.v-treetable .v-table-body .v-table-table .v-table-row-animating { - zoom:1; - z-index:1; -} - -.v-treetable .v-table-body .v-table-table .v-table-row-animating, -.v-treetable .v-table-body .v-table-table .v-table-row-animating .v-table-cell-content { - background:transparent; -} - -.v-treetable-animation-clone { - border-spacing: 0; - zoom:1; -} - -div.v-treetable-animation-clone-wrapper { - position: absolute; - z-index: 2; - background-color:#fff; -} - -div.v-treetable-animation-clone-wrapper table.v-treetable-animation-clone { - background-color:#fff; -} - -div table.v-treetable-animation-clone tr.v-table-row, -div table.v-treetable-animation-clone tr.v-table-row-odd, -div table.v-treetable-animation-clone tr.v-table-row td.v-table-cell-content, -div table.v-treetable-animation-clone tr.v-table-row-odd td.v-table-cell-content { - visibility: visible; -} diff --git a/WebContent/VAADIN/themes/base/treetable/treetable.scss b/WebContent/VAADIN/themes/base/treetable/treetable.scss new file mode 100644 index 0000000000..30e6b9ccbd --- /dev/null +++ b/WebContent/VAADIN/themes/base/treetable/treetable.scss @@ -0,0 +1,69 @@ +@mixin base-treetable { + +.v-treetable-treespacer { + display: inline-block; + background: transparent; + height: 10px; + /* defines the amount of indent per level */ + width: 18px; + position: absolute; + left: 0; + top: 5px; +} + +.v-treetable-node-closed { + background: url(../treetable/img/arrow-right.png) right top no-repeat; +} + +.v-treetable-node-open { + background: url(../treetable/img/arrow-down.png) right top no-repeat; +} + +.v-treetable .v-checkbox { + display: inline-block; + padding-bottom: 4px; +} + +.v-treetable .v-table-row .v-table-cell-content, +.v-treetable .v-table-row-odd .v-table-cell-content { + position: relative; + z-index: 10; +} + +.v-treetable .v-table-cell-wrapper { + position: relative; +} + +.v-treetable .v-table-body .v-table-table .v-table-row-animating { + zoom:1; + z-index:1; +} + +.v-treetable .v-table-body .v-table-table .v-table-row-animating, +.v-treetable .v-table-body .v-table-table .v-table-row-animating .v-table-cell-content { + background:transparent; +} + +.v-treetable-animation-clone { + border-spacing: 0; + zoom:1; +} + +div.v-treetable-animation-clone-wrapper { + position: absolute; + z-index: 2; + background-color:#fff; +} + +div.v-treetable-animation-clone-wrapper table.v-treetable-animation-clone { + background-color:#fff; +} + +div table.v-treetable-animation-clone tr.v-table-row, +div table.v-treetable-animation-clone tr.v-table-row-odd, +div table.v-treetable-animation-clone tr.v-table-row td.v-table-cell-content, +div table.v-treetable-animation-clone tr.v-table-row-odd td.v-table-cell-content { + visibility: visible; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/upload/upload.css b/WebContent/VAADIN/themes/base/upload/upload.css deleted file mode 100644 index adc5751d7c..0000000000 --- a/WebContent/VAADIN/themes/base/upload/upload.css +++ /dev/null @@ -1,36 +0,0 @@ -.v-upload { - white-space: nowrap; -} - - -.v-upload-immediate { - position: relative; - margin: 0; - overflow: hidden; -} - -.v-ff .v-upload-immediate, -.v-op .v-upload-immediate { - display: inline-block; -} - -.v-upload-immediate input { - opacity: 0; - filter: alpha(opacity=0); - z-index: 2; - position: absolute; - right: 0; - height: 21px; - text-align: right; - border: none; - background: transparent; -} - -.v-upload-immediate button { - position: relative; - left: 0; - top: 0; - width: 100%; - text-align: left; -} - \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/upload/upload.scss b/WebContent/VAADIN/themes/base/upload/upload.scss new file mode 100644 index 0000000000..e5d94ce678 --- /dev/null +++ b/WebContent/VAADIN/themes/base/upload/upload.scss @@ -0,0 +1,39 @@ +@mixin base-upload { + +.v-upload { + white-space: nowrap; +} + + +.v-upload-immediate { + position: relative; + margin: 0; + overflow: hidden; +} + +.v-ff .v-upload-immediate, +.v-op .v-upload-immediate { + display: inline-block; +} + +.v-upload-immediate input { + opacity: 0; + filter: alpha(opacity=0); + z-index: 2; + position: absolute; + right: 0; + height: 21px; + text-align: right; + border: none; + background: transparent; +} + +.v-upload-immediate button { + position: relative; + left: 0; + top: 0; + width: 100%; + text-align: left; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/base/window/window.css b/WebContent/VAADIN/themes/base/window/window.css deleted file mode 100644 index d728e7f60e..0000000000 --- a/WebContent/VAADIN/themes/base/window/window.css +++ /dev/null @@ -1,162 +0,0 @@ -.v-window { - background: #fff; -} -.v-window-contents { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.v-window.v-has-width > div.popupContent, -.v-window.v-has-width .v-window-wrap, -.v-window.v-has-width .v-window-contents, -.v-window.v-has-width .v-window-contents > div { - width: 100%; -} - -.v-window.v-has-height > div.popupContent, -.v-window.v-has-height .v-window-wrap, -.v-window.v-has-height .v-window-contents, -.v-window.v-has-height .v-window-contents > div { - height: 100%; -} - -.v-window-outerheader { - padding: 0.3em 1em; - height: 1.6em; - position: relative; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.v-window-outerheader, -.v-window-draggingCurtain { - cursor: move; -} -.v-window-header { - font-weight: bold; -} -/* A more specific selector to make sure padding isn't so easily overridden */ -div.v-window-header { - white-space: nowrap; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - overflow: hidden; - padding: 0; -} -.v-window-header .v-icon { - vertical-align: middle; /* This has to be 'middle', not 'bottom', to allow larger icons than 16px */ -} -.v-window-contents > div { - outline: none; -} -.v-window-footer { - overflow: hidden; - zoom: 1; - height: 10px; - position: relative; - cursor: move; -} -.v-window-resizebox { - width: 10px; - height: 10px; - background: #ddd; - overflow: hidden; - position: absolute; - right: 0; -} - -.v-window-resizebox, -.v-window-resizingCurtain { - cursor: se-resize; -} - -.v-window div.v-window-footer-noresize { - height: 0; -} -.v-window-resizebox-disabled { - cursor: default; - display: none; -} -.v-window-closebox { - position: absolute; - top: 0; - right: 0; - width: 1em; - height: 1em; - background: red; - cursor: pointer; - overflow: hidden; -} -.v-window-modalitycurtain { - top: 0; - left: 0; - background: #999; - opacity: 0.5; - position: fixed; - width: 100%; - height: 100%; - filter: alpha(opacity=50); -} -/* Shadow for window */ -.v-shadow-window { - position: absolute; -} -.v-shadow-window .top-left { - position: absolute; overflow: hidden; - top: -10px; left: -15px; - width: 28px; height: 28px; - background: transparent url(img/shadow/top-left.png); -} -.v-shadow-window .top { - position: absolute; overflow: hidden; - top: -10px; left: 13px; - height: 28px; - right: 13px; - background: transparent url(img/shadow/top.png); -} -.v-shadow-window .top-right { - position: absolute; overflow: hidden; - top: -10px; right: -15px; - width: 28px; height: 28px; - background: transparent url(img/shadow/top-right.png); -} -.v-shadow-window .left { - position: absolute; overflow: hidden; - top: 18px; left: -15px; - width: 28px; - bottom: 10px; - background: transparent url(img/shadow/left.png); -} -.v-shadow-window .center { - position: absolute; overflow: hidden; - top: 18px; left: 13px; - bottom: 10px; right: 13px; - background: transparent url(img/shadow/center.png); -} -.v-shadow-window .right { - position: absolute; overflow: hidden; - top: 18px; right: -15px; - width: 28px; - bottom: 10px; - background: transparent url(img/shadow/right.png); -} -.v-shadow-window .bottom-left { - position: absolute; overflow: hidden; - bottom: -18px; left: -15px; - width: 28px; height: 28px; - background: transparent url(img/shadow/bottom-left.png); -} -.v-shadow-window .bottom { - position: absolute; overflow: hidden; - bottom: -18px; left: 13px; - right: 13px; height: 28px; - background: transparent url(img/shadow/bottom.png); -} -.v-shadow-window .bottom-right { - position: absolute; overflow: hidden; - bottom: -18px; right: -15px; - width: 28px; height: 28px; - background: transparent url(img/shadow/bottom-right.png); -} diff --git a/WebContent/VAADIN/themes/base/window/window.scss b/WebContent/VAADIN/themes/base/window/window.scss new file mode 100644 index 0000000000..33e54b046f --- /dev/null +++ b/WebContent/VAADIN/themes/base/window/window.scss @@ -0,0 +1,166 @@ +@mixin base-window { + +.v-window { + background: #fff; +} +.v-window-contents { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.v-window.v-has-width > div.popupContent, +.v-window.v-has-width .v-window-wrap, +.v-window.v-has-width .v-window-contents, +.v-window.v-has-width .v-window-contents > div { + width: 100%; +} + +.v-window.v-has-height > div.popupContent, +.v-window.v-has-height .v-window-wrap, +.v-window.v-has-height .v-window-contents, +.v-window.v-has-height .v-window-contents > div { + height: 100%; +} + +.v-window-outerheader { + padding: 0.3em 1em; + height: 1.6em; + position: relative; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.v-window-outerheader, +.v-window-draggingCurtain { + cursor: move; +} +.v-window-header { + font-weight: bold; +} +/* A more specific selector to make sure padding isn't so easily overridden */ +div.v-window-header { + white-space: nowrap; + text-overflow: ellipsis; + -ms-text-overflow: ellipsis; + overflow: hidden; + padding: 0; +} +.v-window-header .v-icon { + vertical-align: middle; /* This has to be 'middle', not 'bottom', to allow larger icons than 16px */ +} +.v-window-contents > div { + outline: none; +} +.v-window-footer { + overflow: hidden; + zoom: 1; + height: 10px; + position: relative; + cursor: move; +} +.v-window-resizebox { + width: 10px; + height: 10px; + background: #ddd; + overflow: hidden; + position: absolute; + right: 0; +} + +.v-window-resizebox, +.v-window-resizingCurtain { + cursor: se-resize; +} + +.v-window div.v-window-footer-noresize { + height: 0; +} +.v-window-resizebox-disabled { + cursor: default; + display: none; +} +.v-window-closebox { + position: absolute; + top: 0; + right: 0; + width: 1em; + height: 1em; + background: red; + cursor: pointer; + overflow: hidden; +} +.v-window-modalitycurtain { + top: 0; + left: 0; + background: #999; + opacity: 0.5; + position: fixed; + width: 100%; + height: 100%; + filter: alpha(opacity=50); +} +/* Shadow for window */ +.v-shadow-window { + position: absolute; +} +.v-shadow-window .top-left { + position: absolute; overflow: hidden; + top: -10px; left: -15px; + width: 28px; height: 28px; + background: transparent url(img/shadow/top-left.png); +} +.v-shadow-window .top { + position: absolute; overflow: hidden; + top: -10px; left: 13px; + height: 28px; + right: 13px; + background: transparent url(img/shadow/top.png); +} +.v-shadow-window .top-right { + position: absolute; overflow: hidden; + top: -10px; right: -15px; + width: 28px; height: 28px; + background: transparent url(img/shadow/top-right.png); +} +.v-shadow-window .left { + position: absolute; overflow: hidden; + top: 18px; left: -15px; + width: 28px; + bottom: 10px; + background: transparent url(img/shadow/left.png); +} +.v-shadow-window .center { + position: absolute; overflow: hidden; + top: 18px; left: 13px; + bottom: 10px; right: 13px; + background: transparent url(img/shadow/center.png); +} +.v-shadow-window .right { + position: absolute; overflow: hidden; + top: 18px; right: -15px; + width: 28px; + bottom: 10px; + background: transparent url(img/shadow/right.png); +} +.v-shadow-window .bottom-left { + position: absolute; overflow: hidden; + bottom: -18px; left: -15px; + width: 28px; height: 28px; + background: transparent url(img/shadow/bottom-left.png); +} +.v-shadow-window .bottom { + position: absolute; overflow: hidden; + bottom: -18px; left: 13px; + right: 13px; height: 28px; + background: transparent url(img/shadow/bottom.png); +} +.v-shadow-window .bottom-right { + position: absolute; overflow: hidden; + bottom: -18px; right: -15px; + width: 28px; height: 28px; + background: transparent url(img/shadow/bottom-right.png); +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/chameleon.scss b/WebContent/VAADIN/themes/chameleon/chameleon.scss new file mode 100644 index 0000000000..16f95bbbb4 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/chameleon.scss @@ -0,0 +1,10 @@ +// this file just defines all chameleon mixins by importing them + +// common (mostly application or page level) parts of the theme + +@import "common/common.scss"; + +// components - can override or replace in user themes + +@import "components/components.scss"; +@import "compound/compound.scss"; diff --git a/WebContent/VAADIN/themes/chameleon/common/common.css b/WebContent/VAADIN/themes/chameleon/common/common.css deleted file mode 100644 index 9d5a64b2ad..0000000000 --- a/WebContent/VAADIN/themes/chameleon/common/common.css +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Base theme is automatically included in the compiled theme. - * @import "../../base/styles.css"; - */ - -/******************************************************************************* - * App background & tooltip - ******************************************************************************/ - -.v-app { - background: transparent; - overflow: hidden; - } - -.v-view { - margin-top: 0; - border-top: none; - } - -.v-tooltip { - background: #fdfdee; - border: 1px solid #c0c0b9; - padding: 1px 5px; - color: #222; - font-size: 0.9em; - line-height: normal; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - } - -.v-sa .v-tooltip { - outline: 1px solid rgba(0,0,0,.2); - -webkit-border-radius: 0; - -moz-border-radius: 0; - border: none; - } - - -/******************************************************************************* - * Global fonts - ******************************************************************************/ - -/* First all the containers that have other components inside them, and are - * possibly overlay elements (which reside inside the BODY element, not the .v-app element) - */ -/* Then come all other overlay elements, that do not have other arbitrary - * components inside them (from v-filterselect-suggestpopup onwards) */ -.v-app, -.v-window, -.v-popupview-popup, -.v-tooltip, -.v-app input, -.v-app select, -.v-app button, -.v-app textarea, -.v-window input, -.v-window select, -.v-window button, -.v-window textarea, -.v-popupview-popup input, -.v-popupview-popup select, -.v-popupview-popup button, -.v-popupview-popup textarea, -.v-filterselect-suggestpopup, -.v-datefield-popup, -.v-contextmenu, -.v-Notification, -.v-menubar-submenu, -.v-table-header-drag, -.v-menubar-submenu, -.v-drag-element { - font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; - font-size: 13px; - line-height: 1.4; - color: #222; - } - - - -/******************************************************************************* - * Generic overlay elements - ******************************************************************************/ -.v-window, -.v-popupview-popup, -.v-filterselect-suggestpopup, -.v-datefield-popup, -.v-contextmenu, -.v-Notification, -.v-menubar-submenu { - background: #fff url(../img/grad-light-top.png) repeat-x; - background-color: rgba(255,255,255,.85); - border: 1px solid #adadad; - border-color: rgba(0,0,0,.4); - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - overflow: hidden; - } - -.v-filterselect-suggestpopup, -.v-contextmenu, -.v-menubar-submenu { - padding: 3px 0; - } - -.v-contextmenu .gwt-MenuItem, -.v-filterselect-suggestpopup .gwt-MenuItem, -.v-menubar-submenu .v-menubar-menuitem { - padding: .05em .7em; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - cursor: default; - } - -.v-contextmenu td.gwt-MenuItem-selected div, -.v-filterselect-suggestpopup td.gwt-MenuItem-selected, -.v-table .v-table-body .v-selected, -.v-menubar-submenu span.v-menubar-menuitem-selected { - text-shadow: none; - } - -.v-contextmenu .gwt-MenuItem-selected, -.v-filterselect-suggestpopup .gwt-MenuItem-selected, -.v-table .v-selected, -.v-menubar-submenu .v-menubar-menuitem-selected { - background-color: #333; - } - -.v-contextmenu .gwt-MenuItem-selected div { - background: transparent; - } - - -/******************************************************************************* - * Misc. generics - ******************************************************************************/ -.v-errorindicator { - width: 13px; - height: 1.4em; - background: transparent url(../img/error-indicator.png) no-repeat right 50%; - } - -.v-caption-small .v-errorindicator { - height: 1.2em; - } - -.v-caption-big .v-errorindicator { - height: 1.8em; - } - -.v-tooltip .v-errormessage { - color: #b2320b; - padding-left: 14px; - background: transparent url(../img/error-indicator.png) no-repeat 0 50%; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/common/common.scss b/WebContent/VAADIN/themes/chameleon/common/common.scss new file mode 100644 index 0000000000..a7878b38ec --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/common/common.scss @@ -0,0 +1,164 @@ +// this file defines the common chameleon mixin any related variables etc. + +$chameleon-app-background: transparent; + +$chameleon-font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; +$chameleon-font-size: 13px; +$chameleon-line-height: 1.4; + + +// rules on the application level, above theme selection +@mixin chameleon-app { + // App background & tooltip + .v-app { + background: transparent; + overflow: hidden; + } + + .v-view { + margin-top: 0; + border-top: none; + } + + .v-tooltip { + background: #fdfdee; + border: 1px solid #c0c0b9; + padding: 1px 5px; + color: #222; + font-size: 0.9em; + line-height: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + } + + .v-sa .v-tooltip { + outline: 1px solid rgba(0,0,0,.2); + -webkit-border-radius: 0; + -moz-border-radius: 0; + border: none; + } + + // TODO move most of the rest to chameleon-common + + // Global fonts + + // First all the containers that have other components inside them, and are + // possibly overlay elements (which reside inside the BODY element, not the .v-app element) + + // Then come all other overlay elements, that do not have other arbitrary + // components inside them (from v-filterselect-suggestpopup onwards) + + .v-app, + .v-window, + .v-popupview-popup, + .v-tooltip, + .v-app input, + .v-app select, + .v-app button, + .v-app textarea, + .v-window input, + .v-window select, + .v-window button, + .v-window textarea, + .v-popupview-popup input, + .v-popupview-popup select, + .v-popupview-popup button, + .v-popupview-popup textarea, + .v-filterselect-suggestpopup, + .v-datefield-popup, + .v-contextmenu, + .v-Notification, + .v-menubar-submenu, + .v-table-header-drag, + .v-menubar-submenu, + .v-drag-element { + font-family: $chameleon-font-family; + font-size: $chameleon-font-size; + line-height: $chameleon-line-height; + color: #222; + } + + + + // Generic overlay elements + + .v-window, + .v-popupview-popup, + .v-filterselect-suggestpopup, + .v-datefield-popup, + .v-contextmenu, + .v-Notification, + .v-menubar-submenu { + background: #fff url(../img/grad-light-top.png) repeat-x; + background-color: rgba(255,255,255,.85); + border: 1px solid #adadad; + border-color: rgba(0,0,0,.4); + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + overflow: hidden; + } + + .v-filterselect-suggestpopup, + .v-contextmenu, + .v-menubar-submenu { + padding: 3px 0; + } + + .v-contextmenu .gwt-MenuItem, + .v-filterselect-suggestpopup .gwt-MenuItem, + .v-menubar-submenu .v-menubar-menuitem { + padding: .05em .7em; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + cursor: default; + } + + .v-contextmenu td.gwt-MenuItem-selected div, + .v-filterselect-suggestpopup td.gwt-MenuItem-selected, + .v-table .v-table-body .v-selected, + .v-menubar-submenu span.v-menubar-menuitem-selected { + text-shadow: none; + } + + .v-contextmenu .gwt-MenuItem-selected, + .v-filterselect-suggestpopup .gwt-MenuItem-selected, + .v-table .v-selected, + .v-menubar-submenu .v-menubar-menuitem-selected { + background-color: #333; + } + + .v-contextmenu .gwt-MenuItem-selected div { + background: transparent; + } + + + // Misc. generics + + .v-tooltip .v-errormessage { + color: #b2320b; + padding-left: 14px; + background: transparent url(../img/error-indicator.png) no-repeat 0 50%; + } + +} + +@mixin chameleon-common { + // Misc. generics + + .v-errorindicator { + width: 13px; + height: 1.4em; + background: transparent url(../img/error-indicator.png) no-repeat right 50%; + } + + .v-caption-small .v-errorindicator { + height: 1.2em; + } + + .v-caption-big .v-errorindicator { + height: 1.8em; + } +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/accordion/accordion.css b/WebContent/VAADIN/themes/chameleon/components/accordion/accordion.css deleted file mode 100644 index 8fb7254008..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/accordion/accordion.css +++ /dev/null @@ -1,76 +0,0 @@ -.v-accordion { - border: 1px solid #b3b3b3; - } - -.v-accordion-item-open { - border-bottom: 1px solid #b3b3be; - } - -.v-accordion-item-caption, -.v-accordion-item-open .v-accordion-item-caption:active { - padding: 0; - background: transparent url(../../img/grad-light-top.png) repeat-x; - border-width: 0 0 1px 0; - border-style: solid none; - } - -div.v-accordion-item-caption, -div.v-accordion-item-open .v-accordion-item-caption:active { - background-color: transparent; - } - -.v-accordion-item-caption .v-caption { - padding: .2em .9em; - } - -.v-accordion-item-caption:active { - background-image: url(../../img/grad-dark-bottom.png); - background-position: left bottom; - } - -/******************************************************************************* - * Opaque - ******************************************************************************/ -.v-accordion-opaque { - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - } - -.v-accordion-opaque .v-accordion-item-caption, -.v-accordion-opaque .v-accordion-item-open { - border-none; - } - -.v-accordion-opaque .v-accordion-item-caption, -.v-accordion-opaque .v-accordion-item-open .v-accordion-item-caption:active { - background-color: #b8b8b8; - } - -.v-accordion-opaque .v-accordion-item-open { - background-color: #fff; - } - -.v-accordion-opaque .v-accordion-item-first, -.v-accordion-opaque .v-accordion-item-first .v-accordion-item-caption { - -webkit-border-top-left-radius: 3px; - -webkit-border-top-right-radius: 3px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-topright: 3px; - overflow: hidden; - } - - -/******************************************************************************* - * Borderless - ******************************************************************************/ -.v-accordion-borderless { - border: none; - } - -.v-accordion-opaque.borderless, -.v-accordion-opaque.borderless .v-accordion-item-first .v-accordion-item-caption { - border-radius: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/accordion/accordion.scss b/WebContent/VAADIN/themes/chameleon/components/accordion/accordion.scss new file mode 100644 index 0000000000..f33577db9e --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/accordion/accordion.scss @@ -0,0 +1,80 @@ +@mixin chameleon-accordion { + +.v-accordion { + border: 1px solid #b3b3b3; + } + +.v-accordion-item-open { + border-bottom: 1px solid #b3b3be; + } + +.v-accordion-item-caption, +.v-accordion-item-open .v-accordion-item-caption:active { + padding: 0; + background: transparent url(../../img/grad-light-top.png) repeat-x; + border-width: 0 0 1px 0; + border-style: solid none; + } + +div.v-accordion-item-caption, +div.v-accordion-item-open .v-accordion-item-caption:active { + background-color: transparent; + } + +.v-accordion-item-caption .v-caption { + padding: .2em .9em; + } + +.v-accordion-item-caption:active { + background-image: url(../../img/grad-dark-bottom.png); + background-position: left bottom; + } + +/******************************************************************************* + * Opaque + ******************************************************************************/ +.v-accordion-opaque { + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + } + +.v-accordion-opaque .v-accordion-item-caption, +.v-accordion-opaque .v-accordion-item-open { + border: none; + } + +.v-accordion-opaque .v-accordion-item-caption, +.v-accordion-opaque .v-accordion-item-open .v-accordion-item-caption:active { + background-color: #b8b8b8; + } + +.v-accordion-opaque .v-accordion-item-open { + background-color: #fff; + } + +.v-accordion-opaque .v-accordion-item-first, +.v-accordion-opaque .v-accordion-item-first .v-accordion-item-caption { + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + overflow: hidden; + } + + +/******************************************************************************* + * Borderless + ******************************************************************************/ +.v-accordion-borderless { + border: none; + } + +.v-accordion-opaque.borderless, +.v-accordion-opaque.borderless .v-accordion-item-first .v-accordion-item-caption { + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/button/button.css b/WebContent/VAADIN/themes/chameleon/components/button/button.css deleted file mode 100644 index 1dffddb4c2..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/button/button.css +++ /dev/null @@ -1,257 +0,0 @@ -.v-button:active, -.v-ie8 .v-pressed.v-button, -div.v-button-down { - background-image: url(../../img/grad-dark-bottom2.png); - background-color: #afafaf; - } - -.v-button:active .v-button-wrap, -.v-ie8 .v-pressed.v-button .v-button-wrap, -.v-button-down .v-button-wrap { - background-image: url(../../img/grad-dark-top2.png); - border: 1px solid #888; - padding: 3px 12px; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - } - -div.v-button-down .v-button-wrap { - background-image: url(../../img/grad-dark-top2.png); - } - -.v-button { - overflow: hidden; - } - -.v-button, -.v-disabled.v-button:focus, -.v-disabled.v-button:active { - border: 1px solid #8b8b8b; - background: #c9c9c9; - border-radius: 3px; - background: #c9c9c9 url(../../img/grad-dark-bottom.png) repeat-x left bottom; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.2); - -moz-box-shadow: 0 1px 0 rgba(255,255,255,.2); - text-shadow: 0 1px 0 #fff; - padding: 0; - } - -.v-button-wrap, -.v-disabled:active .v-button-wrap { - display: block; - padding: 4px 13px; - border: none; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - background: transparent url(../../img/grad-light-top.png) repeat-x; - height: 100%; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; - } - -.v-sa .v-button, -.v-sa .v-button-wrap, -.v-ff .v-button, -.v-ff .v-button-wrap { - overflow: hidden; - } - -.v-button:focus { - outline: none; - } - -.v-button .v-icon { - margin-left: -0.5em; - } - -.v-button .v-button-caption { - line-height: 1.26; - } - - -/******************************************************************************* - * Big - ******************************************************************************/ -.v-button-big { - font-size: 1.2em; - } - - -/******************************************************************************* - * Small - ******************************************************************************/ -.v-button-small { - font-size: 0.85em; - font-weight: normal; - } - -.v-button-small .v-button-wrap { - padding: 3px 11px; - } - -.v-button-small:active .v-button-wrap, -.v-ie8 .v-button-small.v-pressed .v-button-wrap, -.v-button-down.small .v-button-wrap { - padding: 2px 10px; - } - -.v-button-small .v-icon { - margin-top: -4px; - margin-bottom: -4px; - } - - -/******************************************************************************* - * Wide - ******************************************************************************/ -.v-button-wide .v-button-wrap { - padding-left: 26px; - padding-right: 26px; - } - -.v-button-wide:active .v-button-wrap, -.v-ie8 .v-button-wide.v-pressed .v-button-wrap { - padding-left: 25px; - padding-right: 25px; - } - - -/******************************************************************************* - * Tall - ******************************************************************************/ -.v-button-tall .v-button-wrap { - padding-top: 13px; - padding-bottom: 13px; - } - -.v-button-tall:active .v-button-wrap, -.v-ie8 .v-button-tall.v-pressed .v-button-wrap { - padding-top: 12px; - padding-bottom: 12px; - } - - -/******************************************************************************* - * Default - ******************************************************************************/ -.v-button-default, -.v-disabled.v-button-default:focus { - font-weight: bold; - } - - -/******************************************************************************* - * Link & borderless - ******************************************************************************/ -div.v-button-link, -div.v-button-link:focus, -.v-button-link:active, -div.v-disabled.v-button-link, -div.v-disabled.v-button-link:focus, -body.v-ie .v-pressed.v-button-link, -div.v-button-borderless, -div.v-button-borderless:focus, -.v-button-borderless:active, -div.v-disabled.v-button-borderless, -div.v-disabled.v-button-borderless:focus, -body.v-ie .v-pressed.v-button-borderless { - background: transparent; - font-weight: normal; - text-shadow: none; - border: none; - margin: 1px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - } - -.v-button-link .v-button-wrap, -.v-button-borderless .v-button-wrap { - display: inline; - } - -div.v-button-link .v-button-wrap, -div.v-button-link:focus .v-button-wrap, -.v-button-link:active .v-button-wrap, -div.v-disabled.v-button-link .v-button-wrap, -div.v-disabled.v-button-link:focus .v-button-wrap, -body.v-ie .v-pressed.v-button-link .v-button-wrap, -div.v-button-borderless .v-button-wrap, -div.v-button-borderless:focus .v-button-wrap, -.v-button-borderless:active .v-button-wrap, -div.v-disabled.v-button-borderless .v-button-wrap, -div.v-disabled.v-button-borderless:focus .v-button-wrap, -body.v-ie .v-pressed.v-button-borderless .v-button-wrap { - background: transparent; - font-weight: normal; - text-shadow: none; - border: none; - padding: 1px; - -webkit-box-shadow: none; - -moz-box-shadow: none; - } - -.v-button-link:focus .v-button-caption, -.v-button-borderless:focus .v-button-caption { - border: 1px dotted gray; - margin: -1px; - } - -.v-button-link:active .v-button-caption, -.v-button-borderless:active .v-button-caption { - border: none; - margin: 0; - } - -.v-button-borderless:active .v-icon { - opacity: .6; - } - -.v-button-link .v-icon, -.v-button-borderless .v-icon { - margin-left: 0; - } - - -/******************************************************************************* - * Icon-on-top - ******************************************************************************/ -.v-button-icon-on-top.v-button-borderless:focus .v-button-caption { - margin-top: 1px; - } - -.v-button-icon-on-top .v-button-caption, -.v-button-icon-on-top:focus .v-button-caption, -.v-button-icon-on-top.v-button-borderless:active .v-button-caption { - display: block; - margin-top: 2px; - } - -.v-button-icon-on-top .v-icon { - margin: 0; - } - - -/******************************************************************************* - * Icon-on-right - ******************************************************************************/ -.v-button-icon-on-right .v-icon { - float: right; - margin-left: 3px; - margin-right: -0.5em; - } - - -/******************************************************************************* - * Icon-only - ******************************************************************************/ -.v-button-icon-only .v-button-caption { - display: none; - } - -.v-button-icon-only .v-icon { - margin-right: -.5em; - } diff --git a/WebContent/VAADIN/themes/chameleon/components/button/button.scss b/WebContent/VAADIN/themes/chameleon/components/button/button.scss new file mode 100644 index 0000000000..beeba2478f --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/button/button.scss @@ -0,0 +1,261 @@ +@mixin chameleon-button { + +.v-button:active, +.v-ie8 .v-pressed.v-button, +div.v-button-down { + background-image: url(../../img/grad-dark-bottom2.png); + background-color: #afafaf; + } + +.v-button:active .v-button-wrap, +.v-ie8 .v-pressed.v-button .v-button-wrap, +.v-button-down .v-button-wrap { + background-image: url(../../img/grad-dark-top2.png); + border: 1px solid #888; + padding: 3px 12px; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } + +div.v-button-down .v-button-wrap { + background-image: url(../../img/grad-dark-top2.png); + } + +.v-button { + overflow: hidden; + } + +.v-button, +.v-disabled.v-button:focus, +.v-disabled.v-button:active { + border: 1px solid #8b8b8b; + background: #c9c9c9; + border-radius: 3px; + background: #c9c9c9 url(../../img/grad-dark-bottom.png) repeat-x left bottom; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: 0 1px 0 rgba(255,255,255,.2); + text-shadow: 0 1px 0 #fff; + padding: 0; + } + +.v-button-wrap, +.v-disabled:active .v-button-wrap { + display: block; + padding: 4px 13px; + border: none; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + background: transparent url(../../img/grad-light-top.png) repeat-x; + height: 100%; + text-overflow: ellipsis; + -ms-text-overflow: ellipsis; + } + +.v-sa .v-button, +.v-sa .v-button-wrap, +.v-ff .v-button, +.v-ff .v-button-wrap { + overflow: hidden; + } + +.v-button:focus { + outline: none; + } + +.v-button .v-icon { + margin-left: -0.5em; + } + +.v-button .v-button-caption { + line-height: 1.26; + } + + +/******************************************************************************* + * Big + ******************************************************************************/ +.v-button-big { + font-size: 1.2em; + } + + +/******************************************************************************* + * Small + ******************************************************************************/ +.v-button-small { + font-size: 0.85em; + font-weight: normal; + } + +.v-button-small .v-button-wrap { + padding: 3px 11px; + } + +.v-button-small:active .v-button-wrap, +.v-ie8 .v-button-small.v-pressed .v-button-wrap, +.v-button-down.small .v-button-wrap { + padding: 2px 10px; + } + +.v-button-small .v-icon { + margin-top: -4px; + margin-bottom: -4px; + } + + +/******************************************************************************* + * Wide + ******************************************************************************/ +.v-button-wide .v-button-wrap { + padding-left: 26px; + padding-right: 26px; + } + +.v-button-wide:active .v-button-wrap, +.v-ie8 .v-button-wide.v-pressed .v-button-wrap { + padding-left: 25px; + padding-right: 25px; + } + + +/******************************************************************************* + * Tall + ******************************************************************************/ +.v-button-tall .v-button-wrap { + padding-top: 13px; + padding-bottom: 13px; + } + +.v-button-tall:active .v-button-wrap, +.v-ie8 .v-button-tall.v-pressed .v-button-wrap { + padding-top: 12px; + padding-bottom: 12px; + } + + +/******************************************************************************* + * Default + ******************************************************************************/ +.v-button-default, +.v-disabled.v-button-default:focus { + font-weight: bold; + } + + +/******************************************************************************* + * Link & borderless + ******************************************************************************/ +div.v-button-link, +div.v-button-link:focus, +.v-button-link:active, +div.v-disabled.v-button-link, +div.v-disabled.v-button-link:focus, +body.v-ie .v-pressed.v-button-link, +div.v-button-borderless, +div.v-button-borderless:focus, +.v-button-borderless:active, +div.v-disabled.v-button-borderless, +div.v-disabled.v-button-borderless:focus, +body.v-ie .v-pressed.v-button-borderless { + background: transparent; + font-weight: normal; + text-shadow: none; + border: none; + margin: 1px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + } + +.v-button-link .v-button-wrap, +.v-button-borderless .v-button-wrap { + display: inline; + } + +div.v-button-link .v-button-wrap, +div.v-button-link:focus .v-button-wrap, +.v-button-link:active .v-button-wrap, +div.v-disabled.v-button-link .v-button-wrap, +div.v-disabled.v-button-link:focus .v-button-wrap, +body.v-ie .v-pressed.v-button-link .v-button-wrap, +div.v-button-borderless .v-button-wrap, +div.v-button-borderless:focus .v-button-wrap, +.v-button-borderless:active .v-button-wrap, +div.v-disabled.v-button-borderless .v-button-wrap, +div.v-disabled.v-button-borderless:focus .v-button-wrap, +body.v-ie .v-pressed.v-button-borderless .v-button-wrap { + background: transparent; + font-weight: normal; + text-shadow: none; + border: none; + padding: 1px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + } + +.v-button-link:focus .v-button-caption, +.v-button-borderless:focus .v-button-caption { + border: 1px dotted gray; + margin: -1px; + } + +.v-button-link:active .v-button-caption, +.v-button-borderless:active .v-button-caption { + border: none; + margin: 0; + } + +.v-button-borderless:active .v-icon { + opacity: .6; + } + +.v-button-link .v-icon, +.v-button-borderless .v-icon { + margin-left: 0; + } + + +/******************************************************************************* + * Icon-on-top + ******************************************************************************/ +.v-button-icon-on-top.v-button-borderless:focus .v-button-caption { + margin-top: 1px; + } + +.v-button-icon-on-top .v-button-caption, +.v-button-icon-on-top:focus .v-button-caption, +.v-button-icon-on-top.v-button-borderless:active .v-button-caption { + display: block; + margin-top: 2px; + } + +.v-button-icon-on-top .v-icon { + margin: 0; + } + + +/******************************************************************************* + * Icon-on-right + ******************************************************************************/ +.v-button-icon-on-right .v-icon { + float: right; + margin-left: 3px; + margin-right: -0.5em; + } + + +/******************************************************************************* + * Icon-only + ******************************************************************************/ +.v-button-icon-only .v-button-caption { + display: none; + } + +.v-button-icon-only .v-icon { + margin-right: -.5em; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/components.css b/WebContent/VAADIN/themes/chameleon/components/components.css deleted file mode 100644 index c497a4a323..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/components.css +++ /dev/null @@ -1,17 +0,0 @@ -@import "accordion/accordion.css"; -@import "button/button.css"; -@import "label/label.css"; -@import "menubar/menubar.css"; -@import "notification/notification.css"; -@import "panel/panel.css"; -@import "popupview/popupview.css"; -@import "progressindicator/progressindicator.css"; -@import "slider/slider.css"; -@import "splitpanel/splitpanel.css"; -@import "table/table.css"; -@import "textfield/textfield.css"; -@import "datefield/datefield.css"; /* datefield and selects must be after textfield */ -@import "selects/selects.css"; -@import "tabsheet/tabsheet.css"; -@import "tree/tree.css"; -@import "window/window.css"; \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/components.scss b/WebContent/VAADIN/themes/chameleon/components/components.scss new file mode 100644 index 0000000000..45a313ed60 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/components.scss @@ -0,0 +1,41 @@ +@import "accordion/accordion.scss"; +@import "button/button.scss"; +@import "label/label.scss"; +@import "menubar/menubar.scss"; +@import "notification/notification.scss"; +@import "panel/panel.scss"; +@import "popupview/popupview.scss"; +@import "progressindicator/progressindicator.scss"; +@import "slider/slider.scss"; +@import "splitpanel/splitpanel.scss"; +@import "table/table.scss"; +@import "textfield/textfield.scss"; +// datefield and selects must be after textfield +@import "datefield/datefield.scss"; +@import "selects/selects.scss"; +@import "tabsheet/tabsheet.scss"; +@import "tree/tree.scss"; +@import "window/window.scss"; + +@mixin chameleon-components { + + @include chameleon-accordion; + @include chameleon-button; + @include chameleon-label; + @include chameleon-menubar; + @include chameleon-notification; + @include chameleon-panel; + @include chameleon-popupview; + @include chameleon-progressindicator; + @include chameleon-slider; + @include chameleon-splitpanel; + @include chameleon-table; + @include chameleon-textfield; + // datefield and selects must be after textfield + @include chameleon-datefield; + @include chameleon-selects; + @include chameleon-tabsheet; + @include chameleon-tree; + @include chameleon-window; + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.css b/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.css deleted file mode 100644 index 3804ab52e0..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.css +++ /dev/null @@ -1,275 +0,0 @@ -.v-datefield-button { - background: #dadada url(../../img/date-btn.png) repeat-x 50% 0; - border: 1px solid gray; - -webkit-border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - width: 25px; - height: 1.2em; - padding: .2em 0; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - -ms-box-sizing: content-box; - box-sizing: content-box; - } - -.v-datefield-small .v-datefield-button { - height: 1.2em; - } - -.v-datefield-big .v-datefield-button { - padding: .3em 0; - height: 1.2em; - } - -.v-ie8 .v-datefield-button { - height: 1.6em; - padding: 0; - } - -.v-ie8 .v-datefield-big .v-datefield-button { - height: 1.8em; - } - -input.v-datefield-textfield { - border-right: none; - -webkit-border-top-right-radius: 0; - -webkit-border-bottom-right-radius: 0; - -moz-border-radius-topright: 0; - -moz-border-radius-bottomright: 0; - } - - -/******************************************************************************* - * Big - ******************************************************************************/ -.v-datefield-big .v-datefield-button { - width: 32px; - background-image: url(../../img/date-btn-big.png); - } - - -/******************************************************************************* - * Small - ******************************************************************************/ -.v-datefield-small .v-datefield-button { - width: 19px; - background-position: 50% -2px; - } - - -/******************************************************************************* - * Calendar panel - ******************************************************************************/ -.v-datefield-calendarpanel { - border-collapse: collapse; - margin: 0; - padding: 0; - height: auto !important; - font-size: 0.9em; - } - -.v-datefield-month .v-datefield-textfield { - width: 6em; - } - -.v-datefield-year .v-datefield-textfield { - width: 4em; - } - -.v-datefield-year .v-datefield-calendarpanel-prevmonth, -.v-datefield-year .v-datefield-calendarpanel-nextmonth { - display: none; - } - -.v-datefield-calendarpanel-header td { - border-bottom: 1px solid #666; - } - -.v-datefield-year .v-datefield-calendarpanel-header td, -.v-datefield-month .v-datefield-calendarpanel-header td { - border-bottom: none; - } - -td.v-datefield-calendarpanel-month { - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x 0 -1px; - text-shadow: 0 1px 0 rgba(255,255,255,.7); - } - -span.v-datefield-calendarpanel-month { - display: block; - text-align: center; - overflow: hidden; - line-height: 2em; - height: 1.8em; - } - -.v-datefield-year .v-datefield-calendarpanel-month { - width: 5em; - } - -.v-datefield-month .v-datefield-calendarpanel-month, -.v-datefield-day .v-datefield-calendarpanel-month, -.v-datefield-full .v-datefield-calendarpanel-month { - width: 9em; - } - -.v-datefield-popupcalendar { - min-width: 0; - } - -.v-datefield-year .v-datefield-calendarpanel { - width: 8em; - } - -td.v-datefield-calendarpanel-prevyear { - text-align: right; - } - -td.v-datefield-calendarpanel-nextyear { - text-align: left; - } - -.v-datefield-calendarpanel-header button { - font-size: 1em; - line-height: normal; - width: 100%; - padding: 0 .8em; - height: 1.8em; - border: none; - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x 0 -1px; - overflow: hidden; - outline: none; - cursor: pointer; - } - -.v-datefield-popup .v-datefield-calendarpanel-month, -.v-datefield-popup .v-datefield-calendarpanel-header button { - background-position: 0 0; - } - -.v-datefield-calendarpanel-header button:active { - background-image: url(../../img/grad-dark-top2.png); - } - -.v-datefield-calendarpanel-prevyear button { - -webkit-border-top-left-radius: 4px; - -moz-border-radius-topleft: 4px; - } - -.v-datefield-calendarpanel-nextyear button { - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topright: 4px; - } - -.v-datefield-year .v-datefield-calendarpanel-prevyear button, -.v-datefield-month .v-datefield-calendarpanel-prevyear button { - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - } - -.v-datefield-year .v-datefield-calendarpanel-nextyear button, -.v-datefield-month .v-datefield-calendarpanel-nextyear button { - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - } - -.v-datefield-calendarpanel-body, -.v-datefield-calendarpanel-time { - text-align: center; - vertical-align: top; - } - -.v-datefield-calendarpanel-body table { - border-collapse: collapse; - margin: 0; - padding: 0; - margin: 0 auto; - } - -.v-datefield-calendarpanel-weekdays td { - width: 14.2%; - overflow: hidden; - line-height: normal; - text-transform: uppercase; - vertical-align: top; - } - -.v-datefield-calendarpanel-weeknumbers td { - width: 12.5%; - } - -.v-datefield-calendarpanel-weekdays strong { - display: block; - text-align: right; - font-size: 0.8em; - padding: .3em .5em .35em 0; - height: 1.1em; - color: #fff; - text-shadow: 0 1px 0 rgba(0,0,0,.5); - background: #c9c9c9 url(../../img/grad-dark-top2.png) repeat-x; - margin-bottom: 2px; - } - -.v-datefield-calendarpanel .v-first strong { - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-bottomleft: 3px; - } - -.v-datefield-calendarpanel .v-last strong { - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-bottomright: 3px; - } - -.v-datefield-popup .v-datefield-calendarpanel .v-first strong, -.v-datefield-popup .v-datefield-calendarpanel .v-last strong { - -webkit-border-radius: 0; - -moz-border-radius: 0; - } - -.v-datefield-calendarpanel-body td { - text-align: right; - height: 1.6em; - } - -.v-datefield-calendarpanel-weeknumber { - padding: .5em .5em .35em 0; - } - -.v-datefield-calendarpanel-day, -.v-datefield-calendarpanel-day-today { - padding: .15em .5em .15em 0; - display: block; - margin: 1px 1px 1px .3em; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - } - -.v-datefield-calendarpanel-day-focused, -.v-datefield-calendarpanel-day:hover { - margin: 0 0 0 .2em; - border: 1px solid #b3b3b3; - outline: none; - } - -.v-datefield-calendarpanel-day-today { - border: none; - background: transparent url(../../img/grad-dark-top2.png) repeat-x; - margin: 0 0 0 .2em; - font-weight: bold; - border: 1px solid #c9c9c9; - } - -.v-datefield-calendarpanel-day-selected, -.v-datefield-calendarpanel-day-selected:hover { - margin: 0 0 0 .3em; - border: none; - } - -.v-datefield-calendarpanel-time select { - padding: 0; - font-size: 0.9em; - margin: 0; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss b/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss new file mode 100644 index 0000000000..2f9705ca58 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss @@ -0,0 +1,279 @@ +@mixin chameleon-datefield { + +.v-datefield-button { + background: #dadada url(../../img/date-btn.png) repeat-x 50% 0; + border: 1px solid gray; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + width: 25px; + height: 1.2em; + padding: .2em 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + -ms-box-sizing: content-box; + box-sizing: content-box; + } + +.v-datefield-small .v-datefield-button { + height: 1.2em; + } + +.v-datefield-big .v-datefield-button { + padding: .3em 0; + height: 1.2em; + } + +.v-ie8 .v-datefield-button { + height: 1.6em; + padding: 0; + } + +.v-ie8 .v-datefield-big .v-datefield-button { + height: 1.8em; + } + +input.v-datefield-textfield { + border-right: none; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 0; + } + + +/******************************************************************************* + * Big + ******************************************************************************/ +.v-datefield-big .v-datefield-button { + width: 32px; + background-image: url(../../img/date-btn-big.png); + } + + +/******************************************************************************* + * Small + ******************************************************************************/ +.v-datefield-small .v-datefield-button { + width: 19px; + background-position: 50% -2px; + } + + +/******************************************************************************* + * Calendar panel + ******************************************************************************/ +.v-datefield-calendarpanel { + border-collapse: collapse; + margin: 0; + padding: 0; + height: auto !important; + font-size: 0.9em; + } + +.v-datefield-month .v-datefield-textfield { + width: 6em; + } + +.v-datefield-year .v-datefield-textfield { + width: 4em; + } + +.v-datefield-year .v-datefield-calendarpanel-prevmonth, +.v-datefield-year .v-datefield-calendarpanel-nextmonth { + display: none; + } + +.v-datefield-calendarpanel-header td { + border-bottom: 1px solid #666; + } + +.v-datefield-year .v-datefield-calendarpanel-header td, +.v-datefield-month .v-datefield-calendarpanel-header td { + border-bottom: none; + } + +td.v-datefield-calendarpanel-month { + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x 0 -1px; + text-shadow: 0 1px 0 rgba(255,255,255,.7); + } + +span.v-datefield-calendarpanel-month { + display: block; + text-align: center; + overflow: hidden; + line-height: 2em; + height: 1.8em; + } + +.v-datefield-year .v-datefield-calendarpanel-month { + width: 5em; + } + +.v-datefield-month .v-datefield-calendarpanel-month, +.v-datefield-day .v-datefield-calendarpanel-month, +.v-datefield-full .v-datefield-calendarpanel-month { + width: 9em; + } + +.v-datefield-popupcalendar { + min-width: 0; + } + +.v-datefield-year .v-datefield-calendarpanel { + width: 8em; + } + +td.v-datefield-calendarpanel-prevyear { + text-align: right; + } + +td.v-datefield-calendarpanel-nextyear { + text-align: left; + } + +.v-datefield-calendarpanel-header button { + font-size: 1em; + line-height: normal; + width: 100%; + padding: 0 .8em; + height: 1.8em; + border: none; + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x 0 -1px; + overflow: hidden; + outline: none; + cursor: pointer; + } + +.v-datefield-popup .v-datefield-calendarpanel-month, +.v-datefield-popup .v-datefield-calendarpanel-header button { + background-position: 0 0; + } + +.v-datefield-calendarpanel-header button:active { + background-image: url(../../img/grad-dark-top2.png); + } + +.v-datefield-calendarpanel-prevyear button { + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + } + +.v-datefield-calendarpanel-nextyear button { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + } + +.v-datefield-year .v-datefield-calendarpanel-prevyear button, +.v-datefield-month .v-datefield-calendarpanel-prevyear button { + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + } + +.v-datefield-year .v-datefield-calendarpanel-nextyear button, +.v-datefield-month .v-datefield-calendarpanel-nextyear button { + -webkit-border-bottom-right-radius: 3px; + -moz-border-radius-bottomright: 3px; + } + +.v-datefield-calendarpanel-body, +.v-datefield-calendarpanel-time { + text-align: center; + vertical-align: top; + } + +.v-datefield-calendarpanel-body table { + border-collapse: collapse; + margin: 0; + padding: 0; + margin: 0 auto; + } + +.v-datefield-calendarpanel-weekdays td { + width: 14.2%; + overflow: hidden; + line-height: normal; + text-transform: uppercase; + vertical-align: top; + } + +.v-datefield-calendarpanel-weeknumbers td { + width: 12.5%; + } + +.v-datefield-calendarpanel-weekdays strong { + display: block; + text-align: right; + font-size: 0.8em; + padding: .3em .5em .35em 0; + height: 1.1em; + color: #fff; + text-shadow: 0 1px 0 rgba(0,0,0,.5); + background: #c9c9c9 url(../../img/grad-dark-top2.png) repeat-x; + margin-bottom: 2px; + } + +.v-datefield-calendarpanel .v-first strong { + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + } + +.v-datefield-calendarpanel .v-last strong { + -webkit-border-bottom-right-radius: 3px; + -moz-border-radius-bottomright: 3px; + } + +.v-datefield-popup .v-datefield-calendarpanel .v-first strong, +.v-datefield-popup .v-datefield-calendarpanel .v-last strong { + -webkit-border-radius: 0; + -moz-border-radius: 0; + } + +.v-datefield-calendarpanel-body td { + text-align: right; + height: 1.6em; + } + +.v-datefield-calendarpanel-weeknumber { + padding: .5em .5em .35em 0; + } + +.v-datefield-calendarpanel-day, +.v-datefield-calendarpanel-day-today { + padding: .15em .5em .15em 0; + display: block; + margin: 1px 1px 1px .3em; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } + +.v-datefield-calendarpanel-day-focused, +.v-datefield-calendarpanel-day:hover { + margin: 0 0 0 .2em; + border: 1px solid #b3b3b3; + outline: none; + } + +.v-datefield-calendarpanel-day-today { + border: none; + background: transparent url(../../img/grad-dark-top2.png) repeat-x; + margin: 0 0 0 .2em; + font-weight: bold; + border: 1px solid #c9c9c9; + } + +.v-datefield-calendarpanel-day-selected, +.v-datefield-calendarpanel-day-selected:hover { + margin: 0 0 0 .3em; + border: none; + } + +.v-datefield-calendarpanel-time select { + padding: 0; + font-size: 0.9em; + margin: 0; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/label/label.css b/WebContent/VAADIN/themes/chameleon/components/label/label.css deleted file mode 100644 index f2d8e8ef69..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/label/label.css +++ /dev/null @@ -1,127 +0,0 @@ -/******************************************************************************* - * Different headers - ******************************************************************************/ -.v-label-h1, -.v-label h1, -.v-label-h2, -.v-label h2, -.v-label-h3, -.v-label h3, -.v-label-h4, -.v-label h4 { - margin: 0; - font-weight: bold; - } - -.v-label-h1, -.v-label h1 { - padding: .75em 0 .5em 0; - font-size: 1.85em; - } - -.v-label-h2, -.v-label h2 { - padding: .67em 0 .33em 0; - font-size: 1.4em; - } - -.v-label-h3, -.v-label h3 { - margin: .71em 0 .29em 0; - font-size: 1.1em; - } - -.v-label-h4, -.v-label h4 { - padding: .23em 0; - font-size: 1em; - } - - -/******************************************************************************* - * Big - ******************************************************************************/ -.v-label-big { - font-size: 1.2em; - } - - -/******************************************************************************* - * Small - ******************************************************************************/ -.v-label-small { - font-size: 0.9em; - line-height: 1.3; - opacity: .8; - filter: alpha(opacity=80); - } - - -/******************************************************************************* - * Tiny - ******************************************************************************/ -.v-label-tiny { - font-size: 0.85em; - line-height: 1.2; - opacity: .7; - filter: alpha(opacity=70); - } - - -/******************************************************************************* - * Warning & error - ******************************************************************************/ -body .v-label-warning, -body .v-label-error { - color: #574734; - background: #fffec8 url(../../img/label-warning-icon.png) no-repeat .2em 50%; - white-space: nowrap; - padding: .3em 1em .3em 2.4em; - overflow: hidden; - width: auto !important; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - text-shadow: none; - } - -body .v-label-error { - color: #fff; - font-weight: bold; - background: #c22f24 url(../../img/label-error-icon.png) no-repeat .2em 50%; - text-shadow: 0 1px 0 #8f2e27; - } - - -/******************************************************************************* - * Big warning & big error - ******************************************************************************/ -.v-label-big.v-label-warning, -.v-label-big.v-label-error { - background-image: url(../../img/label-warning-icon-big.png); - background-position: 0 50%; - padding: .5em 1em .5em 3em; - } - -.v-label-big.v-label-error { - background-image: url(../../img/label-error-icon-big.png); - } - - -/******************************************************************************* - * Loading - ******************************************************************************/ -body .v-label-loading { - height: 32px; - line-height: 32px; - background-image: url(../../../base/common/img/loading-indicator.gif); - background-repeat: no-repeat; - background-position: 0 50%; - white-space: nowrap; - padding: .3em 1em .3em 36px; - overflow: hidden; - width: auto !important; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/label/label.scss b/WebContent/VAADIN/themes/chameleon/components/label/label.scss new file mode 100644 index 0000000000..7471242f70 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/label/label.scss @@ -0,0 +1,131 @@ +@mixin chameleon-label { + +/******************************************************************************* + * Different headers + ******************************************************************************/ +.v-label-h1, +.v-label h1, +.v-label-h2, +.v-label h2, +.v-label-h3, +.v-label h3, +.v-label-h4, +.v-label h4 { + margin: 0; + font-weight: bold; + } + +.v-label-h1, +.v-label h1 { + padding: .75em 0 .5em 0; + font-size: 1.85em; + } + +.v-label-h2, +.v-label h2 { + padding: .67em 0 .33em 0; + font-size: 1.4em; + } + +.v-label-h3, +.v-label h3 { + margin: .71em 0 .29em 0; + font-size: 1.1em; + } + +.v-label-h4, +.v-label h4 { + padding: .23em 0; + font-size: 1em; + } + + +/******************************************************************************* + * Big + ******************************************************************************/ +.v-label-big { + font-size: 1.2em; + } + + +/******************************************************************************* + * Small + ******************************************************************************/ +.v-label-small { + font-size: 0.9em; + line-height: 1.3; + opacity: .8; + filter: alpha(opacity=80); + } + + +/******************************************************************************* + * Tiny + ******************************************************************************/ +.v-label-tiny { + font-size: 0.85em; + line-height: 1.2; + opacity: .7; + filter: alpha(opacity=70); + } + + +/******************************************************************************* + * Warning & error + ******************************************************************************/ +body .v-label-warning, +body .v-label-error { + color: #574734; + background: #fffec8 url(../../img/label-warning-icon.png) no-repeat .2em 50%; + white-space: nowrap; + padding: .3em 1em .3em 2.4em; + overflow: hidden; + width: auto !important; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + text-shadow: none; + } + +body .v-label-error { + color: #fff; + font-weight: bold; + background: #c22f24 url(../../img/label-error-icon.png) no-repeat .2em 50%; + text-shadow: 0 1px 0 #8f2e27; + } + + +/******************************************************************************* + * Big warning & big error + ******************************************************************************/ +.v-label-big.v-label-warning, +.v-label-big.v-label-error { + background-image: url(../../img/label-warning-icon-big.png); + background-position: 0 50%; + padding: .5em 1em .5em 3em; + } + +.v-label-big.v-label-error { + background-image: url(../../img/label-error-icon-big.png); + } + + +/******************************************************************************* + * Loading + ******************************************************************************/ +body .v-label-loading { + height: 32px; + line-height: 32px; + background-image: url(../../../base/common/img/loading-indicator.gif); + background-repeat: no-repeat; + background-position: 0 50%; + white-space: nowrap; + padding: .3em 1em .3em 36px; + overflow: hidden; + width: auto !important; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/menubar/menubar.css b/WebContent/VAADIN/themes/chameleon/components/menubar/menubar.css deleted file mode 100644 index 4f6be1b923..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/menubar/menubar.css +++ /dev/null @@ -1,24 +0,0 @@ -.v-menubar { - padding: 0 .4em; - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; - border: 1px solid #b3b3b3; - border-width: 1px 0; - } - -.v-menubar .v-menubar-menuitem { - padding: .2em .5em; - line-height: normal; - } - -.v-menubar-submenu .v-menubar-menuitem { - padding-right:1.5em; - } - -.v-menubar-submenu .v-menubar-submenu-indicator { - margin-top: .1em; - } - -.v-menubar-submenu .v-menubar-menuitem-selected { - background-image: url(../../img/grad-light-top2.png); - background-position: 0 -1px; - } diff --git a/WebContent/VAADIN/themes/chameleon/components/menubar/menubar.scss b/WebContent/VAADIN/themes/chameleon/components/menubar/menubar.scss new file mode 100644 index 0000000000..55ade4c060 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/menubar/menubar.scss @@ -0,0 +1,28 @@ +@mixin chameleon-menubar { + +.v-menubar { + padding: 0 .4em; + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; + border: 1px solid #b3b3b3; + border-width: 1px 0; + } + +.v-menubar .v-menubar-menuitem { + padding: .2em .5em; + line-height: normal; + } + +.v-menubar-submenu .v-menubar-menuitem { + padding-right:1.5em; + } + +.v-menubar-submenu .v-menubar-submenu-indicator { + margin-top: .1em; + } + +.v-menubar-submenu .v-menubar-menuitem-selected { + background-image: url(../../img/grad-light-top2.png); + background-position: 0 -1px; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/notification/notification.css b/WebContent/VAADIN/themes/chameleon/components/notification/notification.css deleted file mode 100644 index ee686912c5..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/notification/notification.css +++ /dev/null @@ -1,64 +0,0 @@ -div.v-Notification { - -moz-border-radius: 0; - -webkit-border-radius: 0; - border-radius: 0; - font-size: 100%; - -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.7); - -moz-box-shadow: 0 2px 5px rgba(0,0,0,.7); - box-shadow: 0 2px 5px rgba(0,0,0,.7); - } - -.v-Notification p { - line-height: 1.3; - } - -div.v-Notification-warning { - background-color: #fffec8; - color: #574734; - border: 2px solid #fee3af; - } - -div.v-Notification-warning h1 { - padding-left: 44px; - background: transparent url(../../img/label-warning-icon-big.png) no-repeat 0 50%; - } - -div.v-Notification-error { - color: #fff; - text-shadow: 0 1px 2px rgba(0,0,0,.3); - background: #c22f24 url(../../img/error-close.png) no-repeat right top; - border: 2px solid #ca3030; - } - -div.v-Notification-error h1 { - padding-left: 44px; - background: transparent url(../../img/label-error-icon-big.png) no-repeat 0 50%; - } - -div.v-Notification-tray { - color: #fff; - margin: 0 5px 5px 0; - background: #3b3b3b url(../../img/grad-light-top2.png) repeat-x; - border: 1px solid #5b5b5b; - padding: 0.8em 0.9em; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - text-shadow: 0 1px 1px rgba(0,0,0,.5); - } - -.v-Notification-tray h1 { - font-size: 14px; - line-height: 18px; - } - -.v-Notification-tray p { - font-size: 12px; - font-weight: normal; - } - -div.v-Notification-system { - color: #fff; - border: none; - background-color: #b40000; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/notification/notification.scss b/WebContent/VAADIN/themes/chameleon/components/notification/notification.scss new file mode 100644 index 0000000000..9036c5c2d6 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/notification/notification.scss @@ -0,0 +1,68 @@ +@mixin chameleon-notification { + +div.v-Notification { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + font-size: 100%; + -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.7); + -moz-box-shadow: 0 2px 5px rgba(0,0,0,.7); + box-shadow: 0 2px 5px rgba(0,0,0,.7); + } + +.v-Notification p { + line-height: 1.3; + } + +div.v-Notification-warning { + background-color: #fffec8; + color: #574734; + border: 2px solid #fee3af; + } + +div.v-Notification-warning h1 { + padding-left: 44px; + background: transparent url(../../img/label-warning-icon-big.png) no-repeat 0 50%; + } + +div.v-Notification-error { + color: #fff; + text-shadow: 0 1px 2px rgba(0,0,0,.3); + background: #c22f24 url(../../img/error-close.png) no-repeat right top; + border: 2px solid #ca3030; + } + +div.v-Notification-error h1 { + padding-left: 44px; + background: transparent url(../../img/label-error-icon-big.png) no-repeat 0 50%; + } + +div.v-Notification-tray { + color: #fff; + margin: 0 5px 5px 0; + background: #3b3b3b url(../../img/grad-light-top2.png) repeat-x; + border: 1px solid #5b5b5b; + padding: 0.8em 0.9em; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + text-shadow: 0 1px 1px rgba(0,0,0,.5); + } + +.v-Notification-tray h1 { + font-size: 14px; + line-height: 18px; + } + +.v-Notification-tray p { + font-size: 12px; + font-weight: normal; + } + +div.v-Notification-system { + color: #fff; + border: none; + background-color: #b40000; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/panel/panel.css b/WebContent/VAADIN/themes/chameleon/components/panel/panel.css deleted file mode 100644 index 0e5dcb8a38..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/panel/panel.css +++ /dev/null @@ -1,120 +0,0 @@ -.v-panel-caption { - background: #b9dcff; - font-size: 1.2em; - border: 1px solid #b3b3b3; - border-bottom: none; - padding: .2em .6em; - } - -.v-panel-nocaption { - padding: 0; - height: 0; - overflow: hidden; - border-top: 1px solid #b3b3b3; - } - -.v-panel-content { - background: #fff; - border: 1px solid #b3b3b3; - border-top: none; - border-bottom: none; - } - -.v-panel-deco { - height: 0; - overflow: hidden; - border-top: 1px solid #b3b3b3; - } - - -/******************************************************************************* - * Borderless - ******************************************************************************/ -div.v-panel-caption-borderless { - border: none; - } - -div.v-panel-nocaption-borderless, -div.v-panel-content-borderless, -div.v-panel-deco-borderless { - border: none; - background: transparent; - } - - -/******************************************************************************* - * Light - ******************************************************************************/ -.v-panel-light .v-panel-caption-light { - background: transparent; - font-weight: normal; - border-bottom: 1px solid #b3b3b3; - } - -div.v-panel-content-light { - background: transparent; - } - - -/******************************************************************************* - * Bubble - ******************************************************************************/ -.v-panel-bubble .v-panel-captionwrap { - border: 1px solid #b3b3b3; - border-bottom: none; - background: #fff; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - padding: 1px 2px; - overflow: hidden; - } - -.v-panel-bubble .v-panel-caption-bubble { - border: none; - background-image: url(../../img/grad-light-top.png); - background-repeat: repeat-x; - background-position: 0 -1px; - color: #fff; - text-shadow: 0 -1px 0 rgba(0,0,0,.4); - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - margin: 1px 0; - font-size: 1em; - line-height: 1.2; - padding: .3em .6em; - } - -.v-panel-nocaption-bubble { - padding: 0; - margin: 0; - border: none; - } - -.v-panel-deco-bubble { - height: 2px; - border: 1px solid #b3b3b3; - border-top: none; - background: #fff; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - } - - -/******************************************************************************* - * Borderless Bubble - ******************************************************************************/ -div.v-panel-borderless .v-panel-captionwrap, -div.v-panel-borderless .v-panel-deco-bubble { - border: none; - padding: 0; - background: transparent; - } - -div.v-panel-borderless .v-panel-content-bubble { - background: transparent; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/panel/panel.scss b/WebContent/VAADIN/themes/chameleon/components/panel/panel.scss new file mode 100644 index 0000000000..88b3d7b804 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/panel/panel.scss @@ -0,0 +1,124 @@ +@mixin chameleon-panel { + +.v-panel-caption { + background: #b9dcff; + font-size: 1.2em; + border: 1px solid #b3b3b3; + border-bottom: none; + padding: .2em .6em; + } + +.v-panel-nocaption { + padding: 0; + height: 0; + overflow: hidden; + border-top: 1px solid #b3b3b3; + } + +.v-panel-content { + background: #fff; + border: 1px solid #b3b3b3; + border-top: none; + border-bottom: none; + } + +.v-panel-deco { + height: 0; + overflow: hidden; + border-top: 1px solid #b3b3b3; + } + + +/******************************************************************************* + * Borderless + ******************************************************************************/ +div.v-panel-caption-borderless { + border: none; + } + +div.v-panel-nocaption-borderless, +div.v-panel-content-borderless, +div.v-panel-deco-borderless { + border: none; + background: transparent; + } + + +/******************************************************************************* + * Light + ******************************************************************************/ +.v-panel-light .v-panel-caption-light { + background: transparent; + font-weight: normal; + border-bottom: 1px solid #b3b3b3; + } + +div.v-panel-content-light { + background: transparent; + } + + +/******************************************************************************* + * Bubble + ******************************************************************************/ +.v-panel-bubble .v-panel-captionwrap { + border: 1px solid #b3b3b3; + border-bottom: none; + background: #fff; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + padding: 1px 2px; + overflow: hidden; + } + +.v-panel-bubble .v-panel-caption-bubble { + border: none; + background-image: url(../../img/grad-light-top.png); + background-repeat: repeat-x; + background-position: 0 -1px; + color: #fff; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + margin: 1px 0; + font-size: 1em; + line-height: 1.2; + padding: .3em .6em; + } + +.v-panel-nocaption-bubble { + padding: 0; + margin: 0; + border: none; + } + +.v-panel-deco-bubble { + height: 2px; + border: 1px solid #b3b3b3; + border-top: none; + background: #fff; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + } + + +/******************************************************************************* + * Borderless Bubble + ******************************************************************************/ +div.v-panel-borderless .v-panel-captionwrap, +div.v-panel-borderless .v-panel-deco-bubble { + border: none; + padding: 0; + background: transparent; + } + +div.v-panel-borderless .v-panel-content-bubble { + background: transparent; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/popupview/popupview.css b/WebContent/VAADIN/themes/chameleon/components/popupview/popupview.css deleted file mode 100644 index ab270d7c4b..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/popupview/popupview.css +++ /dev/null @@ -1,3 +0,0 @@ -.v-popupview-popup { - padding: .3em .4em; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/popupview/popupview.scss b/WebContent/VAADIN/themes/chameleon/components/popupview/popupview.scss new file mode 100644 index 0000000000..88e13cb46d --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/popupview/popupview.scss @@ -0,0 +1,7 @@ +@mixin chameleon-popupview { + +.v-popupview-popup { + padding: .3em .4em; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.css b/WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.css deleted file mode 100644 index c080c0fc43..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.css +++ /dev/null @@ -1,112 +0,0 @@ -.v-progressindicator-wrapper { - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - background: #eee url(../../img/grad-dark-bottom.png) repeat-x left bottom; - overflow: visible; - font-size: 1px; - line-height: 1px; - } - -.v-progressindicator-indicator { - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x 0 -10px; - margin: -1px; - height: 7px; - border: 1px solid #b3b3b3; - } - - -/******************************************************************************* - * Small - ******************************************************************************/ -.v-progressindicator-small { - width: 110px; - } - -.v-progressindicator-small .v-progressindicator-wrapper, -.v-progressindicator-small .v-progressindicator-indicator { - height: 2px; - border-radius: 1px; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - } - - -/******************************************************************************* - * Big - ******************************************************************************/ -.v-progressindicator-big { - width: 250px; - } - -.v-progressindicator-big .v-progressindicator-wrapper, -.v-progressindicator-big .v-progressindicator-indicator { - height: 14px; - border-radius: 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - } - - -/******************************************************************************* - * Indeterminates - ******************************************************************************/ -.v-progressindicator-indeterminate.v-progressindicator-big { - width: 42px; - height: 42px; - background: #fff url(../../../base/common/img/ajax-loader-big.gif) no-repeat 50%; - } - -.v-progressindicator-indeterminate.v-disabled { - display: none; - } - -.v-progressindicator-indeterminate.v-progressindicator-bar { - display: block; - width: 150px; - height: 9px; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - } - -.v-progressindicator-indeterminate.bar.v-progressindicator-small { - width: 110px; - height: 4px; - } - -.v-progressindicator-indeterminate.bar.v-progressindicator-big { - width: 200px; - height: 16px; - } - -.v-progressindicator-indeterminate.bar .v-progressindicator-wrapper { - display: block; - background: #fff url(../../img/indeterminate-progress.gif); - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - overflow: hidden; - } - -.v-progressindicator-indeterminate.bar .v-progressindicator-indicator { - display: block; - background: transparent url(../../img/grad-light-top.png) repeat-x; - border: none; - margin: 0; - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - overflow: hidden; - } - -.v-progressindicator-indeterminate.bar.v-progressindicator-small .v-progressindicator-indicator { - background: transparent; - } - -.v-progressindicator-indeterminate.bar.v-disabled .v-progressindicator-indicator { - background: #fff; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.scss b/WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.scss new file mode 100644 index 0000000000..6bacf31e3e --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/progressindicator/progressindicator.scss @@ -0,0 +1,116 @@ +@mixin chameleon-progressindicator { + +.v-progressindicator-wrapper { + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + background: #eee url(../../img/grad-dark-bottom.png) repeat-x left bottom; + overflow: visible; + font-size: 1px; + line-height: 1px; + } + +.v-progressindicator-indicator { + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x 0 -10px; + margin: -1px; + height: 7px; + border: 1px solid #b3b3b3; + } + + +/******************************************************************************* + * Small + ******************************************************************************/ +.v-progressindicator-small { + width: 110px; + } + +.v-progressindicator-small .v-progressindicator-wrapper, +.v-progressindicator-small .v-progressindicator-indicator { + height: 2px; + border-radius: 1px; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + } + + +/******************************************************************************* + * Big + ******************************************************************************/ +.v-progressindicator-big { + width: 250px; + } + +.v-progressindicator-big .v-progressindicator-wrapper, +.v-progressindicator-big .v-progressindicator-indicator { + height: 14px; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + } + + +/******************************************************************************* + * Indeterminates + ******************************************************************************/ +.v-progressindicator-indeterminate.v-progressindicator-big { + width: 42px; + height: 42px; + background: #fff url(../../../base/common/img/ajax-loader-big.gif) no-repeat 50%; + } + +.v-progressindicator-indeterminate.v-disabled { + display: none; + } + +.v-progressindicator-indeterminate.v-progressindicator-bar { + display: block; + width: 150px; + height: 9px; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } + +.v-progressindicator-indeterminate.bar.v-progressindicator-small { + width: 110px; + height: 4px; + } + +.v-progressindicator-indeterminate.bar.v-progressindicator-big { + width: 200px; + height: 16px; + } + +.v-progressindicator-indeterminate.bar .v-progressindicator-wrapper { + display: block; + background: #fff url(../../img/indeterminate-progress.gif); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + overflow: hidden; + } + +.v-progressindicator-indeterminate.bar .v-progressindicator-indicator { + display: block; + background: transparent url(../../img/grad-light-top.png) repeat-x; + border: none; + margin: 0; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + overflow: hidden; + } + +.v-progressindicator-indeterminate.bar.v-progressindicator-small .v-progressindicator-indicator { + background: transparent; + } + +.v-progressindicator-indeterminate.bar.v-disabled .v-progressindicator-indicator { + background: #fff; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/selects/selects.css b/WebContent/VAADIN/themes/chameleon/components/selects/selects.css deleted file mode 100644 index 3c8496f0fe..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/selects/selects.css +++ /dev/null @@ -1,163 +0,0 @@ -.v-filterselect { - overflow: hidden; - } - -body input.v-filterselect-input { - margin: 0; - padding: 0; - border: none; - background: transparent; - line-height: normal; - } - -body input.v-filterselect-input[type=text] { - padding: 0; - } - -.v-filterselect-focus .v-filterselect-input, -.v-filterselect .v-filterselect-input:focus { - outline: none; - } - -.v-filterselect-big.v-filterselect-search { - padding-left: 22px; - } - -.v-filterselect-button { - width: 16px; - height: 1.2em; - background-position: -5px -11px; - opacity: .4; - } - -.v-filterselect-button:hover { - opacity: .7; - } - -.v-filterselect-button:active { - opacity: 1; - } - -.v-filterselect-small .v-filterselect-button { - height: 0.95em; - background-position: -5px -12px; - } - -.v-filterselect-suggestpopup { - margin-top: .4em; - } - -body .v-filterselect-suggestpopup-small td { - font-size: .85em; - } - -body .v-filterselect-suggestpopup-big td { - font-size: 1.1em; - } - -.v-filterselect-big .v-filterselect-button { - height: 1.4em; - background-position: -5px -9px; - } - -.v-filterselect-search .v-filterselect-button { - width: 0; - overflow: hidden; - } - -.v-filterselect-prompt .v-filterselect-input { - font-style: normal; - } - -.v-filterselect-prevpage-off, -.v-filterselect-nextpage-off, -.v-filterselect-prevpage, -.v-filterselect-nextpage { - border-style: solid; - border-width: 1px 0; - border-color: #b3b3b3; - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; - height: 12px; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - } - -.v-filterselect-prevpage:active, -.v-filterselect-nextpage:active { - background-image: (../../img/grad-dark-bottom2.png); - background-position: left bottom; - } - -.v-filterselect-prevpage-off span, -.v-filterselect-nextpage-off span, -.v-filterselect-prevpage span, -.v-filterselect-nextpage span { - display: block; - text-indent: -9999px; - height: 12px; - background: transparent url(../../../base/common/img/sprites.png) no-repeat 50% 3px; - } - -.v-filterselect-nextpage-off span, -.v-filterselect-nextpage span { - background-position: 50% -12px; - } - -.v-filterselect-status { - font-size: .85em; - margin: 1px 0 -3px; - user-select: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - } - -.v-filterselect-suggestmenu .gwt-menuItem-selected { - background-image: url(../../img/grad-light-top2.png); - background-position: 0 -1px; - } - -.v-filterselect-suggestpopup-small .v-filterselect-status { - font-size: .8em; - } - -.v-filterselect-suggestpopup-big .v-filterselect-status { - font-size: .9em; - } - -.v-select-small .v-select-select { - font-size: 0.8em; - } - -.v-select-big .v-select-select { - font-size: 1.2em; - } - - -/******************************************************************************* - * Non-editable combobox (i.e. themable select) - ******************************************************************************/ -.v-filterselect-select-button { - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; - position: relative; - padding: .3em .5em; - } - -.v-filterselect-select-button .v-filterselect-input { - display: block; - width: 100% !important; - user-select: none; - -khtml-user-select: none; - -webkit-user-select: none; - } - -.v-filterselect-select-button .v-filterselect-button { - position: absolute; - width: 100%; - top: 0; - left: 0; - height: 100%; - background-position: 100% -8px; - } diff --git a/WebContent/VAADIN/themes/chameleon/components/selects/selects.scss b/WebContent/VAADIN/themes/chameleon/components/selects/selects.scss new file mode 100644 index 0000000000..5e21ddff35 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/selects/selects.scss @@ -0,0 +1,168 @@ +@mixin chameleon-selects { + +.v-filterselect { + overflow: hidden; + } + +body input.v-filterselect-input { + margin: 0; + padding: 0; + border: none; + background: transparent; + line-height: normal; + } + +body input.v-filterselect-input[type=text] { + padding: 0; + } + +.v-filterselect-focus .v-filterselect-input, +.v-filterselect .v-filterselect-input:focus { + outline: none; + } + +.v-filterselect-big.v-filterselect-search { + padding-left: 22px; + } + +.v-filterselect-button { + width: 16px; + height: 1.2em; + background-position: -5px -11px; + opacity: .4; + } + +.v-filterselect-button:hover { + opacity: .7; + } + +.v-filterselect-button:active { + opacity: 1; + } + +.v-filterselect-small .v-filterselect-button { + height: 0.95em; + background-position: -5px -12px; + } + +.v-filterselect-suggestpopup { + margin-top: .4em; + } + +body .v-filterselect-suggestpopup-small td { + font-size: .85em; + } + +body .v-filterselect-suggestpopup-big td { + font-size: 1.1em; + } + +.v-filterselect-big .v-filterselect-button { + height: 1.4em; + background-position: -5px -9px; + } + +.v-filterselect-search .v-filterselect-button { + width: 0; + overflow: hidden; + } + +.v-filterselect-prompt .v-filterselect-input { + font-style: normal; + } + +.v-filterselect-prevpage-off, +.v-filterselect-nextpage-off, +.v-filterselect-prevpage, +.v-filterselect-nextpage { + border-style: solid; + border-width: 1px 0; + border-color: #b3b3b3; + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; + height: 12px; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + } + +.v-filterselect-prevpage:active, +.v-filterselect-nextpage:active { + // TODO check - was missing a part of the rule + background-image: #c9c9c9 url(../../img/grad-dark-bottom2.png); + background-position: left bottom; + } + +.v-filterselect-prevpage-off span, +.v-filterselect-nextpage-off span, +.v-filterselect-prevpage span, +.v-filterselect-nextpage span { + display: block; + text-indent: -9999px; + height: 12px; + background: transparent url(../../../base/common/img/sprites.png) no-repeat 50% 3px; + } + +.v-filterselect-nextpage-off span, +.v-filterselect-nextpage span { + background-position: 50% -12px; + } + +.v-filterselect-status { + font-size: .85em; + margin: 1px 0 -3px; + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + } + +.v-filterselect-suggestmenu .gwt-menuItem-selected { + background-image: url(../../img/grad-light-top2.png); + background-position: 0 -1px; + } + +.v-filterselect-suggestpopup-small .v-filterselect-status { + font-size: .8em; + } + +.v-filterselect-suggestpopup-big .v-filterselect-status { + font-size: .9em; + } + +.v-select-small .v-select-select { + font-size: 0.8em; + } + +.v-select-big .v-select-select { + font-size: 1.2em; + } + + +/******************************************************************************* + * Non-editable combobox (i.e. themable select) + ******************************************************************************/ +.v-filterselect-select-button { + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; + position: relative; + padding: .3em .5em; + } + +.v-filterselect-select-button .v-filterselect-input { + display: block; + width: 100% !important; + user-select: none; + -khtml-user-select: none; + -webkit-user-select: none; + } + +.v-filterselect-select-button .v-filterselect-button { + position: absolute; + width: 100%; + top: 0; + left: 0; + height: 100%; + background-position: 100% -8px; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/slider/slider.css b/WebContent/VAADIN/themes/chameleon/components/slider/slider.css deleted file mode 100644 index 6a430723e2..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/slider/slider.css +++ /dev/null @@ -1,56 +0,0 @@ -.v-slider { - border-top: 1px solid #9a9c9e; - border-bottom: 1px solid #bdbfc1; - margin: 3px 0; - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - } - -.v-slider-base { - height: 4px; - background: #e0e2e2 url(../../img/grad-dark-top2.png) repeat-x; - border-top: 1px solid #adb0b1; - border-left: 1px solid #a0a3a6; - border-right: 1px solid #a0a3a6; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - } - -.v-slider-handle { - background: #c9c9c9 url(../../img/grad-dark-bottom2.png) repeat-x left bottom; - border: 1px solid #b3b3b3; - width: 10px; - height: 10px; - margin-top: -5px; - border-radius: 5px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.5); - -moz-box-shadow: 0 1px 1px rgba(0,0,0,.5); - cursor: pointer; - } - -.v-slider-handle-active { - background-color: #afafaf; - } - -.v-slider-vertical { - width: auto; - margin: 0 4px; - border-width: 0 1px; - } - -.v-slider-vertical .v-slider-base { - background-image: none; - width: 4px; - border-width: 1px 1px 0; - } - -.v-slider-vertical .v-slider-handle { - width: 10px; - height: 10px; - margin: 0; - margin-left: -5px; - } diff --git a/WebContent/VAADIN/themes/chameleon/components/slider/slider.scss b/WebContent/VAADIN/themes/chameleon/components/slider/slider.scss new file mode 100644 index 0000000000..bef69b3472 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/slider/slider.scss @@ -0,0 +1,60 @@ +@mixin chameleon-slider { + +.v-slider { + border-top: 1px solid #9a9c9e; + border-bottom: 1px solid #bdbfc1; + margin: 3px 0; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + } + +.v-slider-base { + height: 4px; + background: #e0e2e2 url(../../img/grad-dark-top2.png) repeat-x; + border-top: 1px solid #adb0b1; + border-left: 1px solid #a0a3a6; + border-right: 1px solid #a0a3a6; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } + +.v-slider-handle { + background: #c9c9c9 url(../../img/grad-dark-bottom2.png) repeat-x left bottom; + border: 1px solid #b3b3b3; + width: 10px; + height: 10px; + margin-top: -5px; + border-radius: 5px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.5); + -moz-box-shadow: 0 1px 1px rgba(0,0,0,.5); + cursor: pointer; + } + +.v-slider-handle-active { + background-color: #afafaf; + } + +.v-slider-vertical { + width: auto; + margin: 0 4px; + border-width: 0 1px; + } + +.v-slider-vertical .v-slider-base { + background-image: none; + width: 4px; + border-width: 1px 1px 0; + } + +.v-slider-vertical .v-slider-handle { + width: 10px; + height: 10px; + margin: 0; + margin-left: -5px; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.css b/WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.css deleted file mode 100644 index 1cb04bc29b..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.css +++ /dev/null @@ -1,63 +0,0 @@ -.v-splitpanel-hsplitter div, -.v-splitpanel-vsplitter div { - background: transparent url(../../img/split-handle.png) no-repeat 2px 50%; - margin: 0 -1px; - width: 9px; - } - -.v-splitpanel-vsplitter div { - background-position: 50% 2px; - margin: -1px 0; - width: auto; - height: 9px; - } - -.v-splitpanel-hsplitter, -.v-splitpanel-hsplitter-locked { - border-style: solid; - border-width: 0 1px; - border-color: #b0b0b0; - width: 7px; - background: #b3b3b3 url(../../img/grad-light-left.png) repeat-y; - } - -.v-splitpanel-vsplitter, -.v-splitpanel-vsplitter-locked { - border-style: solid; - border-width: 1px 0; - border-color: #b0b0b0; - height: 7px; - background: #b3b3b3 url(../../img/grad-light-top.png) repeat-x; - } - -/******************************************************************************* - * Small - ******************************************************************************/ -body .v-splitpanel-hsplitter-small, -body .v-splitpanel-hsplitter-small-locked { - width: 1px; - border: none; - background-image: none; - } - -body .v-splitpanel-vsplitter-small, -body .v-splitpanel-vsplitter-small-locked { - height: 1px; - border: none; - background-image: none; - font-size: 1px; - line-height: 1px; - } - -.v-splitpanel-hsplitter-small div { - width: 7px; - margin-left: -2px; - background: transparent; - } - -.v-splitpanel-vsplitter-small div { - height: 7px; - margin-top: -2px; - background: transparent; - overflow: hidden; - } diff --git a/WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.scss b/WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.scss new file mode 100644 index 0000000000..99f51edc01 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/splitpanel/splitpanel.scss @@ -0,0 +1,67 @@ +@mixin chameleon-splitpanel { + +.v-splitpanel-hsplitter div, +.v-splitpanel-vsplitter div { + background: transparent url(../../img/split-handle.png) no-repeat 2px 50%; + margin: 0 -1px; + width: 9px; + } + +.v-splitpanel-vsplitter div { + background-position: 50% 2px; + margin: -1px 0; + width: auto; + height: 9px; + } + +.v-splitpanel-hsplitter, +.v-splitpanel-hsplitter-locked { + border-style: solid; + border-width: 0 1px; + border-color: #b0b0b0; + width: 7px; + background: #b3b3b3 url(../../img/grad-light-left.png) repeat-y; + } + +.v-splitpanel-vsplitter, +.v-splitpanel-vsplitter-locked { + border-style: solid; + border-width: 1px 0; + border-color: #b0b0b0; + height: 7px; + background: #b3b3b3 url(../../img/grad-light-top.png) repeat-x; + } + +/******************************************************************************* + * Small + ******************************************************************************/ +body .v-splitpanel-hsplitter-small, +body .v-splitpanel-hsplitter-small-locked { + width: 1px; + border: none; + background-image: none; + } + +body .v-splitpanel-vsplitter-small, +body .v-splitpanel-vsplitter-small-locked { + height: 1px; + border: none; + background-image: none; + font-size: 1px; + line-height: 1px; + } + +.v-splitpanel-hsplitter-small div { + width: 7px; + margin-left: -2px; + background: transparent; + } + +.v-splitpanel-vsplitter-small div { + height: 7px; + margin-top: -2px; + background: transparent; + overflow: hidden; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/table/table.css b/WebContent/VAADIN/themes/chameleon/components/table/table.css deleted file mode 100644 index 2bc52bc844..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/table/table.css +++ /dev/null @@ -1,163 +0,0 @@ -.v-table-header-wrap, -.v-table-header-drag { - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; - height: 1.4em; - line-height: normal; - } - -.v-table-caption-container, -.v-table-header-drag { - padding-top: .2em; - padding-right: 4px; - } - -.v-table-header-drag { - padding-left: .3em; - } - -.v-table-resizer { - background: transparent; - border-right: 1px solid #b3b3b3; - padding-left: 1px; - height: 1.4em; - } - -/* Targets the same element as .v-table-resizer */ -div.v-table-focus-slot-left { - background: transparent; - border-left: 2px solid #b3b3b3; - border-right: none; - padding-left: 0; - padding-right: 1px; - float: left; - margin: 0; - } - -.v-table-row, -.v-table-row-odd { - background: transparent; - } - -.v-table-generated-row { - background: #c9c9c9; - } - -.v-table tr.v-selected { - background-image: url(../../img/grad-light-top2.png); - background-position: 0 -1px; - } - -div.v-table-focus-slot-right { - background: transparent; - border-right: 2px solid #b3b3b3; - padding-left: 0; - margin: 0; - } - -.v-table-column-selector { - margin-top: -1.35em; - } - -.v-table-cell-content { - border-right: none; - padding-right: 7px; - } - -.v-table-caption-container .v-icon { - vertical-align: middle; - margin: -0.37em 2px 0 0; - } - -.v-table-header-drag .v-icon { - vertical-align: middle; - } - -/* column selector */ -.v-contextmenu .v-on, -.v-contextmenu .v-off { - display: block; - background: transparent url(../../icons/bullet.png) no-repeat 0 4px; - padding-left: 12px; - } - -.v-contextmenu .v-off { - background-image: none; - color: #666; - } - -.v-contextmenu .gwt-MenuItem-selected .v-on { - background-image: url(../../icons/bullet-white.png); - } - -.v-table-scrollposition { - font-size: 0.9em; - opacity: .85; - filter: alpha(opacity=85); - } - -/******************************************************************************* - * Small - ******************************************************************************/ -.v-table-small .v-table-caption-container, -.v-table-small .v-table-body { - font-size: 0.85em; - } - -.v-table-small .v-table-resizer, -.v-table-small .v-table-header-wrap { - height: 1.2em; - } - -.v-table-small .v-table-column-selector { - margin-top: -1.2em; - } - - -/******************************************************************************* - * Big - ******************************************************************************/ -.v-table-big .v-table-caption-container, -.v-table-big .v-table-body { - font-size: 1.2em; - } - -.v-table-big .v-table-caption-container { - padding-top: .3em; - } - -.v-table-big .v-table-resizer, -.v-table-big .v-table-header-wrap { - height: 1.8em; - } - -.v-table-big .v-table-column-selector { - margin-top: -1.5em; - } - -/******************************************************************************* - * Striped - ******************************************************************************/ -.v-table-striped .v-table-row-odd { - background-color: #e6e6e6; - } - - -/******************************************************************************* - * Strong - ******************************************************************************/ -.v-table-strong .v-table-caption-container { - font-weight: bold; - } - - -/******************************************************************************* - * Borderless - ******************************************************************************/ -.v-table-borderless .v-table-header-wrap, -.v-table-borderless .v-table-body { - border: none; - } - -div.v-table-borderless .v-table-body { - background: transparent; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/table/table.scss b/WebContent/VAADIN/themes/chameleon/components/table/table.scss new file mode 100644 index 0000000000..8ecc1878ae --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/table/table.scss @@ -0,0 +1,167 @@ +@mixin chameleon-table { + +.v-table-header-wrap, +.v-table-header-drag { + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; + height: 1.4em; + line-height: normal; + } + +.v-table-caption-container, +.v-table-header-drag { + padding-top: .2em; + padding-right: 4px; + } + +.v-table-header-drag { + padding-left: .3em; + } + +.v-table-resizer { + background: transparent; + border-right: 1px solid #b3b3b3; + padding-left: 1px; + height: 1.4em; + } + +/* Targets the same element as .v-table-resizer */ +div.v-table-focus-slot-left { + background: transparent; + border-left: 2px solid #b3b3b3; + border-right: none; + padding-left: 0; + padding-right: 1px; + float: left; + margin: 0; + } + +.v-table-row, +.v-table-row-odd { + background: transparent; + } + +.v-table-generated-row { + background: #c9c9c9; + } + +.v-table tr.v-selected { + background-image: url(../../img/grad-light-top2.png); + background-position: 0 -1px; + } + +div.v-table-focus-slot-right { + background: transparent; + border-right: 2px solid #b3b3b3; + padding-left: 0; + margin: 0; + } + +.v-table-column-selector { + margin-top: -1.35em; + } + +.v-table-cell-content { + border-right: none; + padding-right: 7px; + } + +.v-table-caption-container .v-icon { + vertical-align: middle; + margin: -0.37em 2px 0 0; + } + +.v-table-header-drag .v-icon { + vertical-align: middle; + } + +/* column selector */ +.v-contextmenu .v-on, +.v-contextmenu .v-off { + display: block; + background: transparent url(../../icons/bullet.png) no-repeat 0 4px; + padding-left: 12px; + } + +.v-contextmenu .v-off { + background-image: none; + color: #666; + } + +.v-contextmenu .gwt-MenuItem-selected .v-on { + background-image: url(../../icons/bullet-white.png); + } + +.v-table-scrollposition { + font-size: 0.9em; + opacity: .85; + filter: alpha(opacity=85); + } + +/******************************************************************************* + * Small + ******************************************************************************/ +.v-table-small .v-table-caption-container, +.v-table-small .v-table-body { + font-size: 0.85em; + } + +.v-table-small .v-table-resizer, +.v-table-small .v-table-header-wrap { + height: 1.2em; + } + +.v-table-small .v-table-column-selector { + margin-top: -1.2em; + } + + +/******************************************************************************* + * Big + ******************************************************************************/ +.v-table-big .v-table-caption-container, +.v-table-big .v-table-body { + font-size: 1.2em; + } + +.v-table-big .v-table-caption-container { + padding-top: .3em; + } + +.v-table-big .v-table-resizer, +.v-table-big .v-table-header-wrap { + height: 1.8em; + } + +.v-table-big .v-table-column-selector { + margin-top: -1.5em; + } + +/******************************************************************************* + * Striped + ******************************************************************************/ +.v-table-striped .v-table-row-odd { + background-color: #e6e6e6; + } + + +/******************************************************************************* + * Strong + ******************************************************************************/ +.v-table-strong .v-table-caption-container { + font-weight: bold; + } + + +/******************************************************************************* + * Borderless + ******************************************************************************/ +.v-table-borderless .v-table-header-wrap, +.v-table-borderless .v-table-body { + border: none; + } + +div.v-table-borderless .v-table-body { + background: transparent; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.css b/WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.css deleted file mode 100644 index d1697c584a..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.css +++ /dev/null @@ -1,158 +0,0 @@ -.v-tabsheet-spacertd div { - border-color: #b3b3b3; - border-left: none; - } - -.v-tabsheet-tabitem { - border: none; - border-bottom: 1px solid #b3b3b3; - padding: 0; - } - -.v-tabsheet-tabitem .v-caption { - padding: .2em .8em; - margin: 1px; - margin-bottom: 0; - } - -.v-tabsheet-tabitem-selected { - background-color: #c9c9c9; - border: 1px solid #b3b3b3; - border-bottom: none; - -webkit-border-top-left-radius: 3px; - -webkit-border-top-right-radius: 3px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-topright: 3px; - overflow: hidden; - } - -.v-tabsheet-tabitem-selected .v-caption { - background: transparent url(../../img/grad-light-top.png) repeat-x; - margin: 0; - padding-bottom: .25em; - -webkit-border-top-left-radius: 2px; - -webkit-border-top-right-radius: 2px; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - } - -.v-tabsheet-content { - background: #fff; - border-color: #b3b3b3; - } - -.v-tabsheet-deco { - height: 0; - background: transparent; - border-top: 1px solid #b3b3b3; - } - -.v-tabsheet-caption-close { - width: 14px; - height: 15px; - overflow: hidden; - text-indent: -50px; - background: transparent url(../../img/close-btn.png) no-repeat .5em 0; - vertical-align: middle; - padding: 0 0 0 .5em; - margin: .2em 0 0 0; - } - -.v-tabsheet-caption-close:hover { - background-position: .5em -25px; - } - -.v-tabsheet-caption-close:active { - background-position: .5em -50px; - } - -/******************************************************************************* - * Scroller - ******************************************************************************/ -.v-tabsheet-scroller { - height: 14px; - margin-top: -1.6em; - position: relative; - float: right; - background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; - border: 1px solid #b3b3b3; - border-radius: 6px; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - } - -.v-tabsheet-scrollerPrev, -.v-tabsheet-scrollerNext, -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled, -.v-tabsheet-scrollerPrev-disabled:active, -.v-tabsheet-scrollerNext-disabled:active { - border: 1px solid #b3b3b3; - border-width: 0; - background: transparent url(../../img/tab-arrows.png) no-repeat 6px 50%; - width: 16px; - height: 14px; - overflow: hidden; - opacity: .5; - filter: alpha(opacity=50); - } - -.v-tabsheet-scroller button::-moz-focus-inner { - border: none; - padding: 0; - } - -.v-tabsheet-scrollerNext, -.v-tabsheet-scrollerNext-disabled, -.v-tabsheet-scrollerNext-disabled:active { - background-position: -10px 50%; - border-left-width: 1px; - } - -.v-tabsheet-scrollerPrev:hover, -.v-tabsheet-scrollerNext:hover { - opacity: .75; - filter: alpha(opacity=75); - } - -.v-tabsheet-scrollerPrev:active, -.v-tabsheet-scrollerNext:active { - opacity: 1; - filter: none; - } - -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled, -.v-tabsheet-scrollerPrev-disabled:active, -.v-tabsheet-scrollerNext-disabled:active { - opacity: .1; - filter: alpha(opacity=10); - } - - - -/******************************************************************************* - * open-only-closable - ******************************************************************************/ -.v-tabsheet-open-only-closable .v-tabsheet-caption-close { - visibility: hidden; - } - -.v-tabsheet-open-only-closable .v-tabsheet-tabitem-selected .v-tabsheet-caption-close { - visibility: visible; - } - - -/******************************************************************************* - * Borderless - ******************************************************************************/ -.v-tabsheet-borderless .v-tabsheet-content-borderless, -.v-tabsheet-deco-borderless { - border: none; - background: transparent; - } - -.v-tabsheet-tabs-borderless .v-tabsheet-tabitem-selected, -.v-tabsheet-tabs-borderless .v-tabsheet-tabitem-selected .v-caption { - background-color: transparent; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.scss b/WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.scss new file mode 100644 index 0000000000..258df79922 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/tabsheet/tabsheet.scss @@ -0,0 +1,162 @@ +@mixin chameleon-tabsheet { + +.v-tabsheet-spacertd div { + border-color: #b3b3b3; + border-left: none; + } + +.v-tabsheet-tabitem { + border: none; + border-bottom: 1px solid #b3b3b3; + padding: 0; + } + +.v-tabsheet-tabitem .v-caption { + padding: .2em .8em; + margin: 1px; + margin-bottom: 0; + } + +.v-tabsheet-tabitem-selected { + background-color: #c9c9c9; + border: 1px solid #b3b3b3; + border-bottom: none; + -webkit-border-top-left-radius: 3px; + -webkit-border-top-right-radius: 3px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-topright: 3px; + overflow: hidden; + } + +.v-tabsheet-tabitem-selected .v-caption { + background: transparent url(../../img/grad-light-top.png) repeat-x; + margin: 0; + padding-bottom: .25em; + -webkit-border-top-left-radius: 2px; + -webkit-border-top-right-radius: 2px; + -moz-border-radius-topleft: 2px; + -moz-border-radius-topright: 2px; + } + +.v-tabsheet-content { + background: #fff; + border-color: #b3b3b3; + } + +.v-tabsheet-deco { + height: 0; + background: transparent; + border-top: 1px solid #b3b3b3; + } + +.v-tabsheet-caption-close { + width: 14px; + height: 15px; + overflow: hidden; + text-indent: -50px; + background: transparent url(../../img/close-btn.png) no-repeat .5em 0; + vertical-align: middle; + padding: 0 0 0 .5em; + margin: .2em 0 0 0; + } + +.v-tabsheet-caption-close:hover { + background-position: .5em -25px; + } + +.v-tabsheet-caption-close:active { + background-position: .5em -50px; + } + +/******************************************************************************* + * Scroller + ******************************************************************************/ +.v-tabsheet-scroller { + height: 14px; + margin-top: -1.6em; + position: relative; + float: right; + background: #c9c9c9 url(../../img/grad-light-top.png) repeat-x; + border: 1px solid #b3b3b3; + border-radius: 6px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + } + +.v-tabsheet-scrollerPrev, +.v-tabsheet-scrollerNext, +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled, +.v-tabsheet-scrollerPrev-disabled:active, +.v-tabsheet-scrollerNext-disabled:active { + border: 1px solid #b3b3b3; + border-width: 0; + background: transparent url(../../img/tab-arrows.png) no-repeat 6px 50%; + width: 16px; + height: 14px; + overflow: hidden; + opacity: .5; + filter: alpha(opacity=50); + } + +.v-tabsheet-scroller button::-moz-focus-inner { + border: none; + padding: 0; + } + +.v-tabsheet-scrollerNext, +.v-tabsheet-scrollerNext-disabled, +.v-tabsheet-scrollerNext-disabled:active { + background-position: -10px 50%; + border-left-width: 1px; + } + +.v-tabsheet-scrollerPrev:hover, +.v-tabsheet-scrollerNext:hover { + opacity: .75; + filter: alpha(opacity=75); + } + +.v-tabsheet-scrollerPrev:active, +.v-tabsheet-scrollerNext:active { + opacity: 1; + filter: none; + } + +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled, +.v-tabsheet-scrollerPrev-disabled:active, +.v-tabsheet-scrollerNext-disabled:active { + opacity: .1; + filter: alpha(opacity=10); + } + + + +/******************************************************************************* + * open-only-closable + ******************************************************************************/ +.v-tabsheet-open-only-closable .v-tabsheet-caption-close { + visibility: hidden; + } + +.v-tabsheet-open-only-closable .v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + visibility: visible; + } + + +/******************************************************************************* + * Borderless + ******************************************************************************/ +.v-tabsheet-borderless .v-tabsheet-content-borderless, +.v-tabsheet-deco-borderless { + border: none; + background: transparent; + } + +.v-tabsheet-tabs-borderless .v-tabsheet-tabitem-selected, +.v-tabsheet-tabs-borderless .v-tabsheet-tabitem-selected .v-caption { + background-color: transparent; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.css b/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.css deleted file mode 100644 index 74882fa693..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.css +++ /dev/null @@ -1,129 +0,0 @@ -input.v-textfield, -textarea.v-textarea, -.v-filterselect { - line-height: normal; - border: 1px solid #b3b3b3; - border-top-color: #808080; - border-color: rgba(0,0,0,.3); - border-top-color: rgba(0,0,0,.5); - background: #fff url(../../img/input-bg.png) repeat-x; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.2); - -moz-box-shadow: 0 1px 0 rgba(255,255,255,.2); - margin: 0; - } - -input.v-textfield[type="text"], -textarea.v-textarea, -.v-filterselect { - padding: .2em; - } - -input.v-textfield[type="text"] { - height: 1.2em; - } - -input.v-connector.v-textfield[type="text"], -.v-filterselect { - height: 1.6em; - } - -body input.v-textfield, -body textarea.v-textarea, -body input.v-filterselect-input { - color: #222; - } - -.v-ie input.v-textfield, -.v-ie textarea.v-textarea, -.v-ie .v-filterselect { - border-top-color: #808080; - } - -body input.v-textfield-prompt, -body textarea.v-textarea-prompt { - font-style: normal; - color: #999; - } - -input.v-textfield-focus, -textarea.v-textarea-focus { - background-color: #fffce1; - } - - -/******************************************************************************* - * Readonly - ******************************************************************************/ -input.v-textfield-readonly, -textarea.v-textarea-readonly { - border: none; - background: transparent; - } - - -/******************************************************************************* - * Small - ******************************************************************************/ -body input.v-textfield-small, -body textarea.v-textarea-small, -.v-datefield-small .v-datefield-textfield, -.v-datefield-small .v-datefield-button, -.v-filterselect-small .v-filterselect-input { - font-size: 0.85em; - } - - -/******************************************************************************* - * Big (and big search) - ******************************************************************************/ -body input.v-textfield-big, -body textarea.v-textarea-big, -.v-datefield-big .v-datefield-textfield, -.v-datefield-big .v-datefield-button, -.v-filterselect-big .v-filterselect-input { - font-size: 1.2em; - } - -input.v-textfield-big[type=text], -.v-datefield-big input.v-datefield-textfield[type=text] { - padding: .3em; - } - -textarea.v-textarea, -.v-filterselect-big { - padding: .3em; - } - -input.v-textfield-big.v-textfield-search, -.v-filterselect-search.v-filterselect-big { - background-image: url(../../img/magnifier-big.png); - background-repeat: no-repeat; - background-position: 4px 50%; - } - -input.v-textfield-big.v-textfield-search[type=text] { - padding-left: 26px; - } - -.v-filterselect-search.v-filterselect-big { - padding-left: 26px; - } - - -/******************************************************************************* - * Search - ******************************************************************************/ -input.v-textfield-search, -.v-filterselect-search { - background-image: url(../../img/magnifier.png); - background-repeat: no-repeat; - background-position: 3px 50%; - } - -input.v-textfield-search[type=text], -.v-filterselect-search { - padding-left: 17px; - } diff --git a/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss b/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss new file mode 100644 index 0000000000..f8f3788c9e --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss @@ -0,0 +1,133 @@ +@mixin chameleon-textfield { + +input.v-textfield, +textarea.v-textarea, +.v-filterselect { + line-height: normal; + border: 1px solid #b3b3b3; + border-top-color: #808080; + border-color: rgba(0,0,0,.3); + border-top-color: rgba(0,0,0,.5); + background: #fff url(../../img/input-bg.png) repeat-x; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -webkit-box-shadow: 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: 0 1px 0 rgba(255,255,255,.2); + margin: 0; + } + +input.v-textfield[type="text"], +textarea.v-textarea, +.v-filterselect { + padding: .2em; + } + +input.v-textfield[type="text"] { + height: 1.2em; + } + +input.v-connector.v-textfield[type="text"], +.v-filterselect { + height: 1.6em; + } + +body input.v-textfield, +body textarea.v-textarea, +body input.v-filterselect-input { + color: #222; + } + +.v-ie input.v-textfield, +.v-ie textarea.v-textarea, +.v-ie .v-filterselect { + border-top-color: #808080; + } + +body input.v-textfield-prompt, +body textarea.v-textarea-prompt { + font-style: normal; + color: #999; + } + +input.v-textfield-focus, +textarea.v-textarea-focus { + background-color: #fffce1; + } + + +/******************************************************************************* + * Readonly + ******************************************************************************/ +input.v-textfield-readonly, +textarea.v-textarea-readonly { + border: none; + background: transparent; + } + + +/******************************************************************************* + * Small + ******************************************************************************/ +body input.v-textfield-small, +body textarea.v-textarea-small, +.v-datefield-small .v-datefield-textfield, +.v-datefield-small .v-datefield-button, +.v-filterselect-small .v-filterselect-input { + font-size: 0.85em; + } + + +/******************************************************************************* + * Big (and big search) + ******************************************************************************/ +body input.v-textfield-big, +body textarea.v-textarea-big, +.v-datefield-big .v-datefield-textfield, +.v-datefield-big .v-datefield-button, +.v-filterselect-big .v-filterselect-input { + font-size: 1.2em; + } + +input.v-textfield-big[type=text], +.v-datefield-big input.v-datefield-textfield[type=text] { + padding: .3em; + } + +textarea.v-textarea, +.v-filterselect-big { + padding: .3em; + } + +input.v-textfield-big.v-textfield-search, +.v-filterselect-search.v-filterselect-big { + background-image: url(../../img/magnifier-big.png); + background-repeat: no-repeat; + background-position: 4px 50%; + } + +input.v-textfield-big.v-textfield-search[type=text] { + padding-left: 26px; + } + +.v-filterselect-search.v-filterselect-big { + padding-left: 26px; + } + + +/******************************************************************************* + * Search + ******************************************************************************/ +input.v-textfield-search, +.v-filterselect-search { + background-image: url(../../img/magnifier.png); + background-repeat: no-repeat; + background-position: 3px 50%; + } + +input.v-textfield-search[type=text], +.v-filterselect-search { + padding-left: 17px; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/tree/tree.css b/WebContent/VAADIN/themes/chameleon/components/tree/tree.css deleted file mode 100644 index 64f59c116a..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/tree/tree.css +++ /dev/null @@ -1,22 +0,0 @@ -.v-tree-node-caption { - margin-left: 16px; - } - -.v-tree-node span { - padding: .1em .3em; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - } - -.v-tree-node-children { - padding-left: 16px; - } - -.v-tree-node-selected span { - background-color: #333; - } - -.v-tree-connectors .v-tree-node-caption { - padding-bottom: 1px; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/tree/tree.scss b/WebContent/VAADIN/themes/chameleon/components/tree/tree.scss new file mode 100644 index 0000000000..fc80f51a2a --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/tree/tree.scss @@ -0,0 +1,26 @@ +@mixin chameleon-tree { + +.v-tree-node-caption { + margin-left: 16px; + } + +.v-tree-node span { + padding: .1em .3em; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + } + +.v-tree-node-children { + padding-left: 16px; + } + +.v-tree-node-selected span { + background-color: #333; + } + +.v-tree-connectors .v-tree-node-caption { + padding-bottom: 1px; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/window/window.css b/WebContent/VAADIN/themes/chameleon/components/window/window.css deleted file mode 100644 index 6ca8622a76..0000000000 --- a/WebContent/VAADIN/themes/chameleon/components/window/window.css +++ /dev/null @@ -1,53 +0,0 @@ -.v-window-closebox { - width: 14px; - height: 15px; - overflow: hidden; - text-indent: -50px; - background: transparent url(../../img/close-btn.png) no-repeat; - vertical-align: middle; - margin: 0; - top: .3em; - right: .4em; - z-index: 2; - } - -.v-window-closebox:hover { - background-position: 0 -25px; - } - -.v-window-closebox:active { - background-position: 0 -50px; - } - -.v-window { - background-image: none; - } - -.v-window-wrap { - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - background-image: url(../../img/grad-light-top.png); - background-repeat: repeat-x; - } -.v-window-outerheader { - padding: .2em 1.7em .5em 1.2em; - height: auto; - text-align: center; - } - -.v-window-header { - font-weight: normal; - } - -.v-window-footer { - height: 0; - position: static; - } - -.v-window-resizebox { - background: transparent url(../../img/resize.png) no-repeat; - width: 14px; - height: 14px; - bottom: 0; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/components/window/window.scss b/WebContent/VAADIN/themes/chameleon/components/window/window.scss new file mode 100644 index 0000000000..f1a6b5e529 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/components/window/window.scss @@ -0,0 +1,57 @@ +@mixin chameleon-window { + +.v-window-closebox { + width: 14px; + height: 15px; + overflow: hidden; + text-indent: -50px; + background: transparent url(../../img/close-btn.png) no-repeat; + vertical-align: middle; + margin: 0; + top: .3em; + right: .4em; + z-index: 2; + } + +.v-window-closebox:hover { + background-position: 0 -25px; + } + +.v-window-closebox:active { + background-position: 0 -50px; + } + +.v-window { + background-image: none; + } + +.v-window-wrap { + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + background-image: url(../../img/grad-light-top.png); + background-repeat: repeat-x; + } +.v-window-outerheader { + padding: .2em 1.7em .5em 1.2em; + height: auto; + text-align: center; + } + +.v-window-header { + font-weight: normal; + } + +.v-window-footer { + height: 0; + position: static; + } + +.v-window-resizebox { + background: transparent url(../../img/resize.png) no-repeat; + width: 14px; + height: 14px; + bottom: 0; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/compound/compound.css b/WebContent/VAADIN/themes/chameleon/compound/compound.css deleted file mode 100644 index 2a193ae46b..0000000000 --- a/WebContent/VAADIN/themes/chameleon/compound/compound.css +++ /dev/null @@ -1,3 +0,0 @@ -@import "sidebar-menu/sidebar-menu.css"; -@import "segment/segment.css"; -@import "toolbar/toolbar.css"; \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/compound/compound.scss b/WebContent/VAADIN/themes/chameleon/compound/compound.scss new file mode 100644 index 0000000000..b3f0e72f8f --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/compound/compound.scss @@ -0,0 +1,134 @@ +@mixin chameleon-compound { + + // segment.css + + .v-horizontallayout-segment { + .v-button { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + border-left-width: 0; + zoom: 1; + overflow: visible; + + .v-button-wrap { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + zoom: 1; + } + } + + .first { + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-bottomleft: 3px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + border-left-width: 1px; + + .v-button-wrap { + -webkit-border-top-left-radius: 2px; + -webkit-border-bottom-left-radius: 2px; + -moz-border-radius-topleft: 2px; + -moz-border-radius-bottomleft: 2px; + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; + } + + } + + .last { + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + + .v-button-wrap { + -webkit-border-top-right-radius: 2px; + -webkit-border-bottom-right-radius: 2px; + -moz-border-radius-topright: 2px; + -moz-border-radius-bottomright: 2px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + } + } + } + + // sidebar-menu.css + + .sidebar-menu * { + white-space: normal; + } + + .sidebar-menu { + .v-label { + font-size: 0.85em; + text-transform: uppercase; + font-weight: bold; + letter-spacing: 0.03em; + padding: 1em .9em .3em; + text-shadow: 0 1px 0 rgba(255,255,255,1); + } + + .v-nativebutton { + width: 100%; + padding: .1em 1.1em; + border: none; + background: transparent; + text-align: left; + } + + .v-nativebutton:focus { + outline: none; + font-weight: bold; + } + + .tab-selected, + .selected { + font-weight: bold; + background-color: #333; + background-image: url(../img/grad-light-top2.png); + background-position: 0 -1px; + color: #fff; + } + + .tab-selected:focus, + .selected:focus { + outline: none; + } + + .v-nativebutton::-moz-focus-inner { + border: none; + padding: 0; + } + } + + // toolbar.css + + .v-csslayout-toolbar { + background: transparent url(../img/grad-light-top.png) repeat-x; + border: 1px solid #b3b3b3; + border-width: 1px 0; + + .v-csslayout-margin { + margin: 3px .3em 2px; + padding-bottom: 1px; + overflow: hidden; + } + + .v-button, + .segment { + margin-right: 2px; + float: left; + } + + .segment .v-button { + margin-right: 0; + } + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/compound/segment/segment.css b/WebContent/VAADIN/themes/chameleon/compound/segment/segment.css deleted file mode 100644 index a529bff173..0000000000 --- a/WebContent/VAADIN/themes/chameleon/compound/segment/segment.css +++ /dev/null @@ -1,52 +0,0 @@ -.v-horizontallayout-segment .v-button { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - border-left-width: 0; - zoom: 1; - overflow: visible; - } - -.v-horizontallayout-segment .v-button .v-button-wrap { - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - zoom: 1; - } - -.v-horizontallayout-segment .first { - -webkit-border-top-left-radius: 3px; - -webkit-border-bottom-left-radius: 3px; - -moz-border-radius-topleft: 3px; - -moz-border-radius-bottomleft: 3px; - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - border-left-width: 1px; - } - -.v-horizontallayout-segment .first .v-button-wrap { - -webkit-border-top-left-radius: 2px; - -webkit-border-bottom-left-radius: 2px; - -moz-border-radius-topleft: 2px; - -moz-border-radius-bottomleft: 2px; - border-top-left-radius: 2px; - border-bottom-left-radius: 2px; - } - -.v-horizontallayout-segment .last { - -webkit-border-top-right-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - -moz-border-radius-topright: 3px; - -moz-border-radius-bottomright: 3px; - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - } - -.v-horizontallayout-segment .last .v-button-wrap { - -webkit-border-top-right-radius: 2px; - -webkit-border-bottom-right-radius: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: 2px; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/compound/sidebar-menu/sidebar-menu.css b/WebContent/VAADIN/themes/chameleon/compound/sidebar-menu/sidebar-menu.css deleted file mode 100644 index e2ab7f2080..0000000000 --- a/WebContent/VAADIN/themes/chameleon/compound/sidebar-menu/sidebar-menu.css +++ /dev/null @@ -1,44 +0,0 @@ -.sidebar-menu * { - white-space: normal; - } - -.sidebar-menu .v-label { - font-size: 0.85em; - text-transform: uppercase; - font-weight: bold; - letter-spacing: 0.03em; - padding: 1em .9em .3em; - text-shadow: 0 1px 0 rgba(255,255,255,1); - } - -.sidebar-menu .v-nativebutton { - width: 100%; - padding: .1em 1.1em; - border: none; - background: transparent; - text-align: left; - } - -.sidebar-menu .v-nativebutton:focus { - outline: none; - font-weight: bold; - } - -.sidebar-menu .tab-selected, -.sidebar-menu .selected { - font-weight: bold; - background-color: #333; - background-image: url(../../img/grad-light-top2.png); - background-position: 0 -1px; - color: #fff; - } - -.sidebar-menu .tab-selected:focus, -.sidebar-menu .selected:focus { - outline: none; - } - -.sidebar-menu .v-nativebutton::-moz-focus-inner { - border: none; - padding: 0; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/compound/toolbar/toolbar.css b/WebContent/VAADIN/themes/chameleon/compound/toolbar/toolbar.css deleted file mode 100644 index 468172037e..0000000000 --- a/WebContent/VAADIN/themes/chameleon/compound/toolbar/toolbar.css +++ /dev/null @@ -1,21 +0,0 @@ -.v-csslayout-toolbar { - background: transparent url(../../img/grad-light-top.png) repeat-x; - border: 1px solid #b3b3b3; - border-width: 1px 0; - } - -.v-csslayout-toolbar .v-csslayout-margin { - margin: 3px .3em 2px; - padding-bottom: 1px; - overflow: hidden; - } - -.v-csslayout-toolbar .v-button, -.v-csslayout-toolbar .segment { - margin-right: 2px; - float: left; - } - -.v-csslayout-toolbar .segment .v-button { - margin-right: 0; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/chameleon/styles.scss b/WebContent/VAADIN/themes/chameleon/styles.scss new file mode 100644 index 0000000000..ee905c17e9 --- /dev/null +++ b/WebContent/VAADIN/themes/chameleon/styles.scss @@ -0,0 +1,10 @@ +@import "../base/styles.scss"; +@import "chameleon.scss"; + +@include chameleon-app; + +// .v-theme-chameleon { +@include chameleon-common; +@include chameleon-components; +@include chameleon-compound; +// } diff --git a/WebContent/VAADIN/themes/liferay/accordion/accordion.css b/WebContent/VAADIN/themes/liferay/accordion/accordion.css deleted file mode 100644 index 8faff71137..0000000000 --- a/WebContent/VAADIN/themes/liferay/accordion/accordion.css +++ /dev/null @@ -1,28 +0,0 @@ -.v-accordion { - border: 1px solid #999; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.v-accordion-item-caption { - color: #222; - text-shadow: 1px 1px #FFFFFF; - font-size: 12px; - font-weight: bold; - background: #c0c2c5 url(/html/themes/classic/images/application/panel_header_bg.png) repeat-x scroll 0 0; - border-top: 1px solid #999; - border-bottom: none; - padding: 4px 5px 5px 5px; -} - -.v-accordion-item-first .v-accordion-item-caption { - border-top: none; - -webkit-border-radius: 4px 4px 0 0; - -moz-border-radius: 4px 4px 0 0; - border-radius: 4px 4px 0 0; -} - -.v-accordion-item-open .v-accordion-item-caption { - border-bottom: 1px solid #999; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/accordion/accordion.scss b/WebContent/VAADIN/themes/liferay/accordion/accordion.scss new file mode 100644 index 0000000000..840c02feec --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/accordion/accordion.scss @@ -0,0 +1,32 @@ +@mixin liferay-accordion { + +.v-accordion { + border: 1px solid #999; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.v-accordion-item-caption { + color: #222; + text-shadow: 1px 1px #FFFFFF; + font-size: 12px; + font-weight: bold; + background: #c0c2c5 url(/html/themes/classic/images/application/panel_header_bg.png) repeat-x scroll 0 0; + border-top: 1px solid #999; + border-bottom: none; + padding: 4px 5px 5px 5px; +} + +.v-accordion-item-first .v-accordion-item-caption { + border-top: none; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.v-accordion-item-open .v-accordion-item-caption { + border-bottom: 1px solid #999; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/button/button.css b/WebContent/VAADIN/themes/liferay/button/button.css deleted file mode 100644 index bd0f307947..0000000000 --- a/WebContent/VAADIN/themes/liferay/button/button.css +++ /dev/null @@ -1,104 +0,0 @@ -.v-button:focus { - outline: none; -} - -.v-button:hover .v-button-wrap { - background: #b9ced9 url(/html/themes/classic/images/application/state_hover_bg.png) repeat-x 0 0; - border-color: #627782; - color: #369; -} - -.v-button:active .v-button-wrap, -.v-button.v-pressed .v-button-wrap, -.v-button:focus .v-button-wrap { - background: #ebebeb url(/html/themes/classic/images/application/state_active_bg.png) repeat-x 0 0; - border-color: #555; -} - -.v-button { - padding: 0; - border: none; - height: 26px; - overflow: hidden; -} - - -.v-button .v-button-wrap, -.v-disabled.v-button .v-button-wrap { - display: block; - font-size: 11px; - font-weight: bold; - border: 1px solid #c8c9ca; - border-right-color: #9e9e9e; - border-bottom-color: #9e9e9e; - background: #d4d4d4 url(/html/themes/classic/images/portlet/header_bg.png) repeat-x 0 0; - -webkit-background-origin: padding; - -moz-background-origin: padding; - padding: 4px 4px 0px 4px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - line-height: 16px; - min-height: 16px; - text-shadow: 1px 1px #fff; - color: #34404f; - text-overflow: ellipsis; - height: 20px; -} - -.v-button-caption { - line-height: 16px; -} - -/* Link style button */ -.v-button-link, -.v-disabled.v-button-link, -.v-button-link:focus, -.v-button-link:active, -.v-button-link:hover, -.v-button-link-pressed, -button.v-nativebutton-link, -.v-disabled.v-nativebutton-link, -button.v-nativebutton-link:focus, -button.v-nativebutton-link:active, -button.v-nativebutton-link:hover, -button.v-nativebutton-link-pressed, -.v-button.v-button-link .v-button-wrap, -.v-button.v-button-link:focus .v-button-wrap, -.v-button.v-button-link:active .v-button-wrap, -.v-disabled.v-button.v-button-link .v-button-wrap { - color: #5B677D; - font-weight: normal; - border: none; - border-style: none; - background: transparent; - padding: 0; - font-size: inherit; - -webkit-box-shadow: none; - -mox-box-shadow: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - text-shadow: none; - height: auto; -} - -.v-button-link:hover { - color: #0066cc; - text-decoration: none; -} - -.v-button-link:focus, -.v-sa .v-button-link:focus { - outline: 1px dotted #1b699f; - outline-offset: -1px; -} - -.v-sa .v-button-link:focus { - outline-offset: -1px; -} - -/* CheckBox */ -.v-checkbox input { - margin-right: 3px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/button/button.scss b/WebContent/VAADIN/themes/liferay/button/button.scss new file mode 100644 index 0000000000..3a2e4a7acb --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/button/button.scss @@ -0,0 +1,108 @@ +@mixin liferay-button { + +.v-button:focus { + outline: none; +} + +.v-button:hover .v-button-wrap { + background: #b9ced9 url(/html/themes/classic/images/application/state_hover_bg.png) repeat-x 0 0; + border-color: #627782; + color: #369; +} + +.v-button:active .v-button-wrap, +.v-button.v-pressed .v-button-wrap, +.v-button:focus .v-button-wrap { + background: #ebebeb url(/html/themes/classic/images/application/state_active_bg.png) repeat-x 0 0; + border-color: #555; +} + +.v-button { + padding: 0; + border: none; + height: 26px; + overflow: hidden; +} + + +.v-button .v-button-wrap, +.v-disabled.v-button .v-button-wrap { + display: block; + font-size: 11px; + font-weight: bold; + border: 1px solid #c8c9ca; + border-right-color: #9e9e9e; + border-bottom-color: #9e9e9e; + background: #d4d4d4 url(/html/themes/classic/images/portlet/header_bg.png) repeat-x 0 0; + -webkit-background-origin: padding; + -moz-background-origin: padding; + padding: 4px 4px 0px 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + line-height: 16px; + min-height: 16px; + text-shadow: 1px 1px #fff; + color: #34404f; + text-overflow: ellipsis; + height: 20px; +} + +.v-button-caption { + line-height: 16px; +} + +/* Link style button */ +.v-button-link, +.v-disabled.v-button-link, +.v-button-link:focus, +.v-button-link:active, +.v-button-link:hover, +.v-button-link-pressed, +button.v-nativebutton-link, +.v-disabled.v-nativebutton-link, +button.v-nativebutton-link:focus, +button.v-nativebutton-link:active, +button.v-nativebutton-link:hover, +button.v-nativebutton-link-pressed, +.v-button.v-button-link .v-button-wrap, +.v-button.v-button-link:focus .v-button-wrap, +.v-button.v-button-link:active .v-button-wrap, +.v-disabled.v-button.v-button-link .v-button-wrap { + color: #5B677D; + font-weight: normal; + border: none; + border-style: none; + background: transparent; + padding: 0; + font-size: inherit; + -webkit-box-shadow: none; + -mox-box-shadow: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + text-shadow: none; + height: auto; +} + +.v-button-link:hover { + color: #0066cc; + text-decoration: none; +} + +.v-button-link:focus, +.v-sa .v-button-link:focus { + outline: 1px dotted #1b699f; + outline-offset: -1px; +} + +.v-sa .v-button-link:focus { + outline-offset: -1px; +} + +/* CheckBox */ +.v-checkbox input { + margin-right: 3px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/common/common.css b/WebContent/VAADIN/themes/liferay/common/common.css deleted file mode 100644 index 521c4f3ac1..0000000000 --- a/WebContent/VAADIN/themes/liferay/common/common.css +++ /dev/null @@ -1,35 +0,0 @@ -div.v-app { - background-color: transparent; -} - -.v-caption { - font-weight: bold; -} - -.v-tooltip { - background-color: #fffcdd; - border: 1px solid #b8b295; - font-size: 11px; - color: #222; -} -.v-tooltip-text { - padding: 2px 4px; -} -.v-tooltip .v-errormessage { - padding: 3px 4px; - background: #ffecc6; - color: #b74100; - border: none; - border-top: 1px solid #fff3dc; -} -.v-tooltip .v-errormessage h2 { - font-size: 16px; - font-weight: normal; - color: #ab3101; - margin: 2px 0 8px 0; -} -.v-tooltip .v-errormessage h3 { - font-size: 13px; - font-weight: bold; - margin: 1px 0 4px 0; -} diff --git a/WebContent/VAADIN/themes/liferay/common/common.scss b/WebContent/VAADIN/themes/liferay/common/common.scss new file mode 100644 index 0000000000..a94431d4cb --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/common/common.scss @@ -0,0 +1,39 @@ +@mixin liferay-common { + +div.v-app { + background-color: transparent; +} + +.v-caption { + font-weight: bold; +} + +.v-tooltip { + background-color: #fffcdd; + border: 1px solid #b8b295; + font-size: 11px; + color: #222; +} +.v-tooltip-text { + padding: 2px 4px; +} +.v-tooltip .v-errormessage { + padding: 3px 4px; + background: #ffecc6; + color: #b74100; + border: none; + border-top: 1px solid #fff3dc; +} +.v-tooltip .v-errormessage h2 { + font-size: 16px; + font-weight: normal; + color: #ab3101; + margin: 2px 0 8px 0; +} +.v-tooltip .v-errormessage h3 { + font-size: 13px; + font-weight: bold; + margin: 1px 0 4px 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.css b/WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.css deleted file mode 100644 index e29f0976e1..0000000000 --- a/WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.css +++ /dev/null @@ -1,40 +0,0 @@ -.v-contextmenu { - background: #ccc9c9 url(/html/themes/classic/images/application/menu_bg.png) repeat-x 0 0; - border: 1px solid; - border-color: #aeafb1 #777879 #777879 #aeafb1; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.v-contextmenu table { - border-collapse: separate; -} - -.v-contextmenu .gwt-MenuItem { - padding: 3px 8px 2px 8px; - height: 16px; - color: #2c2f34; - text-shadow: -1px -1px #fff; - font-weight: bold; - border-bottom: 1px solid #bcbbbb; - border-top: 1px solid #eee; -} - -.v-contextmenu tr:last-child .gwt-MenuItem { - border-bottom-width: 0; -} - -.v-contextmenu .gwt-MenuItem img { - margin-right: 4px; -} - -.v-contextmenu .gwt-MenuItem-selected { - background-color: #5b677d; - color: #FFF; - text-shadow: -1px -1px #2c2f34; -} - -.v-contextmenu .gwt-MenuItem-selected div { - background: transparent; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.scss b/WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.scss new file mode 100644 index 0000000000..7748580f0c --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/contextmenu/contextmenu.scss @@ -0,0 +1,44 @@ +@mixin liferay-contextmenu { + +.v-contextmenu { + background: #ccc9c9 url(/html/themes/classic/images/application/menu_bg.png) repeat-x 0 0; + border: 1px solid; + border-color: #aeafb1 #777879 #777879 #aeafb1; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.v-contextmenu table { + border-collapse: separate; +} + +.v-contextmenu .gwt-MenuItem { + padding: 3px 8px 2px 8px; + height: 16px; + color: #2c2f34; + text-shadow: -1px -1px #fff; + font-weight: bold; + border-bottom: 1px solid #bcbbbb; + border-top: 1px solid #eee; +} + +.v-contextmenu tr:last-child .gwt-MenuItem { + border-bottom-width: 0; +} + +.v-contextmenu .gwt-MenuItem img { + margin-right: 4px; +} + +.v-contextmenu .gwt-MenuItem-selected { + background-color: #5b677d; + color: #FFF; + text-shadow: -1px -1px #2c2f34; +} + +.v-contextmenu .gwt-MenuItem-selected div { + background: transparent; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/datefield/datefield.css b/WebContent/VAADIN/themes/liferay/datefield/datefield.css deleted file mode 100644 index 6040052798..0000000000 --- a/WebContent/VAADIN/themes/liferay/datefield/datefield.css +++ /dev/null @@ -1,166 +0,0 @@ -.v-datefield-popup { - padding: 3px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.v-datefield-calendarpanel-header { - height: 28px; -} - -.v-datefield-calendarpanel:focus { - outline: none; -} - -.v-datefield-calendarpanel-body { - text-align: right; - vertical-align: top; -} - -.v-datefield-popupcalendar .v-datefield-button { - background: transparent url(../common/buttons_sprites.png) no-repeat 0 -48px; - width: 24px; - height: 24px; - border: none; -} - -.v-datefield-popupcalendar .v-datefield-button:hover { - background-position: 0px -72px; -} - -.v-datefield-popupcalendar .v-datefield-button:focus { - background-position: 0px -96px; -} - -.v-datefield-month .v-datefield-calendarpanel-month, -.v-datefield-day .v-datefield-calendarpanel-month, -.v-datefield-full .v-datefield-calendarpanel-month { - width: 124px; -} - -.v-datefield-year .v-datefield-calendarpanel-month { - width: 35px; -} - -.v-datefield-calendarpanel-month { - background: transparent url(datefield_sprites.png) repeat-x 0 -112px; - font-weight: bold; -} - -span.v-datefield-calendarpanel-month { - display: block; - text-align: center; - background: transparent; - overflow: hidden; - padding: 1px 3px 0; -} - -.v-datefield-calendarpanel-prevyear, -.v-datefield-calendarpanel-nextyear { - width: 22px; -} - -.v-datefield-calendarpanel-prevyear button, -.v-datefield-calendarpanel-prevmonth button, -.v-datefield-calendarpanel-nextmonth button, -.v-datefield-calendarpanel-nextyear button { - width: 22px; - height: 28px; - border: none; - background: transparent; - background-repeat: no-repeat; - background-image: url(datefield_sprites.png); - background-position: 0 0; - overflow: hidden; - padding: 0; - text-indent: -9999px; - outline: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.v-ie .v-datefield-calendarpanel-prevyear button, -.v-ie .v-datefield-calendarpanel-nextyear button, -.v-ie .v-datefield-calendarpanel-prevmonth button, -.v-ie .v-datefield-calendarpanel-nextmonth button { - text-indent: 0; - font-size: 1px; -} - -.v-datefield-calendarpanel-prevmonth button { - background-position: 0 -56px; -} - -.v-datefield-calendarpanel-prevmonth { - background: transparent url(datefield_sprites.png) repeat-x 0 -112px; -} - -.v-datefield-calendarpanel-nextyear button { - background-position: 0 -28px; - width: 100%; - min-width: 22px; -} - -.v-datefield-calendarpanel-nextmonth button { - background-position: 0 -84px; -} - -.v-datefield-calendarpanel-nextmonth { - background: transparent url(datefield_sprites.png) repeat-x 0 -112px; -} - -.v-datefield-calendarpanel-prevyear button { - width: 100%; - min-width: 22px; -} - -.v-datefield-calendarpanel-day { - display: block; - width: 22px; - margin: 0 0 3px 3px; - text-align: center; - background: #d4d4d4 url(/html/themes/classic/images/application/state_default_bg.png) repeat-x 0 0; - border-color: #c8c9ca #9e9e9e #9e9e9e #c8c9ca; - border-style: solid; - border-width: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.v-datefield-calendarpanel-day-today { - font-weight: bold; -} - -.v-datefield-calendarpanel-day-selected { - background: #b5b5b5 url(/html/themes/classic/images/application/state_active_bg.png) repeat-x 0 0; - color: #000; - border-color: #555; -} - -.v-datefield-calendarpanel-day-focused { - outline: 1px dotted #555; -} - - -.v-datefield-calendarpanel-weekdays { - text-align: center; -} - -.v-datefield-calendarpanel-weekdays strong { - font-weight: normal; -} - -.v-datefield-calendarpanel-weeknumber { - display: block; - border: none; - padding: 2px 0 2px 0; - margin: 0; -} - -.v-datefield-calendarpanel-body table { - margin: 0 auto; - width: 200px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/datefield/datefield.scss b/WebContent/VAADIN/themes/liferay/datefield/datefield.scss new file mode 100644 index 0000000000..4bfc810b52 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/datefield/datefield.scss @@ -0,0 +1,170 @@ +@mixin liferay-datefield { + +.v-datefield-popup { + padding: 3px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.v-datefield-calendarpanel-header { + height: 28px; +} + +.v-datefield-calendarpanel:focus { + outline: none; +} + +.v-datefield-calendarpanel-body { + text-align: right; + vertical-align: top; +} + +.v-datefield-popupcalendar .v-datefield-button { + background: transparent url(../common/buttons_sprites.png) no-repeat 0 -48px; + width: 24px; + height: 24px; + border: none; +} + +.v-datefield-popupcalendar .v-datefield-button:hover { + background-position: 0px -72px; +} + +.v-datefield-popupcalendar .v-datefield-button:focus { + background-position: 0px -96px; +} + +.v-datefield-month .v-datefield-calendarpanel-month, +.v-datefield-day .v-datefield-calendarpanel-month, +.v-datefield-full .v-datefield-calendarpanel-month { + width: 124px; +} + +.v-datefield-year .v-datefield-calendarpanel-month { + width: 35px; +} + +.v-datefield-calendarpanel-month { + background: transparent url(datefield_sprites.png) repeat-x 0 -112px; + font-weight: bold; +} + +span.v-datefield-calendarpanel-month { + display: block; + text-align: center; + background: transparent; + overflow: hidden; + padding: 1px 3px 0; +} + +.v-datefield-calendarpanel-prevyear, +.v-datefield-calendarpanel-nextyear { + width: 22px; +} + +.v-datefield-calendarpanel-prevyear button, +.v-datefield-calendarpanel-prevmonth button, +.v-datefield-calendarpanel-nextmonth button, +.v-datefield-calendarpanel-nextyear button { + width: 22px; + height: 28px; + border: none; + background: transparent; + background-repeat: no-repeat; + background-image: url(datefield_sprites.png); + background-position: 0 0; + overflow: hidden; + padding: 0; + text-indent: -9999px; + outline: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.v-ie .v-datefield-calendarpanel-prevyear button, +.v-ie .v-datefield-calendarpanel-nextyear button, +.v-ie .v-datefield-calendarpanel-prevmonth button, +.v-ie .v-datefield-calendarpanel-nextmonth button { + text-indent: 0; + font-size: 1px; +} + +.v-datefield-calendarpanel-prevmonth button { + background-position: 0 -56px; +} + +.v-datefield-calendarpanel-prevmonth { + background: transparent url(datefield_sprites.png) repeat-x 0 -112px; +} + +.v-datefield-calendarpanel-nextyear button { + background-position: 0 -28px; + width: 100%; + min-width: 22px; +} + +.v-datefield-calendarpanel-nextmonth button { + background-position: 0 -84px; +} + +.v-datefield-calendarpanel-nextmonth { + background: transparent url(datefield_sprites.png) repeat-x 0 -112px; +} + +.v-datefield-calendarpanel-prevyear button { + width: 100%; + min-width: 22px; +} + +.v-datefield-calendarpanel-day { + display: block; + width: 22px; + margin: 0 0 3px 3px; + text-align: center; + background: #d4d4d4 url(/html/themes/classic/images/application/state_default_bg.png) repeat-x 0 0; + border-color: #c8c9ca #9e9e9e #9e9e9e #c8c9ca; + border-style: solid; + border-width: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.v-datefield-calendarpanel-day-today { + font-weight: bold; +} + +.v-datefield-calendarpanel-day-selected { + background: #b5b5b5 url(/html/themes/classic/images/application/state_active_bg.png) repeat-x 0 0; + color: #000; + border-color: #555; +} + +.v-datefield-calendarpanel-day-focused { + outline: 1px dotted #555; +} + + +.v-datefield-calendarpanel-weekdays { + text-align: center; +} + +.v-datefield-calendarpanel-weekdays strong { + font-weight: normal; +} + +.v-datefield-calendarpanel-weeknumber { + display: block; + border: none; + padding: 2px 0 2px 0; + margin: 0; +} + +.v-datefield-calendarpanel-body table { + margin: 0 auto; + width: 200px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/formlayout/formlayout.css b/WebContent/VAADIN/themes/liferay/formlayout/formlayout.css deleted file mode 100644 index 9cf250627e..0000000000 --- a/WebContent/VAADIN/themes/liferay/formlayout/formlayout.css +++ /dev/null @@ -1,3 +0,0 @@ -.v-formlayout .v-caption { - font-weight: normal; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/formlayout/formlayout.scss b/WebContent/VAADIN/themes/liferay/formlayout/formlayout.scss new file mode 100644 index 0000000000..3fa6fa20ee --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/formlayout/formlayout.scss @@ -0,0 +1,7 @@ +@mixin liferay-formlayout { + +.v-formlayout .v-caption { + font-weight: normal; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/liferay.scss b/WebContent/VAADIN/themes/liferay/liferay.scss new file mode 100644 index 0000000000..68e9efbfe2 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/liferay.scss @@ -0,0 +1,25 @@ +// this file just defines all reindeer mixins by importing them + +// common between others for now for backwards compatibility + +@import "accordion/accordion.scss"; +@import "button/button.scss"; + +@import "common/common.scss"; + +@import "contextmenu/contextmenu.scss"; +@import "datefield/datefield.scss"; +@import "formlayout/formlayout.scss"; +@import "menubar/menubar.scss"; +@import "notification/notification.scss"; +@import "panel/panel.scss"; +@import "popupview/popupview.scss"; +@import "progressindicator/progressindicator.scss"; +@import "select/select.scss"; +@import "slider/slider.scss"; +@import "splitpanel/splitpanel.scss"; +@import "table/table.scss"; +@import "tabsheet/tabsheet.scss"; +@import "textfield/textfield.scss"; +@import "tree/tree.scss"; +@import "window/window.scss"; diff --git a/WebContent/VAADIN/themes/liferay/menubar/menubar.css b/WebContent/VAADIN/themes/liferay/menubar/menubar.css deleted file mode 100644 index cb0812f268..0000000000 --- a/WebContent/VAADIN/themes/liferay/menubar/menubar.css +++ /dev/null @@ -1,64 +0,0 @@ -.v-menubar { - background: #97A1AE url(/html/themes/classic/images/dockbar/dockbar_bg.png) repeat-x 0 0; - border-bottom: 1px solid #636364; -} - -.v-menubar-separator span { - display: none; -} - -.v-menubar-menuitem { - padding: 3px 8px; - line-height: 16px; - font-weight: bold; - color: #2c2f34; - text-shadow: -1px -1px #FFF; -} - -.v-menubar-menuitem-selected { - color: #FFF; - text-shadow: -1px -1px #2c2f34; -} - -.v-menubar-submenu { - background: #CCC9C9 url(/html/themes/classic/images/application/menu_bg.png) repeat-x 0 0; - border: 1px solid; - border-color: #aeafb1 #777879 #777879 #aeafb1; - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; - padding: 2px 0; -} - -.v-menubar-submenu .v-menubar-menuitem { - color: #2c2f34; - font-weight: bold; - text-shadow: 1px 1px #fff; - padding: 1px 26px 1px 10px; - line-height: 16px; - border-bottom: 1px solid #bcbbbb; - border-top: 1px solid #eee; -} - -.v-menubar-submenu .v-menubar-menuitem:last-child { - border-bottom-width: 0; -} - -.v-menubar-submenu .v-menubar-menuitem-caption * { - vertical-align: middle; -} - -.v-menubar .v-menubar-menuitem-selected, -.v-menubar-submenu .v-menubar-menuitem-selected { - color: #fff; - text-shadow: 1px 1px #000; - background-color: #5b677d; -} - -.v-menubar-menuitem-disabled, -.v-menubar-submenu .v-menubar-menuitem-disabled, -.v-menubar span.v-menubar-menuitem-disabled:hover, -.v-menubar span.v-menubar-menuitem-disabled:focus, -.v-menubar span.v-menubar-menuitem-disabled:active { - color: #999; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/menubar/menubar.scss b/WebContent/VAADIN/themes/liferay/menubar/menubar.scss new file mode 100644 index 0000000000..71891ff059 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/menubar/menubar.scss @@ -0,0 +1,68 @@ +@mixin liferay-menubar { + +.v-menubar { + background: #97A1AE url(/html/themes/classic/images/dockbar/dockbar_bg.png) repeat-x 0 0; + border-bottom: 1px solid #636364; +} + +.v-menubar-separator span { + display: none; +} + +.v-menubar-menuitem { + padding: 3px 8px; + line-height: 16px; + font-weight: bold; + color: #2c2f34; + text-shadow: -1px -1px #FFF; +} + +.v-menubar-menuitem-selected { + color: #FFF; + text-shadow: -1px -1px #2c2f34; +} + +.v-menubar-submenu { + background: #CCC9C9 url(/html/themes/classic/images/application/menu_bg.png) repeat-x 0 0; + border: 1px solid; + border-color: #aeafb1 #777879 #777879 #aeafb1; + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; + padding: 2px 0; +} + +.v-menubar-submenu .v-menubar-menuitem { + color: #2c2f34; + font-weight: bold; + text-shadow: 1px 1px #fff; + padding: 1px 26px 1px 10px; + line-height: 16px; + border-bottom: 1px solid #bcbbbb; + border-top: 1px solid #eee; +} + +.v-menubar-submenu .v-menubar-menuitem:last-child { + border-bottom-width: 0; +} + +.v-menubar-submenu .v-menubar-menuitem-caption * { + vertical-align: middle; +} + +.v-menubar .v-menubar-menuitem-selected, +.v-menubar-submenu .v-menubar-menuitem-selected { + color: #fff; + text-shadow: 1px 1px #000; + background-color: #5b677d; +} + +.v-menubar-menuitem-disabled, +.v-menubar-submenu .v-menubar-menuitem-disabled, +.v-menubar span.v-menubar-menuitem-disabled:hover, +.v-menubar span.v-menubar-menuitem-disabled:focus, +.v-menubar span.v-menubar-menuitem-disabled:active { + color: #999; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/notification/notification.css b/WebContent/VAADIN/themes/liferay/notification/notification.css deleted file mode 100644 index 10168fecbd..0000000000 --- a/WebContent/VAADIN/themes/liferay/notification/notification.css +++ /dev/null @@ -1,48 +0,0 @@ -.v-Notification { - background: #dff4ff; - color: #34404F; - font-weight: bold; - cursor: pointer; - overflow: hidden; - padding: 1em; - max-width: 85%; - border: 1px solid #a7cedf; -} - -.v-Notification h1, -.v-Notification p, -.v-Notification-error h1, -.v-Notification-error p, -.v-Notification-warning h1, -.v-Notification-warning p { - display: inline; - margin: 0 0.5em 0 0; -} -.v-Notification-warning { - background: #ffc; - border-color: #fc0; -} -.v-Notification-error { - background-color: #ffdddd; - border-color: #ff0000; -} - -.v-Notification-tray { - color: #111111; - background-color: #e5e5e5; - border-color: #b5b5b5; -} -.v-Notification-tray h1 { - display: block; -} -.v-Notification-tray p { - display: block; -} -.v-Notification-system { - background-color: #ffdddd; - border-color: #ff0000; -} -.v-Notification-system h1 { - display: block; - margin: 0; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/notification/notification.scss b/WebContent/VAADIN/themes/liferay/notification/notification.scss new file mode 100644 index 0000000000..2312768287 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/notification/notification.scss @@ -0,0 +1,52 @@ +@mixin liferay-notification { + +.v-Notification { + background: #dff4ff; + color: #34404F; + font-weight: bold; + cursor: pointer; + overflow: hidden; + padding: 1em; + max-width: 85%; + border: 1px solid #a7cedf; +} + +.v-Notification h1, +.v-Notification p, +.v-Notification-error h1, +.v-Notification-error p, +.v-Notification-warning h1, +.v-Notification-warning p { + display: inline; + margin: 0 0.5em 0 0; +} +.v-Notification-warning { + background: #ffc; + border-color: #fc0; +} +.v-Notification-error { + background-color: #ffdddd; + border-color: #ff0000; +} + +.v-Notification-tray { + color: #111111; + background-color: #e5e5e5; + border-color: #b5b5b5; +} +.v-Notification-tray h1 { + display: block; +} +.v-Notification-tray p { + display: block; +} +.v-Notification-system { + background-color: #ffdddd; + border-color: #ff0000; +} +.v-Notification-system h1 { + display: block; + margin: 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/panel/panel.css b/WebContent/VAADIN/themes/liferay/panel/panel.css deleted file mode 100644 index bb0bbe5338..0000000000 --- a/WebContent/VAADIN/themes/liferay/panel/panel.css +++ /dev/null @@ -1,82 +0,0 @@ -.v-panel { - background: transparent url(top-left.png) no-repeat; -} - -.v-panel-caption, -.v-panel-nocaption { - text-shadow: 1px 1px #fff; - font-size: 12px; - color: #222; - margin-left: 4px; - background: transparent url(top-right.png) no-repeat right top; - padding: 5px 5px 10px 2px; - height: 12px; -} - -.v-panel-caption .v-icon { - padding-right: 2px; -} - -.v-panel-content { - border: 1px solid #999; - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} - -/* Light style Panel */ - -.v-panel-light { - background: transparent; -} - -.v-panel-caption-light, -.v-panel-nocaption-light { - margin: 0; - border: none; - background: none; -} - -.v-panel-caption-light { - border-bottom: 1px solid #999; -} - -.v-panel-nocaption-light { - padding: 0; - height: 0; -} - -.v-panel-content-light { - border: none; -} -.v-panel-content-light > div { - background: transparent; -} - -.v-panel-deco { - height: 0; - overflow: hidden; -} - -/* IE specific rules */ -.v-ie .v-panel { - background: transparent; -} -.v-ie .v-panel-caption, -.v-ie .v-panel-nocaption { - border: 1px solid #999; - border-bottom: none; - background: #c0c2c5 url(/html/themes/classic/images/application/panel_header_bg.png) repeat-x 0 0; - margin: 0; - padding-left: 5px; -} - -.v-ie .v-panel-caption-light, -.v-ie .v-panel-nocaption-light { - border: none; - background: transparent; -} - -.v-ie .v-panel-caption-light { - border-bottom: 1px solid #999; -} diff --git a/WebContent/VAADIN/themes/liferay/panel/panel.scss b/WebContent/VAADIN/themes/liferay/panel/panel.scss new file mode 100644 index 0000000000..79172b2474 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/panel/panel.scss @@ -0,0 +1,86 @@ +@mixin liferay-panel { + +.v-panel { + background: transparent url(top-left.png) no-repeat; +} + +.v-panel-caption, +.v-panel-nocaption { + text-shadow: 1px 1px #fff; + font-size: 12px; + color: #222; + margin-left: 4px; + background: transparent url(top-right.png) no-repeat right top; + padding: 5px 5px 10px 2px; + height: 12px; +} + +.v-panel-caption .v-icon { + padding-right: 2px; +} + +.v-panel-content { + border: 1px solid #999; + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +/* Light style Panel */ + +.v-panel-light { + background: transparent; +} + +.v-panel-caption-light, +.v-panel-nocaption-light { + margin: 0; + border: none; + background: none; +} + +.v-panel-caption-light { + border-bottom: 1px solid #999; +} + +.v-panel-nocaption-light { + padding: 0; + height: 0; +} + +.v-panel-content-light { + border: none; +} +.v-panel-content-light > div { + background: transparent; +} + +.v-panel-deco { + height: 0; + overflow: hidden; +} + +/* IE specific rules */ +.v-ie .v-panel { + background: transparent; +} +.v-ie .v-panel-caption, +.v-ie .v-panel-nocaption { + border: 1px solid #999; + border-bottom: none; + background: #c0c2c5 url(/html/themes/classic/images/application/panel_header_bg.png) repeat-x 0 0; + margin: 0; + padding-left: 5px; +} + +.v-ie .v-panel-caption-light, +.v-ie .v-panel-nocaption-light { + border: none; + background: transparent; +} + +.v-ie .v-panel-caption-light { + border-bottom: 1px solid #999; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/popupview/popupview.css b/WebContent/VAADIN/themes/liferay/popupview/popupview.css deleted file mode 100644 index 06cfddb7fe..0000000000 --- a/WebContent/VAADIN/themes/liferay/popupview/popupview.css +++ /dev/null @@ -1,9 +0,0 @@ -.v-popupview-popup { - background: #d4d4d4 url(/html/themes/classic/images/application/state_default_bg.png) repeat-x 0 0; - padding: 8px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - border: 1px solid #c8c9ca; - border-color :#c8c9ca #9e9e9e #9e9e9e #c8c9ca; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/popupview/popupview.scss b/WebContent/VAADIN/themes/liferay/popupview/popupview.scss new file mode 100644 index 0000000000..ab06d18c98 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/popupview/popupview.scss @@ -0,0 +1,13 @@ +@mixin liferay-popupview { + +.v-popupview-popup { + background: #d4d4d4 url(/html/themes/classic/images/application/state_default_bg.png) repeat-x 0 0; + padding: 8px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border: 1px solid #c8c9ca; + border-color :#c8c9ca #9e9e9e #9e9e9e #c8c9ca; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.css b/WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.css deleted file mode 100644 index ad8fb1c871..0000000000 --- a/WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.css +++ /dev/null @@ -1,12 +0,0 @@ -.v-progressindicator-wrapper { - background: #dfe2e4 url(../../reindeer/progressindicator/img/base.gif) repeat-x; - border: 1px solid #bfbfbf; -} - -.v-disabled .v-progressindicator-wrapper { - background-image: url(../../reindeer/progressindicator/img/disabled.gif); -} - -.v-progressindicator-indicator { - background: #f7f9f9 url(../../reindeer/progressindicator/img/progress.png); -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.scss b/WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.scss new file mode 100644 index 0000000000..4371b2aeef --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/progressindicator/progressindicator.scss @@ -0,0 +1,16 @@ +@mixin liferay-progressindicator { + +.v-progressindicator-wrapper { + background: #dfe2e4 url(../../reindeer/progressindicator/img/base.gif) repeat-x; + border: 1px solid #bfbfbf; +} + +.v-disabled .v-progressindicator-wrapper { + background-image: url(../../reindeer/progressindicator/img/disabled.gif); +} + +.v-progressindicator-indicator { + background: #f7f9f9 url(../../reindeer/progressindicator/img/progress.png); +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/select/select.css b/WebContent/VAADIN/themes/liferay/select/select.css deleted file mode 100644 index 66672cc573..0000000000 --- a/WebContent/VAADIN/themes/liferay/select/select.css +++ /dev/null @@ -1,77 +0,0 @@ -.v-app select, -.v-window select { - padding: 1px; -} - -select { - background-color: #fff; -} - -.v-filterselect-button { - width: 24px; - height: 24px; - background: transparent url(../common/buttons_sprites.png) no-repeat 0 0; -} - -.v-filterselect-button:hover { - background-position: 0px -24px; -} - -.v-filterselect-suggestpopup { - border: 1px solid #98C0F4; -} - -.v-filterselect-suggestmenu { - min-height: 2px; -} - -.v-filterselect-prevpage, -.v-filterselect-prevpage-off, -.v-filterselect-nextpage, -.v-filterselect-nextpage-off { - background-color: #fff; -} - -.v-filterselect-prevpage span, -.v-filterselect-prevpage-off span, -.v-filterselect-nextpage span, -.v-filterselect-nextpage-off span { - display: block; - height: 8px; - width: 16px; - margin-left: auto; - margin-right: auto; - text-indent: -99999px; -} - -.v-filterselect-prevpage span, .v-filterselect-nextpage span { - background: transparent no-repeat 0 -4px; - background-image: url(/html/themes/classic/images/aui/icon_sprite.png); -} - -.v-filterselect-nextpage span { - background-position: -65px -4px; -} -.v-filterselect-suggestmenu .gwt-MenuItem span { - display: block; - width: 100%; - height: 18px; - border: 1px solid #fff; - border-style: solid none; - -} - -.v-filterselect-suggestmenu .gwt-MenuItem-selected span { - color: #000; - background: #dfe8f6; - border-color: #a3bae9; -} - -.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { - float: left; -} - -.v-select-twincol-buttons .v-button-wrap { - padding-left: 11px; - padding-right: 11px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/select/select.scss b/WebContent/VAADIN/themes/liferay/select/select.scss new file mode 100644 index 0000000000..3dbeaeab9d --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/select/select.scss @@ -0,0 +1,81 @@ +@mixin liferay-select { + +.v-app select, +.v-window select { + padding: 1px; +} + +select { + background-color: #fff; +} + +.v-filterselect-button { + width: 24px; + height: 24px; + background: transparent url(../common/buttons_sprites.png) no-repeat 0 0; +} + +.v-filterselect-button:hover { + background-position: 0px -24px; +} + +.v-filterselect-suggestpopup { + border: 1px solid #98C0F4; +} + +.v-filterselect-suggestmenu { + min-height: 2px; +} + +.v-filterselect-prevpage, +.v-filterselect-prevpage-off, +.v-filterselect-nextpage, +.v-filterselect-nextpage-off { + background-color: #fff; +} + +.v-filterselect-prevpage span, +.v-filterselect-prevpage-off span, +.v-filterselect-nextpage span, +.v-filterselect-nextpage-off span { + display: block; + height: 8px; + width: 16px; + margin-left: auto; + margin-right: auto; + text-indent: -99999px; +} + +.v-filterselect-prevpage span, .v-filterselect-nextpage span { + background: transparent no-repeat 0 -4px; + background-image: url(/html/themes/classic/images/aui/icon_sprite.png); +} + +.v-filterselect-nextpage span { + background-position: -65px -4px; +} +.v-filterselect-suggestmenu .gwt-MenuItem span { + display: block; + width: 100%; + height: 18px; + border: 1px solid #fff; + border-style: solid none; + +} + +.v-filterselect-suggestmenu .gwt-MenuItem-selected span { + color: #000; + background: #dfe8f6; + border-color: #a3bae9; +} + +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + float: left; +} + +.v-select-twincol-buttons .v-button-wrap { + padding-left: 11px; + padding-right: 11px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/slider/slider.css b/WebContent/VAADIN/themes/liferay/slider/slider.css deleted file mode 100644 index 4f11091f16..0000000000 --- a/WebContent/VAADIN/themes/liferay/slider/slider.css +++ /dev/null @@ -1,29 +0,0 @@ -.v-slider { - border: 1px solid #9e9e9e; - border-right: 1px solid #c8c9ca; - border-bottom: 1px solid #c8c9ca; - margin: 4px 0; -} - -.v-slider-base { - height: 1px; -} - -.v-slider-vertical { - margin: 0 5px; - width: 2px; -} - -.v-slider-vertical .v-slider-base { - width: 1px; -} - -.v-slider-handle { - background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat -115px -147px; - width: 10px; - height: 10px; -} - -.v-slider-feedback { - background: #33; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/slider/slider.scss b/WebContent/VAADIN/themes/liferay/slider/slider.scss new file mode 100644 index 0000000000..d30de67da0 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/slider/slider.scss @@ -0,0 +1,36 @@ +@mixin liferay-slider { + +.v-slider { + border: 1px solid #9e9e9e; + border-right: 1px solid #c8c9ca; + border-bottom: 1px solid #c8c9ca; + margin: 4px 0; +} + +.v-slider-base { + height: 1px; +} + +.v-slider-vertical { + margin: 0 5px; + width: 2px; +} + +.v-slider-vertical .v-slider-base { + width: 1px; +} + +.v-slider-handle { + background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat -115px -147px; + width: 10px; + height: 10px; +} + +/* Invalid rule (not used at least by some browsers */ +/* +.v-slider-feedback { + background: #33; +} +*/ + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.css b/WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.css deleted file mode 100644 index 5ee753389f..0000000000 --- a/WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.css +++ /dev/null @@ -1,63 +0,0 @@ -.v-splitpanel-hsplitter, -.v-splitpanel-hsplitter-locked { - font-size: 1px; - width: 3px; - background-color: #c8c9ca; -} - -.v-splitpanel-hsplitter div { - font-size: 1px; - width: 3px; - background: transparent; - background-repeat: no-repeat; - background-image: url(hsplit.png); - background-position: center; -} - -.v-splitpanel-hsplitter-locked div { - font-size: 1px; - width: 3px; -} - -.v-splitpanel-vsplitter, -.v-splitpanel-vsplitter-locked { - font-size: 1px; - height: 3px; -} - -.v-splitpanel-vsplitter div { - font-size: 1px; - height: 3px; - background: transparent; - background-color: #c8c9ca; - background-repeat: no-repeat; - background-image: url(vsplit.png); - background-position: center; -} - -.v-splitpanel-vsplitter-locked, -.v-splitpanel-vsplitter-locked div { - font-size: 1px; - height: 3px; - background-color: #c8c9ca; -} - -/* Small SplitPanel */ - -.v-splitpanel-hsplitter-small, -.v-splitpanel-hsplitter-small div, -.v-splitpanel-hsplitter-small-locked, -.v-splitpanel-hsplitter-small-locked div { - font-size: 1px; - width: 1px; - background: #c8c9ca; -} - -.v-splitpanel-vsplitter-small, -.v-splitpanel-vsplitter-small div, -.v-splitpanel-vsplitter-small-locked, -.v-splitpanel-vsplitter-small-locked div { - font-size: 1px; - height: 1px; - background: #c8c9ca; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.scss b/WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.scss new file mode 100644 index 0000000000..b8058f8cb1 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/splitpanel/splitpanel.scss @@ -0,0 +1,67 @@ +@mixin liferay-splitpanel { + +.v-splitpanel-hsplitter, +.v-splitpanel-hsplitter-locked { + font-size: 1px; + width: 3px; + background-color: #c8c9ca; +} + +.v-splitpanel-hsplitter div { + font-size: 1px; + width: 3px; + background: transparent; + background-repeat: no-repeat; + background-image: url(hsplit.png); + background-position: center; +} + +.v-splitpanel-hsplitter-locked div { + font-size: 1px; + width: 3px; +} + +.v-splitpanel-vsplitter, +.v-splitpanel-vsplitter-locked { + font-size: 1px; + height: 3px; +} + +.v-splitpanel-vsplitter div { + font-size: 1px; + height: 3px; + background: transparent; + background-color: #c8c9ca; + background-repeat: no-repeat; + background-image: url(vsplit.png); + background-position: center; +} + +.v-splitpanel-vsplitter-locked, +.v-splitpanel-vsplitter-locked div { + font-size: 1px; + height: 3px; + background-color: #c8c9ca; +} + +/* Small SplitPanel */ + +.v-splitpanel-hsplitter-small, +.v-splitpanel-hsplitter-small div, +.v-splitpanel-hsplitter-small-locked, +.v-splitpanel-hsplitter-small-locked div { + font-size: 1px; + width: 1px; + background: #c8c9ca; +} + +.v-splitpanel-vsplitter-small, +.v-splitpanel-vsplitter-small div, +.v-splitpanel-vsplitter-small-locked, +.v-splitpanel-vsplitter-small-locked div { + font-size: 1px; + height: 1px; + background: #c8c9ca; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/styles.scss b/WebContent/VAADIN/themes/liferay/styles.scss new file mode 100644 index 0000000000..78fbd62c25 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/styles.scss @@ -0,0 +1,28 @@ +// this file actually attaches all liferay mixins to a parent style + +@import "../base/styles.scss"; +@import "liferay.scss"; + +// .v-theme-liferay { + @include liferay-accordion; + @include liferay-button; + + @include liferay-common; + + @include liferay-contextmenu; + @include liferay-datefield; + @include liferay-formlayout; + @include liferay-menubar; + @include liferay-notification; + @include liferay-panel; + @include liferay-popupview; + @include liferay-progressindicator; + @include liferay-select; + @include liferay-slider; + @include liferay-splitpanel; + @include liferay-table; + @include liferay-tabsheet; + @include liferay-textfield; + @include liferay-tree; + @include liferay-window; +// } diff --git a/WebContent/VAADIN/themes/liferay/table/table.css b/WebContent/VAADIN/themes/liferay/table/table.css deleted file mode 100644 index 81446d4628..0000000000 --- a/WebContent/VAADIN/themes/liferay/table/table.css +++ /dev/null @@ -1,135 +0,0 @@ -.v-table-body { - border: 1px solid #999; -} - -.v-table-body:focus, -.v-table-body-wrapper:focus { - outline: none; -} - -.v-table-body.focused { - border-color: #555; -} - -.v-table-focus .v-table-cell-content { - border-top: 1px dotted #555; - border-bottom: 1px dotted #555; -} - -.v-table-header-wrap, -.v-table-footer-wrap { - border-color: #999; - background: #c0c2c5 url(/html/themes/classic/images/application/panel_header_bg.png) repeat-x 0 0; - height: 26px; -} - -.v-table-footer-wrap { - border: 1px solid #999; - border-top: none; -} - -.v-table-footer td { - height: 100%; - border-right: 1px solid #999; - padding-bottom: 5px; - padding-top: 5px; -} - -.v-table-footer-container { - height: 16px; - float: right; - padding-right: 7px; - overflow: hidden; - white-space: nowrap; -} - -.v-table-caption-container { - color: #336699; - font-weight: bold; - font-size: 11px; - padding-left: 0px; - padding-top: 6px; -} - -.v-table-caption-container-align-right { - margin-left: 0; - margin-right: 6px; - padding-left: 0; -} - -.v-table-caption-container .v-icon { - height: 16px; - margin: -4px 3px 0 0; -} - -.v-ie .v-table-caption-container .v-icon { - margin-top: -2px; -} - -.v-table-header-cell-asc .v-table-sort-indicator { - background: transparent url(/html/themes/control_panel/images/arrows/05_up.png) no-repeat right 8px; - height: 26px; -} - -.v-table-header-cell-desc .v-table-sort-indicator { - background: transparent url(/html/themes/control_panel/images/arrows/05_down.png) no-repeat right 10px; - height: 26px; -} - -.v-table-resizer { - height: 26px; - background: #999; -} - -.v-table-focus-slot-left { - margin-bottom: -26px; - background: transparent; -} - -.v-table-column-selector { - background: transparent url(columnselect.png); - width: 16px; - height: 26px; - margin: -26px 0 0; -} - -.v-table-row-odd { - background: #dde1e6; -} - -.v-table-row { - background: #eef0f2; -} - -.v-table-generated-row { - color: #336699; - font-weight: bold; - font-size: 11px; - padding-left: 0px; - padding-top: 6px; - background: #c0c2c5; -} - -.v-table .v-selected { - background-color: #5B677D; - color: #FFF; - text-shadow: -1px -1px #2C2F34; -} - -.v-table-cell-wrapper { - padding-top: 3px; - padding-bottom: 3px; -} - -.v-table-cell-content { - border-right: 1px solid #999; - padding: 0 6px; -} - -.v-table-cell-content:last-child { - border-right-color: transparent; -} - -.v-off { - color: #999; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/table/table.scss b/WebContent/VAADIN/themes/liferay/table/table.scss new file mode 100644 index 0000000000..0e1b96f5b0 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/table/table.scss @@ -0,0 +1,139 @@ +@mixin liferay-table { + +.v-table-body { + border: 1px solid #999; +} + +.v-table-body:focus, +.v-table-body-wrapper:focus { + outline: none; +} + +.v-table-body.focused { + border-color: #555; +} + +.v-table-focus .v-table-cell-content { + border-top: 1px dotted #555; + border-bottom: 1px dotted #555; +} + +.v-table-header-wrap, +.v-table-footer-wrap { + border-color: #999; + background: #c0c2c5 url(/html/themes/classic/images/application/panel_header_bg.png) repeat-x 0 0; + height: 26px; +} + +.v-table-footer-wrap { + border: 1px solid #999; + border-top: none; +} + +.v-table-footer td { + height: 100%; + border-right: 1px solid #999; + padding-bottom: 5px; + padding-top: 5px; +} + +.v-table-footer-container { + height: 16px; + float: right; + padding-right: 7px; + overflow: hidden; + white-space: nowrap; +} + +.v-table-caption-container { + color: #336699; + font-weight: bold; + font-size: 11px; + padding-left: 0px; + padding-top: 6px; +} + +.v-table-caption-container-align-right { + margin-left: 0; + margin-right: 6px; + padding-left: 0; +} + +.v-table-caption-container .v-icon { + height: 16px; + margin: -4px 3px 0 0; +} + +.v-ie .v-table-caption-container .v-icon { + margin-top: -2px; +} + +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent url(/html/themes/control_panel/images/arrows/05_up.png) no-repeat right 8px; + height: 26px; +} + +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent url(/html/themes/control_panel/images/arrows/05_down.png) no-repeat right 10px; + height: 26px; +} + +.v-table-resizer { + height: 26px; + background: #999; +} + +.v-table-focus-slot-left { + margin-bottom: -26px; + background: transparent; +} + +.v-table-column-selector { + background: transparent url(columnselect.png); + width: 16px; + height: 26px; + margin: -26px 0 0; +} + +.v-table-row-odd { + background: #dde1e6; +} + +.v-table-row { + background: #eef0f2; +} + +.v-table-generated-row { + color: #336699; + font-weight: bold; + font-size: 11px; + padding-left: 0px; + padding-top: 6px; + background: #c0c2c5; +} + +.v-table .v-selected { + background-color: #5B677D; + color: #FFF; + text-shadow: -1px -1px #2C2F34; +} + +.v-table-cell-wrapper { + padding-top: 3px; + padding-bottom: 3px; +} + +.v-table-cell-content { + border-right: 1px solid #999; + padding: 0 6px; +} + +.v-table-cell-content:last-child { + border-right-color: transparent; +} + +.v-off { + color: #999; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.css b/WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.css deleted file mode 100644 index 7f23edb809..0000000000 --- a/WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.css +++ /dev/null @@ -1,142 +0,0 @@ -.v-tabsheet-content { - border: none; -} - -.v-tabsheet-deco { - background: transparent; -} - -.v-tabsheet-tabitem { - border: none; -} - -.v-tabsheet-tabitem .v-caption { - height: 14px; - padding: 3px 10px; -} - -.v-tabsheet-tabitem .v-captiontext { - color: #336699; - font-size: 11px; - font-weight: bold; - text-decoration: underline; -} - -.v-tabsheet-tabitem-selected .v-caption { - background: none repeat scroll 0 0 #333; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.v-tabsheet-tabitem-selected .v-captiontext { - color: #fff; - text-decoration: none; - text-shadow: -1px -1px #000; -} - -.v-tabsheet-tabitem-selected { - position: relative; -} - -.v-tabsheet-tabitem-selected:after { - border: 10px solid; - border-bottom-width: 0; - border-color: #333 transparent transparent; - bottom: -6px; - content: '-'; - display: block; - height: 0; - left: 50%; - margin-left: -10px; - position: absolute; - text-indent: -9999px; - width: 0; -} - -.v-tabsheet-tabs { - height: 35px; -} - -.v-tabsheet-tabcontainer, -.v-tabsheet-tabs { - overflow: visible !important; -} - -.v-tabsheet-tabitemcell-first .v-tabsheet-tabitem { - border-left: 1px solid #c8c9ca; - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.v-tabsheet-tabitemcell, .v-tabsheet-spacertd { - vertical-align: top; -} - -.v-tabsheet-spacertd div { - height: 28px; - border: 1px solid #c8c9ca; - border-left: none; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; - padding: 0; -} - -.v-tabsheet-tabitem { - height: 20px; - border-top: 1px solid #c8c9ca; - border-bottom: 1px solid #c8c9ca; - padding: 4px; -} - -.v-tabsheet-scroller { - float: right; - width: 33px; - height: 28px; - margin-top: -35px; - background-color: #eef0f2; - border: 1px solid #c8c9ca; - border-left: none; - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; - position: relative; -} - -.v-tabsheet-scroller button { - padding: 0; - margin-top: 6px; - width: 16px; - height: 16px; - border: none; - background: transparent; -} - -.v-tabsheet-scroller .v-tabsheet-scrollerPrev, -.v-tabsheet-scroller .v-tabsheet-scrollerPrev-disabled { - background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat -80px -192px; -} - -.v-tabsheet-scroller .v-tabsheet-scrollerNext, -.v-tabsheet-scroller .v-tabsheet-scrollerNext-disabled { - background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat -48px -192px; -} - -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled { - opacity: 0.5; - filter: alpha(opacity=50); -} - -.v-tabsheet-caption-close { - background: transparent url(close.png) no-repeat right top; - cursor: default; - float: right; - margin: 3px -1px 0; - overflow: hidden; - text-indent: -999px; - width: 13px; - height: 9px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.scss b/WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.scss new file mode 100644 index 0000000000..73e2c71dcb --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/tabsheet/tabsheet.scss @@ -0,0 +1,146 @@ +@mixin liferay-tabsheet { + +.v-tabsheet-content { + border: none; +} + +.v-tabsheet-deco { + background: transparent; +} + +.v-tabsheet-tabitem { + border: none; +} + +.v-tabsheet-tabitem .v-caption { + height: 14px; + padding: 3px 10px; +} + +.v-tabsheet-tabitem .v-captiontext { + color: #336699; + font-size: 11px; + font-weight: bold; + text-decoration: underline; +} + +.v-tabsheet-tabitem-selected .v-caption { + background: none repeat scroll 0 0 #333; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.v-tabsheet-tabitem-selected .v-captiontext { + color: #fff; + text-decoration: none; + text-shadow: -1px -1px #000; +} + +.v-tabsheet-tabitem-selected { + position: relative; +} + +.v-tabsheet-tabitem-selected:after { + border: 10px solid; + border-bottom-width: 0; + border-color: #333 transparent transparent; + bottom: -6px; + content: '-'; + display: block; + height: 0; + left: 50%; + margin-left: -10px; + position: absolute; + text-indent: -9999px; + width: 0; +} + +.v-tabsheet-tabs { + height: 35px; +} + +.v-tabsheet-tabcontainer, +.v-tabsheet-tabs { + overflow: visible !important; +} + +.v-tabsheet-tabitemcell-first .v-tabsheet-tabitem { + border-left: 1px solid #c8c9ca; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.v-tabsheet-tabitemcell, .v-tabsheet-spacertd { + vertical-align: top; +} + +.v-tabsheet-spacertd div { + height: 28px; + border: 1px solid #c8c9ca; + border-left: none; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; + padding: 0; +} + +.v-tabsheet-tabitem { + height: 20px; + border-top: 1px solid #c8c9ca; + border-bottom: 1px solid #c8c9ca; + padding: 4px; +} + +.v-tabsheet-scroller { + float: right; + width: 33px; + height: 28px; + margin-top: -35px; + background-color: #eef0f2; + border: 1px solid #c8c9ca; + border-left: none; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; + position: relative; +} + +.v-tabsheet-scroller button { + padding: 0; + margin-top: 6px; + width: 16px; + height: 16px; + border: none; + background: transparent; +} + +.v-tabsheet-scroller .v-tabsheet-scrollerPrev, +.v-tabsheet-scroller .v-tabsheet-scrollerPrev-disabled { + background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat -80px -192px; +} + +.v-tabsheet-scroller .v-tabsheet-scrollerNext, +.v-tabsheet-scroller .v-tabsheet-scrollerNext-disabled { + background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat -48px -192px; +} + +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} + +.v-tabsheet-caption-close { + background: transparent url(close.png) no-repeat right top; + cursor: default; + float: right; + margin: 3px -1px 0; + overflow: hidden; + text-indent: -999px; + width: 13px; + height: 9px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/textfield/textfield.css b/WebContent/VAADIN/themes/liferay/textfield/textfield.css deleted file mode 100644 index b66a805eb0..0000000000 --- a/WebContent/VAADIN/themes/liferay/textfield/textfield.css +++ /dev/null @@ -1,15 +0,0 @@ -.v-app input[type="text"], -.v-app input[type="password"], -.v-app input[type="reset"], -.v-app textarea , -.v-window input[type="text"], -.v-window input[type="password"], -.v-window input[type="reset"], -.v-window textarea { - padding: 5px 1px; -} - -input.v-textfield-prompt, -textarea.v-textarea-prompt { - font-style: normal; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/textfield/textfield.scss b/WebContent/VAADIN/themes/liferay/textfield/textfield.scss new file mode 100644 index 0000000000..9e3d2ece03 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/textfield/textfield.scss @@ -0,0 +1,19 @@ +@mixin liferay-textfield { + +.v-app input[type="text"], +.v-app input[type="password"], +.v-app input[type="reset"], +.v-app textarea , +.v-window input[type="text"], +.v-window input[type="password"], +.v-window input[type="reset"], +.v-window textarea { + padding: 5px 1px; +} + +input.v-textfield-prompt, +textarea.v-textarea-prompt { + font-style: normal; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/tree/tree.css b/WebContent/VAADIN/themes/liferay/tree/tree.css deleted file mode 100644 index 33da398736..0000000000 --- a/WebContent/VAADIN/themes/liferay/tree/tree.css +++ /dev/null @@ -1,58 +0,0 @@ -.v-tree-node { - background: transparent url(arrows_sprites.png) no-repeat -42px 1px; -} - -.v-tree-node span { - color: #336699; - padding: 1px 2px; - display: inline-block; -} - -.v-tree-node:hover { - background-position: -14px -30px; -} - -.v-tree-node-expanded { - background-position: -28px -14px; -} - -.v-tree-node-expanded:hover { - background-position: 0 -47px; -} - -.v-tree .v-tree-node-drag-top { - background-position: -42px 0px; -} - -.v-tree .v-tree-node-drag-top.v-tree-node-expanded { - background-position: -28px -15px; -} - -.v-tree-node-selected { - background: #333; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.v-tree-node-selected span { - display: inline-block; - background: transparent; - color: #fff; - text-shadow: -1px -1px #000; - padding: 1px 2px; -} - -.v-tree-node-caption { - margin-left: 14px; - padding: 1px; -} - -.v-tree-node-focused { - border: 1px dotted #555; - padding: 0; -} - -.v-tree-node-children { - padding-left: 14px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/tree/tree.scss b/WebContent/VAADIN/themes/liferay/tree/tree.scss new file mode 100644 index 0000000000..99ce8e709f --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/tree/tree.scss @@ -0,0 +1,62 @@ +@mixin liferay-tree { + +.v-tree-node { + background: transparent url(arrows_sprites.png) no-repeat -42px 1px; +} + +.v-tree-node span { + color: #336699; + padding: 1px 2px; + display: inline-block; +} + +.v-tree-node:hover { + background-position: -14px -30px; +} + +.v-tree-node-expanded { + background-position: -28px -14px; +} + +.v-tree-node-expanded:hover { + background-position: 0 -47px; +} + +.v-tree .v-tree-node-drag-top { + background-position: -42px 0px; +} + +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: -28px -15px; +} + +.v-tree-node-selected { + background: #333; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.v-tree-node-selected span { + display: inline-block; + background: transparent; + color: #fff; + text-shadow: -1px -1px #000; + padding: 1px 2px; +} + +.v-tree-node-caption { + margin-left: 14px; + padding: 1px; +} + +.v-tree-node-focused { + border: 1px dotted #555; + padding: 0; +} + +.v-tree-node-children { + padding-left: 14px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/window/window.css b/WebContent/VAADIN/themes/liferay/window/window.css deleted file mode 100644 index f034d7503f..0000000000 --- a/WebContent/VAADIN/themes/liferay/window/window.css +++ /dev/null @@ -1,65 +0,0 @@ -.v-window { - background: transparent; -} - -.v-window-wrap { - border: 1px solid #c8c9ca; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - background: #fff url(top-left.png) no-repeat; -} - -.v-window-outerheader { - height: 38px; - margin-left: 9px; - padding: 10px 40px 12px 2px; - background: transparent url(top-right.png) no-repeat right top; - - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.v-window-header { - color: #000; - font-size: 12px; - text-shadow: 1px 1px #fff; -} - -.v-window-contents { - padding: 0 5px 0 5px; -} - -.v-window-footer { - height: 5px; - overflow: visible; -} - -.v-window div.v-window-footer-noresize { - height: 5px; -} - -.v-window-closebox { - background: url(closebutton_sprites.png) no-repeat scroll 0 0 transparent; - position: absolute; - width: 24px; - height: 24px; - right: 9px; - top: 8px; -} - -.v-window-closebox:hover { - background-position: 0 -24px; -} - -.v-window-closebox:active { - background-position: 0 -48px; -} - -.v-window-resizebox { - background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat scroll -69px -229px; - width: 10px; - height: 10px; - bottom: 0; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/liferay/window/window.scss b/WebContent/VAADIN/themes/liferay/window/window.scss new file mode 100644 index 0000000000..54bfb37938 --- /dev/null +++ b/WebContent/VAADIN/themes/liferay/window/window.scss @@ -0,0 +1,69 @@ +@mixin liferay-window { + +.v-window { + background: transparent; +} + +.v-window-wrap { + border: 1px solid #c8c9ca; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + background: #fff url(top-left.png) no-repeat; +} + +.v-window-outerheader { + height: 38px; + margin-left: 9px; + padding: 10px 40px 12px 2px; + background: transparent url(top-right.png) no-repeat right top; + + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.v-window-header { + color: #000; + font-size: 12px; + text-shadow: 1px 1px #fff; +} + +.v-window-contents { + padding: 0 5px 0 5px; +} + +.v-window-footer { + height: 5px; + overflow: visible; +} + +.v-window div.v-window-footer-noresize { + height: 5px; +} + +.v-window-closebox { + background: url(closebutton_sprites.png) no-repeat scroll 0 0 transparent; + position: absolute; + width: 24px; + height: 24px; + right: 9px; + top: 8px; +} + +.v-window-closebox:hover { + background-position: 0 -24px; +} + +.v-window-closebox:active { + background-position: 0 -48px; +} + +.v-window-resizebox { + background: transparent url(/html/themes/classic/images/aui/icon_sprite.png) no-repeat scroll -69px -229px; + width: 10px; + height: 10px; + bottom: 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.css b/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.css deleted file mode 100644 index 87c598956f..0000000000 --- a/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.css +++ /dev/null @@ -1,14 +0,0 @@ -/*------------ - * General vertical and horizontal sprites - * -----------*/ -/** sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ -/** sprite: horizontals; sprite-image: url(../common/img/horizontal-sprites.png); sprite-layout: horizontal */ - -/** sprite: black-verticals; sprite-image: url(../common/img/black-vertical-sprites.png); sprite-layout: vertical; sprite-matte-color: #1e2022 */ -/** sprite: black-horizontals; sprite-image: url(../common/img/black-horizontal-sprites.png); sprite-layout: horizontal; sprite-matte-color: #1e2022 */ - -/*------------ - * Buttons - * -----------*/ -/** sprite: buttons; sprite-image: url(../button/img/button-sprites.png); sprite-layout: vertical */ -/** sprite: black-buttons; sprite-image: url(../button/img/black-button-sprites.png); sprite-layout: vertical */ \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss b/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss new file mode 100644 index 0000000000..87c598956f --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss @@ -0,0 +1,14 @@ +/*------------ + * General vertical and horizontal sprites + * -----------*/ +/** sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +/** sprite: horizontals; sprite-image: url(../common/img/horizontal-sprites.png); sprite-layout: horizontal */ + +/** sprite: black-verticals; sprite-image: url(../common/img/black-vertical-sprites.png); sprite-layout: vertical; sprite-matte-color: #1e2022 */ +/** sprite: black-horizontals; sprite-image: url(../common/img/black-horizontal-sprites.png); sprite-layout: horizontal; sprite-matte-color: #1e2022 */ + +/*------------ + * Buttons + * -----------*/ +/** sprite: buttons; sprite-image: url(../button/img/button-sprites.png); sprite-layout: vertical */ +/** sprite: black-buttons; sprite-image: url(../button/img/black-button-sprites.png); sprite-layout: vertical */ \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/accordion/accordion.css b/WebContent/VAADIN/themes/reindeer/accordion/accordion.css deleted file mode 100644 index 5e51a115d9..0000000000 --- a/WebContent/VAADIN/themes/reindeer/accordion/accordion.css +++ /dev/null @@ -1,45 +0,0 @@ -.v-accordion { - border: 1px solid #bebebe; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - overflow: hidden; -} -.v-accordion-item { - background-color: #fff; -} -.v-accordion-item-caption { - height: 19px; - background: #e4e4e4 repeat-x; - background-image: url(../tabsheet/img/tabbar-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - font-size: 11px; - line-height: normal; - border-top: 1px solid #bebebe; - text-shadow: #fff 0 1px 0; -} -.v-accordion-item-first .v-accordion-item-caption { - border-top: none; -} -.v-accordion-item-caption .v-caption { - padding: 3px 0 5px 10px; -} -.v-ie .v-accordion-item-caption .v-caption { - padding: 2px 0 6px 10px; -} -.v-accordion-item-open .v-accordion-item-caption { - background-image: url(../tabsheet/img/tabbar-bg-sel.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - border-bottom: 1px solid #bbb; -} -.v-accordion-item-caption .v-icon { - margin-top: -1px; -} -.v-ie .v-accordion-item-caption .v-icon { - vertical-align: top; -} -/* Borderless style */ -.v-accordion-borderless { - border: none; - border-radius: 0; - -webkit-border-radius: 0; - -moz-border-radius: 0; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/accordion/accordion.scss b/WebContent/VAADIN/themes/reindeer/accordion/accordion.scss new file mode 100644 index 0000000000..8ba0b2151f --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/accordion/accordion.scss @@ -0,0 +1,49 @@ +@mixin reindeer-accordion { + +.v-accordion { + border: 1px solid #bebebe; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + overflow: hidden; +} +.v-accordion-item { + background-color: #fff; +} +.v-accordion-item-caption { + height: 19px; + background: #e4e4e4 repeat-x; + background-image: url(../tabsheet/img/tabbar-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + font-size: 11px; + line-height: normal; + border-top: 1px solid #bebebe; + text-shadow: #fff 0 1px 0; +} +.v-accordion-item-first .v-accordion-item-caption { + border-top: none; +} +.v-accordion-item-caption .v-caption { + padding: 3px 0 5px 10px; +} +.v-ie .v-accordion-item-caption .v-caption { + padding: 2px 0 6px 10px; +} +.v-accordion-item-open .v-accordion-item-caption { + background-image: url(../tabsheet/img/tabbar-bg-sel.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + border-bottom: 1px solid #bbb; +} +.v-accordion-item-caption .v-icon { + margin-top: -1px; +} +.v-ie .v-accordion-item-caption .v-icon { + vertical-align: top; +} +/* Borderless style */ +.v-accordion-borderless { + border: none; + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-ie.css b/WebContent/VAADIN/themes/reindeer/button/button-ie.css deleted file mode 100644 index 47d9496e81..0000000000 --- a/WebContent/VAADIN/themes/reindeer/button/button-ie.css +++ /dev/null @@ -1,4 +0,0 @@ -.v-ie8 .v-nativebutton-link { - padding: 0; - text-align: left; -} diff --git a/WebContent/VAADIN/themes/reindeer/button/button-ie.scss b/WebContent/VAADIN/themes/reindeer/button/button-ie.scss new file mode 100644 index 0000000000..5bf38c4442 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/button/button-ie.scss @@ -0,0 +1,8 @@ +@mixin reindeer-button-ie { + +.v-ie8 .v-nativebutton-link { + padding: 0; + text-align: left; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-link-style.css b/WebContent/VAADIN/themes/reindeer/button/button-link-style.css deleted file mode 100644 index f4ba80b3cd..0000000000 --- a/WebContent/VAADIN/themes/reindeer/button/button-link-style.css +++ /dev/null @@ -1,35 +0,0 @@ -.v-button.v-button-link, -.v-button.v-button-link:focus, -.v-button.v-button-link:active, -.v-button-link.v-pressed, -.v-disabled.v-button.v-button-link, -.v-button.v-button-link .v-button-wrap, -.v-button.v-button-link:focus .v-button-wrap, -.v-button.v-button-link:active .v-button-wrap, -.v-button-link.v-pressed .v-button-wrap, -.v-disabled.v-button.v-button-link .v-button-wrap { - background: transparent; - height: auto; - padding: 0; - cursor: pointer; - line-height: inherit; - } - -.v-button.v-button-link.v-disabled, -.v-button.v-button-link.v-disabled .v-button-wrap { - cursor: default; - } - -.v-button-link .v-button-caption, -.v-nativebutton-link .v-nativebutton-caption { - line-height: inherit; - font-weight: normal; - color: #1b699f; - font-size: 12px; - text-shadow: none; - } - -.v-button-link:focus .v-button-caption, -.v-nativebutton-link:focus .v-nativebutton-caption { - outline: 1px dotted #1b699f; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-link-style.scss b/WebContent/VAADIN/themes/reindeer/button/button-link-style.scss new file mode 100644 index 0000000000..aebda24cd4 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/button/button-link-style.scss @@ -0,0 +1,39 @@ +@mixin reindeer-button-link-style { + +.v-button.v-button-link, +.v-button.v-button-link:focus, +.v-button.v-button-link:active, +.v-button-link.v-pressed, +.v-disabled.v-button.v-button-link, +.v-button.v-button-link .v-button-wrap, +.v-button.v-button-link:focus .v-button-wrap, +.v-button.v-button-link:active .v-button-wrap, +.v-button-link.v-pressed .v-button-wrap, +.v-disabled.v-button.v-button-link .v-button-wrap { + background: transparent; + height: auto; + padding: 0; + cursor: pointer; + line-height: inherit; + } + +.v-button.v-button-link.v-disabled, +.v-button.v-button-link.v-disabled .v-button-wrap { + cursor: default; + } + +.v-button-link .v-button-caption, +.v-nativebutton-link .v-nativebutton-caption { + line-height: inherit; + font-weight: normal; + color: #1b699f; + font-size: 12px; + text-shadow: none; + } + +.v-button-link:focus .v-button-caption, +.v-nativebutton-link:focus .v-nativebutton-caption { + outline: 1px dotted #1b699f; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-primary-style.css b/WebContent/VAADIN/themes/reindeer/button/button-primary-style.css deleted file mode 100644 index fdfe90ce3a..0000000000 --- a/WebContent/VAADIN/themes/reindeer/button/button-primary-style.css +++ /dev/null @@ -1,62 +0,0 @@ -.v-button-primary:focus { - background-image: url(img/primary-left-focus.png); /** sprite-ref: buttons */ - } - -.v-button-primary:focus .v-button-wrap { - background-image: url(img/primary-right-focus.png); /** sprite-ref: buttons; sprite-alignment: right */ - } - -.v-button-primary:active, -.v-button-primary.v-pressed { - background-image: url(img/primary-left-pressed.png); /** sprite-ref: buttons */ - } - -.v-button-primary:active .v-button-wrap, -.v-button-primary.v-pressed .v-button-wrap { - background-image: url(img/primary-right-pressed.png); /** sprite-ref: buttons; sprite-alignment: right */ - } - -.v-button-primary, -.v-disabled.v-button-primary { - background-image: url(img/primary-left.png); /** sprite-ref: buttons */ - } - -.v-button-primary .v-button-wrap, -.v-disabled.v-button-primary .v-button-wrap { - background-image: url(img/primary-right.png); /** sprite-ref: buttons; sprite-alignment: right */ - } - - - - -/* Black style */ - - -.black .v-button-primary:focus { - background-image: url(img/black/primary-left-focus.png); /** sprite-ref: black-buttons */ - } - -.black .v-button-primary:focus .v-button-wrap { - background-image: url(img/black/primary-right-focus.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - color: #eaf4fb; - } - -.black .v-button-primary:active, -.black .v-button-primary.v-pressed { - background-image: url(img/black/primary-left-pressed.png); /** sprite-ref: black-buttons */ - } - -.black .v-button-primary:active .v-button-wrap, -.black .v-button-primary.v-pressed .v-button-wrap { - background-image: url(img/black/primary-right-pressed.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } - -.black .v-button-primary, -.black .v-disabled.v-button-primary { - background-image: url(img/black/primary-left.png); /** sprite-ref: black-buttons */ - } - -.black .v-button-primary .v-button-wrap, -.black .v-disabled.v-button-primary .v-button-wrap { - background-image: url(img/black/primary-right.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } diff --git a/WebContent/VAADIN/themes/reindeer/button/button-primary-style.scss b/WebContent/VAADIN/themes/reindeer/button/button-primary-style.scss new file mode 100644 index 0000000000..ffb4d250d3 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/button/button-primary-style.scss @@ -0,0 +1,66 @@ +@mixin reindeer-button-primary-style { + +.v-button-primary:focus { + background-image: url(img/primary-left-focus.png); /** sprite-ref: buttons */ + } + +.v-button-primary:focus .v-button-wrap { + background-image: url(img/primary-right-focus.png); /** sprite-ref: buttons; sprite-alignment: right */ + } + +.v-button-primary:active, +.v-button-primary.v-pressed { + background-image: url(img/primary-left-pressed.png); /** sprite-ref: buttons */ + } + +.v-button-primary:active .v-button-wrap, +.v-button-primary.v-pressed .v-button-wrap { + background-image: url(img/primary-right-pressed.png); /** sprite-ref: buttons; sprite-alignment: right */ + } + +.v-button-primary, +.v-disabled.v-button-primary { + background-image: url(img/primary-left.png); /** sprite-ref: buttons */ + } + +.v-button-primary .v-button-wrap, +.v-disabled.v-button-primary .v-button-wrap { + background-image: url(img/primary-right.png); /** sprite-ref: buttons; sprite-alignment: right */ + } + + + + +/* Black style */ + + +.black .v-button-primary:focus { + background-image: url(img/black/primary-left-focus.png); /** sprite-ref: black-buttons */ + } + +.black .v-button-primary:focus .v-button-wrap { + background-image: url(img/black/primary-right-focus.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + color: #eaf4fb; + } + +.black .v-button-primary:active, +.black .v-button-primary.v-pressed { + background-image: url(img/black/primary-left-pressed.png); /** sprite-ref: black-buttons */ + } + +.black .v-button-primary:active .v-button-wrap, +.black .v-button-primary.v-pressed .v-button-wrap { + background-image: url(img/black/primary-right-pressed.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +.black .v-button-primary, +.black .v-disabled.v-button-primary { + background-image: url(img/black/primary-left.png); /** sprite-ref: black-buttons */ + } + +.black .v-button-primary .v-button-wrap, +.black .v-disabled.v-button-primary .v-button-wrap { + background-image: url(img/black/primary-right.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-small-style.css b/WebContent/VAADIN/themes/reindeer/button/button-small-style.css deleted file mode 100644 index fa6b177624..0000000000 --- a/WebContent/VAADIN/themes/reindeer/button/button-small-style.css +++ /dev/null @@ -1,67 +0,0 @@ -.v-button-small:focus { - background-image: url(img/small-left-focus.png); /** sprite-ref: buttons */ - } - -.v-button-small:focus .v-button-wrap { - background-image: url(img/small-right-focus.png); /** sprite-ref: buttons; sprite-alignment: right */ - } - -.v-button-small:active, -.v-button-small.v-pressed { - background-image: url(img/small-left-pressed.png); /** sprite-ref: buttons */ - } - -.v-button-small:active .v-button-wrap, -.v-button-small.v-pressed .v-button-wrap { - background-image: url(img/small-right-pressed.png); /** sprite-ref: buttons; sprite-alignment: right */ - } - -.v-button-small, -.v-disabled.v-button-small { - background-image: url(img/small-left.png); /** sprite-ref: buttons */ - height: 20px; - } - -.v-button-small .v-button-wrap, -.v-disabled.v-button-small .v-button-wrap { - background-image: url(img/small-right.png); /** sprite-ref: buttons; sprite-alignment: right */ - height: 19px; - padding: 1px 14px 0 8px; - } - -.v-button-small .v-button-caption { - font-weight: normal; - } - - - - -/* Black style */ - -.black .v-button-small:focus { - background-image: url(img/black/small-left-focus.png); /** sprite-ref: black-buttons */ - } - -.black .v-button-small:focus .v-button-wrap { - background-image: url(img/black/small-right-focus.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } - -.black .v-button-small:active, -.black .v-button-small.v-pressed { - background-image: url(img/black/small-left-pressed.png); /** sprite-ref: black-buttons */ - } - -.black .v-button-small:active .v-button-wrap, -.black .v-button-small.v-pressed .v-button-wrap { - background-image: url(img/black/small-right-pressed.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } - -.black .v-button-small, -.black .v-disabled.v-button-small { - background-image: url(img/black/small-left.png); /** sprite-ref: black-buttons */ - } - -.black .v-button-small .v-button-wrap, -.black .v-disabled.v-button-small .v-button-wrap { - background-image: url(img/black/small-right.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-small-style.scss b/WebContent/VAADIN/themes/reindeer/button/button-small-style.scss new file mode 100644 index 0000000000..0ec33e330c --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/button/button-small-style.scss @@ -0,0 +1,71 @@ +@mixin reindeer-button-small-style { + +.v-button-small:focus { + background-image: url(img/small-left-focus.png); /** sprite-ref: buttons */ + } + +.v-button-small:focus .v-button-wrap { + background-image: url(img/small-right-focus.png); /** sprite-ref: buttons; sprite-alignment: right */ + } + +.v-button-small:active, +.v-button-small.v-pressed { + background-image: url(img/small-left-pressed.png); /** sprite-ref: buttons */ + } + +.v-button-small:active .v-button-wrap, +.v-button-small.v-pressed .v-button-wrap { + background-image: url(img/small-right-pressed.png); /** sprite-ref: buttons; sprite-alignment: right */ + } + +.v-button-small, +.v-disabled.v-button-small { + background-image: url(img/small-left.png); /** sprite-ref: buttons */ + height: 20px; + } + +.v-button-small .v-button-wrap, +.v-disabled.v-button-small .v-button-wrap { + background-image: url(img/small-right.png); /** sprite-ref: buttons; sprite-alignment: right */ + height: 19px; + padding: 1px 14px 0 8px; + } + +.v-button-small .v-button-caption { + font-weight: normal; + } + + + + +/* Black style */ + +.black .v-button-small:focus { + background-image: url(img/black/small-left-focus.png); /** sprite-ref: black-buttons */ + } + +.black .v-button-small:focus .v-button-wrap { + background-image: url(img/black/small-right-focus.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +.black .v-button-small:active, +.black .v-button-small.v-pressed { + background-image: url(img/black/small-left-pressed.png); /** sprite-ref: black-buttons */ + } + +.black .v-button-small:active .v-button-wrap, +.black .v-button-small.v-pressed .v-button-wrap { + background-image: url(img/black/small-right-pressed.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +.black .v-button-small, +.black .v-disabled.v-button-small { + background-image: url(img/black/small-left.png); /** sprite-ref: black-buttons */ + } + +.black .v-button-small .v-button-wrap, +.black .v-disabled.v-button-small .v-button-wrap { + background-image: url(img/black/small-right.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-standard.css b/WebContent/VAADIN/themes/reindeer/button/button-standard.css deleted file mode 100644 index becd20457d..0000000000 --- a/WebContent/VAADIN/themes/reindeer/button/button-standard.css +++ /dev/null @@ -1,90 +0,0 @@ -.v-button:focus { - background-image: url(img/left-focus.png); /** sprite-ref: buttons */ - outline: none; - } - -.v-button:focus .v-button-wrap { - background-image: url(img/right-focus.png); /** sprite-ref: buttons; sprite-alignment: right */ - outline: none; - } - -.v-button:active, -.v-button.v-pressed { - background-image: url(img/left-pressed.png); /** sprite-ref: buttons */ - outline: none; - } - -.v-button:active .v-button-wrap, -.v-button.v-pressed .v-button-wrap { - background-image: url(img/right-pressed.png); /** sprite-ref: buttons; sprite-alignment: right */ - outline: none; - } - -.v-button, -.v-disabled.v-button { - height: 26px; - padding: 0 0 0 6px; - background-color: transparent; - background-repeat: no-repeat; - background-image: url(img/left.png); /** sprite-ref: buttons */ - border: none; - cursor: default; - } - -.v-button-wrap, -.v-disabled.v-button .v-button-wrap { - display: block; - height: 22px; - padding: 4px 15px 0 9px; - background-color: transparent; - background-repeat: no-repeat; - background-position: right top; - background-image: url(img/right.png); /** sprite-ref: buttons; sprite-alignment: right */ - } - -.v-button-caption { - color: #222; - text-shadow: #fff 0 1px 0; - font-weight: bold; - font-size: 11px; - line-height: 16px; - } - - - - -/************************** - * Black style - **************************/ -.black .v-button:focus { - background-image: url(img/black/left-focus.png); /** sprite-ref: black-buttons */ - } - -.black .v-button:focus .v-button-wrap { - background-image: url(img/black/right-focus.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } - -.black .v-button:active, -.black .v-button.v-pressed { - background-image: url(img/black/left-pressed.png); /** sprite-ref: black-buttons */ - } - -.black .v-button:active .v-button-wrap, -.black .v-button.v-pressed .v-button-wrap { - background-image: url(img/black/right-pressed.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } - -.black .v-button, -.black .v-disabled.v-button { - background-image: url(img/black/left.png); /** sprite-ref: black-buttons */ - } - -.black .v-button-wrap, -.black .v-disabled.v-button .v-button-wrap { - background-image: url(img/black/right.png); /** sprite-ref: black-buttons; sprite-alignment: right */ - } - -.black .v-button-caption { - color: #c9ccce; - text-shadow: #121314 0 -1px 0; - } \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button-standard.scss b/WebContent/VAADIN/themes/reindeer/button/button-standard.scss new file mode 100644 index 0000000000..4df09bc1bd --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/button/button-standard.scss @@ -0,0 +1,94 @@ +@mixin reindeer-button-standard { + +.v-button:focus { + background-image: url(img/left-focus.png); /** sprite-ref: buttons */ + outline: none; + } + +.v-button:focus .v-button-wrap { + background-image: url(img/right-focus.png); /** sprite-ref: buttons; sprite-alignment: right */ + outline: none; + } + +.v-button:active, +.v-button.v-pressed { + background-image: url(img/left-pressed.png); /** sprite-ref: buttons */ + outline: none; + } + +.v-button:active .v-button-wrap, +.v-button.v-pressed .v-button-wrap { + background-image: url(img/right-pressed.png); /** sprite-ref: buttons; sprite-alignment: right */ + outline: none; + } + +.v-button, +.v-disabled.v-button { + height: 26px; + padding: 0 0 0 6px; + background-color: transparent; + background-repeat: no-repeat; + background-image: url(img/left.png); /** sprite-ref: buttons */ + border: none; + cursor: default; + } + +.v-button-wrap, +.v-disabled.v-button .v-button-wrap { + display: block; + height: 22px; + padding: 4px 15px 0 9px; + background-color: transparent; + background-repeat: no-repeat; + background-position: right top; + background-image: url(img/right.png); /** sprite-ref: buttons; sprite-alignment: right */ + } + +.v-button-caption { + color: #222; + text-shadow: #fff 0 1px 0; + font-weight: bold; + font-size: 11px; + line-height: 16px; + } + + + + +/************************** + * Black style + **************************/ +.black .v-button:focus { + background-image: url(img/black/left-focus.png); /** sprite-ref: black-buttons */ + } + +.black .v-button:focus .v-button-wrap { + background-image: url(img/black/right-focus.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +.black .v-button:active, +.black .v-button.v-pressed { + background-image: url(img/black/left-pressed.png); /** sprite-ref: black-buttons */ + } + +.black .v-button:active .v-button-wrap, +.black .v-button.v-pressed .v-button-wrap { + background-image: url(img/black/right-pressed.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +.black .v-button, +.black .v-disabled.v-button { + background-image: url(img/black/left.png); /** sprite-ref: black-buttons */ + } + +.black .v-button-wrap, +.black .v-disabled.v-button .v-button-wrap { + background-image: url(img/black/right.png); /** sprite-ref: black-buttons; sprite-alignment: right */ + } + +.black .v-button-caption { + color: #c9ccce; + text-shadow: #121314 0 -1px 0; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button.css b/WebContent/VAADIN/themes/reindeer/button/button.css deleted file mode 100644 index 1948e5aafb..0000000000 --- a/WebContent/VAADIN/themes/reindeer/button/button.css +++ /dev/null @@ -1,10 +0,0 @@ -/* Standard implementation of the button theme - * These files contain styles that apply to all browsers - */ -@import "button-standard.css"; -@import "button-primary-style.css"; -@import "button-small-style.css"; -@import "button-link-style.css"; - -/* Browser-specific corrections to the standard implementation */ -@import "button-ie.css"; \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/button/button.scss b/WebContent/VAADIN/themes/reindeer/button/button.scss new file mode 100644 index 0000000000..34a4efda04 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/button/button.scss @@ -0,0 +1,22 @@ +/* Standard implementation of the button theme + * These files contain styles that apply to all browsers + */ +@import "button-standard.scss"; +@import "button-primary-style.scss"; +@import "button-small-style.scss"; +@import "button-link-style.scss"; + +/* Browser-specific corrections to the standard implementation */ +@import "button-ie.scss"; + +@mixin reindeer-button { + + @include reindeer-button-standard; + @include reindeer-button-primary-style; + @include reindeer-button-small-style; + @include reindeer-button-link-style; + + /* Browser-specific corrections to the standard implementation */ + @include reindeer-button-ie; + +} diff --git a/WebContent/VAADIN/themes/reindeer/common/common.css b/WebContent/VAADIN/themes/reindeer/common/common.css deleted file mode 100644 index ff8ae47036..0000000000 --- a/WebContent/VAADIN/themes/reindeer/common/common.css +++ /dev/null @@ -1,122 +0,0 @@ -.v-generated-body, -.v-app { - background: #f5f5f5; -} -/* Global font styles */ -.v-app, -.v-window, -.v-popupview-popup, -.v-tooltip, -.v-app input, -.v-app select, -.v-app button, -.v-app textarea, -.v-window input, -.v-window select, -.v-window button, -.v-window textarea, -.v-popupview-popup input, -.v-popupview-popup select, -.v-popupview-popup button, -.v-popupview-popup textarea, -.v-filterselect-suggestpopup, -.v-datefield-popup, -.v-contextmenu, -.v-Notification, -.v-menubar-submenu, -.v-drag-element, -.v-table-header-drag { - font-family: Arial, Helvetica, Tahoma, Verdana, sans-serif; - font-size: 12px; - line-height: normal; - color: #222; -} -/* Fonts on black background */ -.v-app .black, -.v-window-black, -.v-window .black, -.v-popupview-popup .black { - color: #c9ccce; - text-shadow: #000 0 0 1px; -} -.v-errorindicator { - width: 13px; - height: 16px; - background: transparent url(../common/icons/error.png) no-repeat 50%; -} -.v-tooltip { - background-color: #fffcdd; - border: 1px solid #b8b295; - font-size: 11px; - color: #222; -} -.v-tooltip-text { - padding: 2px 4px; -} -.v-tooltip .v-errormessage { - padding: 3px 4px; - background: #ffecc6; - color: #b74100; - border: none; - border-top: 1px solid #fff3dc; -} -.v-tooltip .v-errormessage h2 { - font-size: 16px; - font-weight: normal; - color: #ab3101; - margin: 2px 0 8px 0; -} -.v-tooltip .v-errormessage h3 { - font-size: 13px; - font-weight: bold; - margin: 1px 0 4px 0; -} -.v-contextmenu { - background: #f8f8f9; - border: none; - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - overflow: hidden; - padding: 4px 0; -} -.v-contextmenu .gwt-MenuItem { - padding: 1px 12px 1px 8px; - height: 16px; - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - cursor: default; -} -.v-contextmenu .gwt-MenuItem .v-icon { - margin-right: 3px; -} -.v-contextmenu .gwt-MenuItem-selected { - background: transparent repeat-x; - background-image: url(img/sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - color: #fff; - text-shadow: #3b5a7a 0 1px 0; -} -.v-ie .v-contextmenu .gwt-MenuItem-selected { - background-image: url(img/sel-bg.png); - background-position: left top; -} -.v-contextmenu .gwt-MenuItem-selected div { - background: transparent; - cursor: default; -} - -/* Fixes for Liferay 6.0 */ -.portlet .v-app { - background: transparent; -} -.portlet .v-app .v-radiobutton input, -.portlet .v-window .v-radiobutton input, -.portlet .v-popupview-popup .v-radiobutton input, -.portlet .v-app .v-checkbox input, -.portlet .v-window .v-checkbox input, -.portlet .v-popupview-popup .v-checkbox input { - margin-right: 3px; - background: transparent; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/common/common.scss b/WebContent/VAADIN/themes/reindeer/common/common.scss new file mode 100644 index 0000000000..86f546a6a2 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/common/common.scss @@ -0,0 +1,126 @@ +@mixin reindeer-common { + +.v-generated-body, +.v-app { + background: #f5f5f5; +} +/* Global font styles */ +.v-app, +.v-window, +.v-popupview-popup, +.v-tooltip, +.v-app input, +.v-app select, +.v-app button, +.v-app textarea, +.v-window input, +.v-window select, +.v-window button, +.v-window textarea, +.v-popupview-popup input, +.v-popupview-popup select, +.v-popupview-popup button, +.v-popupview-popup textarea, +.v-filterselect-suggestpopup, +.v-datefield-popup, +.v-contextmenu, +.v-Notification, +.v-menubar-submenu, +.v-drag-element, +.v-table-header-drag { + font-family: Arial, Helvetica, Tahoma, Verdana, sans-serif; + font-size: 12px; + line-height: normal; + color: #222; +} +/* Fonts on black background */ +.v-app .black, +.v-window-black, +.v-window .black, +.v-popupview-popup .black { + color: #c9ccce; + text-shadow: #000 0 0 1px; +} +.v-errorindicator { + width: 13px; + height: 16px; + background: transparent url(../common/icons/error.png) no-repeat 50%; +} +.v-tooltip { + background-color: #fffcdd; + border: 1px solid #b8b295; + font-size: 11px; + color: #222; +} +.v-tooltip-text { + padding: 2px 4px; +} +.v-tooltip .v-errormessage { + padding: 3px 4px; + background: #ffecc6; + color: #b74100; + border: none; + border-top: 1px solid #fff3dc; +} +.v-tooltip .v-errormessage h2 { + font-size: 16px; + font-weight: normal; + color: #ab3101; + margin: 2px 0 8px 0; +} +.v-tooltip .v-errormessage h3 { + font-size: 13px; + font-weight: bold; + margin: 1px 0 4px 0; +} +.v-contextmenu { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; + padding: 4px 0; +} +.v-contextmenu .gwt-MenuItem { + padding: 1px 12px 1px 8px; + height: 16px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + cursor: default; +} +.v-contextmenu .gwt-MenuItem .v-icon { + margin-right: 3px; +} +.v-contextmenu .gwt-MenuItem-selected { + background: transparent repeat-x; + background-image: url(img/sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + color: #fff; + text-shadow: #3b5a7a 0 1px 0; +} +.v-ie .v-contextmenu .gwt-MenuItem-selected { + background-image: url(img/sel-bg.png); + background-position: left top; +} +.v-contextmenu .gwt-MenuItem-selected div { + background: transparent; + cursor: default; +} + +/* Fixes for Liferay 6.0 */ +.portlet .v-app { + background: transparent; +} +.portlet .v-app .v-radiobutton input, +.portlet .v-window .v-radiobutton input, +.portlet .v-popupview-popup .v-radiobutton input, +.portlet .v-app .v-checkbox input, +.portlet .v-window .v-checkbox input, +.portlet .v-popupview-popup .v-checkbox input { + margin-right: 3px; + background: transparent; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/datefield/datefield.css b/WebContent/VAADIN/themes/reindeer/datefield/datefield.css deleted file mode 100644 index 1ececf9fb4..0000000000 --- a/WebContent/VAADIN/themes/reindeer/datefield/datefield.css +++ /dev/null @@ -1,369 +0,0 @@ -.v-datefield { - overflow: hidden; -} -input.v-textfield-readonly:focus{ - background-color: transparent; -} -.v-datefield-calendarpanel { - border-collapse: collapse; - margin: 0; - padding: 0; - height: auto !important; -} -.v-datefield-year .v-datefield-calendarpanel-prevmonth, -.v-datefield-year .v-datefield-calendarpanel-nextmonth { - display: none; -} -.v-datefield-calendarpanel td { - vertical-align: top; -} -td.v-datefield-calendarpanel-month { - height: 23px; - background-repeat: repeat-x; - background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -span.v-datefield-calendarpanel-month { - display: block; - text-align: center; - height: 16px; - padding: 3px 10px 0 10px; - border-left: 1px solid #efefef; - border-right: 1px solid #d8d8d8; - text-shadow: #fff 0 1px 0; - overflow: hidden; - margin-top: 1px; -} -.v-datefield-year .v-datefield-calendarpanel-month { - width: 35px; -} -.v-datefield-month .v-datefield-calendarpanel-month, -.v-datefield-day .v-datefield-calendarpanel-month, -.v-datefield-full .v-datefield-calendarpanel-month { - width: 124px; -} -.v-datefield-month, -.v-datefield-day, -.v-datefield-full { - min-width: 240px; -} -.v-datefield-popupcalendar { - min-width: 0; - padding-right: 24px; -} -.v-datefield-year .v-datefield-calendarpanel { - width: 100px; -} -td.v-datefield-calendarpanel-prevyear { - text-align: right; -} -td.v-datefield-calendarpanel-nextyear { - text-align: left; -} -.v-datefield-calendarpanel-prevyear button, -.v-datefield-calendarpanel-nextyear button, -.v-datefield-calendarpanel-prevmonth button, -.v-datefield-calendarpanel-nextmonth button { - width: 24px; - height: 23px; - border: none; - background: transparent; - background-repeat: no-repeat; - background-image: url(img/year-prev.png); /** sprite-ref: verticals */ - overflow: hidden; - padding: 0; - text-indent: -9999px; - outline: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.v-ie .v-datefield-calendarpanel-prevyear button, -.v-ie .v-datefield-calendarpanel-nextyear button, -.v-ie .v-datefield-calendarpanel-prevmonth button, -.v-ie .v-datefield-calendarpanel-nextmonth button { - text-indent: 0; - font-size: 1px; -} -.v-datefield-calendarpanel-nextyear button { - background-position: left top; - background-image: url(img/year-next.png); /** sprite-ref: verticals */ -} -.v-datefield-calendarpanel-prevyear button:active, -.v-ie .v-datefield-calendarpanel-prevyear button.v-pressed { - background-image: url(img/year-prev-pressed.png); /** sprite-ref: verticals */ -} -.v-datefield-calendarpanel-nextyear button:active, -.v-ie .v-datefield-calendarpanel-nextyear button.v-pressed { - background-image: url(img/year-next-pressed.png); /** sprite-ref: verticals */ -} -.v-datefield-calendarpanel-prevmonth, -.v-datefield-calendarpanel-nextmonth { - width: 24px; - background-repeat: repeat-x; - background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-datefield-calendarpanel-prevmonth button, -.v-datefield-calendarpanel-nextmonth button { - width: 100%; - height: 21px; - border-left: 1px solid #efefef; - border-right: 1px solid #d8d8d8; - background: transparent; - background-position: center top; - background-image: url(img/month-prev.png); /** sprite-ref: verticals; sprite-alignment: center */ - min-width: 24px; - margin-top: 1px; -} -.v-ie .v-datefield-calendarpanel-prevmonth button, -.v-ie .v-datefield-calendarpanel-nextmonth button { - border: none; -} -.v-datefield-calendarpanel-nextmonth button { - background-image: url(img/month-next.png); /** sprite-ref: verticals; sprite-alignment: center */ -} -.v-datefield-calendarpanel-prevmonth button:active, -.v-ie .v-datefield-calendarpanel-prevmonth button.v-pressed { - background-position: center top; - background-image: url(img/month-prev-pressed.png); /** sprite-ref: verticals; sprite-alignment: center */ -} -.v-datefield-calendarpanel-nextmonth button:active, -.v-ie .v-datefield-calendarpanel-nextmonth button.v-pressed { - background-position: center top; - background-image: url(img/month-next-pressed.png); /** sprite-ref: verticals; sprite-alignment: center */ -} -.v-datefield-calendarpanel-body, -.v-datefield-calendarpanel-time { - text-align: center; - vertical-align: top; -} -.v-datefield-calendarpanel-body table { - border-collapse: collapse; - margin: 0; - padding: 0; - width: 220px; - margin: 0 auto; -} -.v-datefield-calendarpanel-weekdays td { - width: 14.2%; - overflow: hidden; - background-repeat: repeat-x; - background-image: url(img/weekday-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 3px */ - font-size: 10px; - line-height: normal; - text-transform: uppercase; - color: #eaeff1; - text-shadow: #3b4651 0 -1px 0; - vertical-align: top; -} -.v-datefield-calendarpanel-weeknumbers td { - width: 12.4%; -} -.v-datefield-calendarpanel-weekdays strong { - display: block; - text-align: right; - padding: 1px 5px 0 0; - height: 14px; - border-top: 1px solid #596775; -} -.v-datefield-calendarpanel-weekdays .v-first { - background-repeat: no-repeat; - background-image: url(img/weekday-first.png); /** sprite-ref: verticals; sprite-margin-bottom: 3px */ -} -.v-datefield-calendarpanel-weekdays .v-last { - background-repeat: no-repeat; - background-position: right top; - background-image: url(img/weekday-last.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-bottom: 3px */ -} -/* IE fails to position backgrounds inside table element */ -.v-ie .v-datefield-calendarpanel-weekdays td { - background: url(img/weekday-bg.png) repeat-x; - background-position: left top; -} -.v-ie .v-datefield-calendarpanel .v-first { - background: url(img/weekday-first.png) no-repeat; -} -.v-ie .v-datefield-calendarpanel .v-last { - background: url(img/weekday-last.png) no-repeat right top; -} -.v-datefield-calendarpanel-body td { - text-align: right; - height: 19px; -} -.v-datefield-calendarpanel-day, -.v-datefield-calendarpanel-weeknumber, -.v-datefield-calendarpanel-day-today { - padding: 2px 5px 2px 0; - display: block; - margin: 1px 0 0 5px; -} -.v-datefield-calendarpanel-weeknumber { - margin: 0; - padding-top: 4px; - padding-bottom: 3px; -} -.v-datefield-calendarpanel-day-today { - color: #4095d1; - border: none; -} -.v-datefield-calendarpanel-day-selected { - background: #507ba3; - color: #fff; - text-shadow: #3b5b79 0 1px 0; - border-radius: 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; -} -.v-datefield-calendarpanel-time select { - padding: 0; - font-size: 11px; -} -.v-datefield-popup { - background: #f8f8f9; - padding: 8px 4px; - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; -} -.v-sa .v-datefield-popup, -.v-op .v-datefield-popup { - background: rgba(255,255,255,.95); -} -.v-has-width > input.v-datefield-textfield { - width: 100%; -} -.v-datefield-year > .v-datefield-textfield { - width: 4.5em; -} -.v-datefield-month > .v-datefield-textfield { - width: 5.5em; -} -.v-datefield-day > .v-datefield-textfield { - width: 6em; -} -.v-datefield-full >.v-datefield-textfield { - width: 12.5em; -} -.v-datefield-popupcalendar input.v-datefield-textfield { - border-right-width: 0; - -moz-border-radius-topright: 0; - -moz-border-radius-bottomright: 0; - -webkit-border-top-right-radius: 0; - -webkit-border-bottom-right-radius: 0; - height: 23px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-datefield.v-readonly input.v-datefield-textfield { - border-right-width: 1px; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; -} -.v-datefield-prompt .v-datefield-textfield { - color: #999; - font-style: normal; -} -.v-datefield-popupcalendar .v-datefield-button { - width: 24px; - margin-right: -24px; - height: 23px; - background: transparent; - border: none; - padding: 0; - background-image: url(img/popup-btn.png); /** sprite-ref: verticals */ - cursor: pointer; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} -.v-datefield-popupcalendar .v-datefield-button:active { - background-image: url(img/popup-btn-pressed.png); /** sprite-ref: verticals */ -} - -/* over black background */ -.black .v-datefield-popupcalendar .v-datefield-button { - background-image: url(img/popup-btn-black.png); /** sprite-ref: black-verticals */ -} -.black .v-datefield-popupcalendar .v-datefield-button:active { - background-image: url(img/popup-btn-black-pressed.png); /** sprite-ref: black-verticals */ -} - - -/*------------ -* on black background -*/ - -.black td.v-datefield-calendarpanel-month { - background-image: url(img/header-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ - height: 21px; -} -.black span.v-datefield-calendarpanel-month { - border-left: 1px solid #333638; - border-right: 1px solid #232527; - color: #c9ccce; - text-shadow: #000 0 -1px 0; - padding: 4px 10px 1px 10px; - margin-top: 0; -} -.black .v-datefield-calendarpanel-prevyear button, -.black .v-datefield-calendarpanel-nextyear button, -.black .v-datefield-calendarpanel-prevmonth button, -.black .v-datefield-calendarpanel-nextmonth button { - background-image: url(img/year-prev-black.png); /** sprite-ref: black-verticals */ - height: 21px; -} -.black .v-datefield-calendarpanel-nextyear button { - background-image: url(img/year-next-black.png); /** sprite-ref: black-verticals */ -} -.black .v-datefield-calendarpanel-prevyear button:active, -.v-ie .black .v-datefield-calendarpanel-prevyear button.v-pressed { - background-image: url(img/year-prev-black-pressed.png); /** sprite-ref: black-verticals */ -} -.black .v-datefield-calendarpanel-nextyear button:active, -.v-ie .black .v-datefield-calendarpanel-nextyear button.v-pressed { - background-image: url(img/year-next-black-pressed.png); /** sprite-ref: black-verticals */ -} -.black .v-datefield-calendarpanel-prevmonth, -.black .v-datefield-calendarpanel-nextmonth { - background-image: url(img/header-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ -} -.black .v-datefield-calendarpanel-prevmonth button, -.black .v-datefield-calendarpanel-nextmonth button { - border-left: 1px solid #333638; - border-right: 1px solid #232527; - background-image: url(img/month-prev-black.png); /** sprite-ref: black-verticals; sprite-alignment: center */ - margin-top: 0; -} -.black .v-datefield-calendarpanel-nextmonth button { - background-image: url(img/month-next-black.png); /** sprite-ref: black-verticals; sprite-alignment: center */ -} -.black .v-datefield-calendarpanel-prevmonth button:active, -.v-ie .black .v-datefield-calendarpanel-prevmonth button.v-pressed { - background-image: url(img/month-prev-black-pressed.png); /** sprite-ref: black-verticals; sprite-alignment: center */ -} -.black .v-datefield-calendarpanel-nextmonth button:active, -.v-ie .black .v-datefield-calendarpanel-nextmonth button.v-pressed { - background-image: url(img/month-next-black-pressed.png); /** sprite-ref: black-verticals; sprite-alignment: center */ -} -.v-ie .black .v-datefield-calendarpanel-prevmonth button, -.v-ie .black .v-datefield-calendarpanel-nextmonth button { - border: none; -} -.black .v-datefield-calendarpanel-weekdays td { - background-image: url(img/weekday-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 3px */ - color: #0a0b0b; - text-shadow: #5a5c5e 0 1px 0; -} -.black .v-datefield-calendarpanel-weekdays strong { - border-top-color: #1b1c1d; -} -.black .v-datefield-calendarpanel .v-first { - background-image: url(img/weekday-first-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 3px */ -} -.black .v-datefield-calendarpanel .v-last { - background-image: url(img/weekday-last-black.png); /** sprite-ref: black-verticals; sprite-alignment: right */ -} -.black .v-datefield-prompt .v-datefield-textfield { - color: #5f6366; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/datefield/datefield.scss b/WebContent/VAADIN/themes/reindeer/datefield/datefield.scss new file mode 100644 index 0000000000..17b9d42cdb --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/datefield/datefield.scss @@ -0,0 +1,373 @@ +@mixin reindeer-datefield { + +.v-datefield { + overflow: hidden; +} +input.v-textfield-readonly:focus{ + background-color: transparent; +} +.v-datefield-calendarpanel { + border-collapse: collapse; + margin: 0; + padding: 0; + height: auto !important; +} +.v-datefield-year .v-datefield-calendarpanel-prevmonth, +.v-datefield-year .v-datefield-calendarpanel-nextmonth { + display: none; +} +.v-datefield-calendarpanel td { + vertical-align: top; +} +td.v-datefield-calendarpanel-month { + height: 23px; + background-repeat: repeat-x; + background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +span.v-datefield-calendarpanel-month { + display: block; + text-align: center; + height: 16px; + padding: 3px 10px 0 10px; + border-left: 1px solid #efefef; + border-right: 1px solid #d8d8d8; + text-shadow: #fff 0 1px 0; + overflow: hidden; + margin-top: 1px; +} +.v-datefield-year .v-datefield-calendarpanel-month { + width: 35px; +} +.v-datefield-month .v-datefield-calendarpanel-month, +.v-datefield-day .v-datefield-calendarpanel-month, +.v-datefield-full .v-datefield-calendarpanel-month { + width: 124px; +} +.v-datefield-month, +.v-datefield-day, +.v-datefield-full { + min-width: 240px; +} +.v-datefield-popupcalendar { + min-width: 0; + padding-right: 24px; +} +.v-datefield-year .v-datefield-calendarpanel { + width: 100px; +} +td.v-datefield-calendarpanel-prevyear { + text-align: right; +} +td.v-datefield-calendarpanel-nextyear { + text-align: left; +} +.v-datefield-calendarpanel-prevyear button, +.v-datefield-calendarpanel-nextyear button, +.v-datefield-calendarpanel-prevmonth button, +.v-datefield-calendarpanel-nextmonth button { + width: 24px; + height: 23px; + border: none; + background: transparent; + background-repeat: no-repeat; + background-image: url(img/year-prev.png); /** sprite-ref: verticals */ + overflow: hidden; + padding: 0; + text-indent: -9999px; + outline: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.v-ie .v-datefield-calendarpanel-prevyear button, +.v-ie .v-datefield-calendarpanel-nextyear button, +.v-ie .v-datefield-calendarpanel-prevmonth button, +.v-ie .v-datefield-calendarpanel-nextmonth button { + text-indent: 0; + font-size: 1px; +} +.v-datefield-calendarpanel-nextyear button { + background-position: left top; + background-image: url(img/year-next.png); /** sprite-ref: verticals */ +} +.v-datefield-calendarpanel-prevyear button:active, +.v-ie .v-datefield-calendarpanel-prevyear button.v-pressed { + background-image: url(img/year-prev-pressed.png); /** sprite-ref: verticals */ +} +.v-datefield-calendarpanel-nextyear button:active, +.v-ie .v-datefield-calendarpanel-nextyear button.v-pressed { + background-image: url(img/year-next-pressed.png); /** sprite-ref: verticals */ +} +.v-datefield-calendarpanel-prevmonth, +.v-datefield-calendarpanel-nextmonth { + width: 24px; + background-repeat: repeat-x; + background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-datefield-calendarpanel-prevmonth button, +.v-datefield-calendarpanel-nextmonth button { + width: 100%; + height: 21px; + border-left: 1px solid #efefef; + border-right: 1px solid #d8d8d8; + background: transparent; + background-position: center top; + background-image: url(img/month-prev.png); /** sprite-ref: verticals; sprite-alignment: center */ + min-width: 24px; + margin-top: 1px; +} +.v-ie .v-datefield-calendarpanel-prevmonth button, +.v-ie .v-datefield-calendarpanel-nextmonth button { + border: none; +} +.v-datefield-calendarpanel-nextmonth button { + background-image: url(img/month-next.png); /** sprite-ref: verticals; sprite-alignment: center */ +} +.v-datefield-calendarpanel-prevmonth button:active, +.v-ie .v-datefield-calendarpanel-prevmonth button.v-pressed { + background-position: center top; + background-image: url(img/month-prev-pressed.png); /** sprite-ref: verticals; sprite-alignment: center */ +} +.v-datefield-calendarpanel-nextmonth button:active, +.v-ie .v-datefield-calendarpanel-nextmonth button.v-pressed { + background-position: center top; + background-image: url(img/month-next-pressed.png); /** sprite-ref: verticals; sprite-alignment: center */ +} +.v-datefield-calendarpanel-body, +.v-datefield-calendarpanel-time { + text-align: center; + vertical-align: top; +} +.v-datefield-calendarpanel-body table { + border-collapse: collapse; + margin: 0; + padding: 0; + width: 220px; + margin: 0 auto; +} +.v-datefield-calendarpanel-weekdays td { + width: 14.2%; + overflow: hidden; + background-repeat: repeat-x; + background-image: url(img/weekday-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 3px */ + font-size: 10px; + line-height: normal; + text-transform: uppercase; + color: #eaeff1; + text-shadow: #3b4651 0 -1px 0; + vertical-align: top; +} +.v-datefield-calendarpanel-weeknumbers td { + width: 12.4%; +} +.v-datefield-calendarpanel-weekdays strong { + display: block; + text-align: right; + padding: 1px 5px 0 0; + height: 14px; + border-top: 1px solid #596775; +} +.v-datefield-calendarpanel-weekdays .v-first { + background-repeat: no-repeat; + background-image: url(img/weekday-first.png); /** sprite-ref: verticals; sprite-margin-bottom: 3px */ +} +.v-datefield-calendarpanel-weekdays .v-last { + background-repeat: no-repeat; + background-position: right top; + background-image: url(img/weekday-last.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-bottom: 3px */ +} +/* IE fails to position backgrounds inside table element */ +.v-ie .v-datefield-calendarpanel-weekdays td { + background: url(img/weekday-bg.png) repeat-x; + background-position: left top; +} +.v-ie .v-datefield-calendarpanel .v-first { + background: url(img/weekday-first.png) no-repeat; +} +.v-ie .v-datefield-calendarpanel .v-last { + background: url(img/weekday-last.png) no-repeat right top; +} +.v-datefield-calendarpanel-body td { + text-align: right; + height: 19px; +} +.v-datefield-calendarpanel-day, +.v-datefield-calendarpanel-weeknumber, +.v-datefield-calendarpanel-day-today { + padding: 2px 5px 2px 0; + display: block; + margin: 1px 0 0 5px; +} +.v-datefield-calendarpanel-weeknumber { + margin: 0; + padding-top: 4px; + padding-bottom: 3px; +} +.v-datefield-calendarpanel-day-today { + color: #4095d1; + border: none; +} +.v-datefield-calendarpanel-day-selected { + background: #507ba3; + color: #fff; + text-shadow: #3b5b79 0 1px 0; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} +.v-datefield-calendarpanel-time select { + padding: 0; + font-size: 11px; +} +.v-datefield-popup { + background: #f8f8f9; + padding: 8px 4px; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +.v-sa .v-datefield-popup, +.v-op .v-datefield-popup { + background: rgba(255,255,255,.95); +} +.v-has-width > input.v-datefield-textfield { + width: 100%; +} +.v-datefield-year > .v-datefield-textfield { + width: 4.5em; +} +.v-datefield-month > .v-datefield-textfield { + width: 5.5em; +} +.v-datefield-day > .v-datefield-textfield { + width: 6em; +} +.v-datefield-full >.v-datefield-textfield { + width: 12.5em; +} +.v-datefield-popupcalendar input.v-datefield-textfield { + border-right-width: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0; + height: 23px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-datefield.v-readonly input.v-datefield-textfield { + border-right-width: 1px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} +.v-datefield-prompt .v-datefield-textfield { + color: #999; + font-style: normal; +} +.v-datefield-popupcalendar .v-datefield-button { + width: 24px; + margin-right: -24px; + height: 23px; + background: transparent; + border: none; + padding: 0; + background-image: url(img/popup-btn.png); /** sprite-ref: verticals */ + cursor: pointer; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.v-datefield-popupcalendar .v-datefield-button:active { + background-image: url(img/popup-btn-pressed.png); /** sprite-ref: verticals */ +} + +/* over black background */ +.black .v-datefield-popupcalendar .v-datefield-button { + background-image: url(img/popup-btn-black.png); /** sprite-ref: black-verticals */ +} +.black .v-datefield-popupcalendar .v-datefield-button:active { + background-image: url(img/popup-btn-black-pressed.png); /** sprite-ref: black-verticals */ +} + + +/*------------ +* on black background +*/ + +.black td.v-datefield-calendarpanel-month { + background-image: url(img/header-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ + height: 21px; +} +.black span.v-datefield-calendarpanel-month { + border-left: 1px solid #333638; + border-right: 1px solid #232527; + color: #c9ccce; + text-shadow: #000 0 -1px 0; + padding: 4px 10px 1px 10px; + margin-top: 0; +} +.black .v-datefield-calendarpanel-prevyear button, +.black .v-datefield-calendarpanel-nextyear button, +.black .v-datefield-calendarpanel-prevmonth button, +.black .v-datefield-calendarpanel-nextmonth button { + background-image: url(img/year-prev-black.png); /** sprite-ref: black-verticals */ + height: 21px; +} +.black .v-datefield-calendarpanel-nextyear button { + background-image: url(img/year-next-black.png); /** sprite-ref: black-verticals */ +} +.black .v-datefield-calendarpanel-prevyear button:active, +.v-ie .black .v-datefield-calendarpanel-prevyear button.v-pressed { + background-image: url(img/year-prev-black-pressed.png); /** sprite-ref: black-verticals */ +} +.black .v-datefield-calendarpanel-nextyear button:active, +.v-ie .black .v-datefield-calendarpanel-nextyear button.v-pressed { + background-image: url(img/year-next-black-pressed.png); /** sprite-ref: black-verticals */ +} +.black .v-datefield-calendarpanel-prevmonth, +.black .v-datefield-calendarpanel-nextmonth { + background-image: url(img/header-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ +} +.black .v-datefield-calendarpanel-prevmonth button, +.black .v-datefield-calendarpanel-nextmonth button { + border-left: 1px solid #333638; + border-right: 1px solid #232527; + background-image: url(img/month-prev-black.png); /** sprite-ref: black-verticals; sprite-alignment: center */ + margin-top: 0; +} +.black .v-datefield-calendarpanel-nextmonth button { + background-image: url(img/month-next-black.png); /** sprite-ref: black-verticals; sprite-alignment: center */ +} +.black .v-datefield-calendarpanel-prevmonth button:active, +.v-ie .black .v-datefield-calendarpanel-prevmonth button.v-pressed { + background-image: url(img/month-prev-black-pressed.png); /** sprite-ref: black-verticals; sprite-alignment: center */ +} +.black .v-datefield-calendarpanel-nextmonth button:active, +.v-ie .black .v-datefield-calendarpanel-nextmonth button.v-pressed { + background-image: url(img/month-next-black-pressed.png); /** sprite-ref: black-verticals; sprite-alignment: center */ +} +.v-ie .black .v-datefield-calendarpanel-prevmonth button, +.v-ie .black .v-datefield-calendarpanel-nextmonth button { + border: none; +} +.black .v-datefield-calendarpanel-weekdays td { + background-image: url(img/weekday-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 3px */ + color: #0a0b0b; + text-shadow: #5a5c5e 0 1px 0; +} +.black .v-datefield-calendarpanel-weekdays strong { + border-top-color: #1b1c1d; +} +.black .v-datefield-calendarpanel .v-first { + background-image: url(img/weekday-first-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 3px */ +} +.black .v-datefield-calendarpanel .v-last { + background-image: url(img/weekday-last-black.png); /** sprite-ref: black-verticals; sprite-alignment: right */ +} +.black .v-datefield-prompt .v-datefield-textfield { + color: #5f6366; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/formlayout/formlayout.css b/WebContent/VAADIN/themes/reindeer/formlayout/formlayout.css deleted file mode 100644 index b28040a0e9..0000000000 --- a/WebContent/VAADIN/themes/reindeer/formlayout/formlayout.css +++ /dev/null @@ -1,60 +0,0 @@ -.v-formlayout-errorcell { - width: 13px; -} -.v-formlayout-cell .v-errorindicator { - width: 13px; - height: 16px; - background: transparent url(../common/icons/error.png) no-repeat 50%; -} -.v-formlayout-captioncell { - text-align: right; - white-space: nowrap; -} -.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, -.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, -.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { - padding-top: 8px; -} -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { - padding-top: 15px; -} -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { - padding-bottom: 15px; -} -.v-formlayout-margin-left .v-formlayout-captioncell { - padding-left: 18px; -} -.v-formlayout-margin-right .v-formlayout-contentcell { - padding-right: 18px; -} -/* form */ -.v-form-errormessage { - background: transparent url(../common/icons/error.png) no-repeat 3px 2px; - padding-left: 20px; - margin-bottom: 5px; - margin-top: 5px; - min-height: 20px; -} -.v-form fieldset { - border: none; - border-top: 1px solid #babfc0; -} -.v-form-nocaption fieldset { - border: none; -} -.v-form-nocaption legend { - display: none; -} -.v-form legend { - margin: 0 0 0 20px; - padding: 0 5px; - font-weight: bold; - color: #222; -} -.black .v-form legend { - color: #e3e6e8; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/formlayout/formlayout.scss b/WebContent/VAADIN/themes/reindeer/formlayout/formlayout.scss new file mode 100644 index 0000000000..ab47767dcf --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/formlayout/formlayout.scss @@ -0,0 +1,64 @@ +@mixin reindeer-formlayout { + +.v-formlayout-errorcell { + width: 13px; +} +.v-formlayout-cell .v-errorindicator { + width: 13px; + height: 16px; + background: transparent url(../common/icons/error.png) no-repeat 50%; +} +.v-formlayout-captioncell { + text-align: right; + white-space: nowrap; +} +.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, +.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, +.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { + padding-top: 8px; +} +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 15px; +} +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { + padding-bottom: 15px; +} +.v-formlayout-margin-left .v-formlayout-captioncell { + padding-left: 18px; +} +.v-formlayout-margin-right .v-formlayout-contentcell { + padding-right: 18px; +} +/* form */ +.v-form-errormessage { + background: transparent url(../common/icons/error.png) no-repeat 3px 2px; + padding-left: 20px; + margin-bottom: 5px; + margin-top: 5px; + min-height: 20px; +} +.v-form fieldset { + border: none; + border-top: 1px solid #babfc0; +} +.v-form-nocaption fieldset { + border: none; +} +.v-form-nocaption legend { + display: none; +} +.v-form legend { + margin: 0 0 0 20px; + padding: 0 5px; + font-weight: bold; + color: #222; +} +.black .v-form legend { + color: #e3e6e8; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/label/label.css b/WebContent/VAADIN/themes/reindeer/label/label.css deleted file mode 100644 index 905ed7251d..0000000000 --- a/WebContent/VAADIN/themes/reindeer/label/label.css +++ /dev/null @@ -1,122 +0,0 @@ -.v-label { - line-height: 18px; -} - -/********************** - * Black styles - **********************/ -.white .black, -.blue .black { - color: #C9CCCE; - text-shadow: 0 0 1px #000; -} -.black .v-label-h1, -.black .v-label-h2, -.black .v-caption-h1, -.black .v-caption-h2, -.white .black .v-label-h1, -.white .black .v-label-h2, -.white .black .v-caption-h1, -.white .black .v-caption-h2, -.blue .black .v-label-h1, -.blue .black .v-label-h2, -.blue .black .v-caption-h1, -.blue .black .v-caption-h2 { - color: #fff; - text-shadow: rgba(0,0,0,.8) 0 2px 2px; -} -.black .v-label-light, -.white .black .v-label-light { - color: #72787c; -} -.black .v-label hr, -.white .black .v-label hr { - background: #0c0d0e; - color: #0c0d0e; - border-bottom-color: #292b2e; -} - -/********************** - * Blue styles - **********************/ -.v-app .white, -.v-window .white, -.v-app .blue, -.v-window .blue { - color: #222; - text-shadow: none; -} -.blue .v-label-h1, -.blue .v-label-h2, -.blue .v-caption-h1, -.blue .v-caption-h2, -.white .blue .v-label-h1, -.white .blue .v-label-h2, -.white .blue .v-caption-h1, -.white .blue .v-caption-h2 { - color: #fff; - text-shadow: rgba(0,0,0,.3) 0 1px 1px; -} -.blue .v-label-light, -.white .blue .v-label-light { - color: #6e7c83; -} -.blue .v-label hr, -.white .blue .v-label hr { - background: #a3bcc9; - color: #a3bcc9; - border-bottom-color: #cfe2eb; -} - -/********************** - * Default & white styles - **********************/ -.v-label-h1, -.v-label-h2, -.v-caption-h1, -.v-caption-h2, -.white .v-label-h1, -.white .v-label-h2, -.white .v-caption-h1, -.white .v-caption-h2 { - font-family: Helvetica, Arial, "Lucida Grande", Geneva, Tahoma, Verdana, sans-serif; - font-size: 24px; - line-height: 30px; - font-weight: bold; - color: #44698b; - letter-spacing: -0.02em; - text-shadow: #fff 0 -1px 1px; -} -.v-label-h2, -.v-caption-h2, -.white .v-label-h2, -.white .v-caption-h2 { - font-size: 16px; - line-height: 22px; -} -.v-label-light, -.white .v-label-light { - font-size: 11px; - line-height: 13px; - color: #707070; -} - -.v-label hr, -.white .v-label hr { - height: 2px; - overflow: hidden; - background: #dcdcdc; - color: #dcdcdc; /* For IE */ - border: none; - border-bottom: 1px solid #fff; -} - -.v-sa .v-label hr, -.v-ie8 .v-label hr { - height: 1px; -} - -/* Labels inside Table don't need a line-height */ -.v-table .v-label { - line-height: normal; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/label/label.scss b/WebContent/VAADIN/themes/reindeer/label/label.scss new file mode 100644 index 0000000000..a8418718e0 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/label/label.scss @@ -0,0 +1,126 @@ +@mixin reindeer-label { + +.v-label { + line-height: 18px; +} + +/********************** + * Black styles + **********************/ +.white .black, +.blue .black { + color: #C9CCCE; + text-shadow: 0 0 1px #000; +} +.black .v-label-h1, +.black .v-label-h2, +.black .v-caption-h1, +.black .v-caption-h2, +.white .black .v-label-h1, +.white .black .v-label-h2, +.white .black .v-caption-h1, +.white .black .v-caption-h2, +.blue .black .v-label-h1, +.blue .black .v-label-h2, +.blue .black .v-caption-h1, +.blue .black .v-caption-h2 { + color: #fff; + text-shadow: rgba(0,0,0,.8) 0 2px 2px; +} +.black .v-label-light, +.white .black .v-label-light { + color: #72787c; +} +.black .v-label hr, +.white .black .v-label hr { + background: #0c0d0e; + color: #0c0d0e; + border-bottom-color: #292b2e; +} + +/********************** + * Blue styles + **********************/ +.v-app .white, +.v-window .white, +.v-app .blue, +.v-window .blue { + color: #222; + text-shadow: none; +} +.blue .v-label-h1, +.blue .v-label-h2, +.blue .v-caption-h1, +.blue .v-caption-h2, +.white .blue .v-label-h1, +.white .blue .v-label-h2, +.white .blue .v-caption-h1, +.white .blue .v-caption-h2 { + color: #fff; + text-shadow: rgba(0,0,0,.3) 0 1px 1px; +} +.blue .v-label-light, +.white .blue .v-label-light { + color: #6e7c83; +} +.blue .v-label hr, +.white .blue .v-label hr { + background: #a3bcc9; + color: #a3bcc9; + border-bottom-color: #cfe2eb; +} + +/********************** + * Default & white styles + **********************/ +.v-label-h1, +.v-label-h2, +.v-caption-h1, +.v-caption-h2, +.white .v-label-h1, +.white .v-label-h2, +.white .v-caption-h1, +.white .v-caption-h2 { + font-family: Helvetica, Arial, "Lucida Grande", Geneva, Tahoma, Verdana, sans-serif; + font-size: 24px; + line-height: 30px; + font-weight: bold; + color: #44698b; + letter-spacing: -0.02em; + text-shadow: #fff 0 -1px 1px; +} +.v-label-h2, +.v-caption-h2, +.white .v-label-h2, +.white .v-caption-h2 { + font-size: 16px; + line-height: 22px; +} +.v-label-light, +.white .v-label-light { + font-size: 11px; + line-height: 13px; + color: #707070; +} + +.v-label hr, +.white .v-label hr { + height: 2px; + overflow: hidden; + background: #dcdcdc; + color: #dcdcdc; /* For IE */ + border: none; + border-bottom: 1px solid #fff; +} + +.v-sa .v-label hr, +.v-ie8 .v-label hr { + height: 1px; +} + +/* Labels inside Table don't need a line-height */ +.v-table .v-label { + line-height: normal; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/layouts/layouts.css b/WebContent/VAADIN/themes/reindeer/layouts/layouts.css deleted file mode 100644 index 528d4b9174..0000000000 --- a/WebContent/VAADIN/themes/reindeer/layouts/layouts.css +++ /dev/null @@ -1,88 +0,0 @@ -.v-orderedlayout-margin-top, -.v-horizontallayout-margin-top, -.v-verticallayout-margin-top { - padding-top: 18px; -} -.v-orderedlayout-margin-right, -.v-horizontallayout-margin-right, -.v-verticallayout-margin-right { - padding-right: 18px; -} -.v-orderedlayout-margin-bottom, -.v-horizontallayout-margin-bottom, -.v-verticallayout-margin-bottom { - padding-bottom: 18px; -} -.v-orderedlayout-margin-left, -.v-horizontallayout-margin-left, -.v-verticallayout-margin-left { - padding-left: 18px; -} -.v-orderedlayout-spacing-on, -.v-horizontallayout-spacing-on, -.v-verticallayout-spacing-on { - padding-top: 7px; - padding-left: 6px; -} -/* Different for historical reasons: previously was inherited directly from Base theme */ -/* TODO unify these values in version 7 */ -.v-gridlayout-margin-top { - padding-top: 24px; -} -.v-gridlayout-margin-bottom { - padding-bottom: 24px; -} -.v-gridlayout-margin-left { - padding-left: 24px; -} -.v-gridlayout-margin-right { - padding-right: 24px; -} -.v-gridlayout-spacing-on { - padding-left: 12px; - padding-top: 12px; -} -/* Blue background */ -.v-verticallayout-blue, -.v-horizontallayout-blue, -.v-orderedlayout-blue, -.v-gridlayout-blue, -.v-csslayout-blue, -.v-formlayout-blue, -.v-splitpanel-vertical-blue, -.v-splitpanel-horizontal-blue { - background-color: #bcd3de; -} -.v-panel-content > div.blue { - background-color: #bcd3de; -} -/* White background */ -.v-verticallayout-white, -.v-horizontallayout-white, -.v-orderedlayout-white, -.v-gridlayout-white, -.v-csslayout-white, -.v-formlayout-white, -.v-splitpanel-vertical-white, -.v-splitpanel-horizontal-white { - background-color: #fff; - color: #222; -} -.v-panel-content > div.white { - background-color: #fff; - color: #222; -} -/* Black background */ -.v-verticallayout-black, -.v-horizontallayout-black, -.v-orderedlayout-black, -.v-gridlayout-black, -.v-csslayout-black, -.v-formlayout-black, -.v-splitpanel-vertical-black, -.v-splitpanel-horizontal-black { - background: #1e2022 url(img/black-bg.png) repeat-x; -} -.v-panel-content > div.black { - background: #1e2022 url(img/black-bg.png) repeat-x; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/layouts/layouts.scss b/WebContent/VAADIN/themes/reindeer/layouts/layouts.scss new file mode 100644 index 0000000000..832e480010 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/layouts/layouts.scss @@ -0,0 +1,92 @@ +@mixin reindeer-layouts { + +.v-orderedlayout-margin-top, +.v-horizontallayout-margin-top, +.v-verticallayout-margin-top { + padding-top: 18px; +} +.v-orderedlayout-margin-right, +.v-horizontallayout-margin-right, +.v-verticallayout-margin-right { + padding-right: 18px; +} +.v-orderedlayout-margin-bottom, +.v-horizontallayout-margin-bottom, +.v-verticallayout-margin-bottom { + padding-bottom: 18px; +} +.v-orderedlayout-margin-left, +.v-horizontallayout-margin-left, +.v-verticallayout-margin-left { + padding-left: 18px; +} +.v-orderedlayout-spacing-on, +.v-horizontallayout-spacing-on, +.v-verticallayout-spacing-on { + padding-top: 7px; + padding-left: 6px; +} +/* Different for historical reasons: previously was inherited directly from Base theme */ +/* TODO unify these values in version 7 */ +.v-gridlayout-margin-top { + padding-top: 24px; +} +.v-gridlayout-margin-bottom { + padding-bottom: 24px; +} +.v-gridlayout-margin-left { + padding-left: 24px; +} +.v-gridlayout-margin-right { + padding-right: 24px; +} +.v-gridlayout-spacing-on { + padding-left: 12px; + padding-top: 12px; +} +/* Blue background */ +.v-verticallayout-blue, +.v-horizontallayout-blue, +.v-orderedlayout-blue, +.v-gridlayout-blue, +.v-csslayout-blue, +.v-formlayout-blue, +.v-splitpanel-vertical-blue, +.v-splitpanel-horizontal-blue { + background-color: #bcd3de; +} +.v-panel-content > div.blue { + background-color: #bcd3de; +} +/* White background */ +.v-verticallayout-white, +.v-horizontallayout-white, +.v-orderedlayout-white, +.v-gridlayout-white, +.v-csslayout-white, +.v-formlayout-white, +.v-splitpanel-vertical-white, +.v-splitpanel-horizontal-white { + background-color: #fff; + color: #222; +} +.v-panel-content > div.white { + background-color: #fff; + color: #222; +} +/* Black background */ +.v-verticallayout-black, +.v-horizontallayout-black, +.v-orderedlayout-black, +.v-gridlayout-black, +.v-csslayout-black, +.v-formlayout-black, +.v-splitpanel-vertical-black, +.v-splitpanel-horizontal-black { + background: #1e2022 url(img/black-bg.png) repeat-x; +} +.v-panel-content > div.black { + background: #1e2022 url(img/black-bg.png) repeat-x; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/link/link.css b/WebContent/VAADIN/themes/reindeer/link/link.css deleted file mode 100644 index e3847f1180..0000000000 --- a/WebContent/VAADIN/themes/reindeer/link/link.css +++ /dev/null @@ -1,9 +0,0 @@ -.v-link a:link span { - color: #1b699f; -} -.v-link a:visited span { - color: #5c7485; -} -.v-link a:hover span { - color: #2483c4; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/link/link.scss b/WebContent/VAADIN/themes/reindeer/link/link.scss new file mode 100644 index 0000000000..291479b2d1 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/link/link.scss @@ -0,0 +1,13 @@ +@mixin reindeer-link { + +.v-link a:link span { + color: #1b699f; +} +.v-link a:visited span { + color: #5c7485; +} +.v-link a:hover span { + color: #2483c4; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/menubar/menubar.css b/WebContent/VAADIN/themes/reindeer/menubar/menubar.css deleted file mode 100644 index 165eacc840..0000000000 --- a/WebContent/VAADIN/themes/reindeer/menubar/menubar.css +++ /dev/null @@ -1,72 +0,0 @@ -.v-menubar { - height: 23px; - background: #323336 repeat-x; - background-image: url(img/bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - color: #d1d3d6; - text-shadow: rgba(0,0,0,.9) 0 1px 0; - padding: 0 8px; -} -.v-menubar .v-menubar-menuitem { - padding: 3px 8px; - height: 17px; - line-height: 16px; -} -.v-menubar .v-menubar-menuitem:hover { - color: #fff; -} -.v-menubar-submenu { - background: #f8f8f9; - border: none; - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - overflow: hidden; - padding: 4px 0; -} -.v-menubar-submenu .v-menubar-menuitem { - padding: 1px 26px 1px 10px; - line-height: 16px; -} -.v-menubar-submenu .v-menubar-menuitem-caption .v-icon { - vertical-align: middle; -} -.v-menubar .v-menubar-menuitem-selected, -.v-menubar-submenu .v-menubar-menuitem-selected { - background: #4d749f repeat-x; - background-image: url(../common/img/sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - color: #fff; - text-shadow: 0 1px 0 #3b5a7a; -} -.v-menubar .v-menubar-menuitem-selected { - background-image: url(img/menu-sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ -} -.v-menubar-submenu .v-menubar-submenu-indicator { - background: transparent url(img/submenu-icon.png) no-repeat right 70%; - width: 26px; - height: 16px; - text-indent: -9999px; -} -.v-menubar-submenu .v-menubar-menuitem-selected .v-menubar-submenu-indicator { - background-image: url(img/submenu-icon-hover.png); -} - -/* Checkboxes for checkable/checked menu items */ -.v-menubar-submenu-check-column .v-menubar-menuitem { - padding-left: 6px; -} -.v-menubar-submenu-check-column .v-menubar-menuitem-caption { - padding-left: 18px; -} -.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { - background: transparent url(img/checked.png) no-repeat left; -} -.v-menubar-submenu .v-menubar-menuitem-unchecked .v-menubar-menuitem-caption { - background: transparent url(img/unchecked.png) no-repeat left; -} -.v-menubar-submenu .v-menubar-menuitem-selected-checked .v-menubar-menuitem-caption { - background: transparent url(img/checked-selected.png) no-repeat left; -} -.v-menubar-submenu .v-menubar-menuitem-selected-unchecked .v-menubar-menuitem-caption { - background: transparent url(img/unchecked-selected.png) no-repeat left; -} diff --git a/WebContent/VAADIN/themes/reindeer/menubar/menubar.scss b/WebContent/VAADIN/themes/reindeer/menubar/menubar.scss new file mode 100644 index 0000000000..78f4a9fa45 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/menubar/menubar.scss @@ -0,0 +1,76 @@ +@mixin reindeer-menubar { + +.v-menubar { + height: 23px; + background: #323336 repeat-x; + background-image: url(img/bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + color: #d1d3d6; + text-shadow: rgba(0,0,0,.9) 0 1px 0; + padding: 0 8px; +} +.v-menubar .v-menubar-menuitem { + padding: 3px 8px; + height: 17px; + line-height: 16px; +} +.v-menubar .v-menubar-menuitem:hover { + color: #fff; +} +.v-menubar-submenu { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; + padding: 4px 0; +} +.v-menubar-submenu .v-menubar-menuitem { + padding: 1px 26px 1px 10px; + line-height: 16px; +} +.v-menubar-submenu .v-menubar-menuitem-caption .v-icon { + vertical-align: middle; +} +.v-menubar .v-menubar-menuitem-selected, +.v-menubar-submenu .v-menubar-menuitem-selected { + background: #4d749f repeat-x; + background-image: url(../common/img/sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + color: #fff; + text-shadow: 0 1px 0 #3b5a7a; +} +.v-menubar .v-menubar-menuitem-selected { + background-image: url(img/menu-sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ +} +.v-menubar-submenu .v-menubar-submenu-indicator { + background: transparent url(img/submenu-icon.png) no-repeat right 70%; + width: 26px; + height: 16px; + text-indent: -9999px; +} +.v-menubar-submenu .v-menubar-menuitem-selected .v-menubar-submenu-indicator { + background-image: url(img/submenu-icon-hover.png); +} + +/* Checkboxes for checkable/checked menu items */ +.v-menubar-submenu-check-column .v-menubar-menuitem { + padding-left: 6px; +} +.v-menubar-submenu-check-column .v-menubar-menuitem-caption { + padding-left: 18px; +} +.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { + background: transparent url(img/checked.png) no-repeat left; +} +.v-menubar-submenu .v-menubar-menuitem-unchecked .v-menubar-menuitem-caption { + background: transparent url(img/unchecked.png) no-repeat left; +} +.v-menubar-submenu .v-menubar-menuitem-selected-checked .v-menubar-menuitem-caption { + background: transparent url(img/checked-selected.png) no-repeat left; +} +.v-menubar-submenu .v-menubar-menuitem-selected-unchecked .v-menubar-menuitem-caption { + background: transparent url(img/unchecked-selected.png) no-repeat left; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/notification/notification.css b/WebContent/VAADIN/themes/reindeer/notification/notification.css deleted file mode 100644 index 33b56ef891..0000000000 --- a/WebContent/VAADIN/themes/reindeer/notification/notification.css +++ /dev/null @@ -1,44 +0,0 @@ -.v-Notification { - color: #fff; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - font-size: 100%; - background: #c8ccd0; - font-weight: bold; -} - -.v-ie9 .v-Notification H1 { - /* Fix for #6793 */ - font-weight: bold; -} - -.v-Notification p { - line-height: 1.3; -} -.v-Notification-warning { - background: #fdf3b5; - color: #ca9a61; - border: 3px solid #fee3af; -} -.v-Notification-error { - background: #b40000 url(img/error-close.png) no-repeat right top; - border: 3px solid #ca3030; -} -.v-Notification-tray { - margin: 0 5px 5px 0; - background: #3b3c3e; - border: 2px solid #585b5c; - padding: 0.8em 0.9em; -} -.v-Notification-tray h1 { - font-size: 14px; - line-height: 18px; -} -.v-Notification-tray p { - font-size: 12px; - font-weight: normal; -} -.v-Notification-system { - background-color: #b40000; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/notification/notification.scss b/WebContent/VAADIN/themes/reindeer/notification/notification.scss new file mode 100644 index 0000000000..d9ddd4da27 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/notification/notification.scss @@ -0,0 +1,48 @@ +@mixin reindeer-notification { + +.v-Notification { + color: #fff; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + font-size: 100%; + background: #c8ccd0; + font-weight: bold; +} + +.v-ie9 .v-Notification H1 { + /* Fix for #6793 */ + font-weight: bold; +} + +.v-Notification p { + line-height: 1.3; +} +.v-Notification-warning { + background: #fdf3b5; + color: #ca9a61; + border: 3px solid #fee3af; +} +.v-Notification-error { + background: #b40000 url(img/error-close.png) no-repeat right top; + border: 3px solid #ca3030; +} +.v-Notification-tray { + margin: 0 5px 5px 0; + background: #3b3c3e; + border: 2px solid #585b5c; + padding: 0.8em 0.9em; +} +.v-Notification-tray h1 { + font-size: 14px; + line-height: 18px; +} +.v-Notification-tray p { + font-size: 12px; + font-weight: normal; +} +.v-Notification-system { + background-color: #b40000; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/panel/panel.css b/WebContent/VAADIN/themes/reindeer/panel/panel.css deleted file mode 100644 index 23575799ab..0000000000 --- a/WebContent/VAADIN/themes/reindeer/panel/panel.css +++ /dev/null @@ -1,74 +0,0 @@ -.blue .v-panel-caption, -.blue .v-panel-nocaption, -.blue .v-panel-content { - border-color: #a8bcc5; -} -.v-panel-caption, -.v-panel-nocaption, -.white .v-panel-caption, -.white .v-panel-nocaption { - border-bottom: 1px solid #e5e5e5; - line-height: 16px; /* accommodate minimum icon size */ -} -.v-webkit .v-panel-caption, -.v-webkit .v-panel-nocaption, -.v-gecko .v-panel-caption, -.v-gecko .v-panel-nocaption, -.v-ie9 .v-panel-caption, -.v-ie9 .v-panel-nocaption { - border-bottom-color: rgba(0,0,0,.08); -} -.v-panel-caption { - padding-bottom: 2px; -} -.v-panel-content, -.white .v-panel-content { - background: #fff; - border: 1px solid #dcdcdc; - border-bottom: none; - border-top: none; -} -.v-webkit .v-panel-content, -.v-gecko .v-panel-content, -.v-ie9 .v-panel-content { - border-top-color: rgba(0,0,0,.07); -} -.blue .v-panel-deco { - border-color: #92a3ac; - background: #adc2cd; -} -.v-panel-deco, -.white .v-panel-deco { - height: 1px; - border-top: 1px solid #bebebe; - background: #e2e2e2; - overflow: hidden; -} -.v-webkit .v-panel-deco, -.v-gecko .v-panel-deco, -.v-ie9 .v-panel-deco { - border-top-color: rgba(0,0,0,.1); - background: rgba(0,0,0,.08); -} -.v-panel-caption .v-errorindicator { - height: 16px; - width: 13px; - background: url(../common/icons/error.png) no-repeat 50%; - display: inline; - display: inline-block; - vertical-align: middle; -} - -/* Light style */ -.v-panel-light .v-panel-caption-light, -.v-panel-light .v-panel-nocaption-light { - border: none; -} -.v-panel-light .v-panel-content-light { - border: none; - background: transparent; -} -.v-panel-light .v-panel-deco-light { - height: 0; - border: none; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/panel/panel.scss b/WebContent/VAADIN/themes/reindeer/panel/panel.scss new file mode 100644 index 0000000000..00483c5546 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/panel/panel.scss @@ -0,0 +1,78 @@ +@mixin reindeer-panel { + +.blue .v-panel-caption, +.blue .v-panel-nocaption, +.blue .v-panel-content { + border-color: #a8bcc5; +} +.v-panel-caption, +.v-panel-nocaption, +.white .v-panel-caption, +.white .v-panel-nocaption { + border-bottom: 1px solid #e5e5e5; + line-height: 16px; /* accommodate minimum icon size */ +} +.v-webkit .v-panel-caption, +.v-webkit .v-panel-nocaption, +.v-gecko .v-panel-caption, +.v-gecko .v-panel-nocaption, +.v-ie9 .v-panel-caption, +.v-ie9 .v-panel-nocaption { + border-bottom-color: rgba(0,0,0,.08); +} +.v-panel-caption { + padding-bottom: 2px; +} +.v-panel-content, +.white .v-panel-content { + background: #fff; + border: 1px solid #dcdcdc; + border-bottom: none; + border-top: none; +} +.v-webkit .v-panel-content, +.v-gecko .v-panel-content, +.v-ie9 .v-panel-content { + border-top-color: rgba(0,0,0,.07); +} +.blue .v-panel-deco { + border-color: #92a3ac; + background: #adc2cd; +} +.v-panel-deco, +.white .v-panel-deco { + height: 1px; + border-top: 1px solid #bebebe; + background: #e2e2e2; + overflow: hidden; +} +.v-webkit .v-panel-deco, +.v-gecko .v-panel-deco, +.v-ie9 .v-panel-deco { + border-top-color: rgba(0,0,0,.1); + background: rgba(0,0,0,.08); +} +.v-panel-caption .v-errorindicator { + height: 16px; + width: 13px; + background: url(../common/icons/error.png) no-repeat 50%; + display: inline; + display: inline-block; + vertical-align: middle; +} + +/* Light style */ +.v-panel-light .v-panel-caption-light, +.v-panel-light .v-panel-nocaption-light { + border: none; +} +.v-panel-light .v-panel-content-light { + border: none; + background: transparent; +} +.v-panel-light .v-panel-deco-light { + height: 0; + border: none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/popupview/popupview.css b/WebContent/VAADIN/themes/reindeer/popupview/popupview.css deleted file mode 100644 index 8336f46505..0000000000 --- a/WebContent/VAADIN/themes/reindeer/popupview/popupview.css +++ /dev/null @@ -1,10 +0,0 @@ -.v-popupview { - color: #1b699f; -} -.v-popupview:hover { - color: #2483c4; -} -.v-popupview-popup { - background: #fff; - padding: 3px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/popupview/popupview.scss b/WebContent/VAADIN/themes/reindeer/popupview/popupview.scss new file mode 100644 index 0000000000..7e7f55fda5 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/popupview/popupview.scss @@ -0,0 +1,14 @@ +@mixin reindeer-popupview { + +.v-popupview { + color: #1b699f; +} +.v-popupview:hover { + color: #2483c4; +} +.v-popupview-popup { + background: #fff; + padding: 3px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.css b/WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.css deleted file mode 100644 index 70a42e483e..0000000000 --- a/WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.css +++ /dev/null @@ -1,10 +0,0 @@ -.v-progressindicator-wrapper { - background: #dfe2e4 url(img/base.gif) repeat-x; - border: 1px solid #bfbfbf; -} -.v-disabled .v-progressindicator-wrapper { - background-image: url(img/disabled.gif); -} -.v-progressindicator-indicator { - background: #f7f9f9 url(img/progress.png); -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.scss b/WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.scss new file mode 100644 index 0000000000..f3f3a59afb --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/progressindicator/progressindicator.scss @@ -0,0 +1,14 @@ +@mixin reindeer-progressindicator { + +.v-progressindicator-wrapper { + background: #dfe2e4 url(img/base.gif) repeat-x; + border: 1px solid #bfbfbf; +} +.v-disabled .v-progressindicator-wrapper { + background-image: url(img/disabled.gif); +} +.v-progressindicator-indicator { + background: #f7f9f9 url(img/progress.png); +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/reindeer.scss b/WebContent/VAADIN/themes/reindeer/reindeer.scss new file mode 100644 index 0000000000..6033466f63 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/reindeer.scss @@ -0,0 +1,29 @@ +// this file just defines all reindeer mixins by importing them + +// common between others for now for backwards compatibility + +@import "accordion/accordion.scss"; +// TODO this is problematic: comments get stripped out +@import "a-sprite-definitions/a-sprite-definitions.scss"; +@import "button/button.scss"; + +@import "common/common.scss"; + +@import "datefield/datefield.scss"; +@import "formlayout/formlayout.scss"; +@import "label/label.scss"; +@import "layouts/layouts.scss"; +@import "link/link.scss"; +@import "menubar/menubar.scss"; +@import "notification/notification.scss"; +@import "panel/panel.scss"; +@import "popupview/popupview.scss"; +@import "progressindicator/progressindicator.scss"; +@import "select/select.scss"; +@import "slider/slider.scss"; +@import "splitpanel/splitpanel.scss"; +@import "table/table.scss"; +@import "tabsheet/tabsheet.scss"; +@import "textfield/textfield.scss"; +@import "tree/tree.scss"; +@import "window/window.scss"; diff --git a/WebContent/VAADIN/themes/reindeer/select/select.css b/WebContent/VAADIN/themes/reindeer/select/select.css deleted file mode 100644 index 8962862702..0000000000 --- a/WebContent/VAADIN/themes/reindeer/select/select.css +++ /dev/null @@ -1,260 +0,0 @@ -.v-filterselect { - height: 24px; - background-repeat: no-repeat; - background-image: url(img/left.png); /** sprite-ref: verticals; sprite-margin-bottom: 1px */ - padding-left: 2px; - padding-right: 25px; /* Space for the button */ -} -.v-app .v-filterselect-input, -.v-window .v-filterselect-input, -.v-popupview-popup .v-filterselect-input { - background: transparent repeat-x; - background-image: url(img/center.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ - border: none; - height: 24px; -} -/* More specific selector to override padding */ -.v-app input.v-filterselect-input, -.v-window input.v-filterselect-input, -.v-popupview-popup input.v-filterselect-input { - padding: 4px 0 4px 2px; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-filterselect-prompt .v-filterselect-input { - font-style: normal; -} -.v-filterselect-input:focus { - outline: none; -} -.v-filterselect-focus { - background-image: url(img/left-focus.png); /** sprite-ref: verticals; sprite-margin-bottom: 1px */ -} -.v-filterselect-focus .v-filterselect-input { - background-image: url(img/center-focus.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-filterselect-button { - overflow: hidden; - width: 25px; - height: 24px; - background-image: url(img/right.png); /** sprite-ref: verticals ; sprite-margin-bottom: 1px */ - cursor: default; - margin-right: -25px; -} -.v-filterselect-button:hover { - background-image: url(img/right-hover.png); /** sprite-ref: verticals */ -} -.v-filterselect-button:active { - background-image: url(img/right-pressed.png); /** sprite-ref: verticals */ -} -.v-filterselect-focus .v-filterselect-button { - background-image: url(img/right-focus.png); /** sprite-ref: verticals */ -} -.v-filterselect-focus .v-filterselect-button:hover { - background-image: url(img/right-focus-hover.png); /** sprite-ref: verticals */ -} -.v-filterselect-focus .v-filterselect-button:active { - background-image: url(img/right-focus-pressed.png); /** sprite-ref: verticals */ -} -.v-disabled .v-filterselect-button:hover, -.v-readonly .v-filterselect-button:hover { - background-image: url(img/right.png); /** sprite-ref: verticals */ -} -.v-filterselect-suggestpopup { - background: #f8f8f9; - border: none; - border-radius: 3px; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - -o-border-radius: 3px; - overflow: hidden; -} -.v-filterselect-suggestmenu { - margin: 4px 0; -} -.v-filterselect-suggestmenu .gwt-MenuItem { - padding: 1px 8px; - height: 16px; - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; - cursor: default; -} -.v-ff .v-filterselect-suggestmenu .gwt-MenuItem { - height: 18px; -} -.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { - margin-right: 3px; -} -.v-filterselect-suggestmenu .gwt-MenuItem-selected { - background: transparent repeat-x; - background-image: url(../common/img/sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - color: #fff; - text-shadow: #3b5a7a 0 1px 0; -} -.v-filterselect-nextpage, -.v-filterselect-nextpage-off, -.v-filterselect-prevpage-off, -.v-filterselect-prevpage { - height: 11px; - width: 100%; - background: transparent; - margin-bottom: -4px; -} -.v-filterselect-nextpage, -.v-filterselect-nextpage-off { - margin: -4px 0 0; -} -.v-filterselect-nextpage:hover { - background-repeat: repeat-x; - background-image: url(img/page-down-hover.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-filterselect-prevpage:hover { - background-repeat: repeat-x; - background-image: url(img/page-up-hover.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-filterselect-nextpage:active { - background-repeat: repeat-x; - background-image: url(img/page-down-pressed.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-filterselect-prevpage:active { - background-repeat: repeat-x; - background-image: url(img/page-up-pressed.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-filterselect-nextpage-off span, -.v-filterselect-prevpage-off span { - display: none; -} -.v-filterselect-nextpage span, -.v-filterselect-prevpage span { - display: block; - height: 11px; - width: 100%; - overflow: hidden; - text-indent: -99999px; - background: transparent no-repeat center 3px; - background-image: url(img/arrow-down.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; -} -.v-filterselect-prevpage span { - background-image: url(img/arrow-up.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ -} -.v-filterselect-nextpage:hover span { - background-image: url(img/arrow-down-hover.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ -} -.v-filterselect-prevpage:hover span { - background-image: url(img/arrow-up-hover.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ -} -.v-filterselect-status { - text-shadow: #e9eaeb 0 1px 0; - font-size: 11px; - line-height: normal; - width: 100%; - padding: 3px 0; - height: 11px; - overflow: hidden; - background-repeat: repeat-x; - background-image: url(img/status-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - -moz-border-radius-bottomleft: 3px; - -moz-border-radius-bottomright: 3px; - -webkit-border-bottom-left-radius: 3px; - -webkit-border-bottom-right-radius: 3px; - user-select: none; - -moz-user-select: none; - -webkit-user-select: none; -} -/* IE fails to position background images properly inside table elements */ -.v-ie .v-filterselect-suggestmenu .gwt-MenuItem-selected { - background: transparent url(../common/img/sel-bg.png) repeat-x; -} -.v-ie .v-filterselect-nextpage:hover { - background: transparent url(img/page-down-hover.png) repeat-x; -} -.v-ie .v-filterselect-prevpage:hover { - background: transparent url(img/page-up-hover.png) repeat-x; -} -.v-ie .v-filterselect-prevpage span { - background: transparent url(img/arrow-up.png) no-repeat center 3px; -} -.v-ie .v-filterselect-nextpage span { - background: transparent url(img/arrow-down.png) no-repeat center 3px; -} -.v-ie .v-filterselect-prevpage:hover span { - background: transparent url(img/arrow-up-hover.png) no-repeat center 3px; -} -.v-ie .v-filterselect-nextpage:hover span { - background: transparent url(img/arrow-down-hover.png) no-repeat center 3px; -} -.v-ie .v-filterselect-status { - background: transparent url(img/status-bg.png) repeat-x; -} -/* Filterselect with icon needs a similar fix than in buttons */ -.v-filterselect .v-icon { - width: 16px; - position: relative; -} -.v-filterselect .v-icon + .v-filterselect-input { - margin-left: -16px; - padding-left: 18px; -} - - - - -/* Combobox on black background */ -.black .v-filterselect { - background-image: url(img/black/left-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.v-app .black .v-filterselect-input, -.v-window .black .v-filterselect-input, -.v-window-black .v-filterselect-input, -.v-popupview-popup .black .v-filterselect-input { - color: #c9ccce; - background-image: url(img/black/center-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-focus { - background-image: url(img/black/left-black-focus.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-focus .v-filterselect-input { - background-image: url(img/black/center-black-focus.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-button { - background-image: url(img/black/right-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-button:hover { - background-image: url(img/black/right-black-hover.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-button:active { - background-image: url(img/black/right-black-pressed.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-focus .v-filterselect-button { - background-image: url(img/black/right-black-focus.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-focus .v-filterselect-button:hover { - background-image: url(img/black/right-black-focus-hover.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-focus .v-filterselect-button:active { - background-image: url(img/black/right-black-focus-pressed.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-disabled .v-filterselect-button:hover, -.black .v-readonly .v-filterselect-button:hover { - background-image: url(img/black/right-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ -} -.black .v-filterselect-prompt .v-filterselect-input { - color: #5f6366; -} - - - -/* Native selects on black background */ -.black .v-select select, -.black .v-select-twincol select { - border-color: #38393a; - border-top-color: #2c2d2e; - border-bottom-color: #3e3f3f; - background: #151717; - color: #c9ccce; -} diff --git a/WebContent/VAADIN/themes/reindeer/select/select.scss b/WebContent/VAADIN/themes/reindeer/select/select.scss new file mode 100644 index 0000000000..4a8d07fd91 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/select/select.scss @@ -0,0 +1,264 @@ +@mixin reindeer-select { + +.v-filterselect { + height: 24px; + background-repeat: no-repeat; + background-image: url(img/left.png); /** sprite-ref: verticals; sprite-margin-bottom: 1px */ + padding-left: 2px; + padding-right: 25px; /* Space for the button */ +} +.v-app .v-filterselect-input, +.v-window .v-filterselect-input, +.v-popupview-popup .v-filterselect-input { + background: transparent repeat-x; + background-image: url(img/center.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ + border: none; + height: 24px; +} +/* More specific selector to override padding */ +.v-app input.v-filterselect-input, +.v-window input.v-filterselect-input, +.v-popupview-popup input.v-filterselect-input { + padding: 4px 0 4px 2px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-filterselect-prompt .v-filterselect-input { + font-style: normal; +} +.v-filterselect-input:focus { + outline: none; +} +.v-filterselect-focus { + background-image: url(img/left-focus.png); /** sprite-ref: verticals; sprite-margin-bottom: 1px */ +} +.v-filterselect-focus .v-filterselect-input { + background-image: url(img/center-focus.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-filterselect-button { + overflow: hidden; + width: 25px; + height: 24px; + background-image: url(img/right.png); /** sprite-ref: verticals ; sprite-margin-bottom: 1px */ + cursor: default; + margin-right: -25px; +} +.v-filterselect-button:hover { + background-image: url(img/right-hover.png); /** sprite-ref: verticals */ +} +.v-filterselect-button:active { + background-image: url(img/right-pressed.png); /** sprite-ref: verticals */ +} +.v-filterselect-focus .v-filterselect-button { + background-image: url(img/right-focus.png); /** sprite-ref: verticals */ +} +.v-filterselect-focus .v-filterselect-button:hover { + background-image: url(img/right-focus-hover.png); /** sprite-ref: verticals */ +} +.v-filterselect-focus .v-filterselect-button:active { + background-image: url(img/right-focus-pressed.png); /** sprite-ref: verticals */ +} +.v-disabled .v-filterselect-button:hover, +.v-readonly .v-filterselect-button:hover { + background-image: url(img/right.png); /** sprite-ref: verticals */ +} +.v-filterselect-suggestpopup { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; +} +.v-filterselect-suggestmenu { + margin: 4px 0; +} +.v-filterselect-suggestmenu .gwt-MenuItem { + padding: 1px 8px; + height: 16px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + cursor: default; +} +.v-ff .v-filterselect-suggestmenu .gwt-MenuItem { + height: 18px; +} +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + margin-right: 3px; +} +.v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: transparent repeat-x; + background-image: url(../common/img/sel-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + color: #fff; + text-shadow: #3b5a7a 0 1px 0; +} +.v-filterselect-nextpage, +.v-filterselect-nextpage-off, +.v-filterselect-prevpage-off, +.v-filterselect-prevpage { + height: 11px; + width: 100%; + background: transparent; + margin-bottom: -4px; +} +.v-filterselect-nextpage, +.v-filterselect-nextpage-off { + margin: -4px 0 0; +} +.v-filterselect-nextpage:hover { + background-repeat: repeat-x; + background-image: url(img/page-down-hover.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-filterselect-prevpage:hover { + background-repeat: repeat-x; + background-image: url(img/page-up-hover.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-filterselect-nextpage:active { + background-repeat: repeat-x; + background-image: url(img/page-down-pressed.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-filterselect-prevpage:active { + background-repeat: repeat-x; + background-image: url(img/page-up-pressed.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-filterselect-nextpage-off span, +.v-filterselect-prevpage-off span { + display: none; +} +.v-filterselect-nextpage span, +.v-filterselect-prevpage span { + display: block; + height: 11px; + width: 100%; + overflow: hidden; + text-indent: -99999px; + background: transparent no-repeat center 3px; + background-image: url(img/arrow-down.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} +.v-filterselect-prevpage span { + background-image: url(img/arrow-up.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ +} +.v-filterselect-nextpage:hover span { + background-image: url(img/arrow-down-hover.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ +} +.v-filterselect-prevpage:hover span { + background-image: url(img/arrow-up-hover.png); /** sprite-ref: verticals; sprite-margin-top: 3px; sprite-margin-bottom: 3px; sprite-alignment: center */ +} +.v-filterselect-status { + text-shadow: #e9eaeb 0 1px 0; + font-size: 11px; + line-height: normal; + width: 100%; + padding: 3px 0; + height: 11px; + overflow: hidden; + background-repeat: repeat-x; + background-image: url(img/status-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} +/* IE fails to position background images properly inside table elements */ +.v-ie .v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: transparent url(../common/img/sel-bg.png) repeat-x; +} +.v-ie .v-filterselect-nextpage:hover { + background: transparent url(img/page-down-hover.png) repeat-x; +} +.v-ie .v-filterselect-prevpage:hover { + background: transparent url(img/page-up-hover.png) repeat-x; +} +.v-ie .v-filterselect-prevpage span { + background: transparent url(img/arrow-up.png) no-repeat center 3px; +} +.v-ie .v-filterselect-nextpage span { + background: transparent url(img/arrow-down.png) no-repeat center 3px; +} +.v-ie .v-filterselect-prevpage:hover span { + background: transparent url(img/arrow-up-hover.png) no-repeat center 3px; +} +.v-ie .v-filterselect-nextpage:hover span { + background: transparent url(img/arrow-down-hover.png) no-repeat center 3px; +} +.v-ie .v-filterselect-status { + background: transparent url(img/status-bg.png) repeat-x; +} +/* Filterselect with icon needs a similar fix than in buttons */ +.v-filterselect .v-icon { + width: 16px; + position: relative; +} +.v-filterselect .v-icon + .v-filterselect-input { + margin-left: -16px; + padding-left: 18px; +} + + + + +/* Combobox on black background */ +.black .v-filterselect { + background-image: url(img/black/left-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.v-app .black .v-filterselect-input, +.v-window .black .v-filterselect-input, +.v-window-black .v-filterselect-input, +.v-popupview-popup .black .v-filterselect-input { + color: #c9ccce; + background-image: url(img/black/center-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-focus { + background-image: url(img/black/left-black-focus.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-focus .v-filterselect-input { + background-image: url(img/black/center-black-focus.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-button { + background-image: url(img/black/right-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-button:hover { + background-image: url(img/black/right-black-hover.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-button:active { + background-image: url(img/black/right-black-pressed.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-focus .v-filterselect-button { + background-image: url(img/black/right-black-focus.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-focus .v-filterselect-button:hover { + background-image: url(img/black/right-black-focus-hover.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-focus .v-filterselect-button:active { + background-image: url(img/black/right-black-focus-pressed.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-disabled .v-filterselect-button:hover, +.black .v-readonly .v-filterselect-button:hover { + background-image: url(img/black/right-black.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 1px */ +} +.black .v-filterselect-prompt .v-filterselect-input { + color: #5f6366; +} + + + +/* Native selects on black background */ +.black .v-select select, +.black .v-select-twincol select { + border-color: #38393a; + border-top-color: #2c2d2e; + border-bottom-color: #3e3f3f; + background: #151717; + color: #c9ccce; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/slider/slider.css b/WebContent/VAADIN/themes/reindeer/slider/slider.css deleted file mode 100644 index cb5a0f7dbe..0000000000 --- a/WebContent/VAADIN/themes/reindeer/slider/slider.css +++ /dev/null @@ -1,41 +0,0 @@ -.v-slider { - border-top: 1px solid #9a9c9e; - border-bottom: 1px solid #bdbfc1; - margin: 4px 0; -} -.v-slider-base { - height: 1px; - background: #e0e2e2; - border-top: 1px solid #adb0b1; - border-left: 1px solid #a0a3a6; - border-right: 1px solid #a0a3a6; -} -.v-slider-handle { - background: transparent; - background-image: url(img/knob.png); /** sprite-ref: verticals */ - width: 10px; - height: 10px; - margin-top: -5px; -} -.v-slider-handle-active { - background-image: url(img/knob-pressed.png); /** sprite-ref: verticals */ -} -.v-slider-vertical { - width: 2px; - margin: 0 5px; - border: none; - border-left: 1px solid #9a9c9e; - border-right: 1px solid #bdbfc1; -} -.v-slider-vertical .v-slider-base { - width: 2px; - border-left: 1px solid #adb0b1; - border-right: none; - border-top: 1px solid #adb0b1; - border-bottom: 1px solid #adb0b1; -} -.v-slider-vertical .v-slider-handle { - width: 10px; - height: 10px; - margin-left: -5px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/slider/slider.scss b/WebContent/VAADIN/themes/reindeer/slider/slider.scss new file mode 100644 index 0000000000..047237d262 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/slider/slider.scss @@ -0,0 +1,45 @@ +@mixin reindeer-slider { + +.v-slider { + border-top: 1px solid #9a9c9e; + border-bottom: 1px solid #bdbfc1; + margin: 4px 0; +} +.v-slider-base { + height: 1px; + background: #e0e2e2; + border-top: 1px solid #adb0b1; + border-left: 1px solid #a0a3a6; + border-right: 1px solid #a0a3a6; +} +.v-slider-handle { + background: transparent; + background-image: url(img/knob.png); /** sprite-ref: verticals */ + width: 10px; + height: 10px; + margin-top: -5px; +} +.v-slider-handle-active { + background-image: url(img/knob-pressed.png); /** sprite-ref: verticals */ +} +.v-slider-vertical { + width: 2px; + margin: 0 5px; + border: none; + border-left: 1px solid #9a9c9e; + border-right: 1px solid #bdbfc1; +} +.v-slider-vertical .v-slider-base { + width: 2px; + border-left: 1px solid #adb0b1; + border-right: none; + border-top: 1px solid #adb0b1; + border-bottom: 1px solid #adb0b1; +} +.v-slider-vertical .v-slider-handle { + width: 10px; + height: 10px; + margin-left: -5px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.css b/WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.css deleted file mode 100644 index ac27629187..0000000000 --- a/WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.css +++ /dev/null @@ -1,66 +0,0 @@ -.v-splitpanel-hsplitter, -.v-splitpanel-hsplitter-locked { - width: 7px; - background-repeat: repeat-y; - background-image: url(img/hor-bg.png); /** sprite-ref: horizontals; sprite-alignment: repeat */ -} -.v-splitpanel-hsplitter div { - width: 7px; - height: 100%; /* for Opera */ - background: transparent; - background-repeat: no-repeat; - background-position: 50%; - background-image: url(img/hor-handle.png); /** sprite-ref: horizontals; sprite-alignment: center */ -} -.v-splitpanel-vsplitter, -.v-splitpanel-vsplitter-locked { - height: 7px; - background-repeat: repeat-x; - background-image: url(img/ver-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-splitpanel-vsplitter div { - height: 7px; - background: transparent; - background-repeat: no-repeat; - background-position: 50%; - background-image: url(img/ver-handle.png); /** sprite-ref: verticals; sprite-alignment: center */ -} - - -/* Splitpanels on blue background */ -.blue .v-splitpanel-hsplitter-small, -.blue .v-splitpanel-hsplitter-small-locked { - background: #7c8a91; -} - -/* Splitpanels on black background */ -.black .v-splitpanel-hsplitter-small, -.black .v-splitpanel-hsplitter-small-locked { - background: #4e5253; -} - -/* Small style */ -.v-splitpanel-hsplitter-small, -.v-splitpanel-hsplitter-small-locked, -.white .v-splitpanel-hsplitter-small, -.white .v-splitpanel-hsplitter-small-locked { - width: 1px; - background: #949698; -} -.v-splitpanel-vsplitter-small, -.v-splitpanel-vsplitter-small-locked, -.white .v-splitpanel-vsplitter-small, -.white .v-splitpanel-vsplitter-small-locked { - height: 1px; - background: #949698; -} -.v-splitpanel-hsplitter-small div { - width: 5px; - margin-left: -2px; - background: transparent; -} -.v-splitpanel-vsplitter-small div { - height: 5px; - margin-top: -2px; - background: transparent; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.scss b/WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.scss new file mode 100644 index 0000000000..07a38891f5 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/splitpanel/splitpanel.scss @@ -0,0 +1,70 @@ +@mixin reindeer-splitpanel { + +.v-splitpanel-hsplitter, +.v-splitpanel-hsplitter-locked { + width: 7px; + background-repeat: repeat-y; + background-image: url(img/hor-bg.png); /** sprite-ref: horizontals; sprite-alignment: repeat */ +} +.v-splitpanel-hsplitter div { + width: 7px; + height: 100%; /* for Opera */ + background: transparent; + background-repeat: no-repeat; + background-position: 50%; + background-image: url(img/hor-handle.png); /** sprite-ref: horizontals; sprite-alignment: center */ +} +.v-splitpanel-vsplitter, +.v-splitpanel-vsplitter-locked { + height: 7px; + background-repeat: repeat-x; + background-image: url(img/ver-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-splitpanel-vsplitter div { + height: 7px; + background: transparent; + background-repeat: no-repeat; + background-position: 50%; + background-image: url(img/ver-handle.png); /** sprite-ref: verticals; sprite-alignment: center */ +} + + +/* Splitpanels on blue background */ +.blue .v-splitpanel-hsplitter-small, +.blue .v-splitpanel-hsplitter-small-locked { + background: #7c8a91; +} + +/* Splitpanels on black background */ +.black .v-splitpanel-hsplitter-small, +.black .v-splitpanel-hsplitter-small-locked { + background: #4e5253; +} + +/* Small style */ +.v-splitpanel-hsplitter-small, +.v-splitpanel-hsplitter-small-locked, +.white .v-splitpanel-hsplitter-small, +.white .v-splitpanel-hsplitter-small-locked { + width: 1px; + background: #949698; +} +.v-splitpanel-vsplitter-small, +.v-splitpanel-vsplitter-small-locked, +.white .v-splitpanel-vsplitter-small, +.white .v-splitpanel-vsplitter-small-locked { + height: 1px; + background: #949698; +} +.v-splitpanel-hsplitter-small div { + width: 5px; + margin-left: -2px; + background: transparent; +} +.v-splitpanel-vsplitter-small div { + height: 5px; + margin-top: -2px; + background: transparent; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/styles.scss b/WebContent/VAADIN/themes/reindeer/styles.scss new file mode 100644 index 0000000000..51daace9d3 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/styles.scss @@ -0,0 +1,32 @@ +// this file actually attaches all reindeer mixins to a parent style + +@import "../base/styles.scss"; +@import "reindeer.scss"; + +// .v-theme-reindeer { + @include reindeer-accordion; + // TODO this is problematic: comments get stripped out + // @include a-sprite-definitions; + @include reindeer-button; + + @include reindeer-common; + + @include reindeer-datefield; + @include reindeer-formlayout; + @include reindeer-label; + @include reindeer-layouts; + @include reindeer-link; + @include reindeer-menubar; + @include reindeer-notification; + @include reindeer-panel; + @include reindeer-popupview; + @include reindeer-progressindicator; + @include reindeer-select; + @include reindeer-slider; + @include reindeer-splitpanel; + @include reindeer-table; + @include reindeer-tabsheet; + @include reindeer-textfield; + @include reindeer-tree; + @include reindeer-window; +// } diff --git a/WebContent/VAADIN/themes/reindeer/table/table.css b/WebContent/VAADIN/themes/reindeer/table/table.css deleted file mode 100644 index 5d67cfe564..0000000000 --- a/WebContent/VAADIN/themes/reindeer/table/table.css +++ /dev/null @@ -1,289 +0,0 @@ -/* Table on blue background */ -.blue .v-table-header-wrap { - border-color: #92a2aa; -} -.blue .v-table-body { - border-color: #92a2aa; - border-top-color: #c2c3c4; -} - -/* Default & white style */ -.v-table-header-wrap, -.white .v-table-header-wrap, -.v-table-footer-wrap, -.white .v-table-footer-wrap, -.v-table-header-drag { - border-color: #c2c3c4; - background: transparent repeat-x; - background-image: url(img/header-bg-light.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - height: 20px; - text-transform: uppercase; - font-size: 10px; - font-weight: bold; - color: #222; - text-shadow: #f3f5f8 0 1px 0; - line-height: normal; -} - -.v-table-footer-wrap, -.white .v-table-footer-wrap { - text-transform: none; - font-size: 12px; - font-weight: normal; -} - -.v-table-footer td, -.white .v-table-footer td { - border-color: #c2c3c4; -} - -.v-table-footer-container { - padding-right: 7px; -} - - -.v-table-header, -.v-table-footer, -.v-table-footer table { - height: 20px; -} - -.v-table-caption-container, -.v-table-header-drag { - padding-top: 4px; - padding-right: 4px; -} -.v-table-caption-container .v-icon, -.v-table-header-drag .v-icon { - height: 16px; - margin: -4px 3px 0 0; - vertical-align: middle; -} -.v-ie .v-table-caption-container .v-icon, -.v-ie .v-table-header-drag .v-icon { - margin-top: -3px; -} -.v-table-resizer { - height: 20px; - width: 2px; - background: transparent; - border-right: 1px solid #c2c3c4; -} - -.v-table-sort-indicator { - background: transparent; - width: 0px; - height: 20px; -} - -.v-table-header-cell-asc .v-table-sort-indicator { - background: transparent no-repeat right 7px; - background-image: url(img/asc-light.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ - width: 16px; -} -.v-table-header-cell-desc .v-table-sort-indicator { - background: transparent no-repeat right 7px; - background-image: url(img/desc-light.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ - width: 16px; -} -.v-table-body, -.white .v-table-body { - border-color: #c2c3c4; - background: #fff; -} -.v-table-cell-content { - padding-top: 0; - border-right-color: #d3d4d5; - vertical-align: top; -} -.v-table-cell-wrapper { - padding-top: 3px; - padding-bottom: 3px; -} -.v-table-row-odd { - background: #eff0f1; -} -.v-table-generated-row { - background: #dcdee0; - text-transform: uppercase; - font-size: 10px; - font-weight: bold; - color: #222; - text-shadow: #f3f5f8 0 1px 0; - line-height: normal; -} -.v-table-generated-row .v-table-cell-wrapper { - padding-top: 4px; - padding-bottom: 5px; -} -.v-table-cell-content:last-child { - border-right-color: transparent; -} -.v-table .v-selected, -.black .v-table .v-selected { - background: #4d749f url(../common/img/sel-bg.png) repeat-x; /* We can't include this in the sprite, since we don't know the row height */ - color: #fff; - text-shadow: #3b5a7a 0 1px 0; -} -.v-table .v-selected .v-table-cell-content { - border-right-color: #466c90; -} -.v-table-column-selector { - width: 16px; - height: 20px; - margin-top: -20px; - background: transparent no-repeat; - background-image: url(img/col-sel-light.png); /** sprite-ref: verticals */ -} -.v-table-column-selector:active { - background-image: url(img/col-sel-light-pressed.png); /** sprite-ref: verticals */ -} -.v-table-focus-slot-left { - border-left: 1px solid #222; - margin-bottom: -20px; - width: auto; -} -.v-table-focus-slot-right { - border-right-color: #222; - margin-right: 0; -} -.v-table-header-drag { - padding-left: 6px; - height: 16px; -} -.v-table-header-drag img { - height: 16px; - margin: -3px 3px 0 0; -} -.v-table-scrollposition { - width: auto; - background: transparent; - border: none; -} -.v-table-scrollposition span { - background: transparent repeat-x; - background-image: url(img/scroll-indic-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - border: 1px solid #939494; - border: none; - border-radius-bottomleft: 4px; - border-radius-bottomright: 4px; - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - height: 13px; - padding: 4px 30px; - white-space: nowrap; - color: #222; - text-shadow: #fff 0 1px 0; - position: relative; - top: 1px; - -webkit-box-shadow: rgba(0,0,0,.5) 0 1px 2px; - -moz-box-shadow: rgba(0,0,0,.5) 0 1px 2px; -} -.v-table-borderless .v-table-scrollposition span { - top: 0; -} -/* row in column selector */ -.v-contextmenu .v-on, -.v-contextmenu .v-off { - display: inline-block; - zoom: 1; - background: transparent no-repeat 0 4px; - background-image: url(../common/icons/bullet.png); /** sprite-ref: verticals; sprite-margin-top: 4px; sprite-margin-bottom: 4px */ - padding-left: 12px; - padding-right: 4px; -} -.v-contextmenu .v-off { - background-image: none; - color: #666; -} -.v-contextmenu .gwt-MenuItem-selected .v-on { - background-image: url(../common/icons/bullet-white.png); /** sprite-ref: verticals; sprite-margin-top: 4px; sprite-margin-bottom: 5px */ -} - - -/* Strong style */ -.v-table-strong .v-table-header-wrap, -.v-table-strong .v-table-header-drag { - border-color: #2b3033; - border-top-color: #2b3033; - background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - color: #e7e9ea; - text-shadow: #000 0 -1px 0; -} -.v-table-strong .v-table-body { - border-top-color: #2b3033; -} -.v-table-strong .v-table-resizer { - border-right-color: #1c1f21; -} -.v-table-strong .v-table-header-cell-asc .v-table-sort-indicator { - background-image: url(img/asc.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ -} -.v-table-strong .v-table-header-cell-desc .v-table-sort-indicator { - background-image: url(img/desc.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ -} -.v-table-strong .v-table-column-selector { - background-image: url(img/col-sel.png); /** sprite-ref: verticals */ -} -.v-table-strong .v-table-column-selector:active { - background-image: url(img/col-sel-pressed.png); /** sprite-ref: verticals */ -} -.v-table-strong .v-table-focus-slot-left, -.v-table-strong .v-table-focus-slot-right { - border-color: #9ca1a5; -} - - -/* Table on black background (normal style) */ -.black .v-table-header-wrap, -.black .v-table-header-drag { - border-color: #252729; - background-image: url(img/header-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ - color: #e7eaee; - text-shadow: #000 0 -1px 0; -} -.black .v-table-resizer { - border-right-color: #252729; -} -.black .v-table-header-cell-asc .v-table-sort-indicator { - background-image: url(img/asc.png); /** sprite-ref: black-verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ -} -.black .v-table-header-cell-desc .v-table-sort-indicator { - background-image: url(img/desc.png); /** sprite-ref: black-verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ -} -.black .v-table-column-selector { - background-image: url(img/col-sel-black.png); /** sprite-ref: black-verticals */ -} -.black .v-table-column-selector:active { - background-image: url(img/col-sel-black-pressed.png); /** sprite-ref: black-verticals */ -} -.black .v-table-focus-slot-left, -.black .v-table-focus-slot-right { - border-color: #9ca1a5; -} -.black .v-table-body { - border-color: #252729; - background: transparent; -} -.black .v-table-cell-content { - border-right-color: #252729; - border-bottom: 1px solid #252729; -} -.black .v-table-cell-wrapper { - padding-bottom: 2px; -} -.black .v-table-row-odd { - background: transparent; -} -/* Selection background-color combined with the default (white) style selector, so we don't have to duplicate the sprite image in the final sprite collection */ -.black .v-table .v-selected .v-table-cell-content { - border-bottom: 1px solid #4d749f; -} - -/* Borderless style */ -.v-table-borderless .v-table-header-wrap, -.v-table-borderless .v-table-body { - border: none; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/table/table.scss b/WebContent/VAADIN/themes/reindeer/table/table.scss new file mode 100644 index 0000000000..cb190e1f30 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/table/table.scss @@ -0,0 +1,293 @@ +@mixin reindeer-table { + +/* Table on blue background */ +.blue .v-table-header-wrap { + border-color: #92a2aa; +} +.blue .v-table-body { + border-color: #92a2aa; + border-top-color: #c2c3c4; +} + +/* Default & white style */ +.v-table-header-wrap, +.white .v-table-header-wrap, +.v-table-footer-wrap, +.white .v-table-footer-wrap, +.v-table-header-drag { + border-color: #c2c3c4; + background: transparent repeat-x; + background-image: url(img/header-bg-light.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + height: 20px; + text-transform: uppercase; + font-size: 10px; + font-weight: bold; + color: #222; + text-shadow: #f3f5f8 0 1px 0; + line-height: normal; +} + +.v-table-footer-wrap, +.white .v-table-footer-wrap { + text-transform: none; + font-size: 12px; + font-weight: normal; +} + +.v-table-footer td, +.white .v-table-footer td { + border-color: #c2c3c4; +} + +.v-table-footer-container { + padding-right: 7px; +} + + +.v-table-header, +.v-table-footer, +.v-table-footer table { + height: 20px; +} + +.v-table-caption-container, +.v-table-header-drag { + padding-top: 4px; + padding-right: 4px; +} +.v-table-caption-container .v-icon, +.v-table-header-drag .v-icon { + height: 16px; + margin: -4px 3px 0 0; + vertical-align: middle; +} +.v-ie .v-table-caption-container .v-icon, +.v-ie .v-table-header-drag .v-icon { + margin-top: -3px; +} +.v-table-resizer { + height: 20px; + width: 2px; + background: transparent; + border-right: 1px solid #c2c3c4; +} + +.v-table-sort-indicator { + background: transparent; + width: 0px; + height: 20px; +} + +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent no-repeat right 7px; + background-image: url(img/asc-light.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ + width: 16px; +} +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent no-repeat right 7px; + background-image: url(img/desc-light.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ + width: 16px; +} +.v-table-body, +.white .v-table-body { + border-color: #c2c3c4; + background: #fff; +} +.v-table-cell-content { + padding-top: 0; + border-right-color: #d3d4d5; + vertical-align: top; +} +.v-table-cell-wrapper { + padding-top: 3px; + padding-bottom: 3px; +} +.v-table-row-odd { + background: #eff0f1; +} +.v-table-generated-row { + background: #dcdee0; + text-transform: uppercase; + font-size: 10px; + font-weight: bold; + color: #222; + text-shadow: #f3f5f8 0 1px 0; + line-height: normal; +} +.v-table-generated-row .v-table-cell-wrapper { + padding-top: 4px; + padding-bottom: 5px; +} +.v-table-cell-content:last-child { + border-right-color: transparent; +} +.v-table .v-selected, +.black .v-table .v-selected { + background: #4d749f url(../common/img/sel-bg.png) repeat-x; /* We can't include this in the sprite, since we don't know the row height */ + color: #fff; + text-shadow: #3b5a7a 0 1px 0; +} +.v-table .v-selected .v-table-cell-content { + border-right-color: #466c90; +} +.v-table-column-selector { + width: 16px; + height: 20px; + margin-top: -20px; + background: transparent no-repeat; + background-image: url(img/col-sel-light.png); /** sprite-ref: verticals */ +} +.v-table-column-selector:active { + background-image: url(img/col-sel-light-pressed.png); /** sprite-ref: verticals */ +} +.v-table-focus-slot-left { + border-left: 1px solid #222; + margin-bottom: -20px; + width: auto; +} +.v-table-focus-slot-right { + border-right-color: #222; + margin-right: 0; +} +.v-table-header-drag { + padding-left: 6px; + height: 16px; +} +.v-table-header-drag img { + height: 16px; + margin: -3px 3px 0 0; +} +.v-table-scrollposition { + width: auto; + background: transparent; + border: none; +} +.v-table-scrollposition span { + background: transparent repeat-x; + background-image: url(img/scroll-indic-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + border: 1px solid #939494; + border: none; + border-radius-bottomleft: 4px; + border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + height: 13px; + padding: 4px 30px; + white-space: nowrap; + color: #222; + text-shadow: #fff 0 1px 0; + position: relative; + top: 1px; + -webkit-box-shadow: rgba(0,0,0,.5) 0 1px 2px; + -moz-box-shadow: rgba(0,0,0,.5) 0 1px 2px; +} +.v-table-borderless .v-table-scrollposition span { + top: 0; +} +/* row in column selector */ +.v-contextmenu .v-on, +.v-contextmenu .v-off { + display: inline-block; + zoom: 1; + background: transparent no-repeat 0 4px; + background-image: url(../common/icons/bullet.png); /** sprite-ref: verticals; sprite-margin-top: 4px; sprite-margin-bottom: 4px */ + padding-left: 12px; + padding-right: 4px; +} +.v-contextmenu .v-off { + background-image: none; + color: #666; +} +.v-contextmenu .gwt-MenuItem-selected .v-on { + background-image: url(../common/icons/bullet-white.png); /** sprite-ref: verticals; sprite-margin-top: 4px; sprite-margin-bottom: 5px */ +} + + +/* Strong style */ +.v-table-strong .v-table-header-wrap, +.v-table-strong .v-table-header-drag { + border-color: #2b3033; + border-top-color: #2b3033; + background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + color: #e7e9ea; + text-shadow: #000 0 -1px 0; +} +.v-table-strong .v-table-body { + border-top-color: #2b3033; +} +.v-table-strong .v-table-resizer { + border-right-color: #1c1f21; +} +.v-table-strong .v-table-header-cell-asc .v-table-sort-indicator { + background-image: url(img/asc.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ +} +.v-table-strong .v-table-header-cell-desc .v-table-sort-indicator { + background-image: url(img/desc.png); /** sprite-ref: verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ +} +.v-table-strong .v-table-column-selector { + background-image: url(img/col-sel.png); /** sprite-ref: verticals */ +} +.v-table-strong .v-table-column-selector:active { + background-image: url(img/col-sel-pressed.png); /** sprite-ref: verticals */ +} +.v-table-strong .v-table-focus-slot-left, +.v-table-strong .v-table-focus-slot-right { + border-color: #9ca1a5; +} + + +/* Table on black background (normal style) */ +.black .v-table-header-wrap, +.black .v-table-header-drag { + border-color: #252729; + background-image: url(img/header-bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ + color: #e7eaee; + text-shadow: #000 0 -1px 0; +} +.black .v-table-resizer { + border-right-color: #252729; +} +.black .v-table-header-cell-asc .v-table-sort-indicator { + background-image: url(img/asc.png); /** sprite-ref: black-verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ +} +.black .v-table-header-cell-desc .v-table-sort-indicator { + background-image: url(img/desc.png); /** sprite-ref: black-verticals; sprite-alignment: right; sprite-margin-top: 7px; sprite-margin-bottom: 6px; sprite-margin-right: 6px; */ +} +.black .v-table-column-selector { + background-image: url(img/col-sel-black.png); /** sprite-ref: black-verticals */ +} +.black .v-table-column-selector:active { + background-image: url(img/col-sel-black-pressed.png); /** sprite-ref: black-verticals */ +} +.black .v-table-focus-slot-left, +.black .v-table-focus-slot-right { + border-color: #9ca1a5; +} +.black .v-table-body { + border-color: #252729; + background: transparent; +} +.black .v-table-cell-content { + border-right-color: #252729; + border-bottom: 1px solid #252729; +} +.black .v-table-cell-wrapper { + padding-bottom: 2px; +} +.black .v-table-row-odd { + background: transparent; +} +/* Selection background-color combined with the default (white) style selector, so we don't have to duplicate the sprite image in the final sprite collection */ +.black .v-table .v-selected .v-table-cell-content { + border-bottom: 1px solid #4d749f; +} + +/* Borderless style */ +.v-table-borderless .v-table-header-wrap, +.v-table-borderless .v-table-body { + border: none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.css deleted file mode 100644 index e9325404da..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.css +++ /dev/null @@ -1,20 +0,0 @@ -.v-tabsheet-borderless .v-tabsheet-tabitemcell-first { - padding-left: 7px; - background: url(img/framed/tab-first-left.png) no-repeat -3px 0; -} -.v-tabsheet-borderless .v-tabsheet-tabitemcell-selected-first { - background: url(img/framed/tab-first-left-sel.png) no-repeat -3px 0; -} -.v-tabsheet-borderless .v-tabsheet-spacertd div { - margin-right: 0; -} -.v-tabsheet-borderless .v-tabsheet-spacertd { - background: transparent; -} -.v-tabsheet-borderless .v-tabsheet-content { - border: none; -} -.v-tabsheet-borderless .v-tabsheet-deco { - height: 0; - border-top: none; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.scss new file mode 100644 index 0000000000..1efdab68af --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-borderless-style.scss @@ -0,0 +1,24 @@ +@mixin reindeer-tabsheet-borderless-style { + +.v-tabsheet-borderless .v-tabsheet-tabitemcell-first { + padding-left: 7px; + background: url(img/framed/tab-first-left.png) no-repeat -3px 0; +} +.v-tabsheet-borderless .v-tabsheet-tabitemcell-selected-first { + background: url(img/framed/tab-first-left-sel.png) no-repeat -3px 0; +} +.v-tabsheet-borderless .v-tabsheet-spacertd div { + margin-right: 0; +} +.v-tabsheet-borderless .v-tabsheet-spacertd { + background: transparent; +} +.v-tabsheet-borderless .v-tabsheet-content { + border: none; +} +.v-tabsheet-borderless .v-tabsheet-deco { + height: 0; + border-top: none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.css deleted file mode 100644 index 40b75c59b3..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.css +++ /dev/null @@ -1,6 +0,0 @@ -.v-tabsheet-tabs-hover-closable .v-tabsheet-caption-close { - visibility: hidden; -} -.v-tabsheet-tabs-hover-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { - visibility: visible; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.scss new file mode 100644 index 0000000000..dda381b1b0 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-hover-closable-style.scss @@ -0,0 +1,10 @@ +@mixin reindeer-tabsheet-hover-closable-style { + +.v-tabsheet-tabs-hover-closable .v-tabsheet-caption-close { + visibility: hidden; +} +.v-tabsheet-tabs-hover-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { + visibility: visible; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.css deleted file mode 100644 index dfa83d7088..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.css +++ /dev/null @@ -1,145 +0,0 @@ -/** - * Tabsheet "minimal" style -------------- - */ - -/* Minimal tabsheet on blue background */ -.blue .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, -.blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, -.blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { - border-color: #7c8a91; -} -.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { - color: #7c8a91; -} -.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { - color: #BCD3DE; - background: #778d98; -} -.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { - background: #4f6874; -} - -/* Default & white styles */ -.v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, -.white .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div { - border-bottom: 1px solid #bfbfbf; - height: auto; - background: transparent; -} -.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell, -.v-tabsheet-tabs-minimal .v-tabsheet-spacertd { - height: auto; - background: transparent; - padding-left: 0; -} -.v-tabsheet-tabs-minimal .v-tabsheet-tabitem, -.white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem { - border: none; - border-bottom: 1px solid #bfbfbf; - color: #4d748f; - padding: 0; - height: auto; - background: transparent; - text-shadow: none; -} -.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption { - padding: 5px 16px; - height: auto; - background: transparent; -} -.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell-selected { - background: transparent; -} -.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected, -.white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { - background: transparent; - border: 1px solid #bfbfbf; - border-bottom: none; - color: #222; -} -.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption { - background: transparent; - padding: 4px 15px 6px 15px; -} -.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption-closable, -.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption-closable { - padding-right: 6px; -} -.v-tabsheet-content-minimal, -.white .v-tabsheet-content-minimal { - border: none; -} -.v-tabsheet-content-minimal .v-tabsheet-tabsheetpanel { - background: transparent; -} -.v-tabsheet-deco-minimal, -.white .v-tabsheet-deco-minimal { - height: 0; - border: none; -} -.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller { - margin-top: -20px; - height: 17px; - padding: 0; - border: none; - background: transparent; -} -.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller button { - margin-top: 0; -} -.v-tabsheet-tabs-minimal .v-tabsheet-caption-close, -.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, -.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { - text-indent: 0; - background: transparent; - margin-left: 3px; - margin-right: -3px; - padding: 0; - color: #999; - width: 14px; - height: 14px; - line-height: 14px; - -webkit-border-radius: 7px; - -moz-border-radius: 7px; -} -.v-tabsheet-tabs-minimal .v-tabsheet-caption-close { - margin-top: 1px; -} -.v-ff .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { - margin-top: -15px; -} -.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, -.white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { - color: #fff; - background: #aaa; -} -.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active, -.white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { - background: #777; -} - -/* Minimal tabsheet on black background */ -.black .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, -.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, -.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { - border-color: #3e4044; - color: #6a7f89; -} -.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { - color: #c9ccce; -} -.black .v-tabsheet-content-minimal, -.black .v-tabsheet-content-bar { - color: #c9ccce; - text-shadow: #000 0 0 1px; -} -.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { - color: #72787c; -} -.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { - color: #1d2021; - background: #4d5154; -} -.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { - background: #626669; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.scss new file mode 100644 index 0000000000..608aae55cb --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-minimal-style.scss @@ -0,0 +1,149 @@ +@mixin reindeer-tabsheet-minimal-style { + +/** + * Tabsheet "minimal" style -------------- + */ + +/* Minimal tabsheet on blue background */ +.blue .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, +.blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, +.blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + border-color: #7c8a91; +} +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + color: #7c8a91; +} +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #BCD3DE; + background: #778d98; +} +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #4f6874; +} + +/* Default & white styles */ +.v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, +.white .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div { + border-bottom: 1px solid #bfbfbf; + height: auto; + background: transparent; +} +.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell, +.v-tabsheet-tabs-minimal .v-tabsheet-spacertd { + height: auto; + background: transparent; + padding-left: 0; +} +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem, +.white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem { + border: none; + border-bottom: 1px solid #bfbfbf; + color: #4d748f; + padding: 0; + height: auto; + background: transparent; + text-shadow: none; +} +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption { + padding: 5px 16px; + height: auto; + background: transparent; +} +.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell-selected { + background: transparent; +} +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected, +.white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + background: transparent; + border: 1px solid #bfbfbf; + border-bottom: none; + color: #222; +} +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption { + background: transparent; + padding: 4px 15px 6px 15px; +} +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption-closable, +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption-closable { + padding-right: 6px; +} +.v-tabsheet-content-minimal, +.white .v-tabsheet-content-minimal { + border: none; +} +.v-tabsheet-content-minimal .v-tabsheet-tabsheetpanel { + background: transparent; +} +.v-tabsheet-deco-minimal, +.white .v-tabsheet-deco-minimal { + height: 0; + border: none; +} +.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller { + margin-top: -20px; + height: 17px; + padding: 0; + border: none; + background: transparent; +} +.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller button { + margin-top: 0; +} +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close, +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + text-indent: 0; + background: transparent; + margin-left: 3px; + margin-right: -3px; + padding: 0; + color: #999; + width: 14px; + height: 14px; + line-height: 14px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; +} +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + margin-top: 1px; +} +.v-ff .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + margin-top: -15px; +} +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, +.white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #fff; + background: #aaa; +} +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active, +.white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #777; +} + +/* Minimal tabsheet on black background */ +.black .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, +.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, +.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + border-color: #3e4044; + color: #6a7f89; +} +.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + color: #c9ccce; +} +.black .v-tabsheet-content-minimal, +.black .v-tabsheet-content-bar { + color: #c9ccce; + text-shadow: #000 0 0 1px; +} +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + color: #72787c; +} +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #1d2021; + background: #4d5154; +} +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #626669; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.css deleted file mode 100644 index 3d23fa110a..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.css +++ /dev/null @@ -1,152 +0,0 @@ -/* Default Tabsheet styles */ - -.v-tabsheet-tabitemcell, -.v-tabsheet-spacertd { - height: 32px; -} -.v-tabsheet-tabitemcell { - background: no-repeat; - background-image: url(img/framed/tab-left.png); /** sprite-ref: verticals */ - padding-left: 3px; -} -.v-tabsheet-tabitemcell-first { - padding-left: 10px; - background-image: url(img/framed/tab-first-left.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabitem, -.v-tabsheet-spacertd div { - border: none; - height: 32px; - background: transparent repeat-x; - background-image: url(img/framed/tab-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - padding: 0; - color: #222; - text-shadow: #fff 0 1px 0; -} -.v-tabsheet-tabitem .v-caption { - border: none; - height: 23px; - background: no-repeat right top; - background-image: url(img/framed/tab-right.png); /** sprite-ref: verticals; sprite-alignment: right */ - padding: 9px 8px 0 6px; -} -.v-tabsheet-tabitem .v-caption-closable { - padding-right: 0; - padding-left: 17px; -} -.v-tabsheet-tabitem .v-captiontext { - height: 16px; - line-height: 16px; -} -.v-tabsheet-caption-close { - float: right; - width: 19px; - height: 18px; - margin: -1px -1px 0; - padding-left: 2px; - background: transparent; - background-image: url(img/close-btn.png); /** sprite-ref: verticals */ - cursor: default; - text-indent: -999px; - overflow: hidden; - font-size: 14px; - font-weight: normal; -} -.v-tabsheet-caption-close:hover { - background-image: url(img/close-btn-hover.png); /** sprite-ref: verticals */ -} -.v-tabsheet-caption-close:active { - background-image: url(img/close-btn-pressed.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabitem-selected .v-tabsheet-caption-close { - background-image: url(img/close-btn-sel.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { - background-image: url(img/close-btn-sel-hover.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { - background-image: url(img/close-btn-sel-pressed.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabitemcell-selected { - background-image: url(img/framed/tab-left-sel.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabitemcell-selected-first { - background-image: url(img/framed/tab-first-left-sel.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabitem-selected { - background-image: url(img/framed/tab-bg-sel.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - color: #232930; -} -.v-tabsheet-tabitem-selected .v-caption { - background-image: url(img/framed/tab-right-sel.png); /** sprite-ref: verticals; sprite-alignment: right */ -} -.v-tabsheet-spacertd div { - margin-right: 4px; -} -.v-tabsheet-spacertd { - background: transparent no-repeat right top; - background-image: url(img/framed/tab-spacer-right.png); /** sprite-ref: verticals; sprite-alignment: right */ -} -.blue .v-tabsheet-content { - border-color: #a8bcc5; -} -.v-tabsheet-content, -.white .v-tabsheet-content { - border: 1px solid #dcdcdc; - border-bottom: none; - border-top: none; - color: #222; - text-shadow: none; -} -.v-tabsheet-tabsheetpanel { - background: #fff; -} -.v-sa .v-tabsheet-content { - border-color: rgba(0,0,0,.1); -} -.blue .v-tabsheet-deco { - border-color: #92a3ac; - background: #adc2cd; -} -.v-tabsheet-deco, -.white .v-tabsheet-deco { - height: 1px; - border-top: 1px solid #bebebe; - background: #e2e2e2; - overflow: hidden; -} -.v-sa .v-tabsheet-deco { - border-top-color: rgba(0,0,0,.1); - background: rgba(0,0,0,.08); -} - - -/* Icons & error indicators */ - -.v-tabsheet-tabs .v-icon, -.v-tabsheet-tabs .v-captiontext, -.v-tabsheet-tabs .v-errorindicator { - display: inline; - float: none; -} -.v-sa .v-tabsheet-tabs .v-captiontext { - display: inline-block; -} -.v-tabsheet-tabs .v-icon { - width: 16px !important; - height: 16px !important; -} -.v-tabsheet-tabs .v-errorindicator { - display: inline-block; - width: 13px; - height: 16px; - background: transparent url(../common/icons/error.png) no-repeat 50%; -} -.v-ie .v-tabsheet-tabs .v-errorindicator { - zoom: 1; - display: inline; -} -.v-ie8 .v-tabsheet-tabs .v-errorindicator, -.v-ie9 .v-tabsheet-tabs .v-errorindicator { - display: inline-block; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.scss new file mode 100644 index 0000000000..11bb98536a --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-normal-style.scss @@ -0,0 +1,156 @@ +@mixin reindeer-tabsheet-normal-style { + +/* Default Tabsheet styles */ + +.v-tabsheet-tabitemcell, +.v-tabsheet-spacertd { + height: 32px; +} +.v-tabsheet-tabitemcell { + background: no-repeat; + background-image: url(img/framed/tab-left.png); /** sprite-ref: verticals */ + padding-left: 3px; +} +.v-tabsheet-tabitemcell-first { + padding-left: 10px; + background-image: url(img/framed/tab-first-left.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabitem, +.v-tabsheet-spacertd div { + border: none; + height: 32px; + background: transparent repeat-x; + background-image: url(img/framed/tab-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + padding: 0; + color: #222; + text-shadow: #fff 0 1px 0; +} +.v-tabsheet-tabitem .v-caption { + border: none; + height: 23px; + background: no-repeat right top; + background-image: url(img/framed/tab-right.png); /** sprite-ref: verticals; sprite-alignment: right */ + padding: 9px 8px 0 6px; +} +.v-tabsheet-tabitem .v-caption-closable { + padding-right: 0; + padding-left: 17px; +} +.v-tabsheet-tabitem .v-captiontext { + height: 16px; + line-height: 16px; +} +.v-tabsheet-caption-close { + float: right; + width: 19px; + height: 18px; + margin: -1px -1px 0; + padding-left: 2px; + background: transparent; + background-image: url(img/close-btn.png); /** sprite-ref: verticals */ + cursor: default; + text-indent: -999px; + overflow: hidden; + font-size: 14px; + font-weight: normal; +} +.v-tabsheet-caption-close:hover { + background-image: url(img/close-btn-hover.png); /** sprite-ref: verticals */ +} +.v-tabsheet-caption-close:active { + background-image: url(img/close-btn-pressed.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + background-image: url(img/close-btn-sel.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { + background-image: url(img/close-btn-sel-hover.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { + background-image: url(img/close-btn-sel-pressed.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabitemcell-selected { + background-image: url(img/framed/tab-left-sel.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabitemcell-selected-first { + background-image: url(img/framed/tab-first-left-sel.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabitem-selected { + background-image: url(img/framed/tab-bg-sel.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + color: #232930; +} +.v-tabsheet-tabitem-selected .v-caption { + background-image: url(img/framed/tab-right-sel.png); /** sprite-ref: verticals; sprite-alignment: right */ +} +.v-tabsheet-spacertd div { + margin-right: 4px; +} +.v-tabsheet-spacertd { + background: transparent no-repeat right top; + background-image: url(img/framed/tab-spacer-right.png); /** sprite-ref: verticals; sprite-alignment: right */ +} +.blue .v-tabsheet-content { + border-color: #a8bcc5; +} +.v-tabsheet-content, +.white .v-tabsheet-content { + border: 1px solid #dcdcdc; + border-bottom: none; + border-top: none; + color: #222; + text-shadow: none; +} +.v-tabsheet-tabsheetpanel { + background: #fff; +} +.v-sa .v-tabsheet-content { + border-color: rgba(0,0,0,.1); +} +.blue .v-tabsheet-deco { + border-color: #92a3ac; + background: #adc2cd; +} +.v-tabsheet-deco, +.white .v-tabsheet-deco { + height: 1px; + border-top: 1px solid #bebebe; + background: #e2e2e2; + overflow: hidden; +} +.v-sa .v-tabsheet-deco { + border-top-color: rgba(0,0,0,.1); + background: rgba(0,0,0,.08); +} + + +/* Icons & error indicators */ + +.v-tabsheet-tabs .v-icon, +.v-tabsheet-tabs .v-captiontext, +.v-tabsheet-tabs .v-errorindicator { + display: inline; + float: none; +} +.v-sa .v-tabsheet-tabs .v-captiontext { + display: inline-block; +} +.v-tabsheet-tabs .v-icon { + width: 16px !important; + height: 16px !important; +} +.v-tabsheet-tabs .v-errorindicator { + display: inline-block; + width: 13px; + height: 16px; + background: transparent url(../common/icons/error.png) no-repeat 50%; +} +.v-ie .v-tabsheet-tabs .v-errorindicator { + zoom: 1; + display: inline; +} +.v-ie8 .v-tabsheet-tabs .v-errorindicator, +.v-ie9 .v-tabsheet-tabs .v-errorindicator { + display: inline-block; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.css deleted file mode 100644 index 18ad5c9194..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.css +++ /dev/null @@ -1,51 +0,0 @@ -/* Tabsheet scroller styles */ - -.v-tabsheet-scroller { - height: 31px; - margin-top: -31px; - padding: 0 3px 0 4px; - border-right: 1px solid #c2c2c2; - border-left: 1px solid #cfcfcf; - position: relative; - float: right; - background: transparent url(img/framed/tab-bg.png) repeat-x left -1px; - width: 36px; -} -.v-tabsheet-scroller button { - margin-top: 7px; -} -.v-tabsheet-scrollerPrev, -.v-tabsheet-scrollerNext, -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled { - border: none; - background: transparent; - background-image: url(img/tab-prev.png); /** sprite-ref: verticals */ - width: 18px; - height: 17px; - overflow: hidden; -} -.v-tabsheet-scroller button::-moz-focus-inner { - border: none; -} -.v-tabsheet-scrollerNext { - background-image: url(img/tab-next.png); /** sprite-ref: verticals */ -} -.v-tabsheet-scrollerPrev:active { - background-image: url(img/tab-prev-pressed.png); /** sprite-ref: verticals */ -} -.v-tabsheet-scrollerNext:active { - background-image: url(img/tab-next-pressed.png); /** sprite-ref: verticals */ -} -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerPrev-disabled:active { - background-image: url(img/tab-prev-disabled.png); /** sprite-ref: verticals */ - opacity: 1; - filter: none; -} -.v-tabsheet-scrollerNext-disabled, -.v-tabsheet-scrollerNext-disabled:active { - background-image: url(img/tab-next-disabled.png); /** sprite-ref: verticals; sprite-margin-bottom: 1px */ - opacity: 1; - filter: none; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.scss new file mode 100644 index 0000000000..8f176e2150 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-scroller.scss @@ -0,0 +1,55 @@ +@mixin reindeer-tabsheet-scroller { + +/* Tabsheet scroller styles */ + +.v-tabsheet-scroller { + height: 31px; + margin-top: -31px; + padding: 0 3px 0 4px; + border-right: 1px solid #c2c2c2; + border-left: 1px solid #cfcfcf; + position: relative; + float: right; + background: transparent url(img/framed/tab-bg.png) repeat-x left -1px; + width: 36px; +} +.v-tabsheet-scroller button { + margin-top: 7px; +} +.v-tabsheet-scrollerPrev, +.v-tabsheet-scrollerNext, +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled { + border: none; + background: transparent; + background-image: url(img/tab-prev.png); /** sprite-ref: verticals */ + width: 18px; + height: 17px; + overflow: hidden; +} +.v-tabsheet-scroller button::-moz-focus-inner { + border: none; +} +.v-tabsheet-scrollerNext { + background-image: url(img/tab-next.png); /** sprite-ref: verticals */ +} +.v-tabsheet-scrollerPrev:active { + background-image: url(img/tab-prev-pressed.png); /** sprite-ref: verticals */ +} +.v-tabsheet-scrollerNext:active { + background-image: url(img/tab-next-pressed.png); /** sprite-ref: verticals */ +} +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerPrev-disabled:active { + background-image: url(img/tab-prev-disabled.png); /** sprite-ref: verticals */ + opacity: 1; + filter: none; +} +.v-tabsheet-scrollerNext-disabled, +.v-tabsheet-scrollerNext-disabled:active { + background-image: url(img/tab-next-disabled.png); /** sprite-ref: verticals; sprite-margin-bottom: 1px */ + opacity: 1; + filter: none; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.css deleted file mode 100644 index e4b8e0cd5f..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.css +++ /dev/null @@ -1,8 +0,0 @@ -.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem .v-tabsheet-caption-close, -.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { - visibility: hidden; -} -.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected .v-tabsheet-caption-close, -.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected:hover .v-tabsheet-caption-close { - visibility: visible; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.scss new file mode 100644 index 0000000000..d26a569c25 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-selected-closable-style.scss @@ -0,0 +1,12 @@ +@mixin reindeer-tabsheet-selected-closable-style { + +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem .v-tabsheet-caption-close, +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { + visibility: hidden; +} +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected .v-tabsheet-caption-close, +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected:hover .v-tabsheet-caption-close { + visibility: visible; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.css deleted file mode 100644 index c7c79d35ee..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.css +++ /dev/null @@ -1,109 +0,0 @@ -/** - * Tabsheet bar style --------------- - */ -.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell, -.v-tabsheet-tabs-bar .v-tabsheet-spacertd { - height: 20px; -} -.v-tabsheet-tabs-bar .v-tabsheet-spacertd { - background: transparent; -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell { - background-image: url(img/bar/tab-left.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-first { - padding-left: 6px; - background-image: url(img/bar/tab-first-left.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem, -.v-tabsheet-tabs-bar .v-tabsheet-spacertd div { - height: 20px; - background-image: url(img/bar/tab-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - font-size: 11px; - margin: 0; -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption { - height: 18px; - background-image: url(img/bar/tab-right.png); /** sprite-ref: verticals; sprite-alignment: right */ - padding: 2px 12px 0 10px; -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption-closable, -.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption-closable { - padding-right: 8px; - padding-left: 14px; -} -.v-tabsheet-tabs-bar .v-tabsheet-caption-close, -.v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover, -.v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { - text-indent: 0; - background: transparent; - margin-left: 3px; - margin-right: -3px; - padding: 1px 0 0 1px; - color: #3c3c3c; - width: 13px; - height: 13px; - line-height: 12px; - -webkit-border-radius: 7px; - -moz-border-radius: 7px; -} -.v-tabsheet-tabs-bar .v-tabsheet-caption-close { - margin-top: 1px; -} -.v-ff .v-tabsheet-tabs-bar .v-tabsheet-caption-close { - margin-top: -14px; -} -.v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover { - background: #bfbfbf; - -webkit-box-shadow: 0 1px 0 #fff; -} -.v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { - background: #a9a9a9; -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close { - color: #404142; -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { - background: #5e666e; - color: #fff; - text-shadow: 0 -1px 0 #222; -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { - background: #404142; -} - -.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected { - background-image: url(img/bar/tab-left-sel.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected-first { - background-image: url(img/bar/tab-first-left-sel.png); /** sprite-ref: verticals */ -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected { - background-image: url(img/bar/tab-bg-sel.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - color: #232930; -} -.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption { - background-image: url(img/bar/tab-right-sel.png); /** sprite-ref: verticals; sprite-alignment: right */ -} -.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller { - margin-top: -20px; - height: 19px; - border-right: none; - background-image: url(img/bar/tab-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller button { - margin-top: 1px; -} -.v-tabsheet-content-bar, -.white .v-tabsheet-content-bar { - border: none; -} -.v-tabsheet-content-bar .v-tabsheet-tabsheetpanel { - background: transparent; -} -.v-tabsheet-deco-bar, -.white .v-tabsheet-deco-bar { - height: 0; - border: none; -} -/* Content area font color specified with minimal style (reduces additional selectors) */ diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.scss new file mode 100644 index 0000000000..e4f098046c --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet-small-style.scss @@ -0,0 +1,113 @@ +@mixin reindeer-tabsheet-small-style { + +/** + * Tabsheet bar style --------------- + */ +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell, +.v-tabsheet-tabs-bar .v-tabsheet-spacertd { + height: 20px; +} +.v-tabsheet-tabs-bar .v-tabsheet-spacertd { + background: transparent; +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell { + background-image: url(img/bar/tab-left.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-first { + padding-left: 6px; + background-image: url(img/bar/tab-first-left.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem, +.v-tabsheet-tabs-bar .v-tabsheet-spacertd div { + height: 20px; + background-image: url(img/bar/tab-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + font-size: 11px; + margin: 0; +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption { + height: 18px; + background-image: url(img/bar/tab-right.png); /** sprite-ref: verticals; sprite-alignment: right */ + padding: 2px 12px 0 10px; +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption-closable, +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption-closable { + padding-right: 8px; + padding-left: 14px; +} +.v-tabsheet-tabs-bar .v-tabsheet-caption-close, +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover, +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { + text-indent: 0; + background: transparent; + margin-left: 3px; + margin-right: -3px; + padding: 1px 0 0 1px; + color: #3c3c3c; + width: 13px; + height: 13px; + line-height: 12px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; +} +.v-tabsheet-tabs-bar .v-tabsheet-caption-close { + margin-top: 1px; +} +.v-ff .v-tabsheet-tabs-bar .v-tabsheet-caption-close { + margin-top: -14px; +} +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover { + background: #bfbfbf; + -webkit-box-shadow: 0 1px 0 #fff; +} +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { + background: #a9a9a9; +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + color: #404142; +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { + background: #5e666e; + color: #fff; + text-shadow: 0 -1px 0 #222; +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { + background: #404142; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected { + background-image: url(img/bar/tab-left-sel.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected-first { + background-image: url(img/bar/tab-first-left-sel.png); /** sprite-ref: verticals */ +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected { + background-image: url(img/bar/tab-bg-sel.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + color: #232930; +} +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption { + background-image: url(img/bar/tab-right-sel.png); /** sprite-ref: verticals; sprite-alignment: right */ +} +.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller { + margin-top: -20px; + height: 19px; + border-right: none; + background-image: url(img/bar/tab-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller button { + margin-top: 1px; +} +.v-tabsheet-content-bar, +.white .v-tabsheet-content-bar { + border: none; +} +.v-tabsheet-content-bar .v-tabsheet-tabsheetpanel { + background: transparent; +} +.v-tabsheet-deco-bar, +.white .v-tabsheet-deco-bar { + height: 0; + border: none; +} +/* Content area font color specified with minimal style (reduces additional selectors) */ + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.css b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.css deleted file mode 100644 index b636effb0f..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.css +++ /dev/null @@ -1,8 +0,0 @@ -/* These styles get catenated together on build */ -@import "tabsheet-normal-style.css"; -@import "tabsheet-scroller.css"; -@import "tabsheet-borderless-style.css"; -@import "tabsheet-minimal-style.css"; -@import "tabsheet-small-style.css"; -@import "tabsheet-selected-closable-style.css"; -@import "tabsheet-hover-closable-style.css"; \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.scss b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.scss new file mode 100644 index 0000000000..8b9252cf68 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tabsheet/tabsheet.scss @@ -0,0 +1,20 @@ +/* These styles get catenated together on build */ +@import "tabsheet-normal-style.scss"; +@import "tabsheet-scroller.scss"; +@import "tabsheet-borderless-style.scss"; +@import "tabsheet-minimal-style.scss"; +@import "tabsheet-small-style.scss"; +@import "tabsheet-selected-closable-style.scss"; +@import "tabsheet-hover-closable-style.scss"; + +@mixin reindeer-tabsheet { + + @include reindeer-tabsheet-normal-style; + @include reindeer-tabsheet-scroller; + @include reindeer-tabsheet-borderless-style; + @include reindeer-tabsheet-minimal-style; + @include reindeer-tabsheet-small-style; + @include reindeer-tabsheet-selected-closable-style; + @include reindeer-tabsheet-hover-closable-style; + +} diff --git a/WebContent/VAADIN/themes/reindeer/textfield/textfield.css b/WebContent/VAADIN/themes/reindeer/textfield/textfield.css deleted file mode 100644 index 09c47dc8d4..0000000000 --- a/WebContent/VAADIN/themes/reindeer/textfield/textfield.css +++ /dev/null @@ -1,116 +0,0 @@ -/* Textfield on blue background */ -.blue .v-textfield, -.blue .v-textarea { - border-color: #92a2aa; - border-top-color: #7c8a90; - border-bottom-color: #a1b3bc; -} -/* Default & white background */ -.v-textfield, -.v-textarea, -.white .v-textfield, -.white .v-textarea { - border: 1px solid #bcbdbe; - border-top-color: #a2a3a4; - border-bottom-color: #d2d3d4; - background: #fff; - background-repeat: repeat-x; - background-image: url(img/bg.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 22px */ - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - margin: 0; - height: 23px; - line-height: normal; -} -.v-textarea, -.white .v-textarea { - background-image: none; - height: auto; -} -/* Need more specific selector because of #2384 fixes in base/common/common.css */ -.v-app input.v-textfield, -.v-window input.v-textfield, -.v-app textarea.v-textarea, -.v-window textarea.v-textarea { - padding: 3px 3px 4px; -} -.v-app input.v-textfield.v-connector, -.v-window input.v-textfield.v-connector { - height: 24px; -} -.v-app .v-textfield-focus, -.v-window .v-textfield-focus, -.v-popupview-popup .v-textfield-focus, -.v-app .v-textarea-focus, -.v-window .v-textarea-focus, -.v-popupview-popup .v-textarea-focus { - border-color: #5b97d0; - border-top-color: #4f83b4; - border-bottom-color: #5ca0df; - outline: none; - background-color: #fff; -} -input.v-textfield-prompt, -textarea.v-textarea-prompt { - font-style: normal; - color: #999; -} -/* Small style textfield */ -.v-app input.v-textfield-small { - font-size: 11px; - line-height: normal; - height: auto; - padding: 2px; -} -.v-app textarea.v-textarea-small { - font-size: 11px; -} -.v-app .v-table input.v-textfield.v-connector, -.v-window .v-table input.v-textfield.v-connector { - padding: 1px 2px; - height: auto; - line-height: normal; -} -.v-table-cell-wrapper > input.v-textfield { - margin-top: -2px; - margin-bottom: -2px; -} -/* Textfield on black background */ -.black .v-textfield, -.black .v-textarea { - border-color: #38393a; - border-top-color: #2c2d2e; - border-bottom-color: #3e3f3f; - background: #151717; - background-image: url(img/bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 22px */ - color: #c9ccce; - text-shadow: #000 0 0 1px; -} -.black .v-textarea { - background-image: none; -} -.v-app .black .v-textfield-focus, -.v-window-black .v-textfield-focus, -.v-window .black .v-textfield-focus, -.v-popupview-popup .black .v-textfield-focus, -.v-app .black .v-textarea-focus, -.v-window-black .v-textarea-focus, -.v-window .black .v-textarea-focus, -.v-popupview-popup .black .v-textarea-focus { - border-color: #4b7192; - border-top-color: #3b5a75; - border-bottom-color: #507596; - background-color: #151717; -} -.black input.v-textfield-prompt { - color: #5f6366; -} -/* Readonly */ -input.v-textfield-readonly, -.black input.v-textfield-readonly, -textarea.v-textarea-readonly, -.black textarea.v-textarea-readonly { - border: none; - background: transparent; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/textfield/textfield.scss b/WebContent/VAADIN/themes/reindeer/textfield/textfield.scss new file mode 100644 index 0000000000..8db2dda567 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/textfield/textfield.scss @@ -0,0 +1,120 @@ +@mixin reindeer-textfield { + +/* Textfield on blue background */ +.blue .v-textfield, +.blue .v-textarea { + border-color: #92a2aa; + border-top-color: #7c8a90; + border-bottom-color: #a1b3bc; +} +/* Default & white background */ +.v-textfield, +.v-textarea, +.white .v-textfield, +.white .v-textarea { + border: 1px solid #bcbdbe; + border-top-color: #a2a3a4; + border-bottom-color: #d2d3d4; + background: #fff; + background-repeat: repeat-x; + background-image: url(img/bg.png); /** sprite-ref: verticals; sprite-alignment: repeat; sprite-margin-bottom: 22px */ + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + margin: 0; + height: 23px; + line-height: normal; +} +.v-textarea, +.white .v-textarea { + background-image: none; + height: auto; +} +/* Need more specific selector because of #2384 fixes in base/common/common.css */ +.v-app input.v-textfield, +.v-window input.v-textfield, +.v-app textarea.v-textarea, +.v-window textarea.v-textarea { + padding: 3px 3px 4px; +} +.v-app input.v-textfield.v-connector, +.v-window input.v-textfield.v-connector { + height: 24px; +} +.v-app .v-textfield-focus, +.v-window .v-textfield-focus, +.v-popupview-popup .v-textfield-focus, +.v-app .v-textarea-focus, +.v-window .v-textarea-focus, +.v-popupview-popup .v-textarea-focus { + border-color: #5b97d0; + border-top-color: #4f83b4; + border-bottom-color: #5ca0df; + outline: none; + background-color: #fff; +} +input.v-textfield-prompt, +textarea.v-textarea-prompt { + font-style: normal; + color: #999; +} +/* Small style textfield */ +.v-app input.v-textfield-small { + font-size: 11px; + line-height: normal; + height: auto; + padding: 2px; +} +.v-app textarea.v-textarea-small { + font-size: 11px; +} +.v-app .v-table input.v-textfield.v-connector, +.v-window .v-table input.v-textfield.v-connector { + padding: 1px 2px; + height: auto; + line-height: normal; +} +.v-table-cell-wrapper > input.v-textfield { + margin-top: -2px; + margin-bottom: -2px; +} +/* Textfield on black background */ +.black .v-textfield, +.black .v-textarea { + border-color: #38393a; + border-top-color: #2c2d2e; + border-bottom-color: #3e3f3f; + background: #151717; + background-image: url(img/bg-black.png); /** sprite-ref: black-verticals; sprite-alignment: repeat; sprite-margin-bottom: 22px */ + color: #c9ccce; + text-shadow: #000 0 0 1px; +} +.black .v-textarea { + background-image: none; +} +.v-app .black .v-textfield-focus, +.v-window-black .v-textfield-focus, +.v-window .black .v-textfield-focus, +.v-popupview-popup .black .v-textfield-focus, +.v-app .black .v-textarea-focus, +.v-window-black .v-textarea-focus, +.v-window .black .v-textarea-focus, +.v-popupview-popup .black .v-textarea-focus { + border-color: #4b7192; + border-top-color: #3b5a75; + border-bottom-color: #507596; + background-color: #151717; +} +.black input.v-textfield-prompt { + color: #5f6366; +} +/* Readonly */ +input.v-textfield-readonly, +.black input.v-textfield-readonly, +textarea.v-textarea-readonly, +.black textarea.v-textarea-readonly { + border: none; + background: transparent; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tree/tree.css b/WebContent/VAADIN/themes/reindeer/tree/tree.css deleted file mode 100644 index f72f61c545..0000000000 --- a/WebContent/VAADIN/themes/reindeer/tree/tree.css +++ /dev/null @@ -1,51 +0,0 @@ -.v-tree-node { - background: transparent url(img/arrows.png) no-repeat 6px -10px; -} -.v-tree-node-expanded { - background-position: -7px 5px; -} -.v-tree-node-caption { - margin-left: 16px; - padding-bottom: 1px; -} -.v-tree-node span { - padding: 1px 2px; - display: inline-block; -} -.v-tree-node-selected span { - background: #4d749f repeat-x; - background-image: url(../common/img/sel-bg.png); /* sprite-ref: verticals; sprite-alignment: repeat */ - color: #fff; - padding: 1px 2px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - text-shadow: #2b425a 0 1px 0; - display: inline-block; -} -.v-tree-node-children { - padding-left: 16px; -} -.v-tree-node-caption.v-tree-node-focused span{ - padding-left: 1px; - padding-top: 0px; - padding-bottom: 0px; -} -.v-tree-node-focused span{ - border: 1px dotted black; -} -/*************************************** - * Drag'n'drop styles - ***************************************/ -.v-tree .v-tree-node-drag-top { - background-position: 6px -11px; -} -.v-tree .v-tree-node-drag-top.v-tree-node-expanded { - background-position: -7px 4px; -} -.v-tree-connectors .v-tree-node-drag-top, -.v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { - background-position: 2px -53px; -} -.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { - background-position: 2px 50%; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/tree/tree.scss b/WebContent/VAADIN/themes/reindeer/tree/tree.scss new file mode 100644 index 0000000000..3a1ad35c81 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/tree/tree.scss @@ -0,0 +1,55 @@ +@mixin reindeer-tree { + +.v-tree-node { + background: transparent url(img/arrows.png) no-repeat 6px -10px; +} +.v-tree-node-expanded { + background-position: -7px 5px; +} +.v-tree-node-caption { + margin-left: 16px; + padding-bottom: 1px; +} +.v-tree-node span { + padding: 1px 2px; + display: inline-block; +} +.v-tree-node-selected span { + background: #4d749f repeat-x; + background-image: url(../common/img/sel-bg.png); /* sprite-ref: verticals; sprite-alignment: repeat */ + color: #fff; + padding: 1px 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + text-shadow: #2b425a 0 1px 0; + display: inline-block; +} +.v-tree-node-children { + padding-left: 16px; +} +.v-tree-node-caption.v-tree-node-focused span{ + padding-left: 1px; + padding-top: 0px; + padding-bottom: 0px; +} +.v-tree-node-focused span{ + border: 1px dotted black; +} +/*************************************** + * Drag'n'drop styles + ***************************************/ +.v-tree .v-tree-node-drag-top { + background-position: 6px -11px; +} +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: -7px 4px; +} +.v-tree-connectors .v-tree-node-drag-top, +.v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { + background-position: 2px -53px; +} +.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { + background-position: 2px 50%; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/window/window.css b/WebContent/VAADIN/themes/reindeer/window/window.css deleted file mode 100644 index e1091ef98d..0000000000 --- a/WebContent/VAADIN/themes/reindeer/window/window.css +++ /dev/null @@ -1,182 +0,0 @@ -.v-window { - background: transparent; -} -.v-window-wrap { - border: 1px solid #808386; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-sa .v-window-wrap, -.v-op .v-window-wrap { - border-color: rgba(0,0,0,.2); -} -.v-window-outerheader { - padding: 12px 32px 0 14px; - height: 37px; - background: black repeat-x; - background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} -.v-window-header { - font-weight: bold; - font-size: 12px; - line-height: normal; - color: #fff; - text-shadow: #000 0 -1px 0; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - -ms-text-overflow: ellipsis; -} -.v-window-error .v-window-header { - padding-left: 13px; - background: transparent url(../common/icons/error.png) no-repeat 0 50%; -} -.v-window-resizebox { - width: 15px; - height: 15px; - cursor: se-resize; - background: transparent; - background-image: url(img/resize.png); /** sprite-ref: verticals */ -} -.v-window-footer { - background-color:white; - background-repeat: repeat-x; - background-image: url(img/footer-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ - height: 15px; -} -.v-window-closebox { - top: 12px; - right: 10px; - width: 15px; - height: 16px; - background: transparent; - background-image: url(img/close.png); /** sprite-ref: verticals */ -} -.v-window-closebox:hover { - background-image: url(img/close-hover.png); /** sprite-ref: verticals */ -} -.v-window-closebox:active { - background-image: url(img/close-pressed.png); /** sprite-ref: verticals */ -} -.v-window-contents { - background: #fff; -} -.v-window-modalitycurtain { - background: #56595b; -} - - - - - - -/** - Light style window ----------------------------- -**/ - -.v-window-light .v-window-outerheader { - background: transparent; - padding: 15px 32px 0 18px; - height: 23px; -} -.v-window-light .v-window-header { - font-size: 16px; - color: #292e34; - text-shadow: none; -} -.v-window-light .v-window-resizebox { - width: 12px; - height: 12px; - background-image: url(img/resize-light.png); /** sprite-ref: verticals */ -} -.v-window-light .v-window-footer { - background: transparent; - height: 12px; -} -.v-window-light .v-window-closebox { - right: 1px; - top: 17px; - width: 19px; - height: 15px; - background-image: url(img/close-light.png); /** sprite-ref: verticals */ -} -.v-window-light .v-window-closebox:hover { - background-image: url(img/close-light-hover.png); /** sprite-ref: verticals */ -} -.v-window-light .v-window-closebox:active { - background-image: url(img/close-light-pressed.png); /** sprite-ref: verticals */ -} -.v-window-light .v-window-contents { - background: transparent; -} -/* This must be the last sprite added to the verticals-sprite image */ -.v-window-light .v-window-wrap2 { - background: #f7f7f8 repeat-x; - background-image: url(img/content-bg-light.png); /** sprite-ref: verticals; sprite-alignment: repeat */ -} - - -/** - Black style window ----------------------------- -**/ - -.v-window-black .v-window-wrap { - border-color: #2e3030; - border-radius: 8px; - -webkit-border-radius: 8px; - -moz-border-radius: 8px; - overflow: hidden; -} -.v-sa .v-window-black .v-window-wrap, -.v-op .v-window-black .v-window-wrap { - border-color: rgba(0,0,0,.8); -} -.v-window-black .v-window-wrap2 { - background-color: #1d2021; - -moz-border-radius: 7px; - -webkit-border-radius: 7px; -} -.v-sa .v-window-black .v-window-wrap2, -.v-op .v-window-black .v-window-wrap2 { - background-color: rgba(29,32,33,.9); -} -.v-window-black .v-window-outerheader { - height: auto; - padding: 7px 14px; - height: 15px; - background: transparent repeat-x; - background-image: url(img/black/header-bg.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ - text-align: center; - -moz-border-radius-topright: 7px; - -moz-border-radius-topleft: 7px; - -webkit-border-top-right-radius: 7px; - -webkit-border-top-left-radius: 7px; - overflow: hidden; - border: none; -} -.v-window-black .v-window-header { - font-size: 12px; - font-weight: normal; - color: #dddfe1; -} -.v-window-black .v-window-closebox { - top: 8px; -} -.v-window-black .v-window-footer { - background: transparent; - border: none; - height: 14px; -} -.v-window-black .v-window-resizebox { - background: transparent no-repeat; - background-image: url(img/black/resize.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 4px */ - width: 14px; - height: 14px; -} -/* Must be last to make this image last in the sprites */ -.v-window-black .v-window-contents { - border: none; - background: transparent repeat-x; - background-image: url(img/black/content-bg.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/reindeer/window/window.scss b/WebContent/VAADIN/themes/reindeer/window/window.scss new file mode 100644 index 0000000000..ac8fa9c2c9 --- /dev/null +++ b/WebContent/VAADIN/themes/reindeer/window/window.scss @@ -0,0 +1,186 @@ +@mixin reindeer-window { + +.v-window { + background: transparent; +} +.v-window-wrap { + border: 1px solid #808386; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-sa .v-window-wrap, +.v-op .v-window-wrap { + border-color: rgba(0,0,0,.2); +} +.v-window-outerheader { + padding: 12px 32px 0 14px; + height: 37px; + background: black repeat-x; + background-image: url(img/header-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} +.v-window-header { + font-weight: bold; + font-size: 12px; + line-height: normal; + color: #fff; + text-shadow: #000 0 -1px 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -ms-text-overflow: ellipsis; +} +.v-window-error .v-window-header { + padding-left: 13px; + background: transparent url(../common/icons/error.png) no-repeat 0 50%; +} +.v-window-resizebox { + width: 15px; + height: 15px; + cursor: se-resize; + background: transparent; + background-image: url(img/resize.png); /** sprite-ref: verticals */ +} +.v-window-footer { + background-color:white; + background-repeat: repeat-x; + background-image: url(img/footer-bg.png); /** sprite-ref: verticals; sprite-alignment: repeat */ + height: 15px; +} +.v-window-closebox { + top: 12px; + right: 10px; + width: 15px; + height: 16px; + background: transparent; + background-image: url(img/close.png); /** sprite-ref: verticals */ +} +.v-window-closebox:hover { + background-image: url(img/close-hover.png); /** sprite-ref: verticals */ +} +.v-window-closebox:active { + background-image: url(img/close-pressed.png); /** sprite-ref: verticals */ +} +.v-window-contents { + background: #fff; +} +.v-window-modalitycurtain { + background: #56595b; +} + + + + + + +/** + Light style window ----------------------------- +**/ + +.v-window-light .v-window-outerheader { + background: transparent; + padding: 15px 32px 0 18px; + height: 23px; +} +.v-window-light .v-window-header { + font-size: 16px; + color: #292e34; + text-shadow: none; +} +.v-window-light .v-window-resizebox { + width: 12px; + height: 12px; + background-image: url(img/resize-light.png); /** sprite-ref: verticals */ +} +.v-window-light .v-window-footer { + background: transparent; + height: 12px; +} +.v-window-light .v-window-closebox { + right: 1px; + top: 17px; + width: 19px; + height: 15px; + background-image: url(img/close-light.png); /** sprite-ref: verticals */ +} +.v-window-light .v-window-closebox:hover { + background-image: url(img/close-light-hover.png); /** sprite-ref: verticals */ +} +.v-window-light .v-window-closebox:active { + background-image: url(img/close-light-pressed.png); /** sprite-ref: verticals */ +} +.v-window-light .v-window-contents { + background: transparent; +} +/* This must be the last sprite added to the verticals-sprite image */ +.v-window-light .v-window-wrap2 { + background: #f7f7f8 repeat-x; + background-image: url(img/content-bg-light.png); /** sprite-ref: verticals; sprite-alignment: repeat */ +} + + +/** + Black style window ----------------------------- +**/ + +.v-window-black .v-window-wrap { + border-color: #2e3030; + border-radius: 8px; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + overflow: hidden; +} +.v-sa .v-window-black .v-window-wrap, +.v-op .v-window-black .v-window-wrap { + border-color: rgba(0,0,0,.8); +} +.v-window-black .v-window-wrap2 { + background-color: #1d2021; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; +} +.v-sa .v-window-black .v-window-wrap2, +.v-op .v-window-black .v-window-wrap2 { + background-color: rgba(29,32,33,.9); +} +.v-window-black .v-window-outerheader { + height: auto; + padding: 7px 14px; + height: 15px; + background: transparent repeat-x; + background-image: url(img/black/header-bg.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ + text-align: center; + -moz-border-radius-topright: 7px; + -moz-border-radius-topleft: 7px; + -webkit-border-top-right-radius: 7px; + -webkit-border-top-left-radius: 7px; + overflow: hidden; + border: none; +} +.v-window-black .v-window-header { + font-size: 12px; + font-weight: normal; + color: #dddfe1; +} +.v-window-black .v-window-closebox { + top: 8px; +} +.v-window-black .v-window-footer { + background: transparent; + border: none; + height: 14px; +} +.v-window-black .v-window-resizebox { + background: transparent no-repeat; + background-image: url(img/black/resize.png); /** sprite-ref: black-verticals; sprite-margin-bottom: 4px */ + width: 14px; + height: 14px; +} +/* Must be last to make this image last in the sprites */ +.v-window-black .v-window-contents { + border: none; + background: transparent repeat-x; + background-image: url(img/black/content-bg.png); /** sprite-ref: black-verticals; sprite-alignment: repeat */ +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.css b/WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.css deleted file mode 100644 index 9373b73db8..0000000000 --- a/WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.css +++ /dev/null @@ -1,4 +0,0 @@ -.v-absolutelayout-wrapper { - position: absolute; - overflow:hidden; -} diff --git a/WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.scss b/WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.scss new file mode 100644 index 0000000000..623110ff63 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/absolutelayout/absolutelayout.scss @@ -0,0 +1,8 @@ +@mixin runo-absolutelayout { + +.v-absolutelayout-wrapper { + position: absolute; + overflow:hidden; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/accordion/accordion.css b/WebContent/VAADIN/themes/runo/accordion/accordion.css deleted file mode 100644 index cad4bb94ba..0000000000 --- a/WebContent/VAADIN/themes/runo/accordion/accordion.css +++ /dev/null @@ -1,48 +0,0 @@ -.v-accordion-item-caption { - height: 31px; - background: #edf0f0 url(img/bg.png); - font-size: 15px; - color: #656d73; - border: none; - border-top: 1px solid #c8cccd; -} -.v-accordion-item-caption .v-caption { - padding: 7px 0 6px 31px; - background: transparent url(img/collapsed-icon.png) no-repeat 18px 50%; -} -.v-accordion-item-open .v-accordion-item-caption { - color: #3b4b57; - background: #d5dee2 url(img/selected-bg.png); - border-bottom: 1px solid #b4b9ba; - text-shadow: 0 1px 0 #fff; -} -.v-accordion-item-open .v-accordion-item-caption .v-caption { - background-image: url(img/expanded-icon.png); - background-position: 17px 50%; -} -.v-accordion-item-first .v-accordion-item-caption { - border-top: none; -} -.v-accordion-item-caption .v-caption:hover { - color: #3b4b57; -} - -/* Light style */ -.v-accordion-light .v-accordion-item-caption { - height: 24px; - padding: 3px 2px; - background: transparent; - border: none; -} -.v-accordion-light .v-accordion-item-caption .v-caption { - padding: 4px 15px 4px 28px; - font-size: 12px; - line-height: 16px; - height: 16px; - font-weight: bold; - border: 1px solid #c8cccd; - -webkit-border-radius: 12px; - -moz-border-radius: 12px; - border-radius: 12px; - background-position: 15px 50%; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/accordion/accordion.scss b/WebContent/VAADIN/themes/runo/accordion/accordion.scss new file mode 100644 index 0000000000..f9c9487536 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/accordion/accordion.scss @@ -0,0 +1,52 @@ +@mixin runo-accordion { + +.v-accordion-item-caption { + height: 31px; + background: #edf0f0 url(img/bg.png); + font-size: 15px; + color: #656d73; + border: none; + border-top: 1px solid #c8cccd; +} +.v-accordion-item-caption .v-caption { + padding: 7px 0 6px 31px; + background: transparent url(img/collapsed-icon.png) no-repeat 18px 50%; +} +.v-accordion-item-open .v-accordion-item-caption { + color: #3b4b57; + background: #d5dee2 url(img/selected-bg.png); + border-bottom: 1px solid #b4b9ba; + text-shadow: 0 1px 0 #fff; +} +.v-accordion-item-open .v-accordion-item-caption .v-caption { + background-image: url(img/expanded-icon.png); + background-position: 17px 50%; +} +.v-accordion-item-first .v-accordion-item-caption { + border-top: none; +} +.v-accordion-item-caption .v-caption:hover { + color: #3b4b57; +} + +/* Light style */ +.v-accordion-light .v-accordion-item-caption { + height: 24px; + padding: 3px 2px; + background: transparent; + border: none; +} +.v-accordion-light .v-accordion-item-caption .v-caption { + padding: 4px 15px 4px 28px; + font-size: 12px; + line-height: 16px; + height: 16px; + font-weight: bold; + border: 1px solid #c8cccd; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + background-position: 15px 50%; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/button/button.css b/WebContent/VAADIN/themes/runo/button/button.css deleted file mode 100644 index 5515db5aec..0000000000 --- a/WebContent/VAADIN/themes/runo/button/button.css +++ /dev/null @@ -1,156 +0,0 @@ -.v-button { - padding: 1px; - border: none; - background: transparent; - } - -.v-button:focus { - outline: none; - } - -.v-button:focus .v-button-wrap { - border-color: #57a7ed; - border-top-color: #60aef1; - border-bottom-color: #4c9adf; - -webkit-box-shadow: 0 0 2px #57a7ed; - -moz-box-shadow: 0 0 2px #57a7ed; - } - -.v-button:active .v-button-wrap, -.v-button.v-pressed .v-button-wrap { - background-position: 0 -79px; - background-color: #e7e9e9; - border-color: #b8bdbe; - border-top-color: #9da1a2; - border-bottom-color: #babfc0; - border-color: rgba(146,151,152,.9); - border-top-color: rgba(146,151,152,1); - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset; - -moz-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset;; - text-shadow: none; - } - -.v-button .v-button-wrap, -.v-disabled.v-button .v-button-wrap { - display: block; - font-size: 12px; - border: 1px solid #bdc1c2; - border-top-color: #cbcfd0; - border-bottom-color: #b6bbbb; - border-color: rgba(146,151,152,.8); - border-top-color: rgba(146,151,152,.6); - background: #e6e8e8 url(img/bg.png) repeat-x; - -webkit-background-origin: padding; - -moz-background-origin: padding; - padding: 3px 15px; - -webkit-border-radius: 11px; - -moz-border-radius: 11px; - border-radius: 11px; - line-height: 14px; - min-height: 14px; - -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.15); - -moz-box-shadow: 0 1px 0 rgba(0,0,0,.15); - text-shadow: 0 1px 0 #fff; - color: #464f52; - overflow: hidden; - text-overflow: ellipsis; - } - -/* Small style */ -.v-button-small .v-button-wrap, -.v-disabled.v-button-small .v-button-wrap { - font-size: 11px; - line-height: 13px; - padding: 1px 12px; - min-height: 13px; - } - - -/* Big style */ -.v-button-big .v-button-wrap, -.v-disabled.v-button-big .v-button-wrap { - font-size: 15px; - line-height: 18px; - padding: 4px 18px; - min-height: 18px; - -webkit-border-radius: 14px; - -moz-border-radius: 14px; - border-radius: 14px; - } - - - -/* Default style */ -.v-button-default:focus .v-button-wrap { - background-color: #60839a; - background-position: 0 -158px; - text-shadow: 0 -1px 0 #657883; - } - -.v-button-default:active .v-button-wrap, -.v-button-default.v-pressed .v-button-wrap { - background-position: 0 -79px; - background-color: #8f9898; - border-color: #737e81; - border-top-color: #576063; - border-bottom-color: #747f82; - color: #f0f2f2; - text-shadow: 0 -1px 0 #5d6969; - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset;; - -moz-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset;; - } - -.v-button-default .v-button-wrap, -.v-disabled.v-button-default .v-button-wrap { - border-color: #899395; - border-top-color: #a4abae; - border-bottom-color: #727b7d; - background: #869090 url(img/bg-default.png) repeat-x; - text-shadow: 0 -1px 0 #797e7e; - color: #fff; - font-weight: bold; - -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.22); - -moz-box-shadow: 0 1px 0 rgba(0,0,0,.22); - } - - - - -/* Link style */ -.v-button-link, -.v-disabled.v-button-link { - padding: 0; - } - -.v-button-link .v-button-wrap, -.v-disabled.v-button-link .v-button-wrap, -.v-button-link:active .v-button-wrap, -.v-disabled.v-button-pressedv-button-link .v-button-wrap { - border: none; - background: transparent; - padding: 0; - font-size: 13px; - -webkit-box-shadow: none; - -mox-box-shadow: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - text-shadow: none; - } - -.v-button-link:focus { - outline: 1px dotted #4897dc; - } - -.v-button-link:focus .v-button-wrap { - -webkit-box-shadow: none; - -moz-box-shadow: none; - } - - - - -/* Checkbox styles */ -.v-checkbox .v-errorindicator { - padding-left: 10px; - } diff --git a/WebContent/VAADIN/themes/runo/button/button.scss b/WebContent/VAADIN/themes/runo/button/button.scss new file mode 100644 index 0000000000..5da6211804 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/button/button.scss @@ -0,0 +1,160 @@ +@mixin runo-button { + +.v-button { + padding: 1px; + border: none; + background: transparent; + } + +.v-button:focus { + outline: none; + } + +.v-button:focus .v-button-wrap { + border-color: #57a7ed; + border-top-color: #60aef1; + border-bottom-color: #4c9adf; + -webkit-box-shadow: 0 0 2px #57a7ed; + -moz-box-shadow: 0 0 2px #57a7ed; + } + +.v-button:active .v-button-wrap, +.v-button.v-pressed .v-button-wrap { + background-position: 0 -79px; + background-color: #e7e9e9; + border-color: #b8bdbe; + border-top-color: #9da1a2; + border-bottom-color: #babfc0; + border-color: rgba(146,151,152,.9); + border-top-color: rgba(146,151,152,1); + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset; + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset; + text-shadow: none; + } + +.v-button .v-button-wrap, +.v-disabled.v-button .v-button-wrap { + display: block; + font-size: 12px; + border: 1px solid #bdc1c2; + border-top-color: #cbcfd0; + border-bottom-color: #b6bbbb; + border-color: rgba(146,151,152,.8); + border-top-color: rgba(146,151,152,.6); + background: #e6e8e8 url(img/bg.png) repeat-x; + -webkit-background-origin: padding; + -moz-background-origin: padding; + padding: 3px 15px; + -webkit-border-radius: 11px; + -moz-border-radius: 11px; + border-radius: 11px; + line-height: 14px; + min-height: 14px; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.15); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.15); + text-shadow: 0 1px 0 #fff; + color: #464f52; + overflow: hidden; + text-overflow: ellipsis; + } + +/* Small style */ +.v-button-small .v-button-wrap, +.v-disabled.v-button-small .v-button-wrap { + font-size: 11px; + line-height: 13px; + padding: 1px 12px; + min-height: 13px; + } + + +/* Big style */ +.v-button-big .v-button-wrap, +.v-disabled.v-button-big .v-button-wrap { + font-size: 15px; + line-height: 18px; + padding: 4px 18px; + min-height: 18px; + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 14px; + } + + + +/* Default style */ +.v-button-default:focus .v-button-wrap { + background-color: #60839a; + background-position: 0 -158px; + text-shadow: 0 -1px 0 #657883; + } + +.v-button-default:active .v-button-wrap, +.v-button-default.v-pressed .v-button-wrap { + background-position: 0 -79px; + background-color: #8f9898; + border-color: #737e81; + border-top-color: #576063; + border-bottom-color: #747f82; + color: #f0f2f2; + text-shadow: 0 -1px 0 #5d6969; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset; + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.4) inset; + } + +.v-button-default .v-button-wrap, +.v-disabled.v-button-default .v-button-wrap { + border-color: #899395; + border-top-color: #a4abae; + border-bottom-color: #727b7d; + background: #869090 url(img/bg-default.png) repeat-x; + text-shadow: 0 -1px 0 #797e7e; + color: #fff; + font-weight: bold; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.22); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.22); + } + + + + +/* Link style */ +.v-button-link, +.v-disabled.v-button-link { + padding: 0; + } + +.v-button-link .v-button-wrap, +.v-disabled.v-button-link .v-button-wrap, +.v-button-link:active .v-button-wrap, +.v-disabled.v-button-pressedv-button-link .v-button-wrap { + border: none; + background: transparent; + padding: 0; + font-size: 13px; + -webkit-box-shadow: none; + -mox-box-shadow: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + text-shadow: none; + } + +.v-button-link:focus { + outline: 1px dotted #4897dc; + } + +.v-button-link:focus .v-button-wrap { + -webkit-box-shadow: none; + -moz-box-shadow: none; + } + + + + +/* Checkbox styles */ +.v-checkbox .v-errorindicator { + padding-left: 10px; + } + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/caption/caption.css b/WebContent/VAADIN/themes/runo/caption/caption.css deleted file mode 100644 index 93d7874665..0000000000 --- a/WebContent/VAADIN/themes/runo/caption/caption.css +++ /dev/null @@ -1,8 +0,0 @@ -.v-captionwrapper { - margin: 0.3em 0 0 0; -} -.v-errorindicator { - width: 12px; - height: 16px; - background: transparent url(../icons/16/error.png) no-repeat top right; -} diff --git a/WebContent/VAADIN/themes/runo/caption/caption.scss b/WebContent/VAADIN/themes/runo/caption/caption.scss new file mode 100644 index 0000000000..dab33c99c7 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/caption/caption.scss @@ -0,0 +1,12 @@ +@mixin runo-caption { + +.v-captionwrapper { + margin: 0.3em 0 0 0; +} +.v-errorindicator { + width: 12px; + height: 16px; + background: transparent url(../icons/16/error.png) no-repeat top right; +} + +} diff --git a/WebContent/VAADIN/themes/runo/common/common.css b/WebContent/VAADIN/themes/runo/common/common.css deleted file mode 100644 index 2b3aa372a2..0000000000 --- a/WebContent/VAADIN/themes/runo/common/common.css +++ /dev/null @@ -1,108 +0,0 @@ -.v-generated-body { - background: #e9eced; -} -.v-app { - background: #e9eced url(img/main-bg.png) repeat-x; - font-family: "Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 13px; - line-height: 18px; -} -/* Global font styles */ -.v-app, -.v-window, -.v-popupview-popup, -.v-tooltip, -.v-app input, -.v-app select, -.v-app button, -.v-app textarea, -.v-window input, -.v-window select, -.v-window button, -.v-window textarea, -.v-popupview-popup input, -.v-popupview-popup select, -.v-popupview-popup button, -.v-popupview-popup textarea, -.v-filterselect-suggestpopup, -.v-datefield-popup, -.v-contextmenu, -.v-Notification, -.v-menubar-submenu, -.v-drag-element { - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 13px; -} -.v-app select, -.v-window select { - padding: 0; -} -/* Custom tooltip */ -.v-tooltip { - background-color: #fffcdd; - border: 1px solid #b8b295; - border-top-color: #d5d2c1; - border-left-color: #d5d2c1; - font-size: 11px; - font-family: arial, helvetica, tahoma, verdana, sans-serif; - color: #5d5444; -} -.v-tooltip-text { - padding: 2px 4px; - border: none; - border-top: 1px solid #fffef5; - border-bottom: 1px solid #fbf8d9; -} -.v-tooltip .v-errormessage { - padding: 3px 4px 3px 4px; - background: #ffecc6; - color: #b74100; - border: none; - border-top: 1px solid #fff3dc; - border-bottom: 1px solid #ead7b1; -} -.v-tooltip .v-errormessage h2 { - font-size: 16px; - font-weight: normal; - color: #ab3101; - margin: 2px 0 8px 0; -} -.v-tooltip .v-errormessage h3 { - font-size: 13px; - font-weight: bold; - margin: 1px 0 4px 0; -} -.v-contextmenu { - background: #e9eced url(../tabsheet/img/tab-bg.png); - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - background-color: #f6f7f7; - color: #464f52; - font-size: 12px; - line-height: 14px; -} -.v-contextmenu .gwt-MenuBar { - border-right: 1px solid #c6cbcc; - border-bottom: 1px solid #c6cbcc; - border-top: 1px solid #d0d4d5; - border-left: 1px solid #d0d4d5; -} -.v-contextmenu .gwt-MenuItem { - padding: 2px 0; -} -.v-contextmenu .gwt-MenuItem div { - padding: 1px 20px 1px 8px; -} -.v-contextmenu .gwt-MenuItem-selected div { - color: #fff; - background: #5daee8; -} -.v-contextmenu .gwt-MenuItem img { - margin-right: 10px; -} -/* Fix icon height to help browsers to load page smoother */ -.v-embedded-icon-16 img { - width:16px; - height:16px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/common/common.scss b/WebContent/VAADIN/themes/runo/common/common.scss new file mode 100644 index 0000000000..a7c8d7ab7e --- /dev/null +++ b/WebContent/VAADIN/themes/runo/common/common.scss @@ -0,0 +1,112 @@ +@mixin runo-common { + +.v-generated-body { + background: #e9eced; +} +.v-app { + background: #e9eced url(img/main-bg.png) repeat-x; + font-family: "Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 13px; + line-height: 18px; +} +/* Global font styles */ +.v-app, +.v-window, +.v-popupview-popup, +.v-tooltip, +.v-app input, +.v-app select, +.v-app button, +.v-app textarea, +.v-window input, +.v-window select, +.v-window button, +.v-window textarea, +.v-popupview-popup input, +.v-popupview-popup select, +.v-popupview-popup button, +.v-popupview-popup textarea, +.v-filterselect-suggestpopup, +.v-datefield-popup, +.v-contextmenu, +.v-Notification, +.v-menubar-submenu, +.v-drag-element { + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 13px; +} +.v-app select, +.v-window select { + padding: 0; +} +/* Custom tooltip */ +.v-tooltip { + background-color: #fffcdd; + border: 1px solid #b8b295; + border-top-color: #d5d2c1; + border-left-color: #d5d2c1; + font-size: 11px; + font-family: arial, helvetica, tahoma, verdana, sans-serif; + color: #5d5444; +} +.v-tooltip-text { + padding: 2px 4px; + border: none; + border-top: 1px solid #fffef5; + border-bottom: 1px solid #fbf8d9; +} +.v-tooltip .v-errormessage { + padding: 3px 4px 3px 4px; + background: #ffecc6; + color: #b74100; + border: none; + border-top: 1px solid #fff3dc; + border-bottom: 1px solid #ead7b1; +} +.v-tooltip .v-errormessage h2 { + font-size: 16px; + font-weight: normal; + color: #ab3101; + margin: 2px 0 8px 0; +} +.v-tooltip .v-errormessage h3 { + font-size: 13px; + font-weight: bold; + margin: 1px 0 4px 0; +} +.v-contextmenu { + background: #e9eced url(../tabsheet/img/tab-bg.png); + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + background-color: #f6f7f7; + color: #464f52; + font-size: 12px; + line-height: 14px; +} +.v-contextmenu .gwt-MenuBar { + border-right: 1px solid #c6cbcc; + border-bottom: 1px solid #c6cbcc; + border-top: 1px solid #d0d4d5; + border-left: 1px solid #d0d4d5; +} +.v-contextmenu .gwt-MenuItem { + padding: 2px 0; +} +.v-contextmenu .gwt-MenuItem div { + padding: 1px 20px 1px 8px; +} +.v-contextmenu .gwt-MenuItem-selected div { + color: #fff; + background: #5daee8; +} +.v-contextmenu .gwt-MenuItem img { + margin-right: 10px; +} +/* Fix icon height to help browsers to load page smoother */ +.v-embedded-icon-16 img { + width:16px; + height:16px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/datefield/datefield.css b/WebContent/VAADIN/themes/runo/datefield/datefield.css deleted file mode 100644 index 0bfa060a09..0000000000 --- a/WebContent/VAADIN/themes/runo/datefield/datefield.css +++ /dev/null @@ -1,145 +0,0 @@ -.v-datefield input.v-textfield, -.v-datefield input.v-textfield[type=text] { - height: 18px; -} -.v-datefield-button { - font-size:13px; - width: 22px; - height: 24px; - padding: 0; - overflow: hidden; - border: none; - background: transparent url(img/open-button.png) no-repeat right 0; - vertical-align: top; -} -.v-datefield-popup { - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 12px; - background: #f6f7f7; - border: 1px solid #b6bbbc; - padding: 2px 6px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.v-datefield-calendarpanel { - width: 230px; -} -.v-datefield-popup .v-datefield-calendarpanel { - width: 200px; -} -.v-datefield-year .v-datefield-calendarpanel { - width: 100px; -} -.v-datefield-calendarpanel td { - text-align: right; -} -.v-datefield-calendarpanel td span { - display: block; -} -.v-datefield-calendarpanel-header { - height: 30px; - font-size: 13px; -} -td.v-datefield-calendarpanel-month { - font-weight: bold; - text-shadow: 0 1px 0 #fff; - width: 150px; -} -.v-datefield-calendarpanel-prevyear, -.v-datefield-calendarpanel-nextyear, -.v-datefield-calendarpanel-prevmonth, -.v-datefield-calendarpanel-nextmonth { - width: 16px; -} -/* Year buttons */ -.v-datefield-calendarpanel .v-button-prevyear, -.v-datefield-calendarpanel .v-button-nextyear { - display: block; - width: 16px; - height: 16px; - border: none; - padding: 0; - background: transparent url(img/prevyear.png) no-repeat; - text-indent: -90000px; - margin: 0 auto; -} -.v-datefield-calendarpanel .v-button-nextyear { - background: transparent url(img/nextyear.png) no-repeat; -} -.v-datefield-calendarpanel .v-button-prevyear:hover, -.v-datefield-calendarpanel .v-button-nextyear:hover { - background-position: left bottom; -} -/* Month buttons */ -.v-datefield-calendarpanel .v-button-prevmonth, -.v-datefield-calendarpanel .v-button-nextmonth { - display: block; - width: 11px; - height: 16px; - border: none; - padding: 0; - background: transparent url(img/prevmonth.png) no-repeat; - text-indent: -90000px; - margin: 0 auto; -} -.v-datefield-calendarpanel .v-button-nextmonth { - background: transparent url(img/nextmonth.png) no-repeat; -} -.v-datefield-calendarpanel .v-button-prevmonth:hover, -.v-datefield-calendarpanel .v-button-nextmonth:hover { - background-position: left bottom; -} -.v-datefield-calendarpanel strong { - color: #ee5311; - display: block; - width: 20px; - font-size: 12px; -} -.v-datefield-calendarpanel-day, -.v-datefield-calendarpanel-weeknumber, -.v-datefield-calendarpanel-day-today { - padding: 1px 3px; - width: 14px; - height: 16px; -} -.v-datefield-calendarpanel-day-today { - border: 1px solid #429ce9; - width: 12px; - height: 14px -} -.v-datefield-calendarpanel-day-entry { - color: #6a98b5; -} -.v-datefield-calendarpanel-day-disabled { - font-weight: normal; - color: #dddddd; -} -.v-datefield-calendarpanel-day-entry.v-datefield-calendarpanel-day-disabled { - color: #afd6f8; -} -.v-datefield-calendarpanel-day-selected { - font-weight: bold; - width: 14px; - height: 16px; - color: #fff; - padding: 1px 3px; - background: transparent url(img/selected-bg.png) no-repeat 50% 50%; - border: none; -} -.v-datefield-time { - font-size: 11px; -} -.v-datefield-time .v-select { - font-size: 10px; - padding: 0; - margin: 0; -} -.v-datefield-rendererror .v-textfield { - background: #ff9999; -} -.v-datefield-prompt .v-datefield-textfield { - color: #999; - font-style: normal; -} diff --git a/WebContent/VAADIN/themes/runo/datefield/datefield.scss b/WebContent/VAADIN/themes/runo/datefield/datefield.scss new file mode 100644 index 0000000000..57ad061b65 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/datefield/datefield.scss @@ -0,0 +1,149 @@ +@mixin runo-datefield { + +.v-datefield input.v-textfield, +.v-datefield input.v-textfield[type=text] { + height: 18px; +} +.v-datefield-button { + font-size:13px; + width: 22px; + height: 24px; + padding: 0; + overflow: hidden; + border: none; + background: transparent url(img/open-button.png) no-repeat right 0; + vertical-align: top; +} +.v-datefield-popup { + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 12px; + background: #f6f7f7; + border: 1px solid #b6bbbc; + padding: 2px 6px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.v-datefield-calendarpanel { + width: 230px; +} +.v-datefield-popup .v-datefield-calendarpanel { + width: 200px; +} +.v-datefield-year .v-datefield-calendarpanel { + width: 100px; +} +.v-datefield-calendarpanel td { + text-align: right; +} +.v-datefield-calendarpanel td span { + display: block; +} +.v-datefield-calendarpanel-header { + height: 30px; + font-size: 13px; +} +td.v-datefield-calendarpanel-month { + font-weight: bold; + text-shadow: 0 1px 0 #fff; + width: 150px; +} +.v-datefield-calendarpanel-prevyear, +.v-datefield-calendarpanel-nextyear, +.v-datefield-calendarpanel-prevmonth, +.v-datefield-calendarpanel-nextmonth { + width: 16px; +} +/* Year buttons */ +.v-datefield-calendarpanel .v-button-prevyear, +.v-datefield-calendarpanel .v-button-nextyear { + display: block; + width: 16px; + height: 16px; + border: none; + padding: 0; + background: transparent url(img/prevyear.png) no-repeat; + text-indent: -90000px; + margin: 0 auto; +} +.v-datefield-calendarpanel .v-button-nextyear { + background: transparent url(img/nextyear.png) no-repeat; +} +.v-datefield-calendarpanel .v-button-prevyear:hover, +.v-datefield-calendarpanel .v-button-nextyear:hover { + background-position: left bottom; +} +/* Month buttons */ +.v-datefield-calendarpanel .v-button-prevmonth, +.v-datefield-calendarpanel .v-button-nextmonth { + display: block; + width: 11px; + height: 16px; + border: none; + padding: 0; + background: transparent url(img/prevmonth.png) no-repeat; + text-indent: -90000px; + margin: 0 auto; +} +.v-datefield-calendarpanel .v-button-nextmonth { + background: transparent url(img/nextmonth.png) no-repeat; +} +.v-datefield-calendarpanel .v-button-prevmonth:hover, +.v-datefield-calendarpanel .v-button-nextmonth:hover { + background-position: left bottom; +} +.v-datefield-calendarpanel strong { + color: #ee5311; + display: block; + width: 20px; + font-size: 12px; +} +.v-datefield-calendarpanel-day, +.v-datefield-calendarpanel-weeknumber, +.v-datefield-calendarpanel-day-today { + padding: 1px 3px; + width: 14px; + height: 16px; +} +.v-datefield-calendarpanel-day-today { + border: 1px solid #429ce9; + width: 12px; + height: 14px; +} +.v-datefield-calendarpanel-day-entry { + color: #6a98b5; +} +.v-datefield-calendarpanel-day-disabled { + font-weight: normal; + color: #dddddd; +} +.v-datefield-calendarpanel-day-entry.v-datefield-calendarpanel-day-disabled { + color: #afd6f8; +} +.v-datefield-calendarpanel-day-selected { + font-weight: bold; + width: 14px; + height: 16px; + color: #fff; + padding: 1px 3px; + background: transparent url(img/selected-bg.png) no-repeat 50% 50%; + border: none; +} +.v-datefield-time { + font-size: 11px; +} +.v-datefield-time .v-select { + font-size: 10px; + padding: 0; + margin: 0; +} +.v-datefield-rendererror .v-textfield { + background: #ff9999; +} +.v-datefield-prompt .v-datefield-textfield { + color: #999; + font-style: normal; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/formlayout/formlayout.css b/WebContent/VAADIN/themes/runo/formlayout/formlayout.css deleted file mode 100644 index 466baafd8c..0000000000 --- a/WebContent/VAADIN/themes/runo/formlayout/formlayout.css +++ /dev/null @@ -1,54 +0,0 @@ -.v-formlayout-cell .v-errorindicator { - width: 10px; - height: 16px; - background: transparent url(../icons/16/error.png) no-repeat top right; -} -.v-formlayout-captioncell { - text-align:right; - white-space: nowrap; -} -.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, -.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, -.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { - padding-top: 8px; -} -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, -.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { - padding-top: 15px; -} -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, -.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { - padding-bottom: 15px; -} -.v-formlayout-margin-left .v-formlayout-captioncell { - padding-left: 18px; -} -.v-formlayout-margin-right .v-formlayout-contentcell { - padding-right: 18px; -} -/* form */ -.v-form-errormessage { - background: transparent url(../icons/16/error.png) no-repeat top left; - padding-left: 20px; - margin-bottom: 5px; - margin-top: 5px; - min-height: 20px; -} -.v-form fieldset { - border: none; - border-top: 1px solid #babfc0; -} -.v-form-nocaption fieldset { - border: none; -} -.v-form-nocaption legend { - display: none; -} -.v-form legend { - margin: 0; - padding: 0 4px 0.3em 4px; - font-weight: bold; - color: #464f52; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/formlayout/formlayout.scss b/WebContent/VAADIN/themes/runo/formlayout/formlayout.scss new file mode 100644 index 0000000000..0766269d8b --- /dev/null +++ b/WebContent/VAADIN/themes/runo/formlayout/formlayout.scss @@ -0,0 +1,58 @@ +@mixin runo-formlayout { + +.v-formlayout-cell .v-errorindicator { + width: 10px; + height: 16px; + background: transparent url(../icons/16/error.png) no-repeat top right; +} +.v-formlayout-captioncell { + text-align:right; + white-space: nowrap; +} +.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, +.v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, +.v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { + padding-top: 8px; +} +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 15px; +} +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { + padding-bottom: 15px; +} +.v-formlayout-margin-left .v-formlayout-captioncell { + padding-left: 18px; +} +.v-formlayout-margin-right .v-formlayout-contentcell { + padding-right: 18px; +} +/* form */ +.v-form-errormessage { + background: transparent url(../icons/16/error.png) no-repeat top left; + padding-left: 20px; + margin-bottom: 5px; + margin-top: 5px; + min-height: 20px; +} +.v-form fieldset { + border: none; + border-top: 1px solid #babfc0; +} +.v-form-nocaption fieldset { + border: none; +} +.v-form-nocaption legend { + display: none; +} +.v-form legend { + margin: 0; + padding: 0 4px 0.3em 4px; + font-weight: bold; + color: #464f52; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/gridlayout/gridlayout.css b/WebContent/VAADIN/themes/runo/gridlayout/gridlayout.css deleted file mode 100644 index a9c1fef15e..0000000000 --- a/WebContent/VAADIN/themes/runo/gridlayout/gridlayout.css +++ /dev/null @@ -1,16 +0,0 @@ -.v-gridlayout-margin-top { - padding-top: 15px; -} -.v-gridlayout-margin-bottom { - padding-bottom: 15px; -} -.v-gridlayout-margin-left { - padding-left: 18px; -} -.v-gridlayout-margin-right { - padding-right: 18px; -} -.v-gridlayout-spacing-on { - padding-left: 8px; - padding-top: 8px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/gridlayout/gridlayout.scss b/WebContent/VAADIN/themes/runo/gridlayout/gridlayout.scss new file mode 100644 index 0000000000..a8e9f7a7cd --- /dev/null +++ b/WebContent/VAADIN/themes/runo/gridlayout/gridlayout.scss @@ -0,0 +1,20 @@ +@mixin runo-gridlayout { + +.v-gridlayout-margin-top { + padding-top: 15px; +} +.v-gridlayout-margin-bottom { + padding-bottom: 15px; +} +.v-gridlayout-margin-left { + padding-left: 18px; +} +.v-gridlayout-margin-right { + padding-right: 18px; +} +.v-gridlayout-spacing-on { + padding-left: 8px; + padding-top: 8px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/label/label.css b/WebContent/VAADIN/themes/runo/label/label.css deleted file mode 100644 index e851bd74f3..0000000000 --- a/WebContent/VAADIN/themes/runo/label/label.css +++ /dev/null @@ -1,70 +0,0 @@ -.v-label h1, -.v-label h2, -.v-label h3, -.v-label h4, -.v-label h5, -.v-label h6 { - color: #404749; -} - -.v-label-h1, -.v-label h1 { - margin: 0; - padding: 8px 0 4px; - font-size: 24px; - line-height: normal; - letter-spacing: -0.03em; - font-weight: normal; - text-shadow: 0 1px 1px #fff; -} - -.v-label-h2, -.v-label h2 { - color: #f14c1a; - font-size: 18px; - letter-spacing: -0.03em; - font-weight: normal; - padding: 13px 0 5px; -} - -.v-label-h3, -.v-label h3 { - font-size: 15px; - letter-spacing: -0.03em; - font-weight: normal; - text-shadow: 0 1px 1px #fff; -} - -.v-label-h4, -.v-label h4 { - font-size: 13px; - font-weight: normal; - text-shadow: 0 1px 1px #fff; - margin: 0; - padding: 8px 0 4px; -} - -.v-label-small { - font-size: .87em; - line-height: 1.4; - color: #707679; -} - -.v-label hr, -.v-label-hr { - height: 2px; - overflow: hidden; - background: #ccd2d3; - color: #ccd2d3; /* For IE */ - border: none; - border-bottom: 1px solid #fff; - margin: 0; -} -.v-label-hr { - height: 1px; -} - -.v-sa .v-label hr, -.v-ie8 .v-label hr { - height: 1px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/label/label.scss b/WebContent/VAADIN/themes/runo/label/label.scss new file mode 100644 index 0000000000..94bb5637e9 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/label/label.scss @@ -0,0 +1,74 @@ +@mixin runo-label { + +.v-label h1, +.v-label h2, +.v-label h3, +.v-label h4, +.v-label h5, +.v-label h6 { + color: #404749; +} + +.v-label-h1, +.v-label h1 { + margin: 0; + padding: 8px 0 4px; + font-size: 24px; + line-height: normal; + letter-spacing: -0.03em; + font-weight: normal; + text-shadow: 0 1px 1px #fff; +} + +.v-label-h2, +.v-label h2 { + color: #f14c1a; + font-size: 18px; + letter-spacing: -0.03em; + font-weight: normal; + padding: 13px 0 5px; +} + +.v-label-h3, +.v-label h3 { + font-size: 15px; + letter-spacing: -0.03em; + font-weight: normal; + text-shadow: 0 1px 1px #fff; +} + +.v-label-h4, +.v-label h4 { + font-size: 13px; + font-weight: normal; + text-shadow: 0 1px 1px #fff; + margin: 0; + padding: 8px 0 4px; +} + +.v-label-small { + font-size: .87em; + line-height: 1.4; + color: #707679; +} + +.v-label hr, +.v-label-hr { + height: 2px; + overflow: hidden; + background: #ccd2d3; + color: #ccd2d3; /* For IE */ + border: none; + border-bottom: 1px solid #fff; + margin: 0; +} +.v-label-hr { + height: 1px; +} + +.v-sa .v-label hr, +.v-ie8 .v-label hr { + height: 1px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/link/link.css b/WebContent/VAADIN/themes/runo/link/link.css deleted file mode 100644 index a123156cb6..0000000000 --- a/WebContent/VAADIN/themes/runo/link/link.css +++ /dev/null @@ -1,3 +0,0 @@ -.v-link a { - color: #464f52; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/link/link.scss b/WebContent/VAADIN/themes/runo/link/link.scss new file mode 100644 index 0000000000..8c08a718b8 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/link/link.scss @@ -0,0 +1,7 @@ +@mixin runo-link { + +.v-link a { + color: #464f52; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/menubar/menubar.css b/WebContent/VAADIN/themes/runo/menubar/menubar.css deleted file mode 100644 index 91cf78189d..0000000000 --- a/WebContent/VAADIN/themes/runo/menubar/menubar.css +++ /dev/null @@ -1,35 +0,0 @@ -.v-menubar { - color: #464f52; - border-left: 1px solid #c6cbcc; -} -.v-menubar .v-menubar-menuitem { - padding: 1px 10px; - border: 1px solid #c6cbcc; - border-left: none; - height: 18px; - line-height: 18x; -} -.v-menubar-menuitem-selected { - color: #fff; - background: #5daee8; -} -.v-menubar-submenu { - background: #e9eced url(../tabsheet/img/tab-bg.png); - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 12px; - line-height: 14px; - border-right: 1px solid #c6cbcc; - border-bottom: 1px solid #c6cbcc; - border-top: 1px solid #d0d4d5; - border-left: 1px solid #d0d4d5; -} -.v-menubar-submenu .v-menubar-menuitem { - padding-top: 1px; - padding-bottom: 1px; - line-height: 16px; - padding-left: 10px; -} -.v-menubar-submenu .v-menubar-menuitem-caption .v-icon { - vertical-align: middle; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/menubar/menubar.scss b/WebContent/VAADIN/themes/runo/menubar/menubar.scss new file mode 100644 index 0000000000..a9c26a4b24 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/menubar/menubar.scss @@ -0,0 +1,39 @@ +@mixin runo-menubar { + +.v-menubar { + color: #464f52; + border-left: 1px solid #c6cbcc; +} +.v-menubar .v-menubar-menuitem { + padding: 1px 10px; + border: 1px solid #c6cbcc; + border-left: none; + height: 18px; + line-height: 18x; +} +.v-menubar-menuitem-selected { + color: #fff; + background: #5daee8; +} +.v-menubar-submenu { + background: #e9eced url(../tabsheet/img/tab-bg.png); + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 12px; + line-height: 14px; + border-right: 1px solid #c6cbcc; + border-bottom: 1px solid #c6cbcc; + border-top: 1px solid #d0d4d5; + border-left: 1px solid #d0d4d5; +} +.v-menubar-submenu .v-menubar-menuitem { + padding-top: 1px; + padding-bottom: 1px; + line-height: 16px; + padding-left: 10px; +} +.v-menubar-submenu .v-menubar-menuitem-caption .v-icon { + vertical-align: middle; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/notification/notification.css b/WebContent/VAADIN/themes/runo/notification/notification.css deleted file mode 100644 index 1d9f868a14..0000000000 --- a/WebContent/VAADIN/themes/runo/notification/notification.css +++ /dev/null @@ -1,67 +0,0 @@ -.v-Notification { - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - background-color: #94a0a3; - color: #ffffff; - padding: 20px 45px; - cursor: pointer; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; - overflow: hidden; - font-size: 1.2em; - -webkit-box-shadow: 0 3px 10px rgba(0,0,0,.3); - -moz-box-shadow: 0 3px 10px rgba(0,0,0,.3); - margin: 10px; -} -.v-Notification h1, -.v-Notification p, -.v-Notification-error h1, -.v-Notification-error p, -.v-Notification-warning h1, -.v-Notification-warning p { - display: inline; - font-weight: normal; - line-height: normal; - margin: 0 10px 0 0; -} -.v-Notification-warning { - background: #fff1e4; - color: #dd3400; - border: 2px solid #ffaa90; - opacity: 1; -} -.v-Notification-error { - background: #f13d13 url(img/close-error.png) no-repeat right 5px; - padding-right: 50px; -} -.v-Notification-tray { - background: #575e60; - padding: 3px; - -webkit-box-shadow: 0 3px 6px rgba(0,0,0,.5); - -moz-box-shadow: 0 3px 6px rgba(0,0,0,.5); - max-width: 17em; -} -.v-Notification-tray h1 { - display: block; - font-weight: bold; - font-size: 0.9em; - line-height: 1; - background: #3b4245; - padding: 2px 10px; - margin: 0; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; -} -.v-Notification-tray p { - display: block; - font-size: 0.8em; - line-height: 1.2; - margin: 4px 10px 5px 10px; - color: #e4e7ea; -} -.v-Notification-system { - background-color: #ff0a0a; - font-size: .9em; - padding: 14px 32px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/notification/notification.scss b/WebContent/VAADIN/themes/runo/notification/notification.scss new file mode 100644 index 0000000000..f81f304923 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/notification/notification.scss @@ -0,0 +1,71 @@ +@mixin runo-notification { + +.v-Notification { + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + background-color: #94a0a3; + color: #ffffff; + padding: 20px 45px; + cursor: pointer; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + overflow: hidden; + font-size: 1.2em; + -webkit-box-shadow: 0 3px 10px rgba(0,0,0,.3); + -moz-box-shadow: 0 3px 10px rgba(0,0,0,.3); + margin: 10px; +} +.v-Notification h1, +.v-Notification p, +.v-Notification-error h1, +.v-Notification-error p, +.v-Notification-warning h1, +.v-Notification-warning p { + display: inline; + font-weight: normal; + line-height: normal; + margin: 0 10px 0 0; +} +.v-Notification-warning { + background: #fff1e4; + color: #dd3400; + border: 2px solid #ffaa90; + opacity: 1; +} +.v-Notification-error { + background: #f13d13 url(img/close-error.png) no-repeat right 5px; + padding-right: 50px; +} +.v-Notification-tray { + background: #575e60; + padding: 3px; + -webkit-box-shadow: 0 3px 6px rgba(0,0,0,.5); + -moz-box-shadow: 0 3px 6px rgba(0,0,0,.5); + max-width: 17em; +} +.v-Notification-tray h1 { + display: block; + font-weight: bold; + font-size: 0.9em; + line-height: 1; + background: #3b4245; + padding: 2px 10px; + margin: 0; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.v-Notification-tray p { + display: block; + font-size: 0.8em; + line-height: 1.2; + margin: 4px 10px 5px 10px; + color: #e4e7ea; +} +.v-Notification-system { + background-color: #ff0a0a; + font-size: .9em; + padding: 14px 32px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.css b/WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.css deleted file mode 100644 index 306292d843..0000000000 --- a/WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.css +++ /dev/null @@ -1,108 +0,0 @@ -.v-orderedlayout-margin-top, -.v-horizontallayout-margin-top, -.v-verticallayout-margin-top, -.v-csslayout-margin-top { - padding-top: 15px; -} -.v-orderedlayout-margin-right, -.v-horizontallayout-margin-right, -.v-verticallayout-margin-right, -.v-csslayout-margin-right { - padding-right: 18px; -} -.v-orderedlayout-margin-bottom, -.v-horizontallayout-margin-bottom, -.v-verticallayout-margin-bottom, -.v-csslayout-margin-bottom { - padding-bottom: 15px; -} -.v-orderedlayout-margin-left, -.v-horizontallayout-margin-left, -.v-verticallayout-margin-left, -.v-csslayout-margin-left { - padding-left: 18px; -} -.v-orderedlayout-spacing-on, -.v-horizontallayout-spacing-on, -.v-verticallayout-spacing-on { - padding-top: 8px; - padding-left: 8px; -} -.v-verticallayout-darker, -.v-horizontallayout-darker, -.v-gridlayout-darker, -.v-formlayout-darker, -.v-absolutelayout-darker, -.v-csslayout-darker { - background-color: #f3f4f5; -} - -/* Selectable style */ -.v-csslayout-selectable *, -.v-csslayout-selectable-selected * { - cursor: pointer; -} -.v-csslayout-selectable, -.v-csslayout-selectable-selected { - padding: 10px; - cursor: pointer; -} -.v-csslayout-selectable-selected { - padding: 8px; - border: 2px solid #57a7ed; - background: #d8eaf9; - background: rgba(179,211,237,.5); - -webkit-border-radius: 7px; - -moz-border-radius: 7px; - border-radius: 7px; -} - -/* Shadow style */ -div.v-csslayout-box-shadow { - background: transparent url(../shadow/img/bottom-right.png) no-repeat right bottom; - overflow: hidden; -} -.v-csslayout-box-shadow > .v-csslayout-margin { - padding: 0 8px 0 0; - background: transparent url(../shadow/img/right.png) repeat-y right; - margin: 0; - position: relative; - bottom: 8px; -} -.v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container { - padding: 0 0 8px 0; - margin-left: 6px; - background: transparent url(../shadow/img/bottom.png) repeat-x bottom; - position: relative; - top: 8px; -} -.v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > * { - margin-left: -6px; -} -/* Fancier shadows for capable browsers */ -.v-webkit .v-csslayout-box-shadow, -.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin, -.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container, -.v-gecko .v-csslayout-box-shadow, -.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin, -.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container, -.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > * { - background: transparent; - padding: 0; - margin: 0; - height: auto; - position: static; -} -.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > *, -.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > * { - margin-left: 0; -} -.v-webkit .v-csslayout-box-shadow, -.v-gecko .v-csslayout-box-shadow { - padding: 4px 8px 10px; -} -.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin, -.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin { - -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.4); - -moz-box-shadow: 0 2px 8px rgba(0,0,0,.4); -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.scss b/WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.scss new file mode 100644 index 0000000000..a8c85d9af6 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/orderedlayout/orderedlayout.scss @@ -0,0 +1,112 @@ +@mixin runo-orderedlayout { + +.v-orderedlayout-margin-top, +.v-horizontallayout-margin-top, +.v-verticallayout-margin-top, +.v-csslayout-margin-top { + padding-top: 15px; +} +.v-orderedlayout-margin-right, +.v-horizontallayout-margin-right, +.v-verticallayout-margin-right, +.v-csslayout-margin-right { + padding-right: 18px; +} +.v-orderedlayout-margin-bottom, +.v-horizontallayout-margin-bottom, +.v-verticallayout-margin-bottom, +.v-csslayout-margin-bottom { + padding-bottom: 15px; +} +.v-orderedlayout-margin-left, +.v-horizontallayout-margin-left, +.v-verticallayout-margin-left, +.v-csslayout-margin-left { + padding-left: 18px; +} +.v-orderedlayout-spacing-on, +.v-horizontallayout-spacing-on, +.v-verticallayout-spacing-on { + padding-top: 8px; + padding-left: 8px; +} +.v-verticallayout-darker, +.v-horizontallayout-darker, +.v-gridlayout-darker, +.v-formlayout-darker, +.v-absolutelayout-darker, +.v-csslayout-darker { + background-color: #f3f4f5; +} + +/* Selectable style */ +.v-csslayout-selectable *, +.v-csslayout-selectable-selected * { + cursor: pointer; +} +.v-csslayout-selectable, +.v-csslayout-selectable-selected { + padding: 10px; + cursor: pointer; +} +.v-csslayout-selectable-selected { + padding: 8px; + border: 2px solid #57a7ed; + background: #d8eaf9; + background: rgba(179,211,237,.5); + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; +} + +/* Shadow style */ +div.v-csslayout-box-shadow { + background: transparent url(../shadow/img/bottom-right.png) no-repeat right bottom; + overflow: hidden; +} +.v-csslayout-box-shadow > .v-csslayout-margin { + padding: 0 8px 0 0; + background: transparent url(../shadow/img/right.png) repeat-y right; + margin: 0; + position: relative; + bottom: 8px; +} +.v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container { + padding: 0 0 8px 0; + margin-left: 6px; + background: transparent url(../shadow/img/bottom.png) repeat-x bottom; + position: relative; + top: 8px; +} +.v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > * { + margin-left: -6px; +} +/* Fancier shadows for capable browsers */ +.v-webkit .v-csslayout-box-shadow, +.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin, +.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container, +.v-gecko .v-csslayout-box-shadow, +.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin, +.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container, +.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > * { + background: transparent; + padding: 0; + margin: 0; + height: auto; + position: static; +} +.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > *, +.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin > .v-csslayout-container > * { + margin-left: 0; +} +.v-webkit .v-csslayout-box-shadow, +.v-gecko .v-csslayout-box-shadow { + padding: 4px 8px 10px; +} +.v-webkit .v-csslayout-box-shadow > .v-csslayout-margin, +.v-gecko .v-csslayout-box-shadow > .v-csslayout-margin { + -webkit-box-shadow: 0 2px 8px rgba(0,0,0,.4); + -moz-box-shadow: 0 2px 8px rgba(0,0,0,.4); +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/panel/panel.css b/WebContent/VAADIN/themes/runo/panel/panel.css deleted file mode 100644 index 138fb07f9c..0000000000 --- a/WebContent/VAADIN/themes/runo/panel/panel.css +++ /dev/null @@ -1,79 +0,0 @@ -.v-panel { - background: transparent url(img/top-left.png) no-repeat; -} -.v-panel-caption .v-errorindicator { - padding-right: 20px; - background: transparent url(../icons/16/error.png) no-repeat bottom center; - -} -.v-panel-caption, -.v-panel-caption-light { - font-size: 18px; - line-height: normal; - font-weight: normal; - letter-spacing: -0.03em; - color: #f14c1a; - height: 18px; - padding: 13px 18px 16px 8px; - margin-left: 10px; - background: transparent url(img/top-right.png) no-repeat right top; - text-overflow: ellipsis; -} -.v-panel-nocaption { - height: 9px; - margin-left: 10px; - background: transparent url(img/top-right.png) no-repeat right top; -} -.v-panel-content { - border: 1px solid #babfc0; - border-bottom: 1px solid #dee2e3; - background-color: #fff; -} -.v-panel-deco { - height: 9px; - background: transparent url(img/bottom-right.png) repeat-x right top; - margin-left: 9px; -} -.v-panel-deco:before { - display: block; - content: ""; - width: 9px; - height: 9px; - margin-left: -9px; - background: transparent url(img/bottom-left.png) no-repeat; -} -/* Light panel style */ -.v-panel-light, -.v-panel-caption-light { - background: transparent; -} -.v-panel-caption-light { - border-bottom: 1px solid #babfc0; - margin: 0; - padding-left: 18px; -} -.v-panel-nocaption-light { - background: transparent; - border: none; - height: 0; - margin: 0; -} -.v-panel-content-light { - border: none; - background: transparent; -} -.v-panel-deco-light { - height: 0; - overflow: hidden; -} -/* IE specific rules */ -.v-ie8 .v-panel-content { - border-bottom: 1px solid #babfc0; -} -.v-ie8 .v-panel-content-light { - border-bottom: none; -} -.v-ie8 .v-panel-deco { - height: 0; - overflow: hidden; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/panel/panel.scss b/WebContent/VAADIN/themes/runo/panel/panel.scss new file mode 100644 index 0000000000..5963f73434 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/panel/panel.scss @@ -0,0 +1,83 @@ +@mixin runo-panel { + +.v-panel { + background: transparent url(img/top-left.png) no-repeat; +} +.v-panel-caption .v-errorindicator { + padding-right: 20px; + background: transparent url(../icons/16/error.png) no-repeat bottom center; + +} +.v-panel-caption, +.v-panel-caption-light { + font-size: 18px; + line-height: normal; + font-weight: normal; + letter-spacing: -0.03em; + color: #f14c1a; + height: 18px; + padding: 13px 18px 16px 8px; + margin-left: 10px; + background: transparent url(img/top-right.png) no-repeat right top; + text-overflow: ellipsis; +} +.v-panel-nocaption { + height: 9px; + margin-left: 10px; + background: transparent url(img/top-right.png) no-repeat right top; +} +.v-panel-content { + border: 1px solid #babfc0; + border-bottom: 1px solid #dee2e3; + background-color: #fff; +} +.v-panel-deco { + height: 9px; + background: transparent url(img/bottom-right.png) repeat-x right top; + margin-left: 9px; +} +.v-panel-deco:before { + display: block; + content: ""; + width: 9px; + height: 9px; + margin-left: -9px; + background: transparent url(img/bottom-left.png) no-repeat; +} +/* Light panel style */ +.v-panel-light, +.v-panel-caption-light { + background: transparent; +} +.v-panel-caption-light { + border-bottom: 1px solid #babfc0; + margin: 0; + padding-left: 18px; +} +.v-panel-nocaption-light { + background: transparent; + border: none; + height: 0; + margin: 0; +} +.v-panel-content-light { + border: none; + background: transparent; +} +.v-panel-deco-light { + height: 0; + overflow: hidden; +} +/* IE specific rules */ +.v-ie8 .v-panel-content { + border-bottom: 1px solid #babfc0; +} +.v-ie8 .v-panel-content-light { + border-bottom: none; +} +.v-ie8 .v-panel-deco { + height: 0; + overflow: hidden; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/popupview/popupview.css b/WebContent/VAADIN/themes/runo/popupview/popupview.css deleted file mode 100644 index bbbfb69108..0000000000 --- a/WebContent/VAADIN/themes/runo/popupview/popupview.css +++ /dev/null @@ -1,9 +0,0 @@ -.v-popupview { - background: transparent; -} -.v-popupview-popup { - border: 1px solid #babfc0; - border-bottom: 1px solid #dee2e3; - background: #fff; - padding: 3px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/popupview/popupview.scss b/WebContent/VAADIN/themes/runo/popupview/popupview.scss new file mode 100644 index 0000000000..ddae62902e --- /dev/null +++ b/WebContent/VAADIN/themes/runo/popupview/popupview.scss @@ -0,0 +1,13 @@ +@mixin runo-popupview { + +.v-popupview { + background: transparent; +} +.v-popupview-popup { + border: 1px solid #babfc0; + border-bottom: 1px solid #dee2e3; + background: #fff; + padding: 3px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/progressindicator/progressindicator.css b/WebContent/VAADIN/themes/runo/progressindicator/progressindicator.css deleted file mode 100644 index d8c110471a..0000000000 --- a/WebContent/VAADIN/themes/runo/progressindicator/progressindicator.css +++ /dev/null @@ -1,19 +0,0 @@ -.v-progressindicator-wrapper { - background: #dfe2e4 url(img/base.gif) repeat-x; - border: 1px solid #b6bbbc; -} -.v-disabled .v-progressindicator-wrapper { - background-image: url(img/disabled.gif); -} -.v-progressindicator-indicator { - background: #f7f9f9 url(img/progress.png); -} -.v-progressindicator-indicator { - background: #f7f9f9 url(img/progress.png); -} -.v-progressindicator-indeterminate { - background: #fff url(../../base/common/img/ajax-loader-medium.gif) no-repeat 50%; -} -.v-progressindicator-indeterminate-disabled { - background: #dfe2e4; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/progressindicator/progressindicator.scss b/WebContent/VAADIN/themes/runo/progressindicator/progressindicator.scss new file mode 100644 index 0000000000..31d4493b78 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/progressindicator/progressindicator.scss @@ -0,0 +1,23 @@ +@mixin runo-progressindicator { + +.v-progressindicator-wrapper { + background: #dfe2e4 url(img/base.gif) repeat-x; + border: 1px solid #b6bbbc; +} +.v-disabled .v-progressindicator-wrapper { + background-image: url(img/disabled.gif); +} +.v-progressindicator-indicator { + background: #f7f9f9 url(img/progress.png); +} +.v-progressindicator-indicator { + background: #f7f9f9 url(img/progress.png); +} +.v-progressindicator-indeterminate { + background: #fff url(../../base/common/img/ajax-loader-medium.gif) no-repeat 50%; +} +.v-progressindicator-indeterminate-disabled { + background: #dfe2e4; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/runo.scss b/WebContent/VAADIN/themes/runo/runo.scss new file mode 100644 index 0000000000..9ef3ed118a --- /dev/null +++ b/WebContent/VAADIN/themes/runo/runo.scss @@ -0,0 +1,27 @@ +// this file just defines all runo mixins by importing them + +@import "absolutelayout/absolutelayout.scss"; +@import "accordion/accordion.scss"; +@import "button/button.scss"; +@import "caption/caption.scss"; +@import "common/common.scss"; +@import "datefield/datefield.scss"; +@import "formlayout/formlayout.scss"; +@import "gridlayout/gridlayout.scss"; +@import "label/label.scss"; +@import "link/link.scss"; +@import "menubar/menubar.scss"; +@import "notification/notification.scss"; +@import "orderedlayout/orderedlayout.scss"; +@import "panel/panel.scss"; +@import "popupview/popupview.scss"; +@import "progressindicator/progressindicator.scss"; +@import "select/select.scss"; +@import "shadow/shadow.scss"; +@import "slider/slider.scss"; +@import "splitpanel/splitpanel.scss"; +@import "table/table.scss"; +@import "tabsheet/tabsheet.scss"; +@import "textfield/textfield.scss"; +@import "tree/tree.scss"; +@import "window/window.scss"; diff --git a/WebContent/VAADIN/themes/runo/select/select.css b/WebContent/VAADIN/themes/runo/select/select.css deleted file mode 100644 index 5c66cf81db..0000000000 --- a/WebContent/VAADIN/themes/runo/select/select.css +++ /dev/null @@ -1,160 +0,0 @@ -.v-select-select { - font-size: 13px; -} -/* Twincol style */ -.v-select-twincol-options, -.v-select-twincol-selections { - font-size: 13px; -} -.v-select-twincol-buttons { - padding: 2px; /* does not work in first render in FF ? */ -} - -/** Filterselect aka ComboBox styles */ - -.v-filterselect { - height: 23px; - background: transparent url(img/bg-left-filter.png) no-repeat; - padding-left: 4px; -} -.v-app .v-filterselect .v-filterselect-input, -.v-window .v-filterselect .v-filterselect-input, -.v-popupview-popup .v-filterselect .v-filterselect-input { - background: transparent url(img/bg-center-filter.png) no-repeat 1px 0; - border: none; - height: 23px; - margin: 0; - padding: 2px 0 1px 2px; - font-size: 13px; -} -.v-filterselect-prompt .v-filterselect-input { - font-style: normal; -} -.v-filterselect-input:focus { - /* remove safari/mac outline from this element */ - outline: none; -} -.v-filterselect-focus { - outline: 1px solid #5daee8; - outline-offset: -1px; -} -.v-sa .v-filterselect-focus { - /* place safari focus outline around the whole thing */ - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -4px; -} -.v-filterselect-button { - width: 25px; - height: 23px; - background: transparent url(img/bg-right-filter.png); -} -.v-filterselect-button:hover { - background-position: bottom left; -} -.v-disabled .v-filterselect-button:hover, -.v-readonly .v-filterselect-button:hover { - background-position: top left; -} -.v-filterselect.v-readonly .v-filterselect-input { - background: transparent; -} -.v-filterselect-suggestpopup { - background: #f6f7f7; - border: 1px solid #b6bbbc; - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 12px; - line-height: 18px; - margin-top: -1px; -} -.v-filterselect-suggestmenu .gwt-MenuItem { - padding: 1px 6px; - cursor: pointer; - height: 18px; -} -.v-ff .v-filterselect-suggestmenu .gwt-MenuItem { - height: 20px; -} -.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { - margin-right: 3px; -} -.v-filterselect-suggestmenu .gwt-MenuItem-selected { - background: #5daee8; - color: #fff; -} -.v-filterselect-nextpage, -.v-filterselect-nextpage-off, -.v-filterselect-prevpage-off, -.v-filterselect-prevpage { - height: 11px; - width:100%; - background: transparent url(img/button-bg.png) no-repeat 50% 0; - margin: 2px 0 0 0; -} -.v-filterselect-prevpage, -.v-filterselect-prevpage-off { - background-position: 50% -1px; - margin: 0 0 2px 0; -} -.v-filterselect-prevpage:hover { - background-position: 50% bottom; -} -.v-filterselect-nextpage:hover { - background-position: 50% -12px; -} -.v-filterselect-nextpage span, -.v-filterselect-nextpage-off span, -.v-filterselect-prevpage-off span, -.v-filterselect-prevpage span { - display: block; - height: 12px; - width:100%; - background: transparent url(img/arrow-up.png) no-repeat 50% 40%; - text-indent: -90000px; - cursor: pointer; - overflow: hidden; -} -.v-filterselect-nextpage span, -.v-filterselect-nextpage-off span { - background: transparent url(img/arrow-down.png) no-repeat 50% 60%; -} -.v-filterselect-status { - font-size: 11px; - line-height: 11px; - width: 100%; - padding: 4px 0px; - height: 11px; - border-top: 1px solid #b6bbbc; -} - - -/* Error styles (disabled by default) - ---------------------------------- - -.v-filterselect-error { - background-image: url(img/bg-left-filter-error.png); -} -.v-filterselect-error .v-filterselect-input { - background-image: url(img/bg-center-filter-error.png); -} -.v-filterselect-error .v-filterselect-button { - background-image: url(img/bg-right-filter-error.png); -} -.v-select-error .v-select-option, -.v-select-error .v-select-select, -.v-select-error .v-select-twincol-selections, -.v-select-error .v-select-twincol-options { - background: #FFE0E0; -} -*/ - -/* Required field styles (disabled by default) - -------------------------------------------- - -.v-select-required .v-select-option, -.v-select-required .v-select-select, -.v-select-required .v-select-twincol-selections, -.v-select-required .v-select-twincol-options { - background: #FFE0E0; -} -*/ \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/select/select.scss b/WebContent/VAADIN/themes/runo/select/select.scss new file mode 100644 index 0000000000..e043f143e3 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/select/select.scss @@ -0,0 +1,163 @@ +@mixin runo-select { + +.v-select-select { + font-size: 13px; +} +/* Twincol style */ +.v-select-twincol-options, +.v-select-twincol-selections { + font-size: 13px; +} +.v-select-twincol-buttons { + padding: 2px; /* does not work in first render in FF ? */ +} + +/** Filterselect aka ComboBox styles */ + +.v-filterselect { + height: 23px; + background: transparent url(img/bg-left-filter.png) no-repeat; + padding-left: 4px; +} +.v-app .v-filterselect .v-filterselect-input, +.v-window .v-filterselect .v-filterselect-input, +.v-popupview-popup .v-filterselect .v-filterselect-input { + background: transparent url(img/bg-center-filter.png) no-repeat 1px 0; + border: none; + height: 23px; + margin: 0; + padding: 2px 0 1px 2px; + font-size: 13px; +} +.v-filterselect-prompt .v-filterselect-input { + font-style: normal; +} +.v-filterselect-input:focus { + /* remove safari/mac outline from this element */ + outline: none; +} +.v-filterselect-focus { + outline: 1px solid #5daee8; + outline-offset: -1px; +} +.v-sa .v-filterselect-focus { + /* place safari focus outline around the whole thing */ + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -4px; +} +.v-filterselect-button { + width: 25px; + height: 23px; + background: transparent url(img/bg-right-filter.png); +} +.v-filterselect-button:hover { + background-position: bottom left; +} +.v-disabled .v-filterselect-button:hover, +.v-readonly .v-filterselect-button:hover { + background-position: top left; +} +.v-filterselect.v-readonly .v-filterselect-input { + background: transparent; +} +.v-filterselect-suggestpopup { + background: #f6f7f7; + border: 1px solid #b6bbbc; + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 12px; + line-height: 18px; + margin-top: -1px; +} +.v-filterselect-suggestmenu .gwt-MenuItem { + padding: 1px 6px; + cursor: pointer; + height: 18px; +} +.v-ff .v-filterselect-suggestmenu .gwt-MenuItem { + height: 20px; +} +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + margin-right: 3px; +} +.v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: #5daee8; + color: #fff; +} +.v-filterselect-nextpage, +.v-filterselect-nextpage-off, +.v-filterselect-prevpage-off, +.v-filterselect-prevpage { + height: 11px; + width:100%; + background: transparent url(img/button-bg.png) no-repeat 50% 0; + margin: 2px 0 0 0; +} +.v-filterselect-prevpage, +.v-filterselect-prevpage-off { + background-position: 50% -1px; + margin: 0 0 2px 0; +} +.v-filterselect-prevpage:hover { + background-position: 50% bottom; +} +.v-filterselect-nextpage:hover { + background-position: 50% -12px; +} +.v-filterselect-nextpage span, +.v-filterselect-nextpage-off span, +.v-filterselect-prevpage-off span, +.v-filterselect-prevpage span { + display: block; + height: 12px; + width:100%; + background: transparent url(img/arrow-up.png) no-repeat 50% 40%; + text-indent: -90000px; + cursor: pointer; + overflow: hidden; +} +.v-filterselect-nextpage span, +.v-filterselect-nextpage-off span { + background: transparent url(img/arrow-down.png) no-repeat 50% 60%; +} +.v-filterselect-status { + font-size: 11px; + line-height: 11px; + width: 100%; + padding: 4px 0px; + height: 11px; + border-top: 1px solid #b6bbbc; +} + + +/* Error styles (disabled by default) + ---------------------------------- + +.v-filterselect-error { + background-image: url(img/bg-left-filter-error.png); +} +.v-filterselect-error .v-filterselect-input { + background-image: url(img/bg-center-filter-error.png); +} +.v-filterselect-error .v-filterselect-button { + background-image: url(img/bg-right-filter-error.png); +} +.v-select-error .v-select-option, +.v-select-error .v-select-select, +.v-select-error .v-select-twincol-selections, +.v-select-error .v-select-twincol-options { + background: #FFE0E0; +} +*/ + +/* Required field styles (disabled by default) + -------------------------------------------- + +.v-select-required .v-select-option, +.v-select-required .v-select-select, +.v-select-required .v-select-twincol-selections, +.v-select-required .v-select-twincol-options { + background: #FFE0E0; +} +*/ +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/shadow/shadow.css b/WebContent/VAADIN/themes/runo/shadow/shadow.css deleted file mode 100644 index 2fc9a1c608..0000000000 --- a/WebContent/VAADIN/themes/runo/shadow/shadow.css +++ /dev/null @@ -1,68 +0,0 @@ -.v-shadow { - position: absolute; -} - -.v-shadow .top-left { - position: absolute; overflow: hidden; - top: -3px; left: -4px; - width: 8px; height: 8px; - background: transparent url(img/top-left.png); -} - -.v-shadow .top { - position: absolute; overflow: hidden; - top: -3px; left: 4px; - height: 8px; right: 4px; - background: transparent url(img/top.png); -} - -.v-shadow .top-right { - position: absolute; overflow: hidden; - top: -3px; right: -4px; - width: 8px; height: 8px; - background: transparent url(img/top-right.png); -} - -.v-shadow .left { - position: absolute; overflow: hidden; - top: 5px; left: -4px; - width: 8px; - bottom: 3px; - background: transparent url(img/left.png); -} - -.v-shadow .center { - position: absolute; overflow: hidden; - top: 5px; left: 4px; - bottom: 3px; right: 4px; - background: transparent url(img/center.png); -} - -.v-shadow .right { - position: absolute; overflow: hidden; - top: 5px; right: -4px; - width: 8px; - bottom: 3px; - background: transparent url(img/right.png); -} - -.v-shadow .bottom-left { - position: absolute; overflow: hidden; - bottom: -5px; left: -4px; - width: 8px; height: 8px; - background: transparent url(img/bottom-left.png); -} - -.v-shadow .bottom { - position: absolute; overflow: hidden; - bottom: -5px; left: 4px; - right: 4px; height: 8px; - background: transparent url(img/bottom.png); -} - -.v-shadow .bottom-right { - position: absolute; overflow: hidden; - bottom: -5px; right: -4px; - width: 8px; height: 8px; - background: transparent url(img/bottom-right.png); -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/shadow/shadow.scss b/WebContent/VAADIN/themes/runo/shadow/shadow.scss new file mode 100644 index 0000000000..96a911fca4 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/shadow/shadow.scss @@ -0,0 +1,72 @@ +@mixin runo-shadow { + +.v-shadow { + position: absolute; +} + +.v-shadow .top-left { + position: absolute; overflow: hidden; + top: -3px; left: -4px; + width: 8px; height: 8px; + background: transparent url(img/top-left.png); +} + +.v-shadow .top { + position: absolute; overflow: hidden; + top: -3px; left: 4px; + height: 8px; right: 4px; + background: transparent url(img/top.png); +} + +.v-shadow .top-right { + position: absolute; overflow: hidden; + top: -3px; right: -4px; + width: 8px; height: 8px; + background: transparent url(img/top-right.png); +} + +.v-shadow .left { + position: absolute; overflow: hidden; + top: 5px; left: -4px; + width: 8px; + bottom: 3px; + background: transparent url(img/left.png); +} + +.v-shadow .center { + position: absolute; overflow: hidden; + top: 5px; left: 4px; + bottom: 3px; right: 4px; + background: transparent url(img/center.png); +} + +.v-shadow .right { + position: absolute; overflow: hidden; + top: 5px; right: -4px; + width: 8px; + bottom: 3px; + background: transparent url(img/right.png); +} + +.v-shadow .bottom-left { + position: absolute; overflow: hidden; + bottom: -5px; left: -4px; + width: 8px; height: 8px; + background: transparent url(img/bottom-left.png); +} + +.v-shadow .bottom { + position: absolute; overflow: hidden; + bottom: -5px; left: 4px; + right: 4px; height: 8px; + background: transparent url(img/bottom.png); +} + +.v-shadow .bottom-right { + position: absolute; overflow: hidden; + bottom: -5px; right: -4px; + width: 8px; height: 8px; + background: transparent url(img/bottom-right.png); +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/slider/slider.css b/WebContent/VAADIN/themes/runo/slider/slider.css deleted file mode 100644 index 698d15de90..0000000000 --- a/WebContent/VAADIN/themes/runo/slider/slider.css +++ /dev/null @@ -1,70 +0,0 @@ -.v-slider { - border-top: 1px solid #cccfd0; - border-bottom: 1px solid #cccfd0; - margin: 5px 0; -} -.v-slider-base { - /* changing the borders will require adjustments to ISlider.java */ - height: 2px; - background: #f3f3f4; - border-top: 1px solid #cbcdce; - border-left: 1px solid #cccfd0; - border-right: 1px solid #cccfd0; -} -.v-slider-handle { - background: transparent url(img/handle-horizontal.png); - width: 12px; - height: 12px; - margin-top: -5px; - cursor: pointer; -} -.v-slider-handle:hover { - background-position: left bottom; -} -.v-slider-scrollbar .v-slider-handle, -.v-slider-scrollbar.v-slider-vertical .v-slider-handle { - background: #ffffff; - border: 1px solid #cccfd0; - border-radius: 6px; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; -} - -.v-slider-vertical { - width: 3px; - margin: 0 5px; - border: none; - border-left: 1px solid #cccfd0; - border-right: 1px solid #cccfd0; -} -.v-slider-vertical .v-slider-base { - width: 2px; - border-left: 1px solid #cbcdce; - border-right: none; - background: #f3f3f4; - border-top: 1px solid #cccfd0; - border-bottom: 1px solid #cccfd0; -} -.v-slider-vertical .v-slider-handle { - background: transparent url(img/handle-vertical.png); - width: 12px; - height: 12px; - margin-left: -5px; -} -.v-slider-vertical .v-slider-handle-active { - background-position: left bottom; -} - -/* Disabled by default -.v-slider-error .v-slider-base { - background:transparent; - background-color: #FFE0E0; -} -*/ - -/* Disabled by default -.v-slider-required .v-slider-base { - background:transparent; - background-color: #FFE0E0; -} -*/ diff --git a/WebContent/VAADIN/themes/runo/slider/slider.scss b/WebContent/VAADIN/themes/runo/slider/slider.scss new file mode 100644 index 0000000000..3bc9e28702 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/slider/slider.scss @@ -0,0 +1,73 @@ +@mixin runo-slider { + +.v-slider { + border-top: 1px solid #cccfd0; + border-bottom: 1px solid #cccfd0; + margin: 5px 0; +} +.v-slider-base { + /* changing the borders will require adjustments to ISlider.java */ + height: 2px; + background: #f3f3f4; + border-top: 1px solid #cbcdce; + border-left: 1px solid #cccfd0; + border-right: 1px solid #cccfd0; +} +.v-slider-handle { + background: transparent url(img/handle-horizontal.png); + width: 12px; + height: 12px; + margin-top: -5px; + cursor: pointer; +} +.v-slider-handle:hover { + background-position: left bottom; +} +.v-slider-scrollbar .v-slider-handle, +.v-slider-scrollbar.v-slider-vertical .v-slider-handle { + background: #ffffff; + border: 1px solid #cccfd0; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} + +.v-slider-vertical { + width: 3px; + margin: 0 5px; + border: none; + border-left: 1px solid #cccfd0; + border-right: 1px solid #cccfd0; +} +.v-slider-vertical .v-slider-base { + width: 2px; + border-left: 1px solid #cbcdce; + border-right: none; + background: #f3f3f4; + border-top: 1px solid #cccfd0; + border-bottom: 1px solid #cccfd0; +} +.v-slider-vertical .v-slider-handle { + background: transparent url(img/handle-vertical.png); + width: 12px; + height: 12px; + margin-left: -5px; +} +.v-slider-vertical .v-slider-handle-active { + background-position: left bottom; +} + +/* Disabled by default +.v-slider-error .v-slider-base { + background:transparent; + background-color: #FFE0E0; +} +*/ + +/* Disabled by default +.v-slider-required .v-slider-base { + background:transparent; + background-color: #FFE0E0; +} +*/ +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/splitpanel/splitpanel.css b/WebContent/VAADIN/themes/runo/splitpanel/splitpanel.css deleted file mode 100644 index d7851c27e6..0000000000 --- a/WebContent/VAADIN/themes/runo/splitpanel/splitpanel.css +++ /dev/null @@ -1,84 +0,0 @@ -.v-splitpanel-horizontal, -.v-splitpanel-vertical { - overflow: hidden; -} - -.v-splitpanel-hsplitter, -.v-splitpanel-hsplitter-locked { - width: 6px; -} - -.v-splitpanel-hsplitter div, -.v-splitpanel-hsplitter-locked div { - width: 6px; - position: absolute; - top: 0; - bottom: 0; - background: #ccd2d0 url(img/bg_hor.png); - border: 1px solid #b6bbbc; - margin: 0 -1px; -} - -.v-splitpanel-vsplitter, -.v-splitpanel-vsplitter-locked { - height: 6px; -} - -.v-splitpanel-vsplitter div, -.v-splitpanel-vsplitter-locked div { - height: 6px; - background: #ccd2d0 url(img/bg_ver.png); - border: 1px solid #b6bbbc; - margin: -1px 0; -} - - -/* Rounded style */ -.v-splitpanel-hsplitter-rounded div, -.v-splitpanel-vsplitter-rounded div, -.v-splitpanel-hsplitter-rounded-locked div, -.v-splitpanel-vsplitter-rounded-locked div { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} -.v-splitpanel-hsplitter-rounded div, -.v-splitpanel-hsplitter-rounded-locked div { - top: 4px; - bottom: 4px; -} -.v-splitpanel-vsplitter-rounded div, -.v-splitpanel-vsplitter-rounded-locked div { - margin: -1px 4px; -} - - -/* Small style */ -.v-splitpanel-hsplitter-small, -.v-splitpanel-vsplitter-small, -.v-splitpanel-hsplitter-small-locked, -.v-splitpanel-vsplitter-small-locked { - background: #b6bbbc; -} -.v-splitpanel-hsplitter-small, -.v-splitpanel-hsplitter-small-locked { - width: 1px; -} -.v-splitpanel-vsplitter-small, -.v-splitpanel-vsplitter-small-locked { - height: 1px; -} -.v-splitpanel-hsplitter-small div, -.v-splitpanel-hsplitter-small-locked div { - border: none; - background: transparent; - width: 5px; - margin: 0 0 0 -2px; -} -.v-splitpanel-vsplitter-small div, -.v-splitpanel-vsplitter-small-locked div { - border: none; - background: transparent; - height: 5px; - margin: -2px 0 0 0; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/splitpanel/splitpanel.scss b/WebContent/VAADIN/themes/runo/splitpanel/splitpanel.scss new file mode 100644 index 0000000000..dd01217380 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/splitpanel/splitpanel.scss @@ -0,0 +1,88 @@ +@mixin runo-splitpanel { + +.v-splitpanel-horizontal, +.v-splitpanel-vertical { + overflow: hidden; +} + +.v-splitpanel-hsplitter, +.v-splitpanel-hsplitter-locked { + width: 6px; +} + +.v-splitpanel-hsplitter div, +.v-splitpanel-hsplitter-locked div { + width: 6px; + position: absolute; + top: 0; + bottom: 0; + background: #ccd2d0 url(img/bg_hor.png); + border: 1px solid #b6bbbc; + margin: 0 -1px; +} + +.v-splitpanel-vsplitter, +.v-splitpanel-vsplitter-locked { + height: 6px; +} + +.v-splitpanel-vsplitter div, +.v-splitpanel-vsplitter-locked div { + height: 6px; + background: #ccd2d0 url(img/bg_ver.png); + border: 1px solid #b6bbbc; + margin: -1px 0; +} + + +/* Rounded style */ +.v-splitpanel-hsplitter-rounded div, +.v-splitpanel-vsplitter-rounded div, +.v-splitpanel-hsplitter-rounded-locked div, +.v-splitpanel-vsplitter-rounded-locked div { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.v-splitpanel-hsplitter-rounded div, +.v-splitpanel-hsplitter-rounded-locked div { + top: 4px; + bottom: 4px; +} +.v-splitpanel-vsplitter-rounded div, +.v-splitpanel-vsplitter-rounded-locked div { + margin: -1px 4px; +} + + +/* Small style */ +.v-splitpanel-hsplitter-small, +.v-splitpanel-vsplitter-small, +.v-splitpanel-hsplitter-small-locked, +.v-splitpanel-vsplitter-small-locked { + background: #b6bbbc; +} +.v-splitpanel-hsplitter-small, +.v-splitpanel-hsplitter-small-locked { + width: 1px; +} +.v-splitpanel-vsplitter-small, +.v-splitpanel-vsplitter-small-locked { + height: 1px; +} +.v-splitpanel-hsplitter-small div, +.v-splitpanel-hsplitter-small-locked div { + border: none; + background: transparent; + width: 5px; + margin: 0 0 0 -2px; +} +.v-splitpanel-vsplitter-small div, +.v-splitpanel-vsplitter-small-locked div { + border: none; + background: transparent; + height: 5px; + margin: -2px 0 0 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/styles.scss b/WebContent/VAADIN/themes/runo/styles.scss new file mode 100644 index 0000000000..1bbe531b23 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/styles.scss @@ -0,0 +1,32 @@ +@import "../base/styles.scss"; +@import "runo.scss"; + +// .v-theme-runo { +@include runo-absolutelayout; +@include runo-accordion; +@include runo-button; +@include runo-caption; + +@include runo-common; + +@include runo-datefield; +@include runo-formlayout; +@include runo-gridlayout; +@include runo-label; +@include runo-link; +@include runo-menubar; +@include runo-notification; +@include runo-orderedlayout; +@include runo-panel; +@include runo-popupview; +@include runo-progressindicator; +@include runo-select; +@include runo-shadow; +@include runo-slider; +@include runo-splitpanel; +@include runo-table; +@include runo-tabsheet; +@include runo-textfield; +@include runo-tree; +@include runo-window; +// } diff --git a/WebContent/VAADIN/themes/runo/table/table.css b/WebContent/VAADIN/themes/runo/table/table.css deleted file mode 100644 index 42f93752be..0000000000 --- a/WebContent/VAADIN/themes/runo/table/table.css +++ /dev/null @@ -1,202 +0,0 @@ -.v-table-header-wrap { - height: 36px; - border: 1px solid #b6bbbc; - border-bottom: none; - background: #e7e9ea url(img/header-bg.png) repeat-x; -} -.v-table-header { - height: 36px; -} -.v-table-footer-wrap { - border-color: #b6bbbc; - background: #e7e9ea url(img/header-bg.png) repeat-x; -} -.v-table-footer td { - border-right-color: #e8eaec; - padding-top: 3px; - padding-bottom: 3px; -} -.v-table-resizer { - height: 36px; - width: 4px; - background: transparent url(img/resizer-bg.png) repeat-y 100% 50%; -} -.v-table-caption-container { - color: #393a3c; - font-size: 15px; - padding: 9px 2px 9px 0; - text-shadow: #ffffff 0 1px 0; - margin-left: 4px; -} -.v-table-sort-indicator { - width: 0; - height: 36px; -} -.v-table-header-cell-asc .v-table-sort-indicator { - background: transparent url(img/sort-asc.png) no-repeat right 50%; - width: 20px; - height: 36px; -} -.v-table-header-cell-desc .v-table-sort-indicator { - background: transparent url(img/sort-desc.png) no-repeat right 50%; - width: 20px; - height: 36px; -} -.v-table-header-cell:hover, -.v-table-header-cell-asc:hover, -.v-table-header-cell-desc:hover { - background: transparent url(img/header-bg-over.png) repeat-x; -} -.v-table-body { - background: #fff; - border: 1px solid #b6bbbc; -} -tr.v-table-row:hover, -tr.v-table-row-odd:hover { - background-color: #edeeee; -} -.v-table-row, -.v-table-body-noselection .v-table-row:hover { - background-color: #fff; -} -.v-table-row-odd, -.v-table-body-noselection .v-table-row-odd:hover { - background-color: #f6f7f7; -} -.v-table-generated-row { - color: #393a3c; - font-size: 15px; - padding: 9px 2px 9px 0; - text-shadow: #ffffff 0 1px 0; - background: #e7e9ea; -} -.v-table tr.v-selected { - background: #57a7ed; - color: #fff; -} -.v-table-cell-content { - padding: 0 6px 0 4px; - border-right: none; -} -.v-table-cell-wrapper { - white-space: nowrap; - overflow: hidden; - line-height: 23px; - /* Do not specify horizontal padding here */ - padding: 3px 0 0 0; -} -/* Fix textfield size to correspond label size inside table */ -.v-table-cell-content .v-textfield, -.v-table-cell-content .v-button { - margin: -3px 0 0 0; -} -.v-table-cell-content .v-textfield, -.v-table-cell-content .v-datefield { - width: 97%; /* approximate */ -} -/* ...but not for datefield textarea */ -.v-table-cell-content .v-datefield .v-textfield { - width: auto; - -} -/* datefield button is too high for table cell */ -.v-table-cell-content .v-datefield-button { - height: 25px; - margin: -3px 0 0 0; -} -.v-table-column-selector { - background: transparent url(img/colsel.png) no-repeat; - margin: -36px 0 0 0; - height: 36px; - width: 15px; -} -.v-table-focus-slot-left { - border-color: #b6bbbc; - margin-bottom: -36px; - width: auto; - border-right: none; -} -.v-table-focus-slot-right { - border-color: #b6bbbc; -} -.v-table-header-drag { - background: #e7edf3 url(img/header-bg.png) repeat-x; - border: 1px solid #b6bbbc; - padding: 4px; - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 15px; - margin-top: 20px; -} -.v-table-scrollposition { - width: 160px; - height: 39px; - background: transparent url(img/scroll-position-bg.png); - border: none; -} -.v-table-scrollposition span { - display: block; - margin-top: 8px; - text-align: center; - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - color: #464f52; - font-size: 15px; - text-shadow: #ffffff 2px 2px 0; -} -/* row in column selector */ -.v-on div { - background: transparent url(img/check.gif) no-repeat 2px 50%; - text-indent: 6px; -} -.v-off div { - text-indent: 6px; -} -.v-table .v-link { - display: inline; -} - -/* Borderless style */ -.v-table-borderless .v-table-header-wrap, -.v-table-borderless .v-table-body { - border: none; -} -.v-table-borderless .v-table-header-wrap { - border-bottom: 1px solid #b6bbbc; -} -.v-table-borderless .v-table-body { - background: transparent; -} -.v-table-borderless .v-table-row, -.v-table-borderless .v-table-row-odd, -.v-table-borderless .v-table-body-noselection .v-table-row:hover, -.v-table-borderless .v-table-body-noselection .v-table-row-odd:hover { - background-color: transparent; -} - - -/* Small style */ -.v-table-small .v-table-header-wrap, -.v-table-small .v-table-header { - height: 22px; -} -.v-table-small .v-table-sort-indicator, -.v-table-small .v-table-header-cell-asc .v-table-sort-indicator, -.v-table-small .v-table-header-cell-desc .v-table-sort-indicator { - height: 22px; -} -.v-table-small .v-table-caption-container { - font-size: 13px; - padding-top: 3px; - padding-bottom: 3px; -} -.v-table-small .v-table-column-selector { - margin-top: -21px; - height: 21px; -} -.v-table-small .v-table-body { - font-size: 12px; -} -.v-table-small .v-table-cell-wrapper { - line-height: 18px; - padding: 2px 0; -} diff --git a/WebContent/VAADIN/themes/runo/table/table.scss b/WebContent/VAADIN/themes/runo/table/table.scss new file mode 100644 index 0000000000..47bcb2caca --- /dev/null +++ b/WebContent/VAADIN/themes/runo/table/table.scss @@ -0,0 +1,206 @@ +@mixin runo-table { + +.v-table-header-wrap { + height: 36px; + border: 1px solid #b6bbbc; + border-bottom: none; + background: #e7e9ea url(img/header-bg.png) repeat-x; +} +.v-table-header { + height: 36px; +} +.v-table-footer-wrap { + border-color: #b6bbbc; + background: #e7e9ea url(img/header-bg.png) repeat-x; +} +.v-table-footer td { + border-right-color: #e8eaec; + padding-top: 3px; + padding-bottom: 3px; +} +.v-table-resizer { + height: 36px; + width: 4px; + background: transparent url(img/resizer-bg.png) repeat-y 100% 50%; +} +.v-table-caption-container { + color: #393a3c; + font-size: 15px; + padding: 9px 2px 9px 0; + text-shadow: #ffffff 0 1px 0; + margin-left: 4px; +} +.v-table-sort-indicator { + width: 0; + height: 36px; +} +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent url(img/sort-asc.png) no-repeat right 50%; + width: 20px; + height: 36px; +} +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent url(img/sort-desc.png) no-repeat right 50%; + width: 20px; + height: 36px; +} +.v-table-header-cell:hover, +.v-table-header-cell-asc:hover, +.v-table-header-cell-desc:hover { + background: transparent url(img/header-bg-over.png) repeat-x; +} +.v-table-body { + background: #fff; + border: 1px solid #b6bbbc; +} +tr.v-table-row:hover, +tr.v-table-row-odd:hover { + background-color: #edeeee; +} +.v-table-row, +.v-table-body-noselection .v-table-row:hover { + background-color: #fff; +} +.v-table-row-odd, +.v-table-body-noselection .v-table-row-odd:hover { + background-color: #f6f7f7; +} +.v-table-generated-row { + color: #393a3c; + font-size: 15px; + padding: 9px 2px 9px 0; + text-shadow: #ffffff 0 1px 0; + background: #e7e9ea; +} +.v-table tr.v-selected { + background: #57a7ed; + color: #fff; +} +.v-table-cell-content { + padding: 0 6px 0 4px; + border-right: none; +} +.v-table-cell-wrapper { + white-space: nowrap; + overflow: hidden; + line-height: 23px; + /* Do not specify horizontal padding here */ + padding: 3px 0 0 0; +} +/* Fix textfield size to correspond label size inside table */ +.v-table-cell-content .v-textfield, +.v-table-cell-content .v-button { + margin: -3px 0 0 0; +} +.v-table-cell-content .v-textfield, +.v-table-cell-content .v-datefield { + width: 97%; /* approximate */ +} +/* ...but not for datefield textarea */ +.v-table-cell-content .v-datefield .v-textfield { + width: auto; + +} +/* datefield button is too high for table cell */ +.v-table-cell-content .v-datefield-button { + height: 25px; + margin: -3px 0 0 0; +} +.v-table-column-selector { + background: transparent url(img/colsel.png) no-repeat; + margin: -36px 0 0 0; + height: 36px; + width: 15px; +} +.v-table-focus-slot-left { + border-color: #b6bbbc; + margin-bottom: -36px; + width: auto; + border-right: none; +} +.v-table-focus-slot-right { + border-color: #b6bbbc; +} +.v-table-header-drag { + background: #e7edf3 url(img/header-bg.png) repeat-x; + border: 1px solid #b6bbbc; + padding: 4px; + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 15px; + margin-top: 20px; +} +.v-table-scrollposition { + width: 160px; + height: 39px; + background: transparent url(img/scroll-position-bg.png); + border: none; +} +.v-table-scrollposition span { + display: block; + margin-top: 8px; + text-align: center; + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + color: #464f52; + font-size: 15px; + text-shadow: #ffffff 2px 2px 0; +} +/* row in column selector */ +.v-on div { + background: transparent url(img/check.gif) no-repeat 2px 50%; + text-indent: 6px; +} +.v-off div { + text-indent: 6px; +} +.v-table .v-link { + display: inline; +} + +/* Borderless style */ +.v-table-borderless .v-table-header-wrap, +.v-table-borderless .v-table-body { + border: none; +} +.v-table-borderless .v-table-header-wrap { + border-bottom: 1px solid #b6bbbc; +} +.v-table-borderless .v-table-body { + background: transparent; +} +.v-table-borderless .v-table-row, +.v-table-borderless .v-table-row-odd, +.v-table-borderless .v-table-body-noselection .v-table-row:hover, +.v-table-borderless .v-table-body-noselection .v-table-row-odd:hover { + background-color: transparent; +} + + +/* Small style */ +.v-table-small .v-table-header-wrap, +.v-table-small .v-table-header { + height: 22px; +} +.v-table-small .v-table-sort-indicator, +.v-table-small .v-table-header-cell-asc .v-table-sort-indicator, +.v-table-small .v-table-header-cell-desc .v-table-sort-indicator { + height: 22px; +} +.v-table-small .v-table-caption-container { + font-size: 13px; + padding-top: 3px; + padding-bottom: 3px; +} +.v-table-small .v-table-column-selector { + margin-top: -21px; + height: 21px; +} +.v-table-small .v-table-body { + font-size: 12px; +} +.v-table-small .v-table-cell-wrapper { + line-height: 18px; + padding: 2px 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/tabsheet/tabsheet.css b/WebContent/VAADIN/themes/runo/tabsheet/tabsheet.css deleted file mode 100644 index 7028b3ed16..0000000000 --- a/WebContent/VAADIN/themes/runo/tabsheet/tabsheet.css +++ /dev/null @@ -1,253 +0,0 @@ -.v-tabsheet-tabs { - height: 48px; -} - -.v-tabsheet-spacertd div { - height: 37px; - border: 1px solid #b6bbbc; - background: transparent url(img/tab-bg.png); - padding: 0; -} -.v-tabsheet-scroller { - margin-top: -37px; - float: right; -} -.v-tabsheet-scrollerPrev, -.v-tabsheet-scrollerNext, -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled { - border: none; - width: 12px; - padding: 0; - height: 38px; - opacity: 0.9999; - margin-top: -1px; -} -.v-tabsheet-scrollerNext, -.v-tabsheet-scrollerNext-disabled { - background: transparent url(img/next.png) no-repeat; -} -.v-tabsheet-scrollerPrev, -.v-tabsheet-scrollerPrev-disabled { - background: transparent url(img/prev.png) no-repeat; -} -.v-tabsheet-scrollerPrev:hover, -.v-tabsheet-scrollerNext:hover { - background-position: -24px 0px; -} -.v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-scrollerNext-disabled { - background-position: -12px 0px; -} -.v-tabsheet-scrollerPrev-disabled:hover, -.v-tabsheet-scrollerNext-disabled:hover { - background-position: -12px 0px; -} -.v-tabsheet-tabitem { - border: 1px solid #b6bbbc; - border-right: none; - height: 37px; - padding: 0; - margin-top: 9px; - color: #777f85; - font-size: 15px; - line-height: 18px; - background: #f8f9f9 url(img/tab-bg.png); -} -.v-tabsheet-tabitem .v-caption { - height: 20px; - padding: 9px 15px 8px 15px; -} -.v-tabsheet-tabitem-selected { - border: none; - background: transparent url(../panel/img/top-left.png) no-repeat; - margin: 0; - padding: 0; - height: 48px; - color: #ee5311; -} -.v-tabsheet-tabitem:hover { - color: #4b5257; -} -.v-tabsheet-tabitem-selected:hover { - color: #ee5311; -} -.v-tabsheet-tabitem-selected .v-caption { - background: transparent url(../panel/img/top-right.png) repeat-x right top; - margin: 0 -1px 0 9px; - height: 18px; - padding: 16px 16px 14px 7px; - overflow: visible; -} -.v-tabsheet-caption-close { - margin-left: 3px; - margin-right: -3px; - margin-top: 2px; - font-size: 15px; - width: 15px; - height: 15px; - -webkit-border-radius: 7px; - -moz-border-radius: 7px; - color: #777f85; - line-height: 13px; -} -.v-tabsheet-caption-close:hover { - background: #dce0e0; -} -.v-tabsheet-caption-close:active { - background: #b6bbbc; - color: #fff; -} -.v-tabsheet-content { - border: 1px solid #babfc0; - background-color: #fff; - border-bottom: 1px solid #dee2e3; - border-top: none; -} -.v-tabsheet-hidetabs .v-tabsheet-content { - border-top: 1px solid #b5babb; -} -.v-tabsheet-deco { - height: 10px; - background: transparent url(../panel/img/bottom-right.png) repeat-x right top; - margin-left: 9px; - overflow: visible; -} -.v-tabsheet-deco:before { - display: block; - content: ""; - width: 9px; - height: 9px; - margin-left: -9px; - background: transparent url(../panel/img/bottom-left.png) no-repeat; -} -/* Progress indication * -.v-tabsheet-loading .v-tabsheet-tabitem-selected .v-captiontext { - background: transparent url(../../base/common/img/ajax-loader.gif) no-repeat top right; - margin-left: -10px; - padding-left: 10px; - margin-right: -10px; - padding-right: 10px; - margin-top: -12px; - padding-top: 12px; -}*/ -/* IE specific styles */ -.v-ie .v-tabsheet-content { - border-bottom: none; -} -.v-ie .v-tabsheet-deco { - height: 1px; - background: #babfc0; - overflow: hidden; - margin: 0; -} -.v-ie8 .v-tabsheet-deco, -.v-ie9 .v-tabsheet-deco { - width: 100%; -} -/* Light-style */ -.v-tabsheet-tabcontainer-light { - height: 32px; -} -.v-tabsheet-tabs-light { - height: 32px; - width: 100%; - overflow:hidden; - background: transparent; -} -.v-tabsheet-tabs-light .v-tabsheet-spacertd div { - height: 31px; - border: none; - border-bottom: 1px solid #b6bbbc; - background: transparent url(img/inline-tab-bg.png) repeat-x; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitem { - border: none; - border-bottom: 1px solid #b6bbbc; - height: 30px; - padding: 0; - margin-top: 0; - color: #656d73; - font-size: 12px; - line-height: normal; - background: transparent url(img/inline-tab-bg.png) repeat-x; - cursor: pointer; - text-shadow: #fff 0 1px 0; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitem .v-caption { - height: 24px; - padding: 8px 10px 0 11px; - background: transparent url(img/inline-tab-border.png) no-repeat; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-first .v-caption { - margin-left: 5px; - background: transparent; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-selected + .v-tabsheet-tabitemcell .v-caption, -.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-selected-first + .v-tabsheet-tabitemcell .v-caption { - background: transparent; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected { - border: none; - background: transparent url(img/inline-tab-right.png) no-repeat right top; - margin: 0; - padding: 0; - height: 32px; - cursor: default; - color: #ee5311; - text-shadow: none; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitem:hover { - color: #4b5257; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected:hover { - color: #ee5311; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected .v-caption { - background: transparent url(img/inline-tab-left.png) no-repeat -7px 0; - margin: 0; - height: 23px; - padding: 9px 10px 0 11px; - overflow: visible; -} -.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-first .v-tabsheet-tabitem-selected .v-caption { - background: transparent url(img/inline-tab-left.png) no-repeat -3px 0; - padding-left: 16px; -} -.v-tabsheet-tabs-light .v-tabsheet-caption-close { - margin-top: 0; - text-shadow: none; -} -.v-tabsheet-content-light { - border: none; - background: transparent; -} -.v-tabsheet-light .v-tabsheet-hidetabs .v-tabsheet-content { - border: none; -} -.v-tabsheet-deco-light { - height: 0; - overflow: hidden; -} -.v-tabsheet-deco-light:before { - display: none; -} -/* Scroller */ -.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerPrev, -.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerNext { - margin-top: 2px; - height: 34px; -} -.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerPrev-disabled, -.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerNext-disabled { - margin-top: 2px; - height: 34px; -} -/* Progress indication * -.v-tabsheet-loading .v-tabsheet-tabs-light .v-tabsheet-tabitem-selected .v-captiontext { - margin-left: -3px; - padding-left: 3px; -}*/ -.v-ie .v-tabsheet-deco-light { - height: 0; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/tabsheet/tabsheet.scss b/WebContent/VAADIN/themes/runo/tabsheet/tabsheet.scss new file mode 100644 index 0000000000..683eb35f4c --- /dev/null +++ b/WebContent/VAADIN/themes/runo/tabsheet/tabsheet.scss @@ -0,0 +1,257 @@ +@mixin runo-tabsheet { + +.v-tabsheet-tabs { + height: 48px; +} + +.v-tabsheet-spacertd div { + height: 37px; + border: 1px solid #b6bbbc; + background: transparent url(img/tab-bg.png); + padding: 0; +} +.v-tabsheet-scroller { + margin-top: -37px; + float: right; +} +.v-tabsheet-scrollerPrev, +.v-tabsheet-scrollerNext, +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled { + border: none; + width: 12px; + padding: 0; + height: 38px; + opacity: 0.9999; + margin-top: -1px; +} +.v-tabsheet-scrollerNext, +.v-tabsheet-scrollerNext-disabled { + background: transparent url(img/next.png) no-repeat; +} +.v-tabsheet-scrollerPrev, +.v-tabsheet-scrollerPrev-disabled { + background: transparent url(img/prev.png) no-repeat; +} +.v-tabsheet-scrollerPrev:hover, +.v-tabsheet-scrollerNext:hover { + background-position: -24px 0px; +} +.v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-scrollerNext-disabled { + background-position: -12px 0px; +} +.v-tabsheet-scrollerPrev-disabled:hover, +.v-tabsheet-scrollerNext-disabled:hover { + background-position: -12px 0px; +} +.v-tabsheet-tabitem { + border: 1px solid #b6bbbc; + border-right: none; + height: 37px; + padding: 0; + margin-top: 9px; + color: #777f85; + font-size: 15px; + line-height: 18px; + background: #f8f9f9 url(img/tab-bg.png); +} +.v-tabsheet-tabitem .v-caption { + height: 20px; + padding: 9px 15px 8px 15px; +} +.v-tabsheet-tabitem-selected { + border: none; + background: transparent url(../panel/img/top-left.png) no-repeat; + margin: 0; + padding: 0; + height: 48px; + color: #ee5311; +} +.v-tabsheet-tabitem:hover { + color: #4b5257; +} +.v-tabsheet-tabitem-selected:hover { + color: #ee5311; +} +.v-tabsheet-tabitem-selected .v-caption { + background: transparent url(../panel/img/top-right.png) repeat-x right top; + margin: 0 -1px 0 9px; + height: 18px; + padding: 16px 16px 14px 7px; + overflow: visible; +} +.v-tabsheet-caption-close { + margin-left: 3px; + margin-right: -3px; + margin-top: 2px; + font-size: 15px; + width: 15px; + height: 15px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + color: #777f85; + line-height: 13px; +} +.v-tabsheet-caption-close:hover { + background: #dce0e0; +} +.v-tabsheet-caption-close:active { + background: #b6bbbc; + color: #fff; +} +.v-tabsheet-content { + border: 1px solid #babfc0; + background-color: #fff; + border-bottom: 1px solid #dee2e3; + border-top: none; +} +.v-tabsheet-hidetabs .v-tabsheet-content { + border-top: 1px solid #b5babb; +} +.v-tabsheet-deco { + height: 10px; + background: transparent url(../panel/img/bottom-right.png) repeat-x right top; + margin-left: 9px; + overflow: visible; +} +.v-tabsheet-deco:before { + display: block; + content: ""; + width: 9px; + height: 9px; + margin-left: -9px; + background: transparent url(../panel/img/bottom-left.png) no-repeat; +} +/* Progress indication * +.v-tabsheet-loading .v-tabsheet-tabitem-selected .v-captiontext { + background: transparent url(../../base/common/img/ajax-loader.gif) no-repeat top right; + margin-left: -10px; + padding-left: 10px; + margin-right: -10px; + padding-right: 10px; + margin-top: -12px; + padding-top: 12px; +}*/ +/* IE specific styles */ +.v-ie .v-tabsheet-content { + border-bottom: none; +} +.v-ie .v-tabsheet-deco { + height: 1px; + background: #babfc0; + overflow: hidden; + margin: 0; +} +.v-ie8 .v-tabsheet-deco, +.v-ie9 .v-tabsheet-deco { + width: 100%; +} +/* Light-style */ +.v-tabsheet-tabcontainer-light { + height: 32px; +} +.v-tabsheet-tabs-light { + height: 32px; + width: 100%; + overflow:hidden; + background: transparent; +} +.v-tabsheet-tabs-light .v-tabsheet-spacertd div { + height: 31px; + border: none; + border-bottom: 1px solid #b6bbbc; + background: transparent url(img/inline-tab-bg.png) repeat-x; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitem { + border: none; + border-bottom: 1px solid #b6bbbc; + height: 30px; + padding: 0; + margin-top: 0; + color: #656d73; + font-size: 12px; + line-height: normal; + background: transparent url(img/inline-tab-bg.png) repeat-x; + cursor: pointer; + text-shadow: #fff 0 1px 0; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitem .v-caption { + height: 24px; + padding: 8px 10px 0 11px; + background: transparent url(img/inline-tab-border.png) no-repeat; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-first .v-caption { + margin-left: 5px; + background: transparent; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-selected + .v-tabsheet-tabitemcell .v-caption, +.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-selected-first + .v-tabsheet-tabitemcell .v-caption { + background: transparent; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected { + border: none; + background: transparent url(img/inline-tab-right.png) no-repeat right top; + margin: 0; + padding: 0; + height: 32px; + cursor: default; + color: #ee5311; + text-shadow: none; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitem:hover { + color: #4b5257; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected:hover { + color: #ee5311; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitem-selected .v-caption { + background: transparent url(img/inline-tab-left.png) no-repeat -7px 0; + margin: 0; + height: 23px; + padding: 9px 10px 0 11px; + overflow: visible; +} +.v-tabsheet-tabs-light .v-tabsheet-tabitemcell-first .v-tabsheet-tabitem-selected .v-caption { + background: transparent url(img/inline-tab-left.png) no-repeat -3px 0; + padding-left: 16px; +} +.v-tabsheet-tabs-light .v-tabsheet-caption-close { + margin-top: 0; + text-shadow: none; +} +.v-tabsheet-content-light { + border: none; + background: transparent; +} +.v-tabsheet-light .v-tabsheet-hidetabs .v-tabsheet-content { + border: none; +} +.v-tabsheet-deco-light { + height: 0; + overflow: hidden; +} +.v-tabsheet-deco-light:before { + display: none; +} +/* Scroller */ +.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerPrev, +.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerNext { + margin-top: 2px; + height: 34px; +} +.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerPrev-disabled, +.v-tabsheet-tabcontainer-light .v-tabsheet-scrollerNext-disabled { + margin-top: 2px; + height: 34px; +} +/* Progress indication * +.v-tabsheet-loading .v-tabsheet-tabs-light .v-tabsheet-tabitem-selected .v-captiontext { + margin-left: -3px; + padding-left: 3px; +}*/ +.v-ie .v-tabsheet-deco-light { + height: 0; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/textfield/textfield.css b/WebContent/VAADIN/themes/runo/textfield/textfield.css deleted file mode 100644 index af4443c80f..0000000000 --- a/WebContent/VAADIN/themes/runo/textfield/textfield.css +++ /dev/null @@ -1,45 +0,0 @@ -.v-textfield, -.v-textarea { - background: #fff url(img/bg.png) repeat-x; - border: 1px solid #b6b6b6; - border-top-color: #9d9d9d; - border-bottom-color: #d6d6d6; - border-right-color: #d6d6d6; - margin: 0; - line-height: 14px; -} -input.v-textfield, -input[type=text].v-textfield, -textarea.v-textarea { - font-size: 12px; - height: 22px; - padding: 2px; -} -textarea.v-textarea { - height: auto; -} -.v-textfield-focus, -.v-textarea-focus { - border-color: #5daee8; -} -input.v-textfield-prompt, -textarea.v-textarea-prompt { - color: #999; - font-style: normal; -} -.v-richtextarea { - border: 1px solid #b6b6b6; -} -.v-richtextarea .gwt-RichTextArea { - background: #fff url(img/bg.png) repeat-x; -} - -/* Small style */ -input.v-textfield-small, -input[type=text].v-textfield-small, -textarea.v-textarea-small { - font-size: 11px; - height: 18px; - line-height: 12px; - padding: 1px 2px; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/textfield/textfield.scss b/WebContent/VAADIN/themes/runo/textfield/textfield.scss new file mode 100644 index 0000000000..3382fbee91 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/textfield/textfield.scss @@ -0,0 +1,49 @@ +@mixin runo-textfield { + +.v-textfield, +.v-textarea { + background: #fff url(img/bg.png) repeat-x; + border: 1px solid #b6b6b6; + border-top-color: #9d9d9d; + border-bottom-color: #d6d6d6; + border-right-color: #d6d6d6; + margin: 0; + line-height: 14px; +} +input.v-textfield, +input[type=text].v-textfield, +textarea.v-textarea { + font-size: 12px; + height: 22px; + padding: 2px; +} +textarea.v-textarea { + height: auto; +} +.v-textfield-focus, +.v-textarea-focus { + border-color: #5daee8; +} +input.v-textfield-prompt, +textarea.v-textarea-prompt { + color: #999; + font-style: normal; +} +.v-richtextarea { + border: 1px solid #b6b6b6; +} +.v-richtextarea .gwt-RichTextArea { + background: #fff url(img/bg.png) repeat-x; +} + +/* Small style */ +input.v-textfield-small, +input[type=text].v-textfield-small, +textarea.v-textarea-small { + font-size: 11px; + height: 18px; + line-height: 12px; + padding: 1px 2px; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/tree/tree.css b/WebContent/VAADIN/themes/runo/tree/tree.css deleted file mode 100644 index 14061b8afb..0000000000 --- a/WebContent/VAADIN/themes/runo/tree/tree.css +++ /dev/null @@ -1,57 +0,0 @@ -.v-tree-node { - background: transparent url(img/collapsed.png) no-repeat 2px 1px; -} -.v-tree-node-expanded { - background: transparent url(img/expanded.png) no-repeat 2px 1px; -} -.v-tree-node-caption { - margin-left: 18px; -} -.v-tree-connectors .v-tree-node-caption { - padding-bottom: 1px; -} -.v-tree-node-caption .v-icon { - margin: 0 2px 0 -2px; -} -.v-tree-node-caption span { - padding: 0 1px; -} -.v-tree-node-selected span { - background: #57a7ed; - color: #fff; - padding: 1px 2px 0; - display: inline-block; - zoom: 1; - margin: -1px -1px 0; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} -.v-tree-node-children { - padding-left: 16px; -} -.v-tree{ - outline:none; -} -.v-tree-node-caption.v-tree-node-focused span{ - padding-left: 1px; - padding-top: 0px; - padding-bottom: 0px; -} -.v-tree-node-focused span{ - border: 1px dotted black; -} -/*************************************** - * Drag'n'drop styles - ***************************************/ -.v-tree .v-tree-node-drag-top, -.v-tree .v-tree-node-drag-top.v-tree-node-expanded { - background-position: 2px 0; -} -.v-tree-connectors .v-tree-node-drag-top, -.v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { - background-position: 2px -53px; -} -.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { - background-position: 2px 50%; -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/tree/tree.scss b/WebContent/VAADIN/themes/runo/tree/tree.scss new file mode 100644 index 0000000000..cb3dff3156 --- /dev/null +++ b/WebContent/VAADIN/themes/runo/tree/tree.scss @@ -0,0 +1,61 @@ +@mixin runo-tree { + +.v-tree-node { + background: transparent url(img/collapsed.png) no-repeat 2px 1px; +} +.v-tree-node-expanded { + background: transparent url(img/expanded.png) no-repeat 2px 1px; +} +.v-tree-node-caption { + margin-left: 18px; +} +.v-tree-connectors .v-tree-node-caption { + padding-bottom: 1px; +} +.v-tree-node-caption .v-icon { + margin: 0 2px 0 -2px; +} +.v-tree-node-caption span { + padding: 0 1px; +} +.v-tree-node-selected span { + background: #57a7ed; + color: #fff; + padding: 1px 2px 0; + display: inline-block; + zoom: 1; + margin: -1px -1px 0; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; +} +.v-tree-node-children { + padding-left: 16px; +} +.v-tree{ + outline:none; +} +.v-tree-node-caption.v-tree-node-focused span{ + padding-left: 1px; + padding-top: 0px; + padding-bottom: 0px; +} +.v-tree-node-focused span{ + border: 1px dotted black; +} +/*************************************** + * Drag'n'drop styles + ***************************************/ +.v-tree .v-tree-node-drag-top, +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: 2px 0; +} +.v-tree-connectors .v-tree-node-drag-top, +.v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { + background-position: 2px -53px; +} +.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { + background-position: 2px 50%; +} + +} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/window/window.css b/WebContent/VAADIN/themes/runo/window/window.css deleted file mode 100644 index 675c8942bf..0000000000 --- a/WebContent/VAADIN/themes/runo/window/window.css +++ /dev/null @@ -1,141 +0,0 @@ -.v-window { - color: #464f52; - font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; - font-size: 13px; - line-height: 18px; - background: transparent url(img/bottom-left.png) no-repeat left bottom; -} -.v-window-wrap { - background: transparent url(img/top-left.png) no-repeat; -} -.v-window-outerheader { - height: 49px; - margin-left: 9px; - padding: 15px 40px 11px 12px; - background: transparent url(img/top-right.png) no-repeat right top; -} -.v-window-header { - font-size: 18px; - line-height: 1.2; - font-weight: normal; - letter-spacing: -0.03em; - color: #f14c1a; - text-shadow: 0 1px 0 #fff; -} -.v-window-contents > div { - background: #fff; - border: 2px solid #babfc0; - border-top: none; - border-bottom: none; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.v-window div.v-window-footer { - height: 8px; - margin-left: 9px; - background: transparent url(img/bottom-right.png) no-repeat right bottom; - overflow: visible; -} -.v-window-resizebox { - position: absolute; /* Needed to position the element over ScrollPanel, which is relatively positioned */ - right: 5px; - width: 10px; - height: 10px; - margin-top: -7px; - background: transparent url(img/resize.png); -} -.v-window-resizebox-disabled { - background: transparent; - display: block; -} -.v-window-closebox { - position: absolute; - top: 21px; - right: 24px; - width: 12px; - height: 12px; - background: transparent url(img/close.png); -} -.v-window-closebox:hover { - background-position: 0 -12px; -} -.v-window-modalitycurtain { - background: #fff; -} -/* Dialog style */ -.v-window-dialog { - background-image: url(img/dialog/bottom-left.png); -} -.v-window-dialog .v-window-outerheader { - height: 14px; - padding: 13px 30px 5px 8px; - background: transparent url(img/top-right.png) no-repeat right top; -} -.v-window-dialog .v-window-header { - font-size: 12px; - line-height: normal; - font-weight: bold; - letter-spacing: 0; - text-shadow: 0 1px 0 #fff; -} -.v-window-dialog .v-window-contents { - background: #f1f3f3; -} -.v-window-dialog div.v-window-footer { - background-image: url(img/dialog/bottom-right.png); -} -.v-window-dialog .v-window-closebox { - top: 14px; - right: 16px; - background-image: url(img/dialog/close.png); -} -/* Shadow for window */ -.v-shadow-window .top-left { - top: -13px; left: -20px; - width: 39px; height: 39px; - background: transparent url(img/shadow/top-left.png); -} -.v-shadow-window .top { - top: -13px; left: 19px; - height: 39px; - right: 19px; - background: transparent url(img/shadow/top.png); -} -.v-shadow-window .top-right { - top: -13px; right: -20px; - width: 39px; height: 39px; - background: transparent url(img/shadow/top-right.png); -} -.v-shadow-window .left { - top: 26px; left: -20px; - width: 39px; - bottom: 12px; - background: transparent url(img/shadow/left.png); -} -.v-shadow-window .center { - top: 26px; left: 19px; - bottom: 12px; right: 19px; - background: transparent url(img/shadow/center.png); -} -.v-shadow-window .right { - top: 26px; right: -20px; - width: 39px; - bottom: 12px; - background: transparent url(img/shadow/right.png); -} -.v-shadow-window .bottom-left { - bottom: -27px; left: -20px; - width: 39px; height: 39px; - background: transparent url(img/shadow/bottom-left.png); -} -.v-shadow-window .bottom { - bottom: -27px; left: 19px; - right: 19px; height: 39px; - background: transparent url(img/shadow/bottom.png); -} -.v-shadow-window .bottom-right { - bottom: -27px; right: -20px; - width: 39px; height: 39px; - background: transparent url(img/shadow/bottom-right.png); -} \ No newline at end of file diff --git a/WebContent/VAADIN/themes/runo/window/window.scss b/WebContent/VAADIN/themes/runo/window/window.scss new file mode 100644 index 0000000000..b08f87b7fa --- /dev/null +++ b/WebContent/VAADIN/themes/runo/window/window.scss @@ -0,0 +1,145 @@ +@mixin runo-window { + +.v-window { + color: #464f52; + font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif; + font-size: 13px; + line-height: 18px; + background: transparent url(img/bottom-left.png) no-repeat left bottom; +} +.v-window-wrap { + background: transparent url(img/top-left.png) no-repeat; +} +.v-window-outerheader { + height: 49px; + margin-left: 9px; + padding: 15px 40px 11px 12px; + background: transparent url(img/top-right.png) no-repeat right top; +} +.v-window-header { + font-size: 18px; + line-height: 1.2; + font-weight: normal; + letter-spacing: -0.03em; + color: #f14c1a; + text-shadow: 0 1px 0 #fff; +} +.v-window-contents > div { + background: #fff; + border: 2px solid #babfc0; + border-top: none; + border-bottom: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +.v-window div.v-window-footer { + height: 8px; + margin-left: 9px; + background: transparent url(img/bottom-right.png) no-repeat right bottom; + overflow: visible; +} +.v-window-resizebox { + position: absolute; /* Needed to position the element over ScrollPanel, which is relatively positioned */ + right: 5px; + width: 10px; + height: 10px; + margin-top: -7px; + background: transparent url(img/resize.png); +} +.v-window-resizebox-disabled { + background: transparent; + display: block; +} +.v-window-closebox { + position: absolute; + top: 21px; + right: 24px; + width: 12px; + height: 12px; + background: transparent url(img/close.png); +} +.v-window-closebox:hover { + background-position: 0 -12px; +} +.v-window-modalitycurtain { + background: #fff; +} +/* Dialog style */ +.v-window-dialog { + background-image: url(img/dialog/bottom-left.png); +} +.v-window-dialog .v-window-outerheader { + height: 14px; + padding: 13px 30px 5px 8px; + background: transparent url(img/top-right.png) no-repeat right top; +} +.v-window-dialog .v-window-header { + font-size: 12px; + line-height: normal; + font-weight: bold; + letter-spacing: 0; + text-shadow: 0 1px 0 #fff; +} +.v-window-dialog .v-window-contents { + background: #f1f3f3; +} +.v-window-dialog div.v-window-footer { + background-image: url(img/dialog/bottom-right.png); +} +.v-window-dialog .v-window-closebox { + top: 14px; + right: 16px; + background-image: url(img/dialog/close.png); +} +/* Shadow for window */ +.v-shadow-window .top-left { + top: -13px; left: -20px; + width: 39px; height: 39px; + background: transparent url(img/shadow/top-left.png); +} +.v-shadow-window .top { + top: -13px; left: 19px; + height: 39px; + right: 19px; + background: transparent url(img/shadow/top.png); +} +.v-shadow-window .top-right { + top: -13px; right: -20px; + width: 39px; height: 39px; + background: transparent url(img/shadow/top-right.png); +} +.v-shadow-window .left { + top: 26px; left: -20px; + width: 39px; + bottom: 12px; + background: transparent url(img/shadow/left.png); +} +.v-shadow-window .center { + top: 26px; left: 19px; + bottom: 12px; right: 19px; + background: transparent url(img/shadow/center.png); +} +.v-shadow-window .right { + top: 26px; right: -20px; + width: 39px; + bottom: 12px; + background: transparent url(img/shadow/right.png); +} +.v-shadow-window .bottom-left { + bottom: -27px; left: -20px; + width: 39px; height: 39px; + background: transparent url(img/shadow/bottom-left.png); +} +.v-shadow-window .bottom { + bottom: -27px; left: 19px; + right: 19px; height: 39px; + background: transparent url(img/shadow/bottom.png); +} +.v-shadow-window .bottom-right { + bottom: -27px; right: -20px; + width: 39px; height: 39px; + background: transparent url(img/shadow/bottom-right.png); +} + +} \ No newline at end of file diff --git a/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java b/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java index 0f7ec4a14b..a23e5e912e 100644 --- a/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java +++ b/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java @@ -1,21 +1,16 @@ package com.vaadin.buildhelpers; -import java.io.BufferedReader; import java.io.BufferedWriter; -import java.io.DataInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; -import java.io.InputStreamReader; -import java.util.Arrays; -import java.util.Comparator; + +import com.vaadin.sass.ScssStylesheet; /** - * Helper to combine css divded into separate per component dirs into one to + * Helper to combine css divided into separate per component dirs into one to * optimize http requests. - * */ public class CompileDefaultTheme { @@ -42,79 +37,83 @@ public class CompileDefaultTheme { break; } } + + for (String themeName : new String[] { BASE, RUNO, LIFERAY, CHAMELEON }) { + try { + processSassTheme(themeName, false, ver); + System.out.println("Compiling theme " + themeName + + " successful"); + } catch (Exception e) { + System.err.println("Compiling theme " + themeName + " failed"); + e.printStackTrace(); + } + } + // Compile Reindeer last, since it requires the spriting operation // (makes testing the other themes a bit faster, since you don't need to // wait for the spriting operation to finish before the theme CSS is // compiled) - combineTheme(new String[] { BASE }, false, ver); - combineTheme(new String[] { BASE, RUNO }, false, ver); - combineTheme(new String[] { BASE, LIFERAY }, false, ver); - combineTheme(new String[] { BASE, CHAMELEON }, false, ver); - combineTheme(new String[] { BASE, REINDEER }, true, ver); + for (String themeName : new String[] { REINDEER }) { + try { + processSassTheme(themeName, true, ver); + System.out.println("Compiling theme " + themeName + + " successful"); + } catch (Exception e) { + System.err.println("Compiling theme " + themeName + " failed"); + e.printStackTrace(); + } + } } - /** - * - * @param themeNames - * All themes that should be combined together (to include - * inheritance). The order is the same in which the styles are - * catenated. The resulted file is placed in the last specified - * theme folder. - * - * @param - * @throws IOException - */ - private static void combineTheme(String[] themeNames, - boolean useSmartSprites, String version) throws IOException { + private static void processSassTheme(String themeName, + boolean useSmartSprites, String version) throws Exception { - StringBuffer combinedCss = new StringBuffer(); + StringBuffer cssHeader = new StringBuffer(); // Theme version if (version == null) { version = "9.9.9.INTERNAL-DEBUG-BUILD"; } version = version.replaceAll("\\.", "_"); - combinedCss.append(".v-theme-version:after {content:\"" + version + cssHeader.append(".v-theme-version:after {content:\"" + version + "\";}\n"); - combinedCss.append(".v-theme-version-" + version - + " {display: none;}\n"); - - for (int j = 0; j < themeNames.length; j++) { - File f = new File(THEME_DIR + themeNames[j]); - combinedCss - .append("/* Automatically compiled css file from subdirectories. */\n"); - - File[] subdir = f.listFiles(); - Arrays.sort(subdir, new Comparator() { - public int compare(File arg0, File arg1) { - return arg0.compareTo(arg1); - } - }); + cssHeader.append(".v-theme-version-" + version + " {display: none;}\n"); - for (int i = 0; i < subdir.length; i++) { - File dir = subdir[i]; - String folder = dir.getName(); - String filename = dir.getPath() + "/" + folder + ".css"; - - processCSSFile(new File(filename), folder, themeNames[j], - combinedCss, j < themeNames.length - 1); - } + // TODO temporary hack for Reindeer + if (useSmartSprites) { + // TODO removed "../" from paths here + cssHeader + .append("/** sprite: verticals; sprite-image: url(common/img/vertical-sprites.png); sprite-layout: vertical */\n"); + cssHeader + .append("/** sprite: horizontals; sprite-image: url(common/img/horizontal-sprites.png); sprite-layout: horizontal */\n"); + cssHeader + .append("/** sprite: black-verticals; sprite-image: url(common/img/black-vertical-sprites.png); sprite-layout: vertical; sprite-matte-color: #1e2022 */\n"); + cssHeader + .append("/** sprite: black-horizontals; sprite-image: url(common/img/black-horizontal-sprites.png); sprite-layout: horizontal; sprite-matte-color: #1e2022 */\n"); + cssHeader + .append("/** sprite: buttons; sprite-image: url(button/img/button-sprites.png); sprite-layout: vertical */\n"); + cssHeader + .append("/** sprite: black-buttons; sprite-image: url(button/img/black-button-sprites.png); sprite-layout: vertical */\n"); } - String stylesCssDir = THEME_DIR + themeNames[themeNames.length - 1] - + "/"; + String stylesCssDir = THEME_DIR + themeName + "/"; String stylesCssName = stylesCssDir + "styles.css"; + // Process as SASS file + File inputFile = new File(stylesCssDir + "styles.scss"); + ScssStylesheet scss = ScssStylesheet.get(inputFile); + scss.compile(); + BufferedWriter out = new BufferedWriter(new FileWriter(stylesCssName)); - out.write(combinedCss.toString()); + out.write(cssHeader.toString()); + out.write(scss.toString()); out.close(); - System.out.println("Compiled CSS to " + THEME_DIR - + themeNames[themeNames.length - 1] + "/styles.css (" - + combinedCss.toString().length() + " bytes)"); + System.out.println("Compiled CSS to " + stylesCssName + " (" + + scss.toString().length() + " bytes)"); if (useSmartSprites) { - createSprites(themeNames[themeNames.length - 1]); + createSprites(themeName); System.out.println("Used SmartSprites to create sprites"); File oldCss = new File(stylesCssName); oldCss.delete(); @@ -128,99 +127,6 @@ public class CompileDefaultTheme { } } - private static void processCSSFile(File cssFile, String folder, - String themeName, StringBuffer combinedCss, boolean inheritedFile) - throws FileNotFoundException, IOException { - if (cssFile.isFile()) { - - combinedCss.append("\n"); - - FileInputStream fstream = new FileInputStream(cssFile); - // Get the object of DataInputStream - DataInputStream in = new DataInputStream(fstream); - BufferedReader br = new BufferedReader(new InputStreamReader(in)); - String strLine; - while ((strLine = br.readLine()) != null) { - - // Parse import rules - if (strLine.startsWith("@import")) { - // All import statements must be exactly - // @import "file-to-import.css"; - // or - // @import "subdir1[/subdir2]*/file-to-import.css" - // ".." and other similar paths are not allowed in the url - String importFilename = strLine.split("\"")[1]; - - File importFile = new File(THEME_DIR + themeName + "/" - + folder + "/" + importFilename); - if (importFile.isFile()) { - String currentFolder = folder; - if (importFilename.contains("/")) { - currentFolder = currentFolder - + "/" - + importFilename.substring(0, - importFilename.lastIndexOf("/")); - } - processCSSFile(importFile, currentFolder, themeName, - combinedCss, inheritedFile); - } else { - System.out - .println("File not found for @import statement " - + THEME_DIR - + themeName - + "/" - + folder - + "/" + importFilename); - } - } - - strLine = updateUrls(folder, themeName, inheritedFile, strLine); - - if (!strLine.startsWith("@import")) { - combinedCss.append(strLine); - combinedCss.append("\n"); - } - } - // Close the input stream - in.close(); - } - } - - private static String updateUrls(String folder, String themeName, - boolean inheritedFile, String strLine) { - // Define image url prefix - String urlPrefix = ""; - if (inheritedFile) { - urlPrefix = "../" + themeName + "/"; - } - - if (strLine.indexOf("url(/") > 0) { - // Do nothing for urls beginning with / - } else if (strLine.indexOf("url(../") >= 0) { - // eliminate a path segment in the folder name for every - // "../" - String[] folderSegments = folder.split("/"); - int segmentCount = folderSegments.length; - while (segmentCount > 0 && strLine.indexOf("url(../") >= 0) { - segmentCount--; - strLine = strLine.replaceAll("url\\(../", ("url\\(")); - } - // add remaining path segments to urlPrefix - StringBuilder sb = new StringBuilder(urlPrefix); - for (int i = 0; i < segmentCount; i++) { - sb.append(folderSegments[i]); - sb.append("/"); - } - strLine = strLine.replaceAll("url\\(", ("url\\(" + sb.toString())); - - } else { - strLine = strLine.replaceAll("url\\(", ("url\\(" + urlPrefix - + folder + "/")); - - } - return strLine; - } - private static void createSprites(String themeName) throws FileNotFoundException, IOException { String[] parameters = new String[] { "--sprite-png-depth", "AUTO", -- cgit v1.2.3 From 3580acbd26e877db0e79bb9fa5b46d947ce619c4 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Wed, 8 Aug 2012 17:02:33 +0300 Subject: Apply changeset from SASS repository: comment handling --- .../sass/handler/SCSSDocumentHandlerImpl.java | 4 +- sass/src/com/vaadin/sass/parser/Parser.java | 63 +++++++++++----------- sass/src/com/vaadin/sass/parser/Parser.jj | 8 ++- sass/src/com/vaadin/sass/tree/CommentNode.java | 22 ++++++++ tests/sass/resources/basic/comments.css | 9 ---- tests/sass/resources/css/comments.css | 11 ++++ tests/sass/resources/scss/comments.scss | 12 +++++ tests/sass/src/com/vaadin/sass/CssTestSuite.java | 4 +- tests/sass/src/com/vaadin/sass/ScssTestSuite.java | 3 +- .../com/vaadin/sass/testcases/css/Comments.java | 23 -------- .../com/vaadin/sass/testcases/scss/Comments.java | 43 +++++++++++++++ 11 files changed, 134 insertions(+), 68 deletions(-) create mode 100644 sass/src/com/vaadin/sass/tree/CommentNode.java delete mode 100644 tests/sass/resources/basic/comments.css create mode 100644 tests/sass/resources/css/comments.css create mode 100644 tests/sass/resources/scss/comments.scss delete mode 100644 tests/sass/src/com/vaadin/sass/testcases/css/Comments.java create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java diff --git a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java index f4e9398599..ccfa327829 100644 --- a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java +++ b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java @@ -13,6 +13,7 @@ import org.w3c.css.sac.SelectorList; import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.CommentNode; import com.vaadin.sass.tree.EachNode; import com.vaadin.sass.tree.ExtendNode; import com.vaadin.sass.tree.ForNode; @@ -123,7 +124,8 @@ public class SCSSDocumentHandlerImpl implements SCSSDocumentHandler { @Override public void comment(String text) throws CSSException { - System.out.println("comment(String text): " + text); + CommentNode node = new CommentNode(text); + nodeStack.peek().appendChild(node); } @Override diff --git a/sass/src/com/vaadin/sass/parser/Parser.java b/sass/src/com/vaadin/sass/parser/Parser.java index df70d812aa..cc9c39176e 100644 --- a/sass/src/com/vaadin/sass/parser/Parser.java +++ b/sass/src/com/vaadin/sass/parser/Parser.java @@ -556,6 +556,9 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { label_7: while (true) { ; + if(token.specialToken!=null){ + documentHandler.comment(token.specialToken.image); + } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VARIABLE: variable(); @@ -4142,36 +4145,6 @@ LexicalUnit exp; finally { jj_save(3, xla); } } - private boolean jj_3R_130() { - if (jj_scan_token(COMMA)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - return false; - } - - private boolean jj_3R_129() { - if (jj_scan_token(DIV)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - return false; - } - - private boolean jj_3R_119() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_129()) { - jj_scanpos = xsp; - if (jj_3R_130()) return true; - } - return false; - } - private boolean jj_3R_168() { if (jj_scan_token(UNICODERANGE)) return true; return false; @@ -4694,6 +4667,36 @@ LexicalUnit exp; return false; } + private boolean jj_3R_130() { + if (jj_scan_token(COMMA)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_129() { + if (jj_scan_token(DIV)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_119() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_129()) { + jj_scanpos = xsp; + if (jj_3R_130()) return true; + } + return false; + } + /** Generated Token Manager. */ public ParserTokenManager token_source; /** Current token. */ diff --git a/sass/src/com/vaadin/sass/parser/Parser.jj b/sass/src/com/vaadin/sass/parser/Parser.jj index 67fe870e03..2f43be5f6e 100644 --- a/sass/src/com/vaadin/sass/parser/Parser.jj +++ b/sass/src/com/vaadin/sass/parser/Parser.jj @@ -731,7 +731,13 @@ void afterImportDeclaration() : Locator l; } { - ( ( variable() | mixinDirective() | includeDirective() | styleRule() | media()| page() | fontFace() + ( + { + if(token.specialToken!=null){ + documentHandler.comment(token.specialToken.image); + } + } + ( variable() | mixinDirective() | includeDirective() | styleRule() | media()| page() | fontFace() | { l = getLocator(); } ret=skipStatement() { if ((ret == null) || (ret.length() == 0)) { diff --git a/sass/src/com/vaadin/sass/tree/CommentNode.java b/sass/src/com/vaadin/sass/tree/CommentNode.java new file mode 100644 index 0000000000..442e5f995e --- /dev/null +++ b/sass/src/com/vaadin/sass/tree/CommentNode.java @@ -0,0 +1,22 @@ +package com.vaadin.sass.tree; + +public class CommentNode extends Node { + private String comment; + + public CommentNode(String comment) { + this.comment = comment; + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + + @Override + public String toString() { + return comment.trim(); + } +} diff --git a/tests/sass/resources/basic/comments.css b/tests/sass/resources/basic/comments.css deleted file mode 100644 index 96d6b312c8..0000000000 --- a/tests/sass/resources/basic/comments.css +++ /dev/null @@ -1,9 +0,0 @@ -.v-button:focus { - background-image: url(img/left-focus.png);/** sprite-ref: buttons */ - outline: none; -} - -.v-button:focus .v-button-wrap { - background-image: url(img/right-focus.png);/** sprite-ref: buttons; sprite-alignment: right */ - outline: none; -} \ No newline at end of file diff --git a/tests/sass/resources/css/comments.css b/tests/sass/resources/css/comments.css new file mode 100644 index 0000000000..32f348da9e --- /dev/null +++ b/tests/sass/resources/css/comments.css @@ -0,0 +1,11 @@ +/** 0sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +/** 1sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +.v-button:focus { + background-image: url(img/left-focus.png);/** sprite-ref: buttons */ + outline: none; +} + +.v-button:focus .v-button-wrap { + background-image: url(img/right-focus.png);/** sprite-ref: buttons; sprite-alignment: right */ + outline: none; +} \ No newline at end of file diff --git a/tests/sass/resources/scss/comments.scss b/tests/sass/resources/scss/comments.scss new file mode 100644 index 0000000000..7e2ccac3b5 --- /dev/null +++ b/tests/sass/resources/scss/comments.scss @@ -0,0 +1,12 @@ +/** 0sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +$black:#000000; +/** 1sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +.v-button:focus { + background-image: url(img/left-focus.png);/** sprite-ref: buttons */ + outline: none; +} + +.v-button:focus .v-button-wrap { + background-image: url(img/right-focus.png);/** sprite-ref: buttons; sprite-alignment: right */ + outline: none; +} \ No newline at end of file diff --git a/tests/sass/src/com/vaadin/sass/CssTestSuite.java b/tests/sass/src/com/vaadin/sass/CssTestSuite.java index e15da68e0c..0ee1f79450 100644 --- a/tests/sass/src/com/vaadin/sass/CssTestSuite.java +++ b/tests/sass/src/com/vaadin/sass/CssTestSuite.java @@ -4,14 +4,12 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; -import com.vaadin.sass.testcases.css.Comments; import com.vaadin.sass.testcases.css.Media; import com.vaadin.sass.testcases.css.Properties; import com.vaadin.sass.testcases.css.Reindeer; import com.vaadin.sass.testcases.css.Selectors; @RunWith(Suite.class) -@SuiteClasses({ Selectors.class, Properties.class, Reindeer.class, Media.class, - Comments.class }) +@SuiteClasses({ Selectors.class, Properties.class, Reindeer.class, Media.class, }) public class CssTestSuite { } diff --git a/tests/sass/src/com/vaadin/sass/ScssTestSuite.java b/tests/sass/src/com/vaadin/sass/ScssTestSuite.java index 9ab0a76597..5a5351577d 100644 --- a/tests/sass/src/com/vaadin/sass/ScssTestSuite.java +++ b/tests/sass/src/com/vaadin/sass/ScssTestSuite.java @@ -4,6 +4,7 @@ import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; +import com.vaadin.sass.testcases.scss.Comments; import com.vaadin.sass.testcases.scss.ControlDirectives; import com.vaadin.sass.testcases.scss.Extends; import com.vaadin.sass.testcases.scss.Functions; @@ -20,7 +21,7 @@ import com.vaadin.sass.tree.ImportNodeTest; @SuiteClasses({ ControlDirectives.class, Extends.class, Functions.class, ImportNodeTest.class, Imports.class, Mixins.class, NestedProperties.class, Nesting.class, ParentImports.class, - Variables.class, ParentSelector.class }) + Variables.class, ParentSelector.class, Comments.class }) public class ScssTestSuite { } diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java deleted file mode 100644 index c0690418e2..0000000000 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.vaadin.sass.testcases.css; - -import java.io.IOException; -import java.net.URISyntaxException; - -import junit.framework.Assert; - -import org.junit.Test; -import org.w3c.css.sac.CSSException; - -import com.vaadin.sass.TestBase; - -public class Comments extends TestBase { - String css = "/basic/comments.css"; - - @Test - public void testParser() throws CSSException, URISyntaxException, - IOException { - testParser(css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - originalScss, parsedScss); - } -} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java new file mode 100644 index 0000000000..bca87d268f --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java @@ -0,0 +1,43 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.CommentNode; + +public class Comments extends TestBase { + String scss = "/scss/comments.scss"; + String css = "/scss/comments.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertNotNull(root); + Assert.assertEquals(5, root.getChildren().size()); + Assert.assertTrue(root.getChildren().get(0) instanceof CommentNode); + Assert.assertTrue(root.getChildren().get(2) instanceof CommentNode); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} -- cgit v1.2.3 From d5acf1169932fe1a36de0c4a09d91f76d47ec7dc Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 9 Aug 2012 09:56:43 +0300 Subject: Remove SASS test suites and rename TestBase to AbstractTestBase (#9223) Vaadin build script now ignores AbstractTestBase and executes each test individually. --- build/build.xml | 2 +- .../sass/src/com/vaadin/sass/AbstractTestBase.java | 84 ++++++++++++++++++++++ tests/sass/src/com/vaadin/sass/AllTests.java | 11 --- tests/sass/src/com/vaadin/sass/CssTestSuite.java | 15 ---- tests/sass/src/com/vaadin/sass/ScssTestSuite.java | 27 ------- tests/sass/src/com/vaadin/sass/TestBase.java | 84 ---------------------- .../sass/src/com/vaadin/sass/VisitorTestSuite.java | 14 ---- .../com/vaadin/sass/testcases/css/EmptyBlock.java | 4 +- .../vaadin/sass/testcases/css/Interpolation.java | 4 +- .../src/com/vaadin/sass/testcases/css/Media.java | 4 +- .../com/vaadin/sass/testcases/css/Properties.java | 4 +- .../com/vaadin/sass/testcases/css/Reindeer.java | 4 +- .../com/vaadin/sass/testcases/css/Selectors.java | 4 +- .../com/vaadin/sass/testcases/scss/Comments.java | 4 +- .../sass/testcases/scss/ControlDirectives.java | 4 +- .../com/vaadin/sass/testcases/scss/Extends.java | 4 +- .../com/vaadin/sass/testcases/scss/Functions.java | 4 +- .../com/vaadin/sass/testcases/scss/Imports.java | 4 +- .../src/com/vaadin/sass/testcases/scss/Mixins.java | 4 +- .../sass/testcases/scss/NestedProperties.java | 4 +- .../com/vaadin/sass/testcases/scss/Nesting.java | 4 +- .../vaadin/sass/testcases/scss/ParentImports.java | 4 +- .../vaadin/sass/testcases/scss/ParentSelector.java | 4 +- .../com/vaadin/sass/testcases/scss/Variables.java | 4 +- 24 files changed, 119 insertions(+), 186 deletions(-) create mode 100644 tests/sass/src/com/vaadin/sass/AbstractTestBase.java delete mode 100644 tests/sass/src/com/vaadin/sass/AllTests.java delete mode 100644 tests/sass/src/com/vaadin/sass/CssTestSuite.java delete mode 100644 tests/sass/src/com/vaadin/sass/ScssTestSuite.java delete mode 100644 tests/sass/src/com/vaadin/sass/TestBase.java delete mode 100644 tests/sass/src/com/vaadin/sass/VisitorTestSuite.java diff --git a/build/build.xml b/build/build.xml index 39d27464fc..5349dcf126 100644 --- a/build/build.xml +++ b/build/build.xml @@ -1252,7 +1252,7 @@ - + diff --git a/tests/sass/src/com/vaadin/sass/AbstractTestBase.java b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java new file mode 100644 index 0000000000..f657ac797f --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java @@ -0,0 +1,84 @@ +package com.vaadin.sass; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.net.URISyntaxException; + +import org.w3c.css.sac.CSSException; + +public abstract class AbstractTestBase { + + protected ScssStylesheet stylesheet; + protected String originalScss; + protected String parsedScss; + protected String comparisonCss; + + public ScssStylesheet getStyleSheet(String filename) + throws URISyntaxException, CSSException, IOException { + File file = getFile(filename); + stylesheet = ScssStylesheet.get(file); + return stylesheet; + } + + public File getFile(String filename) throws URISyntaxException, + CSSException, IOException { + return new File(getClass().getResource(filename).toURI()); + } + + public String getFileContent(String filename) throws IOException, + CSSException, URISyntaxException { + File file = getFile(filename); + return getFileContent(file); + } + + /** + * Read in the full content of a file into a string. + * + * @param file + * the file to be read + * @return a String with the content of the + * @throws IOException + * when file reading fails + */ + public String getFileContent(File file) throws IOException { + StringBuilder content = new StringBuilder(); + + FileReader fileReader = new FileReader(file); + BufferedReader bufferedReader = new BufferedReader(fileReader); + String line = null; + // Handle the first line separately to get the right amount of line + // separators in the loop + if ((line = bufferedReader.readLine()) != null) { + content.append(line); + } + // Handle the rest of the lines + while ((line = bufferedReader.readLine()) != null) { + content.append(System.getProperty("line.separator")); + content.append(line); + } + bufferedReader.close(); + return content.toString(); + } + + public boolean testParser(String file) throws CSSException, IOException, + URISyntaxException { + originalScss = getFileContent(file); + ScssStylesheet sheet = getStyleSheet(file); + parsedScss = sheet.toString(); + return parsedScss.equals(originalScss); + } + + public boolean testCompiler(String scss, String css) { + try { + comparisonCss = getFileContent(css); + ScssStylesheet sheet = getStyleSheet(scss); + sheet.compile(); + parsedScss = sheet.toString(); + } catch (Exception e) { + return false; + } + return parsedScss.equals(comparisonCss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/AllTests.java b/tests/sass/src/com/vaadin/sass/AllTests.java deleted file mode 100644 index 574b1a4d93..0000000000 --- a/tests/sass/src/com/vaadin/sass/AllTests.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.vaadin.sass; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; -import org.junit.runners.Suite.SuiteClasses; - -@RunWith(Suite.class) -@SuiteClasses({ CssTestSuite.class, ScssTestSuite.class, VisitorTestSuite.class }) -public class AllTests { - -} diff --git a/tests/sass/src/com/vaadin/sass/CssTestSuite.java b/tests/sass/src/com/vaadin/sass/CssTestSuite.java deleted file mode 100644 index 0ee1f79450..0000000000 --- a/tests/sass/src/com/vaadin/sass/CssTestSuite.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.vaadin.sass; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; -import org.junit.runners.Suite.SuiteClasses; - -import com.vaadin.sass.testcases.css.Media; -import com.vaadin.sass.testcases.css.Properties; -import com.vaadin.sass.testcases.css.Reindeer; -import com.vaadin.sass.testcases.css.Selectors; - -@RunWith(Suite.class) -@SuiteClasses({ Selectors.class, Properties.class, Reindeer.class, Media.class, }) -public class CssTestSuite { -} diff --git a/tests/sass/src/com/vaadin/sass/ScssTestSuite.java b/tests/sass/src/com/vaadin/sass/ScssTestSuite.java deleted file mode 100644 index 5a5351577d..0000000000 --- a/tests/sass/src/com/vaadin/sass/ScssTestSuite.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.vaadin.sass; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; -import org.junit.runners.Suite.SuiteClasses; - -import com.vaadin.sass.testcases.scss.Comments; -import com.vaadin.sass.testcases.scss.ControlDirectives; -import com.vaadin.sass.testcases.scss.Extends; -import com.vaadin.sass.testcases.scss.Functions; -import com.vaadin.sass.testcases.scss.Imports; -import com.vaadin.sass.testcases.scss.Mixins; -import com.vaadin.sass.testcases.scss.NestedProperties; -import com.vaadin.sass.testcases.scss.Nesting; -import com.vaadin.sass.testcases.scss.ParentImports; -import com.vaadin.sass.testcases.scss.ParentSelector; -import com.vaadin.sass.testcases.scss.Variables; -import com.vaadin.sass.tree.ImportNodeTest; - -@RunWith(Suite.class) -@SuiteClasses({ ControlDirectives.class, Extends.class, Functions.class, - ImportNodeTest.class, Imports.class, Mixins.class, - NestedProperties.class, Nesting.class, ParentImports.class, - Variables.class, ParentSelector.class, Comments.class }) -public class ScssTestSuite { - -} diff --git a/tests/sass/src/com/vaadin/sass/TestBase.java b/tests/sass/src/com/vaadin/sass/TestBase.java deleted file mode 100644 index 6947d24961..0000000000 --- a/tests/sass/src/com/vaadin/sass/TestBase.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.vaadin.sass; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.net.URISyntaxException; - -import org.w3c.css.sac.CSSException; - -public class TestBase { - - protected ScssStylesheet stylesheet; - protected String originalScss; - protected String parsedScss; - protected String comparisonCss; - - public ScssStylesheet getStyleSheet(String filename) - throws URISyntaxException, CSSException, IOException { - File file = getFile(filename); - stylesheet = ScssStylesheet.get(file); - return stylesheet; - } - - public File getFile(String filename) throws URISyntaxException, - CSSException, IOException { - return new File(getClass().getResource(filename).toURI()); - } - - public String getFileContent(String filename) throws IOException, - CSSException, URISyntaxException { - File file = getFile(filename); - return getFileContent(file); - } - - /** - * Read in the full content of a file into a string. - * - * @param file - * the file to be read - * @return a String with the content of the - * @throws IOException - * when file reading fails - */ - public String getFileContent(File file) throws IOException { - StringBuilder content = new StringBuilder(); - - FileReader fileReader = new FileReader(file); - BufferedReader bufferedReader = new BufferedReader(fileReader); - String line = null; - // Handle the first line separately to get the right amount of line - // separators in the loop - if ((line = bufferedReader.readLine()) != null) { - content.append(line); - } - // Handle the rest of the lines - while ((line = bufferedReader.readLine()) != null) { - content.append(System.getProperty("line.separator")); - content.append(line); - } - bufferedReader.close(); - return content.toString(); - } - - public boolean testParser(String file) throws CSSException, IOException, - URISyntaxException { - originalScss = getFileContent(file); - ScssStylesheet sheet = getStyleSheet(file); - parsedScss = sheet.toString(); - return parsedScss.equals(originalScss); - } - - public boolean testCompiler(String scss, String css) { - try { - comparisonCss = getFileContent(css); - ScssStylesheet sheet = getStyleSheet(scss); - sheet.compile(); - parsedScss = sheet.toString(); - } catch (Exception e) { - return false; - } - return parsedScss.equals(comparisonCss); - } -} diff --git a/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java b/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java deleted file mode 100644 index 46dfce6fe1..0000000000 --- a/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.vaadin.sass; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; -import org.junit.runners.Suite.SuiteClasses; - -import com.vaadin.sass.testcases.visitor.MixinVisitorTest; -import com.vaadin.sass.testcases.visitor.NestedPropertiesVisitorTest; - -@RunWith(Suite.class) -@SuiteClasses({ NestedPropertiesVisitorTest.class, MixinVisitorTest.class }) -public class VisitorTestSuite { - -} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java index c80ebeac56..1484c0703e 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java @@ -8,9 +8,9 @@ import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; -public class EmptyBlock extends TestBase { +public class EmptyBlock extends AbstractTestBase { String css = "/basic/empty_block.css"; @Test diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java index fd57f1c982..0d946c77b1 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java @@ -8,13 +8,13 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.tree.BlockNode; -public class Interpolation extends TestBase { +public class Interpolation extends AbstractTestBase { String scss = "/scss/interpolation.scss"; @Test diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java index 21ab421ce4..b96dc8bc5b 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java @@ -8,9 +8,9 @@ import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; -public class Media extends TestBase { +public class Media extends AbstractTestBase { String css = "/basic/media.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java index e140a40a97..daceb583ec 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java @@ -8,9 +8,9 @@ import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; -public class Properties extends TestBase { +public class Properties extends AbstractTestBase { String css = "/basic/properties.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java index 9a82096026..7370e33b16 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java @@ -8,9 +8,9 @@ import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; -public class Reindeer extends TestBase { +public class Reindeer extends AbstractTestBase { String css = "/basic/reindeer.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java index f8259e85c3..6d81a75e42 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java @@ -8,9 +8,9 @@ import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; -public class Selectors extends TestBase { +public class Selectors extends AbstractTestBase { String css = "/basic/selectors.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java index bca87d268f..153f494f0d 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java @@ -9,13 +9,13 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.tree.CommentNode; -public class Comments extends TestBase { +public class Comments extends AbstractTestBase { String scss = "/scss/comments.scss"; String css = "/scss/comments.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java index d42199d1a6..1f89cdf0b2 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java @@ -9,12 +9,12 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; -public class ControlDirectives extends TestBase { +public class ControlDirectives extends AbstractTestBase { String scss = "/scss/control-directives.scss"; String css = "/css/control-directives.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java index fa0d323528..5ad4aacd23 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java @@ -8,13 +8,13 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.tree.ExtendNode; -public class Extends extends TestBase { +public class Extends extends AbstractTestBase { String scss = "/scss/extends.scss"; String css = "/css/extends.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java index d3085f675c..3a2bb9a4b6 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java @@ -9,13 +9,13 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.tree.BlockNode; -public class Functions extends TestBase { +public class Functions extends AbstractTestBase { String scss = "/scss/functions.scss"; String css = "/css/functions.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java index bcee04f46f..49ac6e30ed 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java @@ -9,13 +9,13 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.tree.ImportNode; -public class Imports extends TestBase { +public class Imports extends AbstractTestBase { String scss = "/scss/imports.scss"; String css = "/css/imports.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java index a4ecf75a35..cd4c0e2b10 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java @@ -10,7 +10,7 @@ import org.w3c.css.sac.CSSException; import org.w3c.css.sac.LexicalUnit; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -19,7 +19,7 @@ import com.vaadin.sass.tree.MediaNode; import com.vaadin.sass.tree.MixinDefNode; import com.vaadin.sass.tree.MixinNode; -public class Mixins extends TestBase { +public class Mixins extends AbstractTestBase { String scss = "/scss/mixins.scss"; String css = "/css/mixins.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java index a236eeac12..1c07188f56 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java @@ -9,7 +9,7 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -17,7 +17,7 @@ import com.vaadin.sass.tree.BlockNode; import com.vaadin.sass.tree.NestPropertiesNode; import com.vaadin.sass.tree.RuleNode; -public class NestedProperties extends TestBase { +public class NestedProperties extends AbstractTestBase { String scss = "/scss/nested-properties.scss"; String css = "/css/nested-properties.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java index 1ca8bc762b..01d7e6e250 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java @@ -9,13 +9,13 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.tree.BlockNode; -public class Nesting extends TestBase { +public class Nesting extends AbstractTestBase { String scss = "/scss/nesting.scss"; String css = "/css/nesting.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java index b25c8417b8..2eaecc319c 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java @@ -9,13 +9,13 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.tree.ImportNode; -public class ParentImports extends TestBase { +public class ParentImports extends AbstractTestBase { String scss = "/scss/folder-test/parent-import.scss"; String css = "/css/parent-import.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java index 0df3fde8eb..8ed25151db 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java @@ -9,14 +9,14 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; import com.vaadin.sass.selector.SelectorUtil; import com.vaadin.sass.tree.BlockNode; -public class ParentSelector extends TestBase { +public class ParentSelector extends AbstractTestBase { String scss = "/scss/parent-selector.scss"; String css = "/css/parent-selector.css"; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java index df6bd41fe1..1407bbd933 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java @@ -9,7 +9,7 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import com.vaadin.sass.ScssStylesheet; -import com.vaadin.sass.TestBase; +import com.vaadin.sass.AbstractTestBase; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -18,7 +18,7 @@ import com.vaadin.sass.tree.BlockNode; import com.vaadin.sass.tree.RuleNode; import com.vaadin.sass.tree.VariableNode; -public class Variables extends TestBase { +public class Variables extends AbstractTestBase { String scss = "/scss/variables.scss"; String css = "/css/variables.css"; -- cgit v1.2.3 From f946e4d34acd05924d136199d58e4cc954ec2cf8 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 9 Aug 2012 10:43:25 +0300 Subject: Split semicolon related issues to a separate test (#9223) --- tests/sass/resources/basic/properties.css | 9 ++----- tests/sass/resources/css/semicolons.css | 9 +++++++ tests/sass/resources/scss/semicolons.scss | 9 +++++++ .../com/vaadin/sass/testcases/scss/Semicolons.java | 31 ++++++++++++++++++++++ 4 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 tests/sass/resources/css/semicolons.css create mode 100644 tests/sass/resources/scss/semicolons.scss create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java diff --git a/tests/sass/resources/basic/properties.css b/tests/sass/resources/basic/properties.css index bdc17af233..946ee3a675 100644 --- a/tests/sass/resources/basic/properties.css +++ b/tests/sass/resources/basic/properties.css @@ -1,6 +1,6 @@ .all-the-properties { - font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; ; - position: absolute;; + font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; + position: absolute; overflow: hidden; outline: none; text-align: left; @@ -15,11 +15,6 @@ display: inline-block; } -.missing-semicolon-on-last-row { - color: red; - background-color: blue -} - .lexical-value-test { margin: none; margin: 0px; diff --git a/tests/sass/resources/css/semicolons.css b/tests/sass/resources/css/semicolons.css new file mode 100644 index 0000000000..1471ce359a --- /dev/null +++ b/tests/sass/resources/css/semicolons.css @@ -0,0 +1,9 @@ +.all-the-properties { + font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; + position: absolute; + overflow: hidden; +} +.missing-semicolon-on-last-row { + color: red; + background-color: blue; +} diff --git a/tests/sass/resources/scss/semicolons.scss b/tests/sass/resources/scss/semicolons.scss new file mode 100644 index 0000000000..a4a56043d5 --- /dev/null +++ b/tests/sass/resources/scss/semicolons.scss @@ -0,0 +1,9 @@ +.all-the-properties { + font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; ; + position: absolute;; + overflow: hidden; +} +.missing-semicolon-on-last-row { + color: red; + background-color: blue +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java new file mode 100644 index 0000000000..d5b63489ea --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java @@ -0,0 +1,31 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.AbstractTestBase; + +/** + * Test for missing and extraneous semicolon handling. + */ +public class Semicolons extends AbstractTestBase { + String scss = "/scss/semicolons.scss"; + String css = "/scss/semicolons.css"; + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} -- cgit v1.2.3 From f0f857817670a0ce95da5178bf86d1725a654eed Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 9 Aug 2012 12:28:47 +0300 Subject: Refactor SASS tests to fail on exceptions (#9223) --- tests/sass/resources/css/semicolons.css | 1 + .../sass/src/com/vaadin/sass/AbstractTestBase.java | 24 +++++++++++----------- .../com/vaadin/sass/testcases/css/EmptyBlock.java | 4 ---- .../src/com/vaadin/sass/testcases/css/Media.java | 4 ---- .../com/vaadin/sass/testcases/css/Properties.java | 4 ---- .../com/vaadin/sass/testcases/css/Reindeer.java | 4 ---- .../com/vaadin/sass/testcases/css/Selectors.java | 4 ---- .../com/vaadin/sass/testcases/scss/Comments.java | 5 ++--- .../sass/testcases/scss/ControlDirectives.java | 8 ++------ .../com/vaadin/sass/testcases/scss/Extends.java | 7 ++----- .../com/vaadin/sass/testcases/scss/Functions.java | 8 ++------ .../com/vaadin/sass/testcases/scss/Imports.java | 8 ++------ .../src/com/vaadin/sass/testcases/scss/Mixins.java | 7 ++----- .../sass/testcases/scss/NestedProperties.java | 8 ++------ .../com/vaadin/sass/testcases/scss/Nesting.java | 8 ++------ .../vaadin/sass/testcases/scss/ParentImports.java | 8 ++------ .../vaadin/sass/testcases/scss/ParentSelector.java | 8 ++------ .../com/vaadin/sass/testcases/scss/Semicolons.java | 13 ++---------- .../com/vaadin/sass/testcases/scss/Variables.java | 8 ++------ 19 files changed, 37 insertions(+), 104 deletions(-) diff --git a/tests/sass/resources/css/semicolons.css b/tests/sass/resources/css/semicolons.css index 1471ce359a..8a08617638 100644 --- a/tests/sass/resources/css/semicolons.css +++ b/tests/sass/resources/css/semicolons.css @@ -3,6 +3,7 @@ position: absolute; overflow: hidden; } + .missing-semicolon-on-last-row { color: red; background-color: blue; diff --git a/tests/sass/src/com/vaadin/sass/AbstractTestBase.java b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java index f657ac797f..7040eb43a2 100644 --- a/tests/sass/src/com/vaadin/sass/AbstractTestBase.java +++ b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java @@ -6,6 +6,8 @@ import java.io.FileReader; import java.io.IOException; import java.net.URISyntaxException; +import junit.framework.Assert; + import org.w3c.css.sac.CSSException; public abstract class AbstractTestBase { @@ -62,23 +64,21 @@ public abstract class AbstractTestBase { return content.toString(); } - public boolean testParser(String file) throws CSSException, IOException, + public void testParser(String file) throws CSSException, IOException, URISyntaxException { originalScss = getFileContent(file); ScssStylesheet sheet = getStyleSheet(file); parsedScss = sheet.toString(); - return parsedScss.equals(originalScss); + Assert.assertEquals("Original CSS and parsed CSS do not match", + originalScss, parsedScss); } - public boolean testCompiler(String scss, String css) { - try { - comparisonCss = getFileContent(css); - ScssStylesheet sheet = getStyleSheet(scss); - sheet.compile(); - parsedScss = sheet.toString(); - } catch (Exception e) { - return false; - } - return parsedScss.equals(comparisonCss); + public void testCompiler(String scss, String css) throws Exception { + comparisonCss = getFileContent(css); + ScssStylesheet sheet = getStyleSheet(scss); + sheet.compile(); + parsedScss = sheet.toString(); + Assert.assertEquals("Original CSS and parsed CSS do not match", + comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java index 1484c0703e..47613560d8 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java @@ -3,8 +3,6 @@ package com.vaadin.sass.testcases.css; import java.io.IOException; import java.net.URISyntaxException; -import junit.framework.Assert; - import org.junit.Test; import org.w3c.css.sac.CSSException; @@ -17,7 +15,5 @@ public class EmptyBlock extends AbstractTestBase { public void testParser() throws CSSException, URISyntaxException, IOException { testParser(css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - originalScss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java index b96dc8bc5b..28d33deab0 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java @@ -3,8 +3,6 @@ package com.vaadin.sass.testcases.css; import java.io.IOException; import java.net.URISyntaxException; -import junit.framework.Assert; - import org.junit.Test; import org.w3c.css.sac.CSSException; @@ -18,7 +16,5 @@ public class Media extends AbstractTestBase { public void testParser() throws CSSException, URISyntaxException, IOException { testParser(css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - originalScss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java index daceb583ec..85786916c0 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java @@ -3,8 +3,6 @@ package com.vaadin.sass.testcases.css; import java.io.IOException; import java.net.URISyntaxException; -import junit.framework.Assert; - import org.junit.Test; import org.w3c.css.sac.CSSException; @@ -18,7 +16,5 @@ public class Properties extends AbstractTestBase { public void testParser() throws CSSException, URISyntaxException, IOException { testParser(css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - originalScss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java index 7370e33b16..6796aeb498 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java @@ -3,8 +3,6 @@ package com.vaadin.sass.testcases.css; import java.io.IOException; import java.net.URISyntaxException; -import junit.framework.Assert; - import org.junit.Test; import org.w3c.css.sac.CSSException; @@ -18,7 +16,5 @@ public class Reindeer extends AbstractTestBase { public void testParser() throws CSSException, URISyntaxException, IOException { testParser(css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - originalScss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java index 6d81a75e42..af2326fd56 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java @@ -3,8 +3,6 @@ package com.vaadin.sass.testcases.css; import java.io.IOException; import java.net.URISyntaxException; -import junit.framework.Assert; - import org.junit.Test; import org.w3c.css.sac.CSSException; @@ -18,7 +16,5 @@ public class Selectors extends AbstractTestBase { public void testParser() throws CSSException, URISyntaxException, IOException { testParser(css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - originalScss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java index 153f494f0d..09349968a4 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java @@ -8,8 +8,8 @@ import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -34,8 +34,7 @@ public class Comments extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); Assert.assertEquals("Original CSS and parsed CSS doesn't match", comparisonCss, parsedScss); diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java index 1f89cdf0b2..8b8081fb78 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -31,10 +30,7 @@ public class ControlDirectives extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java index 5ad4aacd23..5217a974db 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java @@ -7,8 +7,8 @@ import org.junit.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -31,10 +31,7 @@ public class Extends extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java index 3a2bb9a4b6..0b848763a5 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -33,10 +32,7 @@ public class Functions extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java index 49ac6e30ed..5d980cb961 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -33,10 +32,7 @@ public class Imports extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java index cd4c0e2b10..dddeb0ae20 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java @@ -9,8 +9,8 @@ import org.junit.Test; import org.w3c.css.sac.CSSException; import org.w3c.css.sac.LexicalUnit; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -93,11 +93,8 @@ public class Mixins extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java index 1c07188f56..2ad9c2d83c 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -48,10 +47,7 @@ public class NestedProperties extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java index 01d7e6e250..d458800fc6 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -66,10 +65,7 @@ public class Nesting extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java index 2eaecc319c..a97a66576b 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -43,10 +42,7 @@ public class ParentImports extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java index 8ed25151db..6d05b4bfa1 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -38,10 +37,7 @@ public class ParentSelector extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java index d5b63489ea..54f26a4f8f 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java @@ -4,13 +4,7 @@ package com.vaadin.sass.testcases.scss; -import java.io.IOException; -import java.net.URISyntaxException; - -import junit.framework.Assert; - import org.junit.Test; -import org.w3c.css.sac.CSSException; import com.vaadin.sass.AbstractTestBase; @@ -19,13 +13,10 @@ import com.vaadin.sass.AbstractTestBase; */ public class Semicolons extends AbstractTestBase { String scss = "/scss/semicolons.scss"; - String css = "/scss/semicolons.css"; + String css = "/css/semicolons.css"; @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java index 1407bbd933..c8ce1b5b5d 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java @@ -1,15 +1,14 @@ package com.vaadin.sass.testcases.scss; import java.io.IOException; -import java.net.URISyntaxException; import junit.framework.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; @@ -85,10 +84,7 @@ public class Variables extends AbstractTestBase { } @Test - public void testCompiler() throws CSSException, URISyntaxException, - IOException { + public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } -- cgit v1.2.3 From 56489f5e8c537f45a4933db0affedcf827f78809 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 9 Aug 2012 12:29:27 +0300 Subject: Refactor SASS tests: split off Microsoft extensions test (#9223) --- tests/sass/resources/basic/reindeer.css | 14 -------------- tests/sass/resources/css/microsoft-extensions.css | 6 ++++++ .../sass/resources/scss/microsoft-extensions.scss | 6 ++++++ .../sass/testcases/scss/MicrosoftExtensions.java | 22 ++++++++++++++++++++++ 4 files changed, 34 insertions(+), 14 deletions(-) create mode 100644 tests/sass/resources/css/microsoft-extensions.css create mode 100644 tests/sass/resources/scss/microsoft-extensions.scss create mode 100644 tests/sass/src/com/vaadin/sass/testcases/scss/MicrosoftExtensions.java diff --git a/tests/sass/resources/basic/reindeer.css b/tests/sass/resources/basic/reindeer.css index e32d917b49..4f1cd47193 100644 --- a/tests/sass/resources/basic/reindeer.css +++ b/tests/sass/resources/basic/reindeer.css @@ -1353,13 +1353,6 @@ div.v-progressindicator-indeterminate-disabled { display: none; } -.v-ie6 .v-shadow { - background: #000000; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2 ) alpha(opacity = 20); - margin-top: -2px; - margin-left: -2px; -} - .v-slider { margin: 5px 0; } @@ -2518,13 +2511,6 @@ div.v-window-header { display: none; } -.v-ie6 .v-shadow-window { - background: #000000; - filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=5 ) alpha(opacity = 20); - margin-top: 2px; - margin-left: 2px; -} - .v-accordion { border: 1px solid #bebebe; border-radius: 2px; diff --git a/tests/sass/resources/css/microsoft-extensions.css b/tests/sass/resources/css/microsoft-extensions.css new file mode 100644 index 0000000000..69670969de --- /dev/null +++ b/tests/sass/resources/css/microsoft-extensions.css @@ -0,0 +1,6 @@ +.v-ie6 .v-shadow-window { + background: #000000; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=5 ) alpha(opacity = 20); + margin-top: 2px; + margin-left: 2px; +} diff --git a/tests/sass/resources/scss/microsoft-extensions.scss b/tests/sass/resources/scss/microsoft-extensions.scss new file mode 100644 index 0000000000..69670969de --- /dev/null +++ b/tests/sass/resources/scss/microsoft-extensions.scss @@ -0,0 +1,6 @@ +.v-ie6 .v-shadow-window { + background: #000000; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=5 ) alpha(opacity = 20); + margin-top: 2px; + margin-left: 2px; +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/MicrosoftExtensions.java b/tests/sass/src/com/vaadin/sass/testcases/scss/MicrosoftExtensions.java new file mode 100644 index 0000000000..08580fd9b2 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/MicrosoftExtensions.java @@ -0,0 +1,22 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + +package com.vaadin.sass.testcases.scss; + +import org.junit.Test; + +import com.vaadin.sass.AbstractTestBase; + +/** + * Test for Microsoft specific CSS extensions. + */ +public class MicrosoftExtensions extends AbstractTestBase { + String scss = "/scss/microsoft-extensions.scss"; + String css = "/css/microsoft-extensions.css"; + + @Test + public void testCompiler() throws Exception { + testCompiler(scss, css); + } +} -- cgit v1.2.3 From 30f0f85cf04edef6f04610ee9f8190ffe49585d8 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 9 Aug 2012 12:38:32 +0300 Subject: Add license header for all non-parser SASS Java files (#9223) --- sass/src/com/vaadin/sass/SassCompiler.java | 4 ++++ sass/src/com/vaadin/sass/ScssServlet.java | 4 ++++ sass/src/com/vaadin/sass/ScssStylesheet.java | 4 ++++ sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java | 4 ++++ sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java | 4 ++++ sass/src/com/vaadin/sass/selector/CompositeSelector.java | 4 ++++ sass/src/com/vaadin/sass/selector/SelectorUtil.java | 4 ++++ sass/src/com/vaadin/sass/tree/BlockNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/CommentNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/EachNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/ExtendNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/ForNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/FunctionNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/IfNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/ImportNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/MediaNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/MixinDefNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/MixinNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/NestPropertiesNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/Node.java | 4 ++++ sass/src/com/vaadin/sass/tree/RuleNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/VariableNode.java | 4 ++++ sass/src/com/vaadin/sass/tree/WhileNode.java | 5 ++++- sass/src/com/vaadin/sass/util/ColorUtil.java | 4 ++++ sass/src/com/vaadin/sass/util/DeepCopy.java | 4 ++++ sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java | 4 ++++ sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java | 4 ++++ sass/src/com/vaadin/sass/util/StringUtil.java | 4 ++++ sass/src/com/vaadin/sass/visitor/BlockVisitor.java | 4 ++++ sass/src/com/vaadin/sass/visitor/ExtendVisitor.java | 4 ++++ sass/src/com/vaadin/sass/visitor/ImportVisitor.java | 4 ++++ sass/src/com/vaadin/sass/visitor/MixinVisitor.java | 4 ++++ sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java | 4 ++++ sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java | 4 ++++ sass/src/com/vaadin/sass/visitor/VariableVisitor.java | 4 ++++ sass/src/com/vaadin/sass/visitor/Visitor.java | 4 ++++ tests/sass/src/com/vaadin/sass/AbstractTestBase.java | 4 ++++ tests/sass/src/com/vaadin/sass/parser/ParserTest.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java | 6 +++++- tests/sass/src/com/vaadin/sass/testcases/css/Media.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/css/Properties.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java | 4 ++++ .../sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java | 4 ++++ tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java | 4 ++++ .../src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java | 4 ++++ .../src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java | 4 ++++ .../vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java | 4 ++++ tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java | 4 ++++ 59 files changed, 237 insertions(+), 2 deletions(-) diff --git a/sass/src/com/vaadin/sass/SassCompiler.java b/sass/src/com/vaadin/sass/SassCompiler.java index 701f1e7109..b1d779569b 100644 --- a/sass/src/com/vaadin/sass/SassCompiler.java +++ b/sass/src/com/vaadin/sass/SassCompiler.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass; import java.io.File; diff --git a/sass/src/com/vaadin/sass/ScssServlet.java b/sass/src/com/vaadin/sass/ScssServlet.java index 545bf2706f..0eb03dd3ad 100644 --- a/sass/src/com/vaadin/sass/ScssServlet.java +++ b/sass/src/com/vaadin/sass/ScssServlet.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass; import java.io.BufferedOutputStream; diff --git a/sass/src/com/vaadin/sass/ScssStylesheet.java b/sass/src/com/vaadin/sass/ScssStylesheet.java index 18945dfe44..44e329a6cd 100644 --- a/sass/src/com/vaadin/sass/ScssStylesheet.java +++ b/sass/src/com/vaadin/sass/ScssStylesheet.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass; import java.io.File; diff --git a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java index 1ac2f0016e..0e882c0f4f 100644 --- a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java +++ b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandler.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.handler; import java.util.Collection; diff --git a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java index ccfa327829..857c302f2d 100644 --- a/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java +++ b/sass/src/com/vaadin/sass/handler/SCSSDocumentHandlerImpl.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.handler; import java.util.Collection; diff --git a/sass/src/com/vaadin/sass/selector/CompositeSelector.java b/sass/src/com/vaadin/sass/selector/CompositeSelector.java index cd6026a3a2..c873619eb1 100644 --- a/sass/src/com/vaadin/sass/selector/CompositeSelector.java +++ b/sass/src/com/vaadin/sass/selector/CompositeSelector.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.selector; import org.w3c.css.sac.Selector; diff --git a/sass/src/com/vaadin/sass/selector/SelectorUtil.java b/sass/src/com/vaadin/sass/selector/SelectorUtil.java index 92fc332c59..01ca215c14 100644 --- a/sass/src/com/vaadin/sass/selector/SelectorUtil.java +++ b/sass/src/com/vaadin/sass/selector/SelectorUtil.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.selector; import org.w3c.css.sac.CombinatorCondition; diff --git a/sass/src/com/vaadin/sass/tree/BlockNode.java b/sass/src/com/vaadin/sass/tree/BlockNode.java index 946a6b92e2..cbb09b63c1 100644 --- a/sass/src/com/vaadin/sass/tree/BlockNode.java +++ b/sass/src/com/vaadin/sass/tree/BlockNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import org.w3c.css.sac.SelectorList; diff --git a/sass/src/com/vaadin/sass/tree/CommentNode.java b/sass/src/com/vaadin/sass/tree/CommentNode.java index 442e5f995e..649d2df581 100644 --- a/sass/src/com/vaadin/sass/tree/CommentNode.java +++ b/sass/src/com/vaadin/sass/tree/CommentNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; public class CommentNode extends Node { diff --git a/sass/src/com/vaadin/sass/tree/EachNode.java b/sass/src/com/vaadin/sass/tree/EachNode.java index e60663b790..986e7e563d 100644 --- a/sass/src/com/vaadin/sass/tree/EachNode.java +++ b/sass/src/com/vaadin/sass/tree/EachNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; public class EachNode extends Node { diff --git a/sass/src/com/vaadin/sass/tree/ExtendNode.java b/sass/src/com/vaadin/sass/tree/ExtendNode.java index 2e49637067..b7fb7715ac 100644 --- a/sass/src/com/vaadin/sass/tree/ExtendNode.java +++ b/sass/src/com/vaadin/sass/tree/ExtendNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import org.w3c.css.sac.SelectorList; diff --git a/sass/src/com/vaadin/sass/tree/ForNode.java b/sass/src/com/vaadin/sass/tree/ForNode.java index ae083a025c..dba5b22d84 100644 --- a/sass/src/com/vaadin/sass/tree/ForNode.java +++ b/sass/src/com/vaadin/sass/tree/ForNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; public class ForNode extends Node { diff --git a/sass/src/com/vaadin/sass/tree/FunctionNode.java b/sass/src/com/vaadin/sass/tree/FunctionNode.java index 898a2f9986..bb27f7d020 100644 --- a/sass/src/com/vaadin/sass/tree/FunctionNode.java +++ b/sass/src/com/vaadin/sass/tree/FunctionNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; public class FunctionNode extends Node { diff --git a/sass/src/com/vaadin/sass/tree/IfNode.java b/sass/src/com/vaadin/sass/tree/IfNode.java index 148ab1eda1..022b38bf71 100644 --- a/sass/src/com/vaadin/sass/tree/IfNode.java +++ b/sass/src/com/vaadin/sass/tree/IfNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; public class IfNode extends Node { diff --git a/sass/src/com/vaadin/sass/tree/ImportNode.java b/sass/src/com/vaadin/sass/tree/ImportNode.java index 46657df425..1d25d2583f 100644 --- a/sass/src/com/vaadin/sass/tree/ImportNode.java +++ b/sass/src/com/vaadin/sass/tree/ImportNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import org.w3c.css.sac.SACMediaList; diff --git a/sass/src/com/vaadin/sass/tree/MediaNode.java b/sass/src/com/vaadin/sass/tree/MediaNode.java index 5a824f07c8..85b222eaf5 100644 --- a/sass/src/com/vaadin/sass/tree/MediaNode.java +++ b/sass/src/com/vaadin/sass/tree/MediaNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import org.w3c.css.sac.SACMediaList; diff --git a/sass/src/com/vaadin/sass/tree/MixinDefNode.java b/sass/src/com/vaadin/sass/tree/MixinDefNode.java index 891724fa72..5671a19cc8 100644 --- a/sass/src/com/vaadin/sass/tree/MixinDefNode.java +++ b/sass/src/com/vaadin/sass/tree/MixinDefNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/tree/MixinNode.java b/sass/src/com/vaadin/sass/tree/MixinNode.java index 596765d00e..c45d468de1 100644 --- a/sass/src/com/vaadin/sass/tree/MixinNode.java +++ b/sass/src/com/vaadin/sass/tree/MixinNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/tree/NestPropertiesNode.java b/sass/src/com/vaadin/sass/tree/NestPropertiesNode.java index 51a4649629..c74e88cabc 100644 --- a/sass/src/com/vaadin/sass/tree/NestPropertiesNode.java +++ b/sass/src/com/vaadin/sass/tree/NestPropertiesNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/tree/Node.java b/sass/src/com/vaadin/sass/tree/Node.java index 2e539473ce..12c70ed618 100644 --- a/sass/src/com/vaadin/sass/tree/Node.java +++ b/sass/src/com/vaadin/sass/tree/Node.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import java.io.Serializable; diff --git a/sass/src/com/vaadin/sass/tree/RuleNode.java b/sass/src/com/vaadin/sass/tree/RuleNode.java index 1683a727c0..2334a7d980 100644 --- a/sass/src/com/vaadin/sass/tree/RuleNode.java +++ b/sass/src/com/vaadin/sass/tree/RuleNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import org.w3c.css.sac.LexicalUnit; diff --git a/sass/src/com/vaadin/sass/tree/VariableNode.java b/sass/src/com/vaadin/sass/tree/VariableNode.java index 3a7a5fe710..9df34e8e64 100644 --- a/sass/src/com/vaadin/sass/tree/VariableNode.java +++ b/sass/src/com/vaadin/sass/tree/VariableNode.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import org.w3c.css.sac.LexicalUnit; diff --git a/sass/src/com/vaadin/sass/tree/WhileNode.java b/sass/src/com/vaadin/sass/tree/WhileNode.java index 3ec3b2eb69..9c873a18a8 100644 --- a/sass/src/com/vaadin/sass/tree/WhileNode.java +++ b/sass/src/com/vaadin/sass/tree/WhileNode.java @@ -1,5 +1,8 @@ -package com.vaadin.sass.tree; +/* +@VaadinApache2LicenseForJavaFiles@ + */ +package com.vaadin.sass.tree; public class WhileNode extends Node { private static final long serialVersionUID = 7593896018196027279L; diff --git a/sass/src/com/vaadin/sass/util/ColorUtil.java b/sass/src/com/vaadin/sass/util/ColorUtil.java index 4a9769ac89..e65b3a80fa 100644 --- a/sass/src/com/vaadin/sass/util/ColorUtil.java +++ b/sass/src/com/vaadin/sass/util/ColorUtil.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.util; import org.w3c.css.sac.LexicalUnit; diff --git a/sass/src/com/vaadin/sass/util/DeepCopy.java b/sass/src/com/vaadin/sass/util/DeepCopy.java index bf77118b6b..74845bb234 100644 --- a/sass/src/com/vaadin/sass/util/DeepCopy.java +++ b/sass/src/com/vaadin/sass/util/DeepCopy.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.util; import java.io.IOException; diff --git a/sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java b/sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java index 0f23f4b8fe..ba9acadee6 100644 --- a/sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java +++ b/sass/src/com/vaadin/sass/util/FastByteArrayInputStream.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.util; import java.io.InputStream; diff --git a/sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java b/sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java index 3c1c572d41..44edd1cffa 100644 --- a/sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java +++ b/sass/src/com/vaadin/sass/util/FastByteArrayOutputStream.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.util; import java.io.InputStream; diff --git a/sass/src/com/vaadin/sass/util/StringUtil.java b/sass/src/com/vaadin/sass/util/StringUtil.java index 6b57407859..f7f4136c03 100644 --- a/sass/src/com/vaadin/sass/util/StringUtil.java +++ b/sass/src/com/vaadin/sass/util/StringUtil.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.util; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/visitor/BlockVisitor.java b/sass/src/com/vaadin/sass/visitor/BlockVisitor.java index a05f082a82..5f5227b5f2 100644 --- a/sass/src/com/vaadin/sass/visitor/BlockVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/BlockVisitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import java.util.HashSet; diff --git a/sass/src/com/vaadin/sass/visitor/ExtendVisitor.java b/sass/src/com/vaadin/sass/visitor/ExtendVisitor.java index 5dbea402e3..5cf538604f 100644 --- a/sass/src/com/vaadin/sass/visitor/ExtendVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/ExtendVisitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/visitor/ImportVisitor.java b/sass/src/com/vaadin/sass/visitor/ImportVisitor.java index 50fc822920..4dee49bc5c 100644 --- a/sass/src/com/vaadin/sass/visitor/ImportVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/ImportVisitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import java.io.File; diff --git a/sass/src/com/vaadin/sass/visitor/MixinVisitor.java b/sass/src/com/vaadin/sass/visitor/MixinVisitor.java index b1c0a3a6b1..46c88eb3d7 100644 --- a/sass/src/com/vaadin/sass/visitor/MixinVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/MixinVisitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java b/sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java index d84917379d..8914984008 100644 --- a/sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/NestPropertiesVisitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java b/sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java index 011b47fc61..b80e539dd7 100644 --- a/sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/ParentSelectorVisitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import java.util.ArrayList; diff --git a/sass/src/com/vaadin/sass/visitor/VariableVisitor.java b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java index 71c43e362b..104b849780 100644 --- a/sass/src/com/vaadin/sass/visitor/VariableVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import java.util.HashMap; diff --git a/sass/src/com/vaadin/sass/visitor/Visitor.java b/sass/src/com/vaadin/sass/visitor/Visitor.java index ae2c2b9800..e6362c0811 100644 --- a/sass/src/com/vaadin/sass/visitor/Visitor.java +++ b/sass/src/com/vaadin/sass/visitor/Visitor.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.visitor; import com.vaadin.sass.tree.Node; diff --git a/tests/sass/src/com/vaadin/sass/AbstractTestBase.java b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java index 7040eb43a2..92bff5cf3c 100644 --- a/tests/sass/src/com/vaadin/sass/AbstractTestBase.java +++ b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass; import java.io.BufferedReader; diff --git a/tests/sass/src/com/vaadin/sass/parser/ParserTest.java b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java index db7754406d..0906bfd63b 100644 --- a/tests/sass/src/com/vaadin/sass/parser/ParserTest.java +++ b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.parser; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java index 47613560d8..43d4aff23f 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.css; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java index 0d946c77b1..215b0e2f8f 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.css; import java.io.IOException; @@ -7,8 +11,8 @@ import org.junit.Assert; import org.junit.Test; import org.w3c.css.sac.CSSException; -import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.AbstractTestBase; +import com.vaadin.sass.ScssStylesheet; import com.vaadin.sass.handler.SCSSDocumentHandler; import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; import com.vaadin.sass.parser.Parser; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java index 28d33deab0..e23b816e55 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.css; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java index 85786916c0..7e78a088f7 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.css; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java index 6796aeb498..00f03d0f16 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.css; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java index af2326fd56..15162e5a90 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.css; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java index 09349968a4..a799fa9e99 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java index 8b8081fb78..45e3752178 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java index 5217a974db..87a2cec00b 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java index 0b848763a5..e8f2f26b14 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java index 5d980cb961..035576a381 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java index dddeb0ae20..9dc5ec5a5e 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java index 2ad9c2d83c..b238cea9ae 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java index d458800fc6..0d5790c7dc 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java index a97a66576b..e775b33880 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java index 6d05b4bfa1..14c7c6543a 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java index c8ce1b5b5d..9b6a506890 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.scss; import java.io.IOException; diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java index 0bc6cb8799..b2858045bb 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.visitor; import org.junit.Test; diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java index 8030d4e0b1..7f2f18a63a 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.visitor; import java.util.ArrayList; diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java index 48705c157e..402330755c 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.testcases.visitor; import org.junit.Assert; diff --git a/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java b/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java index ff7e4d9034..723e1ada4e 100644 --- a/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java +++ b/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java @@ -1,3 +1,7 @@ +/* +@VaadinApache2LicenseForJavaFiles@ + */ + package com.vaadin.sass.tree; import org.junit.Assert; -- cgit v1.2.3 From ef64d5becc40d85a5a27735775376062fa4ed8ff Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 9 Aug 2012 14:45:42 +0300 Subject: Manual merge for SASS: fixed a bug in VariableVisitor --- sass/src/com/vaadin/sass/util/ColorUtil.java | 33 ++++++++++++++-------- .../com/vaadin/sass/visitor/VariableVisitor.java | 29 +++++++++++++------ tests/sass/resources/css/functions.css | 4 +-- tests/sass/resources/css/variables.css | 1 + tests/sass/resources/scss/variables.scss | 1 + .../com/vaadin/sass/testcases/scss/Variables.java | 2 +- 6 files changed, 47 insertions(+), 23 deletions(-) diff --git a/sass/src/com/vaadin/sass/util/ColorUtil.java b/sass/src/com/vaadin/sass/util/ColorUtil.java index e65b3a80fa..9abcf57310 100644 --- a/sass/src/com/vaadin/sass/util/ColorUtil.java +++ b/sass/src/com/vaadin/sass/util/ColorUtil.java @@ -41,12 +41,12 @@ public class ColorUtil { StringBuilder builder = new StringBuilder("#"); for (int i = 0; i < 3; i++) { String color = Integer.toHexString(rgb[i]); - if (lengh == 3) { + if (lengh == 6) { if (color.length() == 1) { color = "0" + color; } } - if (lengh == 6) { + if (lengh == 3) { color = color.substring(0, 1); } builder.append(color); @@ -233,7 +233,7 @@ public class ColorUtil { public static LexicalUnitImpl darken(LexicalUnitImpl darkenFunc) { LexicalUnitImpl color = darkenFunc.getParameters(); - LexicalUnit amount = color.getNextLexicalUnit().getNextLexicalUnit(); + float amount = getAmountValue(color); LexicalUnitImpl pre = (LexicalUnitImpl) darkenFunc .getPreviousLexicalUnit(); @@ -241,7 +241,7 @@ public class ColorUtil { } private static LexicalUnitImpl adjust(LexicalUnitImpl color, - LexicalUnit amount, ColorOperation op, LexicalUnitImpl pre) { + float amountByPercent, ColorOperation op, LexicalUnitImpl pre) { if (color.getLexicalUnitType() == LexicalUnit.SAC_FUNCTION) { LexicalUnit funcParam = color.getParameters(); if ("hsl".equals(color.getFunctionName())) { @@ -251,12 +251,10 @@ public class ColorUtil { } float newValue = 0f; if (op == ColorOperation.Darken) { - newValue = lightness.getFloatValue() - - amount.getFloatValue(); + newValue = lightness.getFloatValue() - amountByPercent; newValue = newValue < 0 ? 0 : newValue; } else if (op == ColorOperation.Lighten) { - newValue = lightness.getFloatValue() - + amount.getFloatValue(); + newValue = lightness.getFloatValue() + amountByPercent; newValue = newValue > 100 ? 100 : newValue; } ((LexicalUnitImpl) lightness).setFloatValue(newValue); @@ -268,12 +266,13 @@ public class ColorUtil { } else if (color.getLexicalUnitType() == LexicalUnit.SAC_IDENT) { if (color.getStringValue().startsWith("#")) { return hslToHexColor( - adjust(hexColorToHsl(color), amount, op, pre), color - .getStringValue().substring(1).length()); + adjust(hexColorToHsl(color), amountByPercent, op, pre), + color.getStringValue().substring(1).length()); } } else if (color.getLexicalUnitType() == LexicalUnit.SAC_RGBCOLOR) { LexicalUnitImpl hsl = rgbToHsl(color); - LexicalUnitImpl hslAfterDarken = adjust(hsl, amount, op, pre); + LexicalUnitImpl hslAfterDarken = adjust(hsl, amountByPercent, op, + pre); return hslToRgb(hslAfterDarken); } return color; @@ -281,13 +280,23 @@ public class ColorUtil { public static LexicalUnitImpl lighten(LexicalUnitImpl lightenFunc) { LexicalUnitImpl color = lightenFunc.getParameters(); - LexicalUnit amount = color.getNextLexicalUnit().getNextLexicalUnit(); + float amount = getAmountValue(color); LexicalUnitImpl pre = (LexicalUnitImpl) lightenFunc .getPreviousLexicalUnit(); return adjust(color, amount, ColorOperation.Lighten, pre); } + private static float getAmountValue(LexicalUnitImpl color) { + LexicalUnit next = color.getNextLexicalUnit(); + float amount = 10f; + if (next != null && next.getNextLexicalUnit() != null) { + next = next.getNextLexicalUnit(); + amount = next.getFloatValue(); + } + return amount; + } + enum ColorOperation { Darken, Lighten } diff --git a/sass/src/com/vaadin/sass/visitor/VariableVisitor.java b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java index 104b849780..8a567dacae 100644 --- a/sass/src/com/vaadin/sass/visitor/VariableVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java @@ -28,14 +28,7 @@ public class VariableVisitor implements Visitor { private void traverse(Node node, Map variables) { if (node instanceof RuleNode) { LexicalUnit value = ((RuleNode) node).getValue(); - for (String variable : variables.keySet()) { - if (value.getLexicalUnitType() == SCSSLexicalUnit.SCSS_VARIABLE) { - if (value.getStringValue().contains(variable)) { - LexicalUnitImpl lexVal = (LexicalUnitImpl) value; - lexVal.replaceValue(variables.get(variable)); - } - } - } + updateValue(value, variables); } else { Set toBeDeleted = new HashSet(); for (Node child : node.getChildren()) { @@ -53,4 +46,24 @@ public class VariableVisitor implements Visitor { } } } + + private void updateValue(LexicalUnit value, + Map variables) { + if (value == null) { + return; + } + for (String variable : variables.keySet()) { + if (value.getLexicalUnitType() == SCSSLexicalUnit.SCSS_VARIABLE) { + if (value.getStringValue().contains(variable)) { + LexicalUnitImpl lexVal = (LexicalUnitImpl) value; + lexVal.replaceValue(variables.get(variable)); + } + } else if (value.getLexicalUnitType() == SCSSLexicalUnit.SAC_FUNCTION) { + LexicalUnit params = value.getParameters(); + updateValue(params, variables); + } + } + LexicalUnit next = value.getNextLexicalUnit(); + updateValue(next, variables); + } } diff --git a/tests/sass/resources/css/functions.css b/tests/sass/resources/css/functions.css index 3757096667..de87462b46 100644 --- a/tests/sass/resources/css/functions.css +++ b/tests/sass/resources/css/functions.css @@ -7,8 +7,8 @@ color: hsl(25, 100%, 50%); color: rgb(36, 0, 0); color: rgb(240, 0, 0); - color: #200; color: #240000; - color: #f00; + color: #200; color: #f00000; + color: #f00; } diff --git a/tests/sass/resources/css/variables.css b/tests/sass/resources/css/variables.css index 67ca5fdb7a..7c56a24c90 100644 --- a/tests/sass/resources/css/variables.css +++ b/tests/sass/resources/css/variables.css @@ -1,6 +1,7 @@ .content-navigation { border-color: #3bbfce; color: #0000ff; + color1: #cc0000; font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; } diff --git a/tests/sass/resources/scss/variables.scss b/tests/sass/resources/scss/variables.scss index 2b39ef4a8d..3d9dada294 100644 --- a/tests/sass/resources/scss/variables.scss +++ b/tests/sass/resources/scss/variables.scss @@ -6,6 +6,7 @@ $chameleon-font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode" border-color: $blue; $blue: #0000ff; color: $blue; + color1: darken($blue); font-family: $chameleon-font-family; } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java index 9b6a506890..61208229cf 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java @@ -48,7 +48,7 @@ public class Variables extends AbstractTestBase { Assert.assertEquals("chameleon-font-family", varNode3.getName()); BlockNode blockNode1 = (BlockNode) root.getChildren().get(3); - Assert.assertEquals(4, blockNode1.getChildren().size()); + Assert.assertEquals(5, blockNode1.getChildren().size()); RuleNode ruleNode1Block1 = (RuleNode) blockNode1.getChildren().get(0); Assert.assertEquals("border-color", ruleNode1Block1.getVariable()); Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode1Block1 -- cgit v1.2.3 From 0a4a462fd1e4edc71682d4b350cd03bb27700b72 Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Thu, 9 Aug 2012 14:53:56 +0300 Subject: Merge SASS change: Fixed a bug regarding replaceValue in LexicalUnitImpl --- sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java | 7 +++++++ sass/src/com/vaadin/sass/parser/Parser.java | 12 ++++++++---- sass/src/com/vaadin/sass/parser/Parser.jj | 12 ++++++++---- sass/src/com/vaadin/sass/tree/CommentNode.java | 2 +- sass/src/com/vaadin/sass/util/ColorUtil.java | 2 +- sass/src/com/vaadin/sass/visitor/VariableVisitor.java | 18 +++++++++--------- tests/sass/resources/css/comments.css | 2 ++ tests/sass/resources/css/variables.css | 2 +- tests/sass/resources/scss/variables.scss | 2 +- .../src/com/vaadin/sass/testcases/scss/Comments.java | 2 +- 10 files changed, 39 insertions(+), 22 deletions(-) diff --git a/sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java b/sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java index 2a62c0dcf9..e268da8ed5 100644 --- a/sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java +++ b/sass/src/com/vaadin/sass/parser/LexicalUnitImpl.java @@ -572,4 +572,11 @@ public class LexicalUnitImpl implements LexicalUnit, SCSSLexicalUnit, return new LexicalUnitImpl(SAC_OPERATOR_SLASH, line, column, previous); } + @Override + public LexicalUnitImpl clone() { + LexicalUnitImpl cloned = new LexicalUnitImpl(type, line, column, + (LexicalUnitImpl) prev); + cloned.replaceValue(this); + return cloned; + } } diff --git a/sass/src/com/vaadin/sass/parser/Parser.java b/sass/src/com/vaadin/sass/parser/Parser.java index cc9c39176e..710c7d5be7 100644 --- a/sass/src/com/vaadin/sass/parser/Parser.java +++ b/sass/src/com/vaadin/sass/parser/Parser.java @@ -25,7 +25,6 @@ import org.w3c.flute.parser.selectors.SelectorFactoryImpl; import org.w3c.flute.parser.selectors.ConditionFactoryImpl; import org.w3c.flute.util.Encoding; - import com.vaadin.sass.handler.*; import com.vaadin.sass.tree.*; @@ -556,9 +555,14 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { label_7: while (true) { ; - if(token.specialToken!=null){ - documentHandler.comment(token.specialToken.image); - } + if (token.specialToken != null){ + Token tmp_t = token.specialToken; + while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken; + while (tmp_t != null) { + documentHandler.comment(tmp_t.image); + tmp_t = tmp_t.next; + } + } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VARIABLE: variable(); diff --git a/sass/src/com/vaadin/sass/parser/Parser.jj b/sass/src/com/vaadin/sass/parser/Parser.jj index 2f43be5f6e..62892c8159 100644 --- a/sass/src/com/vaadin/sass/parser/Parser.jj +++ b/sass/src/com/vaadin/sass/parser/Parser.jj @@ -43,7 +43,6 @@ import org.w3c.flute.parser.selectors.SelectorFactoryImpl; import org.w3c.flute.parser.selectors.ConditionFactoryImpl; import org.w3c.flute.util.Encoding; - import com.vaadin.sass.handler.*; import com.vaadin.sass.tree.*; @@ -733,9 +732,14 @@ void afterImportDeclaration() : { ( { - if(token.specialToken!=null){ - documentHandler.comment(token.specialToken.image); - } + if (token.specialToken != null){ + Token tmp_t = token.specialToken; + while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken; + while (tmp_t != null) { + documentHandler.comment(tmp_t.image); + tmp_t = tmp_t.next; + } + } } ( variable() | mixinDirective() | includeDirective() | styleRule() | media()| page() | fontFace() | { l = getLocator(); } ret=skipStatement() diff --git a/sass/src/com/vaadin/sass/tree/CommentNode.java b/sass/src/com/vaadin/sass/tree/CommentNode.java index 649d2df581..3bdb563312 100644 --- a/sass/src/com/vaadin/sass/tree/CommentNode.java +++ b/sass/src/com/vaadin/sass/tree/CommentNode.java @@ -21,6 +21,6 @@ public class CommentNode extends Node { @Override public String toString() { - return comment.trim(); + return comment; } } diff --git a/sass/src/com/vaadin/sass/util/ColorUtil.java b/sass/src/com/vaadin/sass/util/ColorUtil.java index 9abcf57310..fe3f8f6e9b 100644 --- a/sass/src/com/vaadin/sass/util/ColorUtil.java +++ b/sass/src/com/vaadin/sass/util/ColorUtil.java @@ -81,7 +81,7 @@ public class ColorUtil { hslParam = (LexicalUnitImpl) hslParam.getNextLexicalUnit(); i++; } - float h = ((hue.getFloatValue() % 360) + 360) % 360 / 360; + float h = ((hue.getIntegerValue() % 360) + 360) % 360 / 360f; float s = saturation.getFloatValue() / 100; float l = lightness.getFloatValue() / 100; float m2, m1; diff --git a/sass/src/com/vaadin/sass/visitor/VariableVisitor.java b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java index 8a567dacae..bb790a0aee 100644 --- a/sass/src/com/vaadin/sass/visitor/VariableVisitor.java +++ b/sass/src/com/vaadin/sass/visitor/VariableVisitor.java @@ -52,16 +52,16 @@ public class VariableVisitor implements Visitor { if (value == null) { return; } - for (String variable : variables.keySet()) { - if (value.getLexicalUnitType() == SCSSLexicalUnit.SCSS_VARIABLE) { - if (value.getStringValue().contains(variable)) { - LexicalUnitImpl lexVal = (LexicalUnitImpl) value; - lexVal.replaceValue(variables.get(variable)); - } - } else if (value.getLexicalUnitType() == SCSSLexicalUnit.SAC_FUNCTION) { - LexicalUnit params = value.getParameters(); - updateValue(params, variables); + if (value.getLexicalUnitType() == SCSSLexicalUnit.SCSS_VARIABLE) { + LexicalUnitImpl variableValue = variables.get( + value.getStringValue()).clone(); + if (variableValue != null) { + LexicalUnitImpl lexVal = (LexicalUnitImpl) value; + lexVal.replaceValue(variableValue); } + } else if (value.getLexicalUnitType() == SCSSLexicalUnit.SAC_FUNCTION) { + LexicalUnit params = value.getParameters(); + updateValue(params, variables); } LexicalUnit next = value.getNextLexicalUnit(); updateValue(next, variables); diff --git a/tests/sass/resources/css/comments.css b/tests/sass/resources/css/comments.css index 32f348da9e..2a32b49ec2 100644 --- a/tests/sass/resources/css/comments.css +++ b/tests/sass/resources/css/comments.css @@ -1,5 +1,7 @@ /** 0sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ + /** 1sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ + .v-button:focus { background-image: url(img/left-focus.png);/** sprite-ref: buttons */ outline: none; diff --git a/tests/sass/resources/css/variables.css b/tests/sass/resources/css/variables.css index 7c56a24c90..d54ae6cd30 100644 --- a/tests/sass/resources/css/variables.css +++ b/tests/sass/resources/css/variables.css @@ -1,7 +1,7 @@ .content-navigation { border-color: #3bbfce; color: #0000ff; - color1: #cc0000; + color1: #0000d1; font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; } diff --git a/tests/sass/resources/scss/variables.scss b/tests/sass/resources/scss/variables.scss index 3d9dada294..60acc5dd10 100644 --- a/tests/sass/resources/scss/variables.scss +++ b/tests/sass/resources/scss/variables.scss @@ -6,7 +6,7 @@ $chameleon-font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode" border-color: $blue; $blue: #0000ff; color: $blue; - color1: darken($blue); + color1: darken($blue, 9%); font-family: $chameleon-font-family; } diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java index a799fa9e99..1dcc18e568 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java @@ -21,7 +21,7 @@ import com.vaadin.sass.tree.CommentNode; public class Comments extends AbstractTestBase { String scss = "/scss/comments.scss"; - String css = "/scss/comments.css"; + String css = "/css/comments.css"; @Test public void testParser() throws CSSException, URISyntaxException, -- cgit v1.2.3 From 239ce71f498fcdf2809c5561bf5028bf216265ca Mon Sep 17 00:00:00 2001 From: Henri Sara Date: Fri, 10 Aug 2012 09:10:40 +0300 Subject: Merge SASS fixes keeping comments, remove hack for reindeer (#9223) --- .../a-sprite-definitions/a-sprite-definitions.scss | 12 +-- WebContent/VAADIN/themes/reindeer/reindeer.scss | 1 - .../vaadin/buildhelpers/CompileDefaultTheme.java | 17 ---- sass/src/com/vaadin/sass/parser/Parser.java | 108 +++++++++++---------- sass/src/com/vaadin/sass/parser/Parser.jj | 27 +++--- tests/sass/resources/css/comments.css | 2 + tests/sass/resources/scss/comments.scss | 3 +- .../com/vaadin/sass/testcases/scss/Comments.java | 4 +- 8 files changed, 84 insertions(+), 90 deletions(-) diff --git a/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss b/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss index 87c598956f..ffa7ca349a 100644 --- a/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss +++ b/WebContent/VAADIN/themes/reindeer/a-sprite-definitions/a-sprite-definitions.scss @@ -1,14 +1,14 @@ /*------------ * General vertical and horizontal sprites * -----------*/ -/** sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ -/** sprite: horizontals; sprite-image: url(../common/img/horizontal-sprites.png); sprite-layout: horizontal */ +/** sprite: verticals; sprite-image: url(common/img/vertical-sprites.png); sprite-layout: vertical */ +/** sprite: horizontals; sprite-image: url(common/img/horizontal-sprites.png); sprite-layout: horizontal */ -/** sprite: black-verticals; sprite-image: url(../common/img/black-vertical-sprites.png); sprite-layout: vertical; sprite-matte-color: #1e2022 */ -/** sprite: black-horizontals; sprite-image: url(../common/img/black-horizontal-sprites.png); sprite-layout: horizontal; sprite-matte-color: #1e2022 */ +/** sprite: black-verticals; sprite-image: url(common/img/black-vertical-sprites.png); sprite-layout: vertical; sprite-matte-color: #1e2022 */ +/** sprite: black-horizontals; sprite-image: url(common/img/black-horizontal-sprites.png); sprite-layout: horizontal; sprite-matte-color: #1e2022 */ /*------------ * Buttons * -----------*/ -/** sprite: buttons; sprite-image: url(../button/img/button-sprites.png); sprite-layout: vertical */ -/** sprite: black-buttons; sprite-image: url(../button/img/black-button-sprites.png); sprite-layout: vertical */ \ No newline at end of file +/** sprite: buttons; sprite-image: url(button/img/button-sprites.png); sprite-layout: vertical */ +/** sprite: black-buttons; sprite-image: url(button/img/black-button-sprites.png); sprite-layout: vertical */ diff --git a/WebContent/VAADIN/themes/reindeer/reindeer.scss b/WebContent/VAADIN/themes/reindeer/reindeer.scss index 6033466f63..0cd01f7885 100644 --- a/WebContent/VAADIN/themes/reindeer/reindeer.scss +++ b/WebContent/VAADIN/themes/reindeer/reindeer.scss @@ -3,7 +3,6 @@ // common between others for now for backwards compatibility @import "accordion/accordion.scss"; -// TODO this is problematic: comments get stripped out @import "a-sprite-definitions/a-sprite-definitions.scss"; @import "button/button.scss"; diff --git a/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java b/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java index a23e5e912e..45079ac21f 100644 --- a/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java +++ b/build/buildhelpers/com/vaadin/buildhelpers/CompileDefaultTheme.java @@ -79,23 +79,6 @@ public class CompileDefaultTheme { + "\";}\n"); cssHeader.append(".v-theme-version-" + version + " {display: none;}\n"); - // TODO temporary hack for Reindeer - if (useSmartSprites) { - // TODO removed "../" from paths here - cssHeader - .append("/** sprite: verticals; sprite-image: url(common/img/vertical-sprites.png); sprite-layout: vertical */\n"); - cssHeader - .append("/** sprite: horizontals; sprite-image: url(common/img/horizontal-sprites.png); sprite-layout: horizontal */\n"); - cssHeader - .append("/** sprite: black-verticals; sprite-image: url(common/img/black-vertical-sprites.png); sprite-layout: vertical; sprite-matte-color: #1e2022 */\n"); - cssHeader - .append("/** sprite: black-horizontals; sprite-image: url(common/img/black-horizontal-sprites.png); sprite-layout: horizontal; sprite-matte-color: #1e2022 */\n"); - cssHeader - .append("/** sprite: buttons; sprite-image: url(button/img/button-sprites.png); sprite-layout: vertical */\n"); - cssHeader - .append("/** sprite: black-buttons; sprite-image: url(button/img/black-button-sprites.png); sprite-layout: vertical */\n"); - } - String stylesCssDir = THEME_DIR + themeName + "/"; String stylesCssName = stylesCssDir + "styles.css"; diff --git a/sass/src/com/vaadin/sass/parser/Parser.java b/sass/src/com/vaadin/sass/parser/Parser.java index 710c7d5be7..152ae1ddb2 100644 --- a/sass/src/com/vaadin/sass/parser/Parser.java +++ b/sass/src/com/vaadin/sass/parser/Parser.java @@ -25,6 +25,7 @@ import org.w3c.flute.parser.selectors.SelectorFactoryImpl; import org.w3c.flute.parser.selectors.ConditionFactoryImpl; import org.w3c.flute.util.Encoding; + import com.vaadin.sass.handler.*; import com.vaadin.sass.tree.*; @@ -449,6 +450,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: jj_consume_token(S); + comments(); break; case CDO: case CDC: @@ -555,14 +557,6 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { label_7: while (true) { ; - if (token.specialToken != null){ - Token tmp_t = token.specialToken; - while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken; - while (tmp_t != null) { - documentHandler.comment(tmp_t.image); - tmp_t = tmp_t.next; - } - } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VARIABLE: variable(); @@ -2790,6 +2784,7 @@ LexicalUnit exp; String name; LexicalUnit exp; Token save; + String comment = null; try { name = property(); save = token; @@ -3935,6 +3930,17 @@ LexicalUnit exp; return convertStringIndex(s, 0, s.length()); } + void comments() throws ParseException { + if (token.specialToken != null){ + Token tmp_t = token.specialToken; + while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken; + while (tmp_t != null) { + documentHandler.comment(tmp_t.image); + tmp_t = tmp_t.next; + } + } + } + void rejectToken(Token t) throws ParseException { Token fakeToken = new Token(); t.next = token; @@ -4149,6 +4155,26 @@ LexicalUnit exp; finally { jj_save(3, xla); } } + private boolean jj_3R_129() { + if (jj_scan_token(DIV)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_119() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_129()) { + jj_scanpos = xsp; + if (jj_3R_130()) return true; + } + return false; + } + private boolean jj_3R_168() { if (jj_scan_token(UNICODERANGE)) return true; return false; @@ -4442,24 +4468,6 @@ LexicalUnit exp; return false; } - private boolean jj_3R_124() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_136()) { - jj_scanpos = xsp; - if (jj_3R_137()) { - jj_scanpos = xsp; - if (jj_3R_138()) return true; - } - } - return false; - } - - private boolean jj_3R_136() { - if (jj_scan_token(IDENT)) return true; - return false; - } - private boolean jj_3R_131() { Token xsp; xsp = jj_scanpos; @@ -4523,6 +4531,24 @@ LexicalUnit exp; return false; } + private boolean jj_3R_124() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_136()) { + jj_scanpos = xsp; + if (jj_3R_137()) { + jj_scanpos = xsp; + if (jj_3R_138()) return true; + } + } + return false; + } + + private boolean jj_3R_136() { + if (jj_scan_token(IDENT)) return true; + return false; + } + private boolean jj_3R_108() { if (jj_scan_token(IDENT)) return true; Token xsp; @@ -4533,11 +4559,6 @@ LexicalUnit exp; return false; } - private boolean jj_3R_135() { - if (jj_scan_token(PRECEDES)) return true; - return false; - } - private boolean jj_3R_120() { Token xsp; xsp = jj_scanpos; @@ -4552,6 +4573,11 @@ LexicalUnit exp; return false; } + private boolean jj_3R_135() { + if (jj_scan_token(PRECEDES)) return true; + return false; + } + private boolean jj_3R_107() { Token xsp; xsp = jj_scanpos; @@ -4681,26 +4707,6 @@ LexicalUnit exp; return false; } - private boolean jj_3R_129() { - if (jj_scan_token(DIV)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - return false; - } - - private boolean jj_3R_119() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_129()) { - jj_scanpos = xsp; - if (jj_3R_130()) return true; - } - return false; - } - /** Generated Token Manager. */ public ParserTokenManager token_source; /** Current token. */ diff --git a/sass/src/com/vaadin/sass/parser/Parser.jj b/sass/src/com/vaadin/sass/parser/Parser.jj index 62892c8159..c34dedc596 100644 --- a/sass/src/com/vaadin/sass/parser/Parser.jj +++ b/sass/src/com/vaadin/sass/parser/Parser.jj @@ -43,6 +43,7 @@ import org.w3c.flute.parser.selectors.SelectorFactoryImpl; import org.w3c.flute.parser.selectors.ConditionFactoryImpl; import org.w3c.flute.util.Encoding; + import com.vaadin.sass.handler.*; import com.vaadin.sass.tree.*; @@ -700,7 +701,8 @@ void parserUnit() : try { { documentHandler.startDocument(source); } ( charset() )? - ( | ignoreStatement() )* + ( comments() + | ignoreStatement() )* ( importDeclaration() ( ignoreStatement() ( )* )* )* afterImportDeclaration() @@ -731,16 +733,6 @@ void afterImportDeclaration() : } { ( - { - if (token.specialToken != null){ - Token tmp_t = token.specialToken; - while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken; - while (tmp_t != null) { - documentHandler.comment(tmp_t.image); - tmp_t = tmp_t.next; - } - } - } ( variable() | mixinDirective() | includeDirective() | styleRule() | media()| page() | fontFace() | { l = getLocator(); } ret=skipStatement() { @@ -1583,6 +1575,7 @@ void declarationOrNestedProperties() : String name; LexicalUnit exp; Token save; + String comment = null; } { try { @@ -2355,6 +2348,18 @@ String convertString(String s) { return convertStringIndex(s, 0, s.length()); } +JAVACODE +void comments(){ + if (token.specialToken != null){ + Token tmp_t = token.specialToken; + while (tmp_t.specialToken != null) tmp_t = tmp_t.specialToken; + while (tmp_t != null) { + documentHandler.comment(tmp_t.image); + tmp_t = tmp_t.next; + } + } +} + /* * @@HACK * I can't insert a token into the tokens flow. diff --git a/tests/sass/resources/css/comments.css b/tests/sass/resources/css/comments.css index 2a32b49ec2..1c773f7974 100644 --- a/tests/sass/resources/css/comments.css +++ b/tests/sass/resources/css/comments.css @@ -2,6 +2,8 @@ /** 1sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +/** 2sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ + .v-button:focus { background-image: url(img/left-focus.png);/** sprite-ref: buttons */ outline: none; diff --git a/tests/sass/resources/scss/comments.scss b/tests/sass/resources/scss/comments.scss index 7e2ccac3b5..de3fbe8e0d 100644 --- a/tests/sass/resources/scss/comments.scss +++ b/tests/sass/resources/scss/comments.scss @@ -1,6 +1,7 @@ /** 0sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ -$black:#000000; /** 1sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +/** 2sprite: verticals; sprite-image: url(../common/img/vertical-sprites.png); sprite-layout: vertical */ +$black:#000000; .v-button:focus { background-image: url(img/left-focus.png);/** sprite-ref: buttons */ outline: none; diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java index 1dcc18e568..3dbafc9d43 100644 --- a/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java @@ -32,7 +32,7 @@ public class Comments extends AbstractTestBase { parser.parseStyleSheet(getClass().getResource(scss).getPath()); ScssStylesheet root = handler.getStyleSheet(); Assert.assertNotNull(root); - Assert.assertEquals(5, root.getChildren().size()); + Assert.assertEquals(6, root.getChildren().size()); Assert.assertTrue(root.getChildren().get(0) instanceof CommentNode); Assert.assertTrue(root.getChildren().get(2) instanceof CommentNode); } @@ -40,7 +40,5 @@ public class Comments extends AbstractTestBase { @Test public void testCompiler() throws Exception { testCompiler(scss, css); - Assert.assertEquals("Original CSS and parsed CSS doesn't match", - comparisonCss, parsedScss); } } -- cgit v1.2.3 From 6fa6a21224e71a2e8ab52ee7066d87a8876d23d5 Mon Sep 17 00:00:00 2001 From: Johannes Dahlström Date: Mon, 23 Jul 2012 14:40:00 +0300 Subject: Pass ApplicationConnection, not ApplicationConfiguration, to VUIDLBrowser --- .../terminal/gwt/client/ApplicationConnection.java | 18 +++--- src/com/vaadin/terminal/gwt/client/Console.java | 2 +- .../vaadin/terminal/gwt/client/NullConsole.java | 2 +- src/com/vaadin/terminal/gwt/client/VConsole.java | 4 +- .../vaadin/terminal/gwt/client/VDebugConsole.java | 4 +- .../vaadin/terminal/gwt/client/VUIDLBrowser.java | 64 ++++++++++------------ 6 files changed, 45 insertions(+), 49 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java index fb7af1404c..ce8683ce90 100644 --- a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java +++ b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java @@ -1106,14 +1106,6 @@ public class ApplicationConnection { MultiStepDuration updateDuration = new MultiStepDuration(); - if (debugLogging) { - VConsole.log(" * Dumping UIDL to the console"); - VConsole.dirUIDL(json, configuration); - - updateDuration.logDuration( - " * Dumping UIDL to the console completed", 10); - } - if (json.containsKey("locales")) { VConsole.log(" * Handling locales"); // Store locale data @@ -1170,6 +1162,16 @@ public class ApplicationConnection { updateDuration.logDuration(" * Creating connectors completed", 10); + if (debugLogging) { + VConsole.log(" * Dumping state changes to the console"); + VConsole.dirUIDL(json, ApplicationConnection.this); + + updateDuration + .logDuration( + " * Dumping state changes to the console completed", + 10); + } + // Update states, do not fire events Collection pendingStateChangeEvents = updateConnectorState(json); diff --git a/src/com/vaadin/terminal/gwt/client/Console.java b/src/com/vaadin/terminal/gwt/client/Console.java index 8db145342a..64b2646201 100644 --- a/src/com/vaadin/terminal/gwt/client/Console.java +++ b/src/com/vaadin/terminal/gwt/client/Console.java @@ -18,7 +18,7 @@ public interface Console { public abstract void printObject(Object msg); - public abstract void dirUIDL(ValueMap u, ApplicationConfiguration cnf); + public abstract void dirUIDL(ValueMap u, ApplicationConnection client); public abstract void printLayoutProblems(ValueMap meta, ApplicationConnection applicationConnection, diff --git a/src/com/vaadin/terminal/gwt/client/NullConsole.java b/src/com/vaadin/terminal/gwt/client/NullConsole.java index 7db513ca82..aba301d18d 100644 --- a/src/com/vaadin/terminal/gwt/client/NullConsole.java +++ b/src/com/vaadin/terminal/gwt/client/NullConsole.java @@ -16,7 +16,7 @@ import com.google.gwt.core.client.GWT; public class NullConsole implements Console { @Override - public void dirUIDL(ValueMap u, ApplicationConfiguration cnf) { + public void dirUIDL(ValueMap u, ApplicationConnection conn) { } @Override diff --git a/src/com/vaadin/terminal/gwt/client/VConsole.java b/src/com/vaadin/terminal/gwt/client/VConsole.java index a221b42d67..02fc61626d 100644 --- a/src/com/vaadin/terminal/gwt/client/VConsole.java +++ b/src/com/vaadin/terminal/gwt/client/VConsole.java @@ -86,9 +86,9 @@ public class VConsole { } } - public static void dirUIDL(ValueMap u, ApplicationConfiguration cnf) { + public static void dirUIDL(ValueMap u, ApplicationConnection client) { if (impl != null) { - impl.dirUIDL(u, cnf); + impl.dirUIDL(u, client); } } diff --git a/src/com/vaadin/terminal/gwt/client/VDebugConsole.java b/src/com/vaadin/terminal/gwt/client/VDebugConsole.java index a7bd943912..5753e032d4 100644 --- a/src/com/vaadin/terminal/gwt/client/VDebugConsole.java +++ b/src/com/vaadin/terminal/gwt/client/VDebugConsole.java @@ -492,9 +492,9 @@ public class VDebugConsole extends VOverlay implements Console { * .terminal.gwt.client.UIDL) */ @Override - public void dirUIDL(ValueMap u, ApplicationConfiguration conf) { + public void dirUIDL(ValueMap u, ApplicationConnection client) { if (panel.isAttached()) { - VUIDLBrowser vuidlBrowser = new VUIDLBrowser(u, conf); + VUIDLBrowser vuidlBrowser = new VUIDLBrowser(u, client); vuidlBrowser.setText("Response:"); panel.add(vuidlBrowser); } diff --git a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java index 745d66c444..2d853a7a0c 100644 --- a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java +++ b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java @@ -7,7 +7,6 @@ package com.vaadin.terminal.gwt.client; import java.util.Iterator; -import java.util.List; import java.util.Set; import com.google.gwt.core.client.JsArray; @@ -25,9 +24,9 @@ import com.google.gwt.event.dom.client.MouseOutHandler; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONValue; -import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; +import com.vaadin.shared.Connector; import com.vaadin.terminal.gwt.client.ui.UnknownComponentConnector; import com.vaadin.terminal.gwt.client.ui.window.VWindow; @@ -38,21 +37,17 @@ public class VUIDLBrowser extends SimpleTree { private static final String HELP = "Shift click handle to open recursively. " + " Click components to highlight them on client side." + " Shift click components to highlight them also on the server side."; - private ApplicationConfiguration conf; + private ApplicationConnection client; private String highlightedPid; - /** - * TODO Should probably take ApplicationConnection instead of - * ApplicationConfiguration - */ - public VUIDLBrowser(final UIDL uidl, ApplicationConfiguration conf) { - this.conf = conf; - final UIDLItem root = new UIDLItem(uidl, conf); + public VUIDLBrowser(final UIDL uidl, ApplicationConnection client) { + this.client = client; + final UIDLItem root = new UIDLItem(uidl); add(root); } - public VUIDLBrowser(ValueMap u, ApplicationConfiguration conf) { - this.conf = conf; + public VUIDLBrowser(ValueMap u, ApplicationConnection client) { + this.client = client; ValueMap valueMap = u.getValueMap("meta"); if (valueMap.containsKey("hl")) { highlightedPid = valueMap.getString("hl"); @@ -60,7 +55,6 @@ public class VUIDLBrowser extends SimpleTree { Set keySet = u.getKeySet(); for (String key : keySet) { if (key.equals("state")) { - ValueMap stateJson = u.getValueMap(key); SimpleTree stateChanges = new SimpleTree("Shared state"); @@ -75,7 +69,7 @@ public class VUIDLBrowser extends SimpleTree { .cast(); for (int i = 0; i < jsValueMapArray.length(); i++) { UIDL uidl = jsValueMapArray.get(i); - UIDLItem change = new UIDLItem(uidl, conf); + UIDLItem change = new UIDLItem(uidl); change.setTitle("change " + i); add(change); } @@ -120,19 +114,14 @@ public class VUIDLBrowser extends SimpleTree { * Returns the Connector associated with this state change. */ protected ComponentConnector getConnector() { - List runningApplications = ApplicationConfiguration - .getRunningApplications(); - - // TODO this does not work properly with multiple application on - // same host page - for (ApplicationConnection applicationConnection : runningApplications) { - ServerConnector connector = ConnectorMap.get( - applicationConnection).getConnector(getConnectorId()); - if (connector instanceof ComponentConnector) { - return (ComponentConnector) connector; - } + Connector connector = client.getConnectorMap().getConnector( + getConnectorId()); + + if (connector instanceof ComponentConnector) { + return (ComponentConnector) connector; + } else { + return null; } - return new UnknownComponentConnector(); } protected abstract String getConnectorId(); @@ -147,7 +136,13 @@ public class VUIDLBrowser extends SimpleTree { SharedStateItem(String connectorId, ValueMap stateChanges) { this.connectorId = connectorId; - setText(connectorId); + ComponentConnector connector = getConnector(); + if (connector != null) { + setText(connectorId + " " + connector.getState().getDebugId() + + " " + connector.getClass()); + } else { + setText(connectorId + " unknown"); + } dir(new JSONObject(stateChanges), this); } @@ -166,7 +161,7 @@ public class VUIDLBrowser extends SimpleTree { dir(value.isArray(), subtree); tree.add(subtree); } else { - tree.add(new HTML(key + "=" + value)); + tree.addItem(key + "=" + value); } } @@ -190,12 +185,13 @@ public class VUIDLBrowser extends SimpleTree { private UIDL uidl; - UIDLItem(UIDL uidl, ApplicationConfiguration conf) { + UIDLItem(UIDL uidl) { this.uidl = uidl; try { String name = uidl.getTag(); try { - name = getNodeName(uidl, conf, Integer.parseInt(name)); + name = getNodeName(uidl, client.getConfiguration(), + Integer.parseInt(name)); } catch (Exception e) { // NOP } @@ -238,7 +234,8 @@ public class VUIDLBrowser extends SimpleTree { String nodeName = uidl.getTag(); try { - nodeName = getNodeName(uidl, conf, Integer.parseInt(nodeName)); + nodeName = getNodeName(uidl, client.getConfiguration(), + Integer.parseInt(nodeName)); } catch (Exception e) { // NOP } @@ -302,10 +299,7 @@ public class VUIDLBrowser extends SimpleTree { while (i.hasNext()) { final Object child = i.next(); try { - final UIDL c = (UIDL) child; - final UIDLItem childItem = new UIDLItem(c, conf); - add(childItem); - + add(new UIDLItem((UIDL) child)); } catch (final Exception e) { addItem(child.toString()); } -- cgit v1.2.3 From f235fa7f64e334d945fdb6c83c4f5aaa9003267a Mon Sep 17 00:00:00 2001 From: Johannes Dahlström Date: Mon, 23 Jul 2012 14:41:09 +0300 Subject: Basic support for logging connector hierarchy changes --- src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java index 2d853a7a0c..5b8ba59c79 100644 --- a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java +++ b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java @@ -75,6 +75,14 @@ public class VUIDLBrowser extends SimpleTree { } } else if (key.equals("meta")) { + } else if (key.equals("hierarchy")) { + ValueMap hierJSON = u.getValueMap(key); + SimpleTree hierarchy = new SimpleTree("Hierarchy"); + for (String hierKey : hierJSON.getKeySet()) { + hierarchy.addItem(hierKey + ": " + + hierJSON.getAsString(hierKey)); + } + add(hierarchy); } else { // TODO consider pretty printing other request data // addItem(key + " : " + u.getAsString(key)); -- cgit v1.2.3 From 2bb642c779cb6dba9856882de92fec772590135f Mon Sep 17 00:00:00 2001 From: Johannes Dahlström Date: Wed, 8 Aug 2012 16:18:03 +0300 Subject: A few improvements to shared state debug console (#8422) --- .../terminal/gwt/client/ApplicationConnection.java | 22 +++++++++----------- .../vaadin/terminal/gwt/client/VUIDLBrowser.java | 24 ++++++++-------------- 2 files changed, 18 insertions(+), 28 deletions(-) diff --git a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java index ce8683ce90..d757bf89a2 100644 --- a/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java +++ b/src/com/vaadin/terminal/gwt/client/ApplicationConnection.java @@ -147,8 +147,6 @@ public class ApplicationConnection { */ public static final String UIDL_REFRESH_TOKEN = "Vaadin-Refresh"; - private final boolean debugLogging = true || false; - // will hold the UIDL security key (for XSS protection) once received private String uidlSecurityKey = "init"; @@ -1162,16 +1160,6 @@ public class ApplicationConnection { updateDuration.logDuration(" * Creating connectors completed", 10); - if (debugLogging) { - VConsole.log(" * Dumping state changes to the console"); - VConsole.dirUIDL(json, ApplicationConnection.this); - - updateDuration - .logDuration( - " * Dumping state changes to the console completed", - 10); - } - // Update states, do not fire events Collection pendingStateChangeEvents = updateConnectorState(json); @@ -1238,6 +1226,16 @@ public class ApplicationConnection { updateDuration .logDuration(" * Layout processing completed", 10); + if (ApplicationConfiguration.isDebugMode()) { + VConsole.log(" * Dumping state changes to the console"); + VConsole.dirUIDL(json, ApplicationConnection.this); + + updateDuration + .logDuration( + " * Dumping state changes to the console completed", + 10); + } + if (meta != null) { if (meta.containsKey("appError")) { ValueMap error = meta.getValueMap("appError"); diff --git a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java index 5b8ba59c79..f7d43a1a12 100644 --- a/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java +++ b/src/com/vaadin/terminal/gwt/client/VUIDLBrowser.java @@ -56,11 +56,11 @@ public class VUIDLBrowser extends SimpleTree { for (String key : keySet) { if (key.equals("state")) { ValueMap stateJson = u.getValueMap(key); - SimpleTree stateChanges = new SimpleTree("Shared state"); + SimpleTree stateChanges = new SimpleTree("shared state"); - for (String stateKey : stateJson.getKeySet()) { - stateChanges.add(new SharedStateItem(stateKey, stateJson - .getValueMap(stateKey))); + for (String connectorId : stateJson.getKeySet()) { + stateChanges.add(new SharedStateItem(connectorId, stateJson + .getValueMap(connectorId))); } add(stateChanges); @@ -75,16 +75,9 @@ public class VUIDLBrowser extends SimpleTree { } } else if (key.equals("meta")) { - } else if (key.equals("hierarchy")) { - ValueMap hierJSON = u.getValueMap(key); - SimpleTree hierarchy = new SimpleTree("Hierarchy"); - for (String hierKey : hierJSON.getKeySet()) { - hierarchy.addItem(hierKey + ": " - + hierJSON.getAsString(hierKey)); - } - add(hierarchy); } else { - // TODO consider pretty printing other request data + // TODO consider pretty printing other request data such as + // hierarchy changes // addItem(key + " : " + u.getAsString(key)); } } @@ -146,10 +139,9 @@ public class VUIDLBrowser extends SimpleTree { this.connectorId = connectorId; ComponentConnector connector = getConnector(); if (connector != null) { - setText(connectorId + " " + connector.getState().getDebugId() - + " " + connector.getClass()); + setText(Util.getConnectorString(connector)); } else { - setText(connectorId + " unknown"); + setText("Unknown connector " + connectorId); } dir(new JSONObject(stateChanges), this); } -- cgit v1.2.3