summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJouni Koivuviita <jouni@vaadin.com>2012-08-13 08:54:54 +0300
committerJouni Koivuviita <jouni@vaadin.com>2012-08-13 08:54:54 +0300
commit6031735017cd2fad28cdf64f4246e6d9914cc3ad (patch)
tree7ce54cd9b21fd29b425e90833384e1f66f52aa0c /tests
parent559775efaf0a8f0f9f1ad6246084667732b15a0f (diff)
parent1fd77ff0d5fc6dee010b5c83acfd5b87b6801264 (diff)
downloadvaadin-framework-6031735017cd2fad28cdf64f4246e6d9914cc3ad.tar.gz
vaadin-framework-6031735017cd2fad28cdf64f4246e6d9914cc3ad.zip
merge master (sass theme changes)
Diffstat (limited to 'tests')
-rw-r--r--tests/sass/resources/basic/empty_block.css2
-rw-r--r--tests/sass/resources/basic/media.css27
-rw-r--r--tests/sass/resources/basic/properties.css67
-rw-r--r--tests/sass/resources/basic/reindeer.css5891
-rw-r--r--tests/sass/resources/basic/selectors.css103
-rw-r--r--tests/sass/resources/css/comments.css15
-rw-r--r--tests/sass/resources/css/control-directives.scss1
-rw-r--r--tests/sass/resources/css/extends.css13
-rw-r--r--tests/sass/resources/css/functions.css14
-rw-r--r--tests/sass/resources/css/imports.css11
-rw-r--r--tests/sass/resources/css/microsoft-extensions.css6
-rw-r--r--tests/sass/resources/css/mixins.css41
-rw-r--r--tests/sass/resources/css/nested-properties.css5
-rw-r--r--tests/sass/resources/css/nesting.css47
-rw-r--r--tests/sass/resources/css/parent-import.css25
-rw-r--r--tests/sass/resources/css/parent-selector.css24
-rw-r--r--tests/sass/resources/css/semicolons.css10
-rw-r--r--tests/sass/resources/css/variables.css12
-rw-r--r--tests/sass/resources/scss/_partial-for-import.scss9
-rw-r--r--tests/sass/resources/scss/comments.scss13
-rw-r--r--tests/sass/resources/scss/control-directives.scss14
-rw-r--r--tests/sass/resources/scss/extends.scss13
-rw-r--r--tests/sass/resources/scss/folder-test/parent-import.scss6
-rw-r--r--tests/sass/resources/scss/folder-test2/base-imported.scss1
-rw-r--r--tests/sass/resources/scss/folder-test2/base.scss3
-rw-r--r--tests/sass/resources/scss/folder-test2/url.scss6
-rw-r--r--tests/sass/resources/scss/folder-test2/variables.scss14
-rw-r--r--tests/sass/resources/scss/functions.scss16
-rw-r--r--tests/sass/resources/scss/imports.scss6
-rw-r--r--tests/sass/resources/scss/interpolation.scss3
-rw-r--r--tests/sass/resources/scss/microsoft-extensions.scss6
-rw-r--r--tests/sass/resources/scss/mixins.scss44
-rw-r--r--tests/sass/resources/scss/nested-properties.scss7
-rw-r--r--tests/sass/resources/scss/nesting.scss40
-rw-r--r--tests/sass/resources/scss/parent-selector.scss14
-rw-r--r--tests/sass/resources/scss/reference-parent-selector.css6
-rw-r--r--tests/sass/resources/scss/semicolons.scss9
-rw-r--r--tests/sass/resources/scss/variables.scss17
-rw-r--r--tests/sass/src/com/vaadin/sass/AbstractTestBase.java88
-rw-r--r--tests/sass/src/com/vaadin/sass/parser/ParserTest.java53
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java23
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java37
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/css/Media.java24
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/css/Properties.java24
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java24
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java24
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java44
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java40
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java41
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java42
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java42
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/MicrosoftExtensions.java22
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java104
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java57
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java75
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java52
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java47
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java22
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java94
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java13
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java267
-rw-r--r--tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java55
-rw-r--r--tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java64
-rw-r--r--tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html11
-rw-r--r--tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java12
-rw-r--r--tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java14
66 files changed, 7973 insertions, 3 deletions
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..946ee3a675
--- /dev/null
+++ b/tests/sass/resources/basic/properties.css
@@ -0,0 +1,67 @@
+.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;
+}
+
+.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..4f1cd47193
--- /dev/null
+++ b/tests/sass/resources/basic/reindeer.css
@@ -0,0 +1,5891 @@
+.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-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-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/comments.css b/tests/sass/resources/css/comments.css
new file mode 100644
index 0000000000..1c773f7974
--- /dev/null
+++ b/tests/sass/resources/css/comments.css
@@ -0,0 +1,15 @@
+/** 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 */
+
+/** 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;
+}
+
+.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/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..de87462b46
--- /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: #240000;
+ color: #200;
+ color: #f00000;
+ color: #f00;
+}
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/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/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/semicolons.css b/tests/sass/resources/css/semicolons.css
new file mode 100644
index 0000000000..8a08617638
--- /dev/null
+++ b/tests/sass/resources/css/semicolons.css
@@ -0,0 +1,10 @@
+.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/css/variables.css b/tests/sass/resources/css/variables.css
new file mode 100644
index 0000000000..d54ae6cd30
--- /dev/null
+++ b/tests/sass/resources/css/variables.css
@@ -0,0 +1,12 @@
+.content-navigation {
+ border-color: #3bbfce;
+ color: #0000ff;
+ color1: #0000d1;
+ 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/comments.scss b/tests/sass/resources/scss/comments.scss
new file mode 100644
index 0000000000..de3fbe8e0d
--- /dev/null
+++ b/tests/sass/resources/scss/comments.scss
@@ -0,0 +1,13 @@
+/** 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 */
+/** 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;
+}
+
+.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/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/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/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/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/resources/scss/variables.scss b/tests/sass/resources/scss/variables.scss
new file mode 100644
index 0000000000..60acc5dd10
--- /dev/null
+++ b/tests/sass/resources/scss/variables.scss
@@ -0,0 +1,17 @@
+$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;
+ color1: darken($blue, 9%);
+ 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/AbstractTestBase.java b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java
new file mode 100644
index 0000000000..92bff5cf3c
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/AbstractTestBase.java
@@ -0,0 +1,88 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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 junit.framework.Assert;
+
+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 void testParser(String file) throws CSSException, IOException,
+ URISyntaxException {
+ originalScss = getFileContent(file);
+ ScssStylesheet sheet = getStyleSheet(file);
+ parsedScss = sheet.toString();
+ Assert.assertEquals("Original CSS and parsed CSS do not match",
+ originalScss, parsedScss);
+ }
+
+ 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/parser/ParserTest.java b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java
new file mode 100644
index 0000000000..0906bfd63b
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java
@@ -0,0 +1,53 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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/EmptyBlock.java b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java
new file mode 100644
index 0000000000..43d4aff23f
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java
@@ -0,0 +1,23 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.css;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+import com.vaadin.sass.AbstractTestBase;
+
+public class EmptyBlock extends AbstractTestBase {
+ String css = "/basic/empty_block.css";
+
+ @Test
+ public void testParser() throws CSSException, URISyntaxException,
+ IOException {
+ testParser(css);
+ }
+}
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..215b0e2f8f
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java
@@ -0,0 +1,37 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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.AbstractTestBase;
+import com.vaadin.sass.ScssStylesheet;
+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 AbstractTestBase {
+ 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..e23b816e55
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java
@@ -0,0 +1,24 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.css;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+import com.vaadin.sass.AbstractTestBase;
+
+public class Media extends AbstractTestBase {
+
+ String css = "/basic/media.css";
+
+ @Test
+ public void testParser() throws CSSException, URISyntaxException,
+ IOException {
+ testParser(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
new file mode 100644
index 0000000000..7e78a088f7
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java
@@ -0,0 +1,24 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.css;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+import com.vaadin.sass.AbstractTestBase;
+
+public class Properties extends AbstractTestBase {
+
+ String css = "/basic/properties.css";
+
+ @Test
+ public void testParser() throws CSSException, URISyntaxException,
+ IOException {
+ testParser(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
new file mode 100644
index 0000000000..00f03d0f16
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java
@@ -0,0 +1,24 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.css;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+import com.vaadin.sass.AbstractTestBase;
+
+public class Reindeer extends AbstractTestBase {
+
+ String css = "/basic/reindeer.css";
+
+ @Test
+ public void testParser() throws CSSException, URISyntaxException,
+ IOException {
+ testParser(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
new file mode 100644
index 0000000000..15162e5a90
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java
@@ -0,0 +1,24 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.css;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+import com.vaadin.sass.AbstractTestBase;
+
+public class Selectors extends AbstractTestBase {
+
+ String css = "/basic/selectors.css";
+
+ @Test
+ public void testParser() throws CSSException, URISyntaxException,
+ IOException {
+ testParser(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
new file mode 100644
index 0000000000..3dbafc9d43
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Comments.java
@@ -0,0 +1,44 @@
+/*
+@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;
+import com.vaadin.sass.ScssStylesheet;
+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 AbstractTestBase {
+ String scss = "/scss/comments.scss";
+ String css = "/css/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(6, root.getChildren().size());
+ Assert.assertTrue(root.getChildren().get(0) instanceof CommentNode);
+ Assert.assertTrue(root.getChildren().get(2) instanceof CommentNode);
+ }
+
+ @Test
+ public void testCompiler() throws Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..45e3752178
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java
@@ -0,0 +1,40 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+
+public class ControlDirectives extends AbstractTestBase {
+
+ 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 Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..87a2cec00b
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java
@@ -0,0 +1,41 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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.AbstractTestBase;
+import com.vaadin.sass.ScssStylesheet;
+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 AbstractTestBase {
+ 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 Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..e8f2f26b14
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java
@@ -0,0 +1,42 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+import com.vaadin.sass.tree.BlockNode;
+
+public class Functions extends AbstractTestBase {
+
+ 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 Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..035576a381
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java
@@ -0,0 +1,42 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+import com.vaadin.sass.tree.ImportNode;
+
+public class Imports extends AbstractTestBase {
+
+ 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 Exception {
+ testCompiler(scss, css);
+ }
+}
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);
+ }
+}
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..9dc5ec5a5e
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java
@@ -0,0 +1,104 @@
+/*
+@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 org.w3c.css.sac.LexicalUnit;
+
+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;
+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 AbstractTestBase {
+
+ 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 Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..b238cea9ae
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java
@@ -0,0 +1,57 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+import com.vaadin.sass.tree.BlockNode;
+import com.vaadin.sass.tree.NestPropertiesNode;
+import com.vaadin.sass.tree.RuleNode;
+
+public class NestedProperties extends AbstractTestBase {
+ 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 Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..0d5790c7dc
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java
@@ -0,0 +1,75 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+import com.vaadin.sass.tree.BlockNode;
+
+public class Nesting extends AbstractTestBase {
+
+ 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 Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..e775b33880
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java
@@ -0,0 +1,52 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+import com.vaadin.sass.tree.ImportNode;
+
+public class ParentImports extends AbstractTestBase {
+
+ 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 Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..14c7c6543a
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java
@@ -0,0 +1,47 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+import com.vaadin.sass.selector.SelectorUtil;
+import com.vaadin.sass.tree.BlockNode;
+
+public class ParentSelector extends AbstractTestBase {
+ 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 Exception {
+ testCompiler(scss, css);
+ }
+}
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..54f26a4f8f
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Semicolons.java
@@ -0,0 +1,22 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import org.junit.Test;
+
+import com.vaadin.sass.AbstractTestBase;
+
+/**
+ * Test for missing and extraneous semicolon handling.
+ */
+public class Semicolons extends AbstractTestBase {
+ String scss = "/scss/semicolons.scss";
+ String css = "/css/semicolons.css";
+
+ @Test
+ public void testCompiler() throws Exception {
+ testCompiler(scss, 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
new file mode 100644
index 0000000000..61208229cf
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java
@@ -0,0 +1,94 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.sass.testcases.scss;
+
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.w3c.css.sac.CSSException;
+
+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;
+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 AbstractTestBase {
+
+ 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(5, 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 Exception {
+ testCompiler(scss, css);
+ }
+}
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..b2858045bb
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java
@@ -0,0 +1,13 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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..7f2f18a63a
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java
@@ -0,0 +1,267 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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<VariableNode> args = new ArrayList<VariableNode>();
+ 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<LexicalUnit> includeArgs = new ArrayList<LexicalUnit>();
+ 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<VariableNode> args = new ArrayList<VariableNode>();
+ 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<String> args = new ArrayList<String>(); 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<VariableNode> argNameList = new ArrayList<VariableNode>();
+ 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<LexicalUnit> argValueList = new ArrayList<LexicalUnit>();
+ 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..402330755c
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java
@@ -0,0 +1,55 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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..723e1ada4e
--- /dev/null
+++ b/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java
@@ -0,0 +1,64 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+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());
+ }
+}
diff --git a/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html
index 6e8a0bf97f..804c3b6cdb 100644
--- a/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html
+++ b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.html
@@ -26,7 +26,16 @@
<td>//div[2]</td>
<td>BasicExtensionTestConnector extending RootConnector</td>
</tr>
-
+<tr>
+ <td>click</td>
+ <td>vaadin=runcomvaadintestsextensionsBasicExtensionTest::/VVerticalLayout[0]/VVerticalLayout[0]/VButton[0]/domChild[0]/domChild[0]</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertText</td>
+ <td>//div[1]</td>
+ <td>BasicExtensionTestConnector removed for RootConnector</td>
+</tr>
</tbody></table>
</body>
</html>
diff --git a/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java
index 02bdadca34..e9505589a5 100644
--- a/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java
+++ b/tests/testbench/com/vaadin/tests/extensions/BasicExtensionTest.java
@@ -7,6 +7,9 @@ package com.vaadin.tests.extensions;
import com.vaadin.annotations.Widgetset;
import com.vaadin.terminal.WrappedRequest;
import com.vaadin.tests.components.AbstractTestRoot;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Label;
@Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet")
@@ -17,8 +20,15 @@ public class BasicExtensionTest extends AbstractTestRoot {
Label label = new Label();
addComponent(label);
- new BasicExtension().extend(this);
+ final BasicExtension rootExtension = new BasicExtension();
+ rootExtension.extend(this);
new BasicExtension().extend(label);
+ addComponent(new Button("Remove root extension", new ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ rootExtension.removeFromTarget();
+ }
+ }));
}
@Override
diff --git a/tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java b/tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java
index db3e097a6e..c151e6e90b 100644
--- a/tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java
+++ b/tests/testbench/com/vaadin/tests/widgetset/client/BasicExtensionTestConnector.java
@@ -14,9 +14,16 @@ import com.vaadin.tests.extensions.BasicExtension;
@Connect(BasicExtension.class)
public class BasicExtensionTestConnector extends AbstractExtensionConnector {
+ private ServerConnector target;
+
@Override
protected void extend(ServerConnector target) {
- String message = Util.getSimpleName(this) + " extending "
+ this.target = target;
+ appendMessage(" extending ");
+ }
+
+ private void appendMessage(String action) {
+ String message = Util.getSimpleName(this) + action
+ Util.getSimpleName(target);
DivElement element = Document.get().createDivElement();
@@ -24,4 +31,9 @@ public class BasicExtensionTestConnector extends AbstractExtensionConnector {
Document.get().getBody().insertFirst(element);
}
+
+ @Override
+ public void onUnregister() {
+ appendMessage(" removed for ");
+ }
}