diff options
author | Henri Sara <hesara@vaadin.com> | 2012-08-08 13:22:54 +0300 |
---|---|---|
committer | Henri Sara <hesara@vaadin.com> | 2012-08-08 14:29:48 +0300 |
commit | f9d44e50e7c05723112a1a704583de3d2ee9e72c (patch) | |
tree | 453124cf5423bdb2e0e1eba408536af19fb91d66 /tests | |
parent | 0a5ef5d891672ddb2b9b4aee1ef195870356520d (diff) | |
download | vaadin-framework-f9d44e50e7c05723112a1a704583de3d2ee9e72c.tar.gz vaadin-framework-f9d44e50e7c05723112a1a704583de3d2ee9e72c.zip |
Add SASS source code, unit tests and test resources to project (#9223)
Diffstat (limited to 'tests')
60 files changed, 7879 insertions, 0 deletions
diff --git a/tests/sass/resources/basic/comments.css b/tests/sass/resources/basic/comments.css new file mode 100644 index 0000000000..96d6b312c8 --- /dev/null +++ b/tests/sass/resources/basic/comments.css @@ -0,0 +1,9 @@ +.v-button:focus { + background-image: url(img/left-focus.png);/** sprite-ref: buttons */ + outline: none; +} + +.v-button:focus .v-button-wrap { + background-image: url(img/right-focus.png);/** sprite-ref: buttons; sprite-alignment: right */ + outline: none; +}
\ No newline at end of file diff --git a/tests/sass/resources/basic/empty_block.css b/tests/sass/resources/basic/empty_block.css new file mode 100644 index 0000000000..31c0b47032 --- /dev/null +++ b/tests/sass/resources/basic/empty_block.css @@ -0,0 +1,2 @@ +.v-panel-deco { +}
\ No newline at end of file diff --git a/tests/sass/resources/basic/media.css b/tests/sass/resources/basic/media.css new file mode 100644 index 0000000000..f1188835ba --- /dev/null +++ b/tests/sass/resources/basic/media.css @@ -0,0 +1,27 @@ +.v-view { + height: 100%; + width: 100%; + overflow: auto; + outline: none; + margin-top: -1px; + border-top: 1px solid transparent; + position: relative; +} + +@media print { + .v-generated-body { + height: auto; + min-height: 20cm; + overflow: visible; + } + .v-app { + height: auto; + min-height: 20cm; + } + .v-view { + overflow: visible; + } + .v-gridlayout { + overflow: visible !important; + } +}
\ No newline at end of file diff --git a/tests/sass/resources/basic/properties.css b/tests/sass/resources/basic/properties.css new file mode 100644 index 0000000000..bdc17af233 --- /dev/null +++ b/tests/sass/resources/basic/properties.css @@ -0,0 +1,72 @@ +.all-the-properties { + font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; ; + position: absolute;; + overflow: hidden; + outline: none; + text-align: left; + zoom: 1; + white-space: nowrap; + background: #123456; + border-bottom: 1px solid #ffffff; + filter: alpha(opacity = 30); + cursor: pointer; + overflow: auto; + width: 100%; + display: inline-block; +} + +.missing-semicolon-on-last-row { + color: red; + background-color: blue +} + +.lexical-value-test { + margin: none; + margin: 0px; + margin: 0; + margin: 0.5px; + margin: 2px; + margin: -0.5px; + margin: -2px; + margin: 10px 20px; + margin: -10px 20px; + margin: 20px -10px -20px 40px; + margin-right: -0.5px; +} + +.background-positioning { + background-position: 0 0; + background-position: left top; + background-position: left 40px; + background-position: 50px left; + background-position: right -286px; +} + +.user-select-rules { + user-select: none; + -ie-user-select: none; +} + +.box-sizing-rules { + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.user-select-and-box-sizing-combined { + -khtml-user-select: none; + -moz-user-select: none; + -ie-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +@media print { + .v-generated-body { + height: auto; + min-height: 20cm; + overflow: visible; + } +} diff --git a/tests/sass/resources/basic/reindeer.css b/tests/sass/resources/basic/reindeer.css new file mode 100644 index 0000000000..e32d917b49 --- /dev/null +++ b/tests/sass/resources/basic/reindeer.css @@ -0,0 +1,5905 @@ +.v-theme-version:after { + content: "6_8_0_dev-20120306"; +} + +.v-theme-version-6_8_0_dev-20120306 { + display: none; +} + +.v-absolutelayout-wrapper { + position: absolute; + overflow: hidden; +} + +.v-accordion { + position: relative; + outline: none; + overflow: hidden; + text-align: left; +} + +.v-accordion-item { + position: relative; + zoom: 1; +} + +.v-accordion-item-caption { + overflow: hidden; + white-space: nowrap; + background: #eeeeee; + border-bottom: 1px solid #dddddd; +} + +.v-accordion-item-caption .v-caption { + cursor: pointer; +} + +.v-accordion-item-open .v-accordion-item-caption .v-caption { + cursor: default; +} + +.v-accordion-item-content { + position: absolute; + overflow: auto; + width: 100%; +} + +.v-button { + display: inline-block; + zoom: 1; + text-align: center; + text-decoration: none; + border: 2px outset #dddddd; + background: #eeeeee; + cursor: pointer; + white-space: nowrap; + margin: 0; + padding: 0.2em 1em; + color: inherit; + font: inherit; + line-height: normal; + -khtml-user-select: none; + -moz-user-select: none; + -ie-user-select: none; + user-select: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} + +.v-button.v-disabled { + cursor: default; +} + +.v-ie6 .v-button { + display: inline; +} + +.v-ie7 .v-button { + display: inline; +} + +.v-button-wrap, .v-button-caption { + vertical-align: middle; + white-space: nowrap; + font: inherit; + color: inherit; + line-height: normal; +} + +.v-button .v-icon, .v-nativebutton .v-icon { + vertical-align: middle; + margin-right: 3px; + border: none; +} + +.v-button .v-errorindicator, .v-nativebutton .v-errorindicator { + display: inline-block; + zoom: 1; + vertical-align: middle; + float: none; +} + +.v-button-link, .v-nativebutton-link { + border: none; + text-align: left; + background: transparent; + padding: 0; + color: inherit; + -khtml-user-select: text; + -moz-user-select: text; + -ie-user-select: text; + user-select: text; +} + +.v-sa .v-button-link:focus { + outline-offset: -3px; +} + +.v-button-link .v-button-caption, .v-nativebutton-link .v-nativebutton-caption { + text-decoration: underline; + color: inherit; + text-align: left; +} + +.v-nativebutton { + text-align: center; + cursor: pointer; + white-space: nowrap; + margin: 0; + color: inherit; + font: inherit; + line-height: normal; +} + +.v-nativebutton .v-nativebutton-caption { + vertical-align: middle; + white-space: nowrap; + font: inherit; + color: inherit; +} + +.v-nativebutton .v-icon { + vertical-align: middle; + margin-right: 3px; +} + +.v-nativebutton .v-errorindicator { + display: inline-block; + zoom: 1; + float: none; +} + +.v-ie6 .v-nativebutton { + width: 1px; +} + +.v-ie .v-nativebutton { + overflow: visible; + padding-left: 1em; + padding-right: 1em; +} + +.v-ie .v-nativebutton-link { + padding: 0; +} + +.v-checkbox { + display: block; +} + +.v-checkbox, .v-checkbox label, .v-checkbox input, .v-checkbox .v-icon { + vertical-align: middle; + white-space: nowrap; +} + +.v-ie6 .v-checkbox, .v-ie7 .v-checkbox { + vertical-align: baseline; +} + +.v-checkbox .v-icon { + margin: 0 2px; +} + +.v-checkbox .v-errorindicator { + float: none; + display: inline; + display: inline-block; + zoom: 1; +} + +.v-captionwrapper { + text-align: left; +} + +.v-caption { + overflow: hidden; + white-space: nowrap; +} + +.v-errorindicator { + float: left; +} + +.v-caption .v-icon { + float: left; + padding-right: 2px; + vertical-align: middle; +} + +.v-caption .v-captiontext { + float: left; + overflow: hidden; + vertical-align: middle; +} + +.v-caption .v-required-field-indicator { + float: left; +} + +.v-caption-clearelem { + clear: both; + width: 0; + height: 0; + overflow: hidden; +} + +.v-ie6 .v-errorindicator, .v-ie6 .v-icon, .v-ie6 .v-captiontext, .v-ie6 .v-required-field-indicator { + display: inline; +} + +.v-ie9 .v-gridlayout-margin > div > div > .v-caption, .v-ie9 .v-verticallayout > div > div > .v-caption, .v-ie9 .v-horizontallayout > div > div > .v-caption { + margin-right: -0.5px; +} + +.v-generated-body { + width: 100%; + height: 100%; + border: 0; + margin: 0; + overflow: hidden; +} + +.v-app { + height: 100%; +} + +.v-app, .v-window, .v-popupview-popup, .v-label, .v-caption { + cursor: default; +} + +div.v-app-loading { + background-image: url(../base/common/img/loading-indicator.gif); + background-repeat: no-repeat; + background-position: 50%; + width: 100%; + height: 100%; +} + +.v-view { + height: 100%; + width: 100%; + overflow: auto; + outline: none; + margin-top: -1px; + border-top: 1px solid transparent; + position: relative; +} + +@media print { + .v-generated-body { + height: auto; + min-height: 20cm; + overflow: visible; + } + .v-app { + height: auto; + min-height: 20cm; + } + .v-view { + overflow: visible; + } + .v-gridlayout { + overflow: visible !important; + } +} + +.v-view:active, .v-view:focus { + outline: none; +} + +.v-app select, .v-window select { + margin: 0; +} + +.v-disabled { + opacity: 0.3; + filter: alpha(opacity = 30); + cursor: default; +} + +.v-disabled * { + cursor: default; +} + +.v-disabled .v-disabled { + opacity: 1; +} + +.v-required-field-indicator { + padding-left: 2px; + color: red; +} + +.v-form fieldset { + border: none; + padding: 0; + margin: 0; +} + +.v-tooltip { + cursor: default; + background: #ffffff; +} + +.v-tooltip-text { + overflow: auto; +} + +.v-tooltip .v-errormessage { + overflow: auto; +} + +.v-contextmenu { + background: #ffffff; +} + +.v-contextmenu .gwt-MenuItem { + cursor: pointer; + vertical-align: middle; + padding: 0; + border: 0; + margin: 0; +} + +.v-contextmenu .gwt-MenuItem div { + cursor: pointer; + vertical-align: middle; + white-space: nowrap; +} + +.v-contextmenu .gwt-MenuItem-selected div { + background: #aaaaaa; + color: #ffffff; +} + +.v-contextmenu table { + border-collapse: collapse; + margin: 0; + padding: 0; +} + +.v-contextmenu .gwt-MenuItem img { + margin-right: 1em; + vertical-align: middle; +} + +.v-label pre { + margin: 0; +} + +.v-label-undef-w { + white-space: nowrap; +} + +.v-label h1, .v-label h2, .v-label h3, .v-label h4, .v-label h5, .v-label h6 { + line-height: normal; +} + +.v-loading-indicator, .v-loading-indicator-delay, .v-loading-indicator-wait { + position: absolute; + top: 0; + right: 0; + z-index: 30000; + width: 31px; + height: 31px; + background: transparent url(../base/common/img/loading-indicator.gif); + margin-right: 5px; + margin-top: 5px; +} + +.v-loading-indicator-delay { + background-image: url(../base/common/img/loading-indicator-delay.gif); +} + +.v-loading-indicator-wait { + background-image: url(../base/common/img/loading-indicator-wait.gif); +} + +.v-debug-console { + background: #ffffff; + opacity: 0.9; + border: 1px solid #000000; + font-family: sans-serif; +} + +.v-debug-console-caption { + background: #000000; + border-bottom: 1px solid grey; + color: white; + font-weight: bold; +} + +.v-debug-console-content { + font-size: x-small; + overflow: auto; + white-space: pre; +} + +.v-debug-console-content input { + font-size: xx-small; +} + +.v-app .invalidlayout, .v-app .invalidlayout * { + background: #ff9999 !important; +} + +.v-app input[type="text"], .v-app input[type="password"], .v-app input[type="reset"], .v-app select, .v-app textarea, .v-window input[type="text"], .v-window input[type="password"], .v-window input[type="reset"], .v-window select, .v-window textarea { + padding: 2px; +} + +.v-drag-element { + z-index: 60000; + position: absolute; + opacity: 0.5; + filter: alpha(opacity = 50); + cursor: default; +} + +.v-csslayout { + overflow: hidden; +} + +.v-csslayout-margin-top { + padding-top: 12px; +} + +.v-csslayout-margin-bottom { + padding-bottom: 12px; +} + +.v-csslayout-margin-left { + padding-left: 12px; +} + +.v-csslayout-margin-right { + padding-right: 12px; +} + +.v-customcomponent { + overflow: hidden; +} + +.v-customlayout { + overflow: hidden; +} + +.v-datefield { + white-space: nowrap; + float: left; +} + +.v-datefield-textfield { + vertical-align: top; +} + +.v-datefield-button { + cursor: pointer; +} + +.v-datefield-prompt .v-datefield-textfield { + color: #999999; + font-style: italic; +} + +.v-datefield .v-datefield-button-readonly { + display: none; +} + +.v-datefield-calendarpanel table { + width: 100%; +} + +.v-datefield-calendarpanel td { + padding: 0; + margin: 0; +} + +.v-datefield-calendarpanel:focus { + outline: none; +} + +.v-datefield-calendarpanel-header td { + text-align: center; +} + +.v-datefield-calendarpanel-month { + text-align: center; + white-space: nowrap; +} + +.v-datefield-calendarpanel-weeknumber { + color: #999999; + border-right: 1px solid #dddddd; + font-size: 0.9em; +} + +.v-datefield-calendarpanel-day, .v-datefield-calendarpanel-day-today { + cursor: pointer; +} + +.v-datefield-calendarpanel-day-today { + border: 1px solid #dddddd; +} + +.v-disabled .v-datefield-calendarpanel-day, .v-disabled .v-datefield-calendarpanel-day-today { + cursor: default; +} + +.v-datefield-calendarpanel-day-disabled { + cursor: default; + opacity: 0.5; +} + +.v-datefield-calendarpanel-day-selected { + cursor: default; + background: #333333; + color: #ffffff; +} + +.v-datefield-calendarpanel-day-focused { + outline: 1px dotted black; +} + +.v-datefield-calendarpanel-day-offmonth { + color: #666666; +} + +.v-ie6 .v-datefield-calendarpanel-day, .v-ie7 .v-datefield-calendarpanel-day { + margin: 1px; +} + +.v-ie6 .v-datefield-calendarpanel-day-focused, .v-ie7 .v-datefield-calendarpanel-day-focused { + border: 1px dotted black; + margin: 0px; +} + +.v-datefield-time { + white-space: nowrap; +} + +.v-datefield-time .v-label { + display: inline; +} + +.v-datefield-popup { + background: #ffffff; +} + +.v-ie6 .v-disabled .v-datefield-button, .v-ie6 .v-disabled .v-datefield-textfield, .v-ie7 .v-disabled .v-datefield-button, .v-ie7 .v-disabled .v-datefield-textfield { + filter: alpha(opacity = 30); +} + +.v-ddwrapper { + padding: 2px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + position: relative; +} + +[draggable=true] { + -khtml-user-drag: element; + -webkit-user-drag: element; + -khtml-user-select: none; + -webkit-user-select: none; +} + +.v-ie .v-ddwrapper a.drag-start { + display: block; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + opacity: 0; + background-color: cyan; + filter: alpha(opacity = 0); +} + +.v-ddwrapper-over { + border: 2px solid #1d9dff; + background-color: #bcdcff; + padding: 0; +} + +.v-ddwrapper-over { + background-color: rgba(169, 209, 255, 0.6); +} + +.no-box-drag-hints .v-ddwrapper-over { + border: none; + background-color: transparent; + padding: 2px; +} + +.v-app .v-ddwrapper-over-top, .v-window .v-ddwrapper-over-top, .v-popupview-popup .v-ddwrapper-over-top { + border: none; + border-top: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-top: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-app .v-ddwrapper-over-bottom, .v-window .v-ddwrapper-over-bottom, .v-popupview-popup .v-ddwrapper-over-bottom { + border: none; + border-bottom: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-bottom: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-app .v-ddwrapper-over-left, .v-window .v-ddwrapper-over-left, .v-popupview-popup .v-ddwrapper-over-left { + border: none; + border-left: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-left: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-app .v-ddwrapper-over-right, .v-window .v-ddwrapper-over-right, .v-popupview-popup .v-ddwrapper-over-right { + border: none; + border-right: 2px solid #1d9dff; + background-color: transparent; + padding: 2px; + padding-right: 0; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.v-ddwrapper, .v-ddwrapper-over, .v-app .v-ddwrapper-over-top, .v-window .v-ddwrapper-over-top, .v-popupview-popup .v-ddwrapper-over-top, .v-app .v-ddwrapper-over-bottom, .v-window .v-ddwrapper-over-bottom, .v-popupview-popup .v-ddwrapper-over-bottom, .v-app .v-ddwrapper-over-left, .v-window .v-ddwrapper-over-left, .v-popupview-popup .v-ddwrapper-over-left, .v-app .v-ddwrapper-over-right, .v-window .v-ddwrapper-over-right, .v-popupview-popup .v-ddwrapper-over-right { + border-color: rgba(0, 109, 232, 0.6); +} + +.v-ddwrapper-over-top:before, .v-ddwrapper-over-bottom:after, .v-ddwrapper-over-left:before, .v-ddwrapper-over-right:before { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + margin-left: -2px; + background: transparent url(../base/common/img/drag-slot-dot.png) no-repeat; +} + +.v-ddwrapper-over-bottom:after { + margin-top: -2px; +} + +.v-ddwrapper-over-left:before, .v-ddwrapper-over-right:before { + background-position: 0 -6px; + margin-top: -2px; + margin-left: -4px; +} + +.v-ddwrapper-over-right:before { + position: relative; + margin-bottom: -4px; + margin-right: -4px; + margin-left: 0; + width: auto; + background-position: 100% -6px; +} + +.no-horizontal-drag-hints .v-ddwrapper-over-left { + padding-left: 2px; + border-left: none; +} + +.no-horizontal-drag-hints .v-ddwrapper-over-right { + padding-right: 2px; + border-right: none; +} + +.no-vertical-drag-hints .v-ddwrapper-over-top { + padding-top: 2px; + border-top: none; +} + +.no-vertical-drag-hints .v-ddwrapper-over-bottom { + padding-bottom: 2px; + border-bottom: none; +} + +.no-horizontal-drag-hints .v-ddwrapper-over-left:before, .no-horizontal-drag-hints .v-ddwrapper-over-right:before, .no-vertical-drag-hints .v-ddwrapper-over-top:before, .no-vertical-drag-hints .v-ddwrapper-over-bottom:after { + display: none; +} + +.v-table .v-embedded-image { + display: inline-block; +} + +.v-formlayout-cell .v-errorindicator { + display: block; +} + +.v-formlayout-error-indicator { + width: 12px; +} + +.v-formlayout-captioncell { + text-align: right; + white-space: nowrap; +} + +.v-formlayout-captioncell .v-caption { + overflow: visible; +} + +.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { + padding-top: 6px; +} + +.v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-captioncell, .v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-contentcell, .v-formlayout-spacing .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 0; +} + +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 12px; +} + +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { + padding-bottom: 12px; +} + +.v-formlayout-margin-left .v-formlayout-captioncell { + padding-left: 12px; +} + +.v-formlayout-margin-right .v-formlayout-contentcell { + padding-right: 12px; +} + +.v-formlayout-captioncell .v-caption .v-required-field-indicator { + float: none; +} + +.v-gridlayout-margin-top { + padding-top: 12px; +} + +.v-gridlayout-margin-bottom { + padding-bottom: 12px; +} + +.v-gridlayout-margin-left { + padding-left: 12px; +} + +.v-gridlayout-margin-right { + padding-right: 12px; +} + +.v-gridlayout-spacing-on { + padding-left: 6px; + padding-top: 6px; + overflow: hidden; +} + +.v-gridlayout-spacing, .v-gridlayout-spacing-off { + padding-left: 0; + padding-top: 0; +} + +.v-gridlayout-spacing-off { + overflow: hidden; +} + +.v-ie6 .v-gridlayout, .v-ie7 .v-gridlayout { + overflow: hidden; +} + +.v-link { + white-space: nowrap; +} + +.v-link a { + vertical-align: middle; + text-decoration: none; +} + +.v-link span { + text-decoration: underline; + vertical-align: middle; +} + +.v-disabled a { + cursor: default; +} + +.v-link img { + vertical-align: middle; + border: none; +} + +.v-loginform { + height: 140px; + width: 200px; +} + +.v-app-loginpage .v-button, .v-app-loginpage .v-button { + float: left; +} + +.v-menubar { + float: left; + white-space: nowrap; +} + +.v-menubar .v-menubar-menuitem { + cursor: default; + vertical-align: middle; + white-space: nowrap; + display: inline; + display: inline-block; + zoom: 1; +} + +.v-menubar .v-menubar-menuitem-caption .v-icon { + vertical-align: middle; + white-space: nowrap; +} + +.v-menubar-submenu { + background: #ffffff; +} + +.v-menubar-menuitem-selected { + background: #333333; + color: #ffffff; +} + +.v-menubar-submenu .v-menubar-menuitem { + cursor: default; + display: block; + position: relative; + padding-right: 1.5em; +} + +.v-menubar-submenu .v-menubar-menuitem-caption { + display: block; +} + +.v-menubar-submenu .v-menubar-menuitem *, .v-menubar-submenu .v-menubar-menuitem-caption * { + white-space: nowrap; +} + +.v-menubar-submenu-indicator { + display: none; + font-family: arial, helvetica, sans-serif; +} + +.v-menubar-submenu .v-menubar-submenu-indicator { + display: block; + position: absolute; + right: 0; + width: 1em; + height: 1em; + font-size: 0.9em; +} + +.v-menubar-menuitem-disabled, .v-menubar span.v-menubar-menuitem-disabled:hover, .v-menubar span.v-menubar-menuitem-disabled:focus, .v-menubar span.v-menubar-menuitem-disabled:active { + color: #999999; +} + +.v-menubar-more-menuitem { + font-family: arial, helvetica, sans-serif; +} + +.v-menubar-separator { + overflow: hidden; +} + +.v-menubar-separator span { + display: block; + text-indent: -9999px; + font-size: 1px; + line-height: 1px; + border-top: 1px solid #dddddd; + margin: 3px 0 2px; + overflow: hidden; +} + +.v-menubar .v-icon, .v-menubar-submenu .v-icon { + margin-right: 3px; +} + +.v-menubar:focus, .v-menubar-popup:focus, .v-menubar-popup .popupContent:focus, .v-menubar-popup .popupContent .v-menubar-submenu:focus { + outline: none; +} + +.v-menubar-submenu-check-column .v-menubar-menuitem { + padding-left: 6px; +} + +.v-menubar-submenu-check-column .v-menubar-menuitem-caption { + padding-left: 18px; +} + +.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { + background: transparent url(../base/menubar/img/check.gif) no-repeat left; +} + +.v-Notification { + background: #999999; + color: #ffffff; + cursor: pointer; + overflow: hidden; + padding: 1em; + max-width: 85%; +} + +.v-Notification h1, .v-Notification p, .v-Notification-error h1, .v-Notification-error p, .v-Notification-warning h1, .v-Notification-warning p { + display: inline; + margin: 0 0.5em 0 0; +} + +.v-Notification-warning { + background: orange; +} + +.v-Notification-error { + background: red; +} + +.v-Notification-tray h1 { + display: block; +} + +.v-Notification-tray p { + display: block; +} + +.v-Notification-system { + background-color: red; + opacity: 0.7; + filter: alpha(opacity = 70); +} + +.v-Notification-system h1 { + display: block; + margin: 0; +} + +.v-orderedlayout-margin-top, .v-horizontallayout-margin-top, .v-verticallayout-margin-top { + padding-top: 12px; +} + +.v-orderedlayout-margin-right, .v-horizontallayout-margin-right, .v-verticallayout-margin-right { + padding-right: 12px; +} + +.v-orderedlayout-margin-bottom, .v-horizontallayout-margin-bottom, .v-verticallayout-margin-bottom { + padding-bottom: 12px; +} + +.v-orderedlayout-margin-left, .v-horizontallayout-margin-left, .v-verticallayout-margin-left { + padding-left: 12px; +} + +.v-orderedlayout-spacing-on, .v-horizontallayout-spacing-on, .v-verticallayout-spacing-on { + padding-top: 6px; + padding-left: 6px; +} + +.v-orderedlayout-spacing-off, .v-horizontallayout-spacing-off, .v-verticallayout-spacing-off { + padding-top: 0; + padding-left: 0; +} + +.v-ie6 .v-orderedlayout, .v-ie6 .v-horizontallayout, .v-ie6 .v-verticallayout, .v-ie7 .v-orderedlayout, .v-ie7 .v-horizontallayout, .v-ie7 .v-verticallayout { + overflow: hidden; +} + +.v-panel, .v-panel-caption, .v-panel-content, .v-panel-deco, .v-panel-light, .v-panel-caption-light, .v-panel-content-light, .v-panel-deco-light { + outline: none; + text-align: left; +} + +.v-panel-caption .v-errorindicator { + float: none; + display: inline; +} + +.v-panel-caption .v-icon { + display: inline; + vertical-align: middle; +} + +.v-panel-caption span { + vertical-align: middle; +} + +.v-panel-caption { + white-space: nowrap; + overflow: hidden; + font-weight: bold; +} + +.v-panel-nocaption { + overflow: hidden; +} + +.v-panel-content { + overflow: auto; +} + +.v-panel-deco { +} + +.v-popupview { + cursor: pointer; + text-decoration: underline; + white-space: nowrap; +} + +.v-popupview-popup { + overflow: auto; +} + +.v-popupview-loading { + width: 30px; + height: 30px; + background: transparent url(../base/common/img/ajax-loader-medium.gif) no-repeat 50%; +} + +.v-progressindicator { + overflow: hidden; + width: 150px; +} + +.v-progressindicator-wrapper { + overflow: hidden; + height: 7px; + border: 1px solid #dddddd; +} + +.v-progressindicator-indicator { + height: 7px; + overflow: hidden; + background: #dddddd; +} + +div.v-progressindicator-indeterminate { + height: 20px; + width: 20px; + overflow: hidden; + background: #ffffff url(../base/common/img/ajax-loader-medium.gif) no-repeat 50%; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; +} + +.v-progressindicator-indeterminate .v-progressindicator-wrapper, .v-progressindicator-indeterminate .v-progressindicator-indicator, .v-progressindicator-indeterminate-disabled .v-progressindicator-wrapper, .v-progressindicator-indeterminate-disabled .v-progressindicator-indicator { + display: none; +} + +div.v-progressindicator-indeterminate-disabled { + height: 20px; + width: 20px; + overflow: hidden; + background: transparent; +} + +.v-select { + text-align: left; +} + +.v-select-optiongroup .v-select-option { + display: block; + white-space: nowrap; +} + +.v-select-optiongroup .v-icon { + vertical-align: middle; + white-space: nowrap; + margin: 0 2px; +} + +.v-ie .v-select-optiongroup .v-select-option { + zoom: 1; +} + +.v-select-select { + display: block; +} + +.v-select-twincol { + white-space: nowrap; +} + +.v-select-twincol-options { + float: left; +} + +.v-select-twincol-caption-left { + float: left; + overflow: hidden; + text-overflow: ellipsis; +} + +.v-select-twincol-selections { + font-weight: bold; +} + +.v-select-twincol-caption-right { + float: right; + overflow: hidden; + text-overflow: ellipsis; +} + +.v-select-twincol-buttons { + float: left; + text-align: center; +} + +.v-select-twincol-buttons .v-select-twincol-deco { + clear: both; +} + +.v-select-twincol .v-textfield { + display: block; + float: left; + clear: left; +} + +.v-select-twincol .v-button { + float: left; +} + +.v-select-twincol-buttons .v-button { + float: none; +} + +.v-filterselect { + white-space: nowrap; + text-align: left; +} + +.v-filterselect .v-icon { + float: left; +} + +.v-app .v-filterselect-input, .v-window .v-filterselect-input, .v-popupview-popup .v-filterselect-input { + float: left; + -webkit-border-radius: 0px; +} + +.v-filterselect-prompt .v-filterselect-input { + color: #999999; + font-style: italic; +} + +.v-filterselect-button { + float: right; + cursor: pointer; + width: 1em; + height: 1em; + background: transparent url(../base/common/img/sprites.png) no-repeat -5px -8px; +} + +.v-filterselect.v-readonly .v-filterselect-button { + display: none; +} + +.v-filterselect.v-readonly, .v-filterselect.v-readonly .v-filterselect-input { + background: transparent; +} + +.v-filterselect-suggestpopup { + background: #ffffff; + border: 1px solid #eeeeee; +} + +.v-filterselect-suggestmenu table { + border-collapse: collapse; + border: none; +} + +.v-filterselect-suggestmenu .gwt-MenuItem { + white-space: nowrap; +} + +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + margin-right: 3px; + vertical-align: middle; +} + +.v-filterselect-suggestmenu .gwt-MenuItem span { + vertical-align: middle; +} + +.v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: #333333; + color: #ffffff; +} + +.v-filterselect-nextpage, .v-filterselect-nextpage-off, .v-filterselect-prevpage-off, .v-filterselect-prevpage { + width: 100%; + background: #aaaaaa; + text-align: center; + overflow: hidden; + cursor: pointer; +} + +.v-filterselect-nextpage-off, .v-filterselect-prevpage-off { + color: #666666; + opacity: 0.5; + filter: alpha(opacity = 50); + cursor: default; +} + +.v-filterselect-nextpage-off span, .v-filterselect-prevpage-off span { + cursor: default; +} + +.v-filterselect-status { + white-space: nowrap; + text-align: center; +} + +.v-filterselect-no-input .v-filterselect-input { + cursor: default; +} + +.v-shadow { + position: absolute; +} + +.v-shadow .top-left { + position: absolute; + overflow: hidden; + top: -3px; + left: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/top-left.png); +} + +.v-shadow .top { + position: absolute; + overflow: hidden; + top: -3px; + left: 5px; + height: 10px; + right: 5px; + background: transparent url(../base/shadow/img/top.png); +} + +.v-shadow .top-right { + position: absolute; + overflow: hidden; + top: -3px; + right: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/top-right.png); +} + +.v-shadow .left { + position: absolute; + overflow: hidden; + top: 7px; + left: -5px; + width: 10px; + bottom: 3px; + background: transparent url(../base/shadow/img/left.png); +} + +.v-shadow .center { + position: absolute; + overflow: hidden; + top: 7px; + left: 5px; + bottom: 3px; + right: 5px; + background: transparent url(../base/shadow/img/center.png); +} + +.v-shadow .right { + position: absolute; + overflow: hidden; + top: 7px; + right: -5px; + width: 10px; + bottom: 3px; + background: transparent url(../base/shadow/img/right.png); +} + +.v-shadow .bottom-left { + position: absolute; + overflow: hidden; + bottom: -7px; + left: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/bottom-left.png); +} + +.v-shadow .bottom { + position: absolute; + overflow: hidden; + bottom: -7px; + left: 5px; + right: 5px; + height: 10px; + background: transparent url(../base/shadow/img/bottom.png); +} + +.v-shadow .bottom-right { + position: absolute; + overflow: hidden; + bottom: -7px; + right: -5px; + width: 10px; + height: 10px; + background: transparent url(../base/shadow/img/bottom-right.png); +} + +.v-ie6 .v-shadow * { + display: none; +} + +.v-ie6 .v-shadow { + background: #000000; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2 ) alpha(opacity = 20); + margin-top: -2px; + margin-left: -2px; +} + +.v-slider { + margin: 5px 0; +} + +.v-slider-base { + height: 2px; + border-top: 1px solid #dddddd; + background: #eeeeee; + border-left: 1px solid #dddddd; + border-right: 1px solid #eeeeee; +} + +.v-slider-handle { + background: #aaaaaa; + width: 12px; + height: 12px; + margin-top: -5px; + font-size: 0; +} + +.v-slider-vertical { + width: 2px; + height: auto; + margin: 0 5px; + border: none; + border-left: 1px solid #cccfd0; + border-right: 1px solid #cccfd0; +} + +.v-slider-vertical .v-slider-base { + width: 2px; + border-bottom: 1px solid #eeeeee; + border-right: none; +} + +.v-slider-vertical .v-slider-handle { + width: 12px; + height: 12px; + font-size: 0; + margin-left: -5px; +} + +.v-slider-feedback { + padding: 2px 5px; + background: #444444; + color: #ffffff; + font-size: 11px; + line-height: 13px; + font-weight: bold; + font-family: Arial, Helvetica, sans-serif; + border-radius: 4px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + margin: -2px 0 0 2px; + text-shadow: 0 1px 0 #000000; +} + +.v-ie6 .v-slider, .v-ie6 .v-slider-vertical { + margin: 0; +} + +.v-ie6 .v-slider .v-slider-handle { + margin: -1px 0; +} + +.v-ie6 .v-slider-vertical .v-slider-handle { + margin: 0 -1px; +} + +.v-splitpanel-horizontal, .v-splitpanel-vertical { + overflow: hidden; +} + +.v-splitpanel-hsplitter { + width: 6px; + font-size: 1px; +} + +.v-splitpanel-hsplitter div { + width: 6px; + font-size: 1px; + position: absolute; + top: 0; + bottom: 0; + background: #dddddd; + cursor: e-resize; + cursor: col-resize; +} + +.v-disabled .v-splitpanel-hsplitter div { + cursor: default; +} + +.v-splitpanel-vsplitter { + height: 6px; + font-size: 1px; +} + +.v-splitpanel-vsplitter div { + height: 6px; + font-size: 1px; + background: #dddddd; + cursor: s-resize; + cursor: row-resize; +} + +.v-disabled .v-splitpanel-vsplitter div { + cursor: default; +} + +.v-ie6 .v-splitpanel-hsplitter div { + height: 99%; +} + +.v-ie6 .v-splitpanel-first-container, .v-ie6 .v-splitpanel-second-container, .v-ie7 .v-splitpanel-first-container, .v-ie7 .v-splitpanel-second-container { + position: relative; +} + +.v-table { + overflow: hidden; + text-align: left; +} + +.v-ie7 .v-table { + overflow: visible; +} + +.v-table-header-wrap { + overflow: hidden; + border: 1px solid #aaaaaa; + border-bottom: none; + background: #efefef; +} + +.v-table-header table, .v-table-table { + border-spacing: 0; + border-collapse: separate; + margin: 0; + padding: 0; + border: 0; +} + +.v-table-header td { + padding: 0; +} + +.v-table-header-cell, .v-table-header-cell-asc, .v-table-header-cell-desc { + cursor: pointer; +} + +.v-table.v-disabled .v-table-header-cell, .v-table.v-disabled .v-table-header-cell-asc, .v-table.v-disabled .v-table-header-cell-desc { + cursor: default; +} + +.v-table-footer-wrap { + overflow: hidden; + border: 1px solid #aaaaaa; + border-top: none; + background: #efefef; +} + +.v-table-footer table { + border-spacing: 0; + border-collapse: collapse; + margin: 0; + padding: 0; + border: 0; +} + +.v-table-footer td { + padding: 0; + border-right: 1px solid #aaaaaa; +} + +.v-table-footer-cell { + cursor: pointer; +} + +.v-table-footer-container { + float: right; + padding-right: 6px; + overflow: hidden; + white-space: nowrap; +} + +.v-table-resizer { + display: block; + height: 1.2em; + float: right; + background: #aaaaaa; + cursor: e-resize; + cursor: col-resize; + width: 1px; + overflow: hidden; +} + +.v-table.v-disabled .v-table-resizer { + cursor: default; +} + +.v-table-caption-container { + overflow: hidden; + white-space: nowrap; + margin-left: 6px; +} + +.v-ie7 .v-table-caption-container-align-right { + margin-left: 0px; + padding-left: 6px; +} + +.v-table-caption-container-align-right { + float: right; +} + +.v-table-sort-indicator { + width: 0px; + height: 1.2em; + float: right; +} + +.v-table-header-cell-asc .v-table-sort-indicator, .v-table-header-cell-desc .v-table-sort-indicator { + width: 16px; + height: 1.2em; + float: right; +} + +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent url(../base/common/img/sprites.png) no-repeat right 6px; +} + +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent url(../base/common/img/sprites.png) no-repeat right -10px; +} + +.v-table-caption-container-align-center { + text-align: center; +} + +.v-table-caption-container-align-right { + text-align: right; +} + +.v-table-caption-container .v-icon, .v-table-header-drag .v-icon { + vertical-align: middle; +} + +.v-table-body { + border: 1px solid #aaaaaa; +} + +.v-table-row-spacer { + height: 10px; + overflow: hidden; +} + +.v-table-row, .v-table-row-odd { + background: #ffffff; + border: 0; + margin: 0; + padding: 0; + cursor: pointer; +} + +.v-table-generated-row { + background: #efefef; +} + +.v-table-body-noselection .v-table-row, .v-table-body-noselection .v-table-row-odd { + cursor: default; +} + +.v-table .v-selected { + background: #999999; + color: #ffffff; +} + +.v-table-cell-content { + white-space: nowrap; + overflow: hidden; + padding: 0 6px; + border-right: 1px solid #aaaaaa; +} + +.v-table-cell-wrapper { + white-space: nowrap; + overflow: hidden; +} + +.v-table-cell-wrapper-align-center { + text-align: center; +} + +.v-table-cell-wrapper-align-right { + text-align: right; +} + +.v-table-column-selector { + float: right; + background: transparent url(../base/common/img/sprites.png) no-repeat 4px -37px; + margin: -1.2em 0 0 0; + height: 1.2em; + width: 14px; + position: relative; + cursor: pointer; +} + +.v-table.v-disabled .v-table-column-selector { + cursor: default; +} + +.v-ie6 .v-table-column-selector, .v-ie7 .v-table-column-selector { + position: static; +} + +.v-table-focus-slot-left { + border-left: 2px solid #999999; + float: none; + margin-bottom: -1.2em; + width: auto; + background: transparent; + border-right: 1px solid #aaaaaa; +} + +.v-table-focus-slot-right { + border-right: 2px solid #999999; + margin-left: -2px; +} + +.v-table-header-drag { + position: absolute; + background: #efefef; + border: 1px solid #eeeeee; + opacity: 0.9; + filter: alpha(opacity = 90); + margin-top: 20px; + z-index: 30000; +} + +.v-table-header-drag .v-icon { + vertical-align: middle; +} + +.v-table-scrollposition { + width: 160px; + background: #eeeeee; + border: 1px solid #aaaaaa; +} + +.v-table-scrollposition span { + display: block; + text-align: center; +} + +.v-table-body:focus, .v-table-body-wrapper:focus { + outline: none; +} + +.v-table-body.focused { + border-color: #388ddd; +} + +.v-table-focus .v-table-cell-content { + border-top: 1px dotted #0066bd; + border-bottom: 1px dotted #0066bd; +} + +.v-table-focus .v-table-cell-wrapper { + margin-top: -1px; + margin-bottom: -1px; +} + +.v-on { +} + +.v-off { + color: #dddddd; +} + +.v-table-drag .v-table-body { + border-color: #1d9dff; +} + +.v-table-row-drag-middle .v-table-cell-content { + background-color: #bcdcff; +} + +.v-table-row-drag-top .v-table-cell-content { + border-top: 2px solid #1d9dff; +} + +.v-table-row-drag-top .v-table-cell-wrapper { + margin-top: -2px; +} + +.v-table-row-drag-bottom .v-table-cell-content { + border-bottom: 2px solid #1d9dff; +} + +.v-table-row-drag-bottom .v-table-cell-wrapper { + margin-bottom: -2px; +} + +.v-table-row-drag-top .v-table-cell-content:first-child:before, .v-table-row-drag-bottom .v-table-cell-content:first-child:after { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + margin-left: -6px; + background: transparent url(../base/common/img/drag-slot-dot.png); +} + +.v-ff .v-table-row-drag-bottom .v-table-cell-content:first-child:after, .v-ie .v-table-row-drag-bottom .v-table-cell-content:first-child:after { + margin-top: -2px; +} + +.v-tabsheet, .v-tabsheet-content, .v-tabsheet-deco { + outline: none; + text-align: left; +} + +.v-tabsheet-tabs { + empty-cells: hide; + border-collapse: collapse; + margin: 0; + padding: 0; + border: 0; + width: 100%; + overflow: hidden; +} + +.v-tabsheet-tabitemcell:focus { + outline: none; +} + +.v-tabsheet-tabitemcell, .v-tabsheet-spacertd { + margin: 0; + padding: 0; + vertical-align: bottom; +} + +.v-tabsheet-spacertd { + width: 100%; +} + +.v-tabsheet-spacertd div { + border-left: 1px solid #aaaaaa; + border-bottom: 1px solid #aaaaaa; + height: 1em; + padding: 0.2em 0; +} + +.v-tabsheet-hidetabs .v-tabsheet-tabcontainer { + display: none; +} + +.v-tabsheet-scroller { + white-space: nowrap; + text-align: right; + margin-top: -1em; +} + +.v-ff2 .v-tabsheet-scroller { + position: relative; +} + +.v-disabled .v-tabsheet-scroller { + display: none; +} + +.v-tabsheet-scrollerPrev, .v-tabsheet-scrollerNext, .v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerNext-disabled { + border: 1px solid #aaaaaa; + background: #ffffff; + width: 12px; + height: 1em; + cursor: pointer; +} + +.v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerNext-disabled { + opacity: 0.5; + cursor: default; +} + +.v-tabsheet-tabs .v-caption, .v-tabsheet-tabs .v-caption span { + white-space: nowrap; +} + +.v-tabsheet-caption-close { + display: inline; + display: inline-block; + zoom: 1; + width: 16px; + height: 16px; + text-align: center; + font-weight: bold; + cursor: pointer; + vertical-align: middle; + user-select: none; + -khtml-user-select: none; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} + +.v-tabsheet .v-disabled .v-tabsheet-caption-close { + cursor: default; + visibility: hidden; +} + +.v-tabsheet-tabitem:hover .v-tabsheet-caption-close, .v-ie6 .v-tabsheet-caption-close { + visibility: visible; +} + +.v-ie6 .v-tabsheet-caption-close { + float: right; +} + +.v-tabsheet-tabitem { + border: 1px solid #aaaaaa; + border-right: none; + cursor: pointer; + padding: 0.2em 0.5em; +} + +.v-tabsheet-tabitem .v-caption { + cursor: inherit; +} + +.v-tabsheet.v-disabled .v-tabsheet-tabitem, .v-tabsheet-tabitemcell-disabled .v-tabsheet-tabitem { + cursor: default; +} + +.v-tabsheet-tabitem-selected { + cursor: default; + border-bottom-color: #ffffff; +} + +.v-tabsheet-tabitem-selected .v-caption { + cursor: default; +} + +.v-tabsheet-content { + border: 1px solid #aaaaaa; + border-top: none; + border-bottom: none; + position: relative; +} + +.v-ie6 .v-tabsheet-content, .v-ie7 .v-tabsheet-content { + zoom: 1; +} + +.v-tabsheet-deco { + height: 1px; + background: #aaaaaa; + overflow: hidden; +} + +.v-tabsheet-hidetabs .v-tabsheet-content { + border: none; +} + +.v-tabsheet-hidetabs .v-tabsheet-deco { + height: 0; +} + +.v-textfield { + text-align: left; +} + +.v-textarea { + resize: none; +} + +.v-textfield-focus, .v-textarea-focus { +} + +input.v-textfield-prompt, textarea.v-textarea-prompt { + color: #999999; + font-style: italic; +} + +input.v-textfield-readonly, textarea.v-textarea-readonly { + background: transparent; + border: none; + resize: none; +} + +input.v-disabled, textarea.v-disabled { + resize: none; +} + +input.v-textfield-readonly:focus, textarea.v-textarea-readonly:focus { + outline: none; +} + +.v-sa input:focus, .v-sa textarea:focus { + outline-width: medium; +} + +.v-richtextarea { + border: 1px solid #aaaaaa; + overflow: hidden; +} + +.v-richtextarea .gwt-RichTextArea { + background: #ffffff; + border: none; +} + +.v-richtextarea .gwt-RichTextToolbar { + white-space: nowrap; + background: #959595 url(../base/textfield/img/richtext-toolbar-bg.png) repeat-x 0 -42px; + border-bottom: 1px solid #7d7d7d; + padding: 2px; + overflow: hidden; +} + +.v-richtextarea .gwt-RichTextToolbar-top { + padding-bottom: 1px; + overflow: hidden; + white-space: normal; +} + +.v-richtextarea .gwt-RichTextToolbar-bottom { + clear: left; + overflow: hidden; + white-space: nowrap; +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton { + float: left; + display: inline; + width: 22px; + height: 21px; + overflow: hidden; + background: transparent url(../base/textfield/img/richtext-toolbar-bg.png) repeat-x; + cursor: pointer; + margin-right: 2px; + text-align: center; +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down, .v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton-down-hovering, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton-down-hovering { + background-position: 0 -21px; +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ToggleButton img, .v-richtextarea .gwt-RichTextToolbar .gwt-PushButton img { +} + +.v-richtextarea .gwt-RichTextToolbar .gwt-ListBox { + width: 24.5%; + margin-right: 2px; +} + +.v-richtextarea-readonly { + border: none; +} + +.v-tree { + text-align: left; + overflow: hidden; + padding: 1px 0; + outline: none; +} + +.v-tree-node { + background: transparent url(../base/common/img/sprites.png) no-repeat 5px -37px; + padding: 1px 0; +} + +.v-tree-node-caption:focus { + outline: none; +} + +div.v-tree-node-leaf { + background: transparent; +} + +.v-tree-node-expanded { + background: transparent url(../base/common/img/sprites.png) no-repeat -5px -10px; +} + +.v-tree-node-caption { + margin-left: 1em; +} + +.v-tree-node span { + cursor: pointer; +} + +.v-tree-node-caption div { + white-space: nowrap; +} + +.v-tree-node-caption span, .v-tree-node-caption .v-icon { + vertical-align: middle; +} + +.v-tree-node-selected span { + background: #999999; + color: #ffffff; +} + +.v-tree-node-children { + padding-left: 1em; +} + +.v-tree-node-ie6compatnode { + display: none; +} + +.v-ie6 .v-tree-node-ie6compatnode { + display: inline; + float: left; + background: orange; + margin: 0; + width: 0.8em; + height: 0.8em; + padding: 0.1em; + filter: alpha(opacity = 0); +} + +.v-ie6 .v-tree-node, .v-ie6 .v-tree-node-children { + clear: left; +} + +.v-tree .v-tree-node-drag-top { + border-top: 2px solid #1d9dff; + margin-top: -1px; + padding-top: 0; +} + +.v-tree .v-tree-node-drag-bottom { + border-bottom: 2px solid #1d9dff; + margin-bottom: -1px; + padding-bottom: 0; +} + +.v-tree .v-tree-node-drag-top:before, .v-tree .v-tree-node-drag-bottom:after, .v-tree .v-tree-node-caption-drag-center:after { + display: block; + content: ""; + position: absolute; + width: 6px; + height: 6px; + margin-top: -4px; + background: transparent url(../base/common/img/drag-slot-dot.png); +} + +.v-tree .v-tree-node-drag-bottom:after { + margin-top: -2px; +} + +.v-tree .v-tree-node-caption-drag-center:after { + margin-left: 14px; +} + +.v-ff .v-tree .v-tree-node-caption-drag-center:after, .v-ie .v-tree .v-tree-node-caption-drag-center:after { + margin-top: -2px; +} + +.v-tree .v-tree-node-drag-top { + background-position: 5px -38px; +} + +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: -5px -11px; +} + +.v-tree .v-tree-node-caption-drag-center div { + border: 2px solid #1d9dff; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + margin: -2px 2px -2px -2px; + background-color: #bcdcff; +} + +.v-ie6 .v-tree .v-tree-node-caption-drag-center div { + margin: -2px; +} + +.v-tree .v-tree-node-caption-drag-center div { + background-color: rgba(169, 209, 255, 0.6); +} + +.v-tree .v-tree-node-caption-drag-center div, .v-tree .v-tree-node-drag-top, .v-tree .v-tree-node-drag-bottom { + border-color: rgba(0, 109, 232, 0.6); +} + +.v-tree-connectors .v-tree-node-caption { + padding-top: 1px; +} + +.v-tree-connectors .v-tree-node { + background: transparent url(../base/tree/img/connector-expand.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-expanded { + background: transparent url(../base/tree/img/connector-collapse.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-last { + background: transparent url(../base/tree/img/connector-expand-last.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-expanded.v-tree-node-last { + background: transparent url(../base/tree/img/connector-collapse-last.png) no-repeat 2px -52px; +} + +.v-tree-connectors .v-tree-node-leaf { + background: transparent url(../base/tree/img/connector-leaf.png) repeat-y 2px 50%; +} + +.v-tree-connectors .v-tree-node-leaf-last { + background: transparent url(../base/tree/img/connector-leaf-last.png) repeat-y 2px 50%; +} + +.v-tree-connectors .v-tree-node-children { + background: transparent url(../base/tree/img/connector.png) repeat-y 2px 0; +} + +.v-tree-connectors .v-tree-node-children-last { + background: transparent; +} + +.v-tree-connectors .v-tree-node-drag-top, .v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { + background-position: 2px -53px; +} + +.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { + background-position: 2px 50%; +} + +.v-ie6 .v-tree-connectors .v-tree-node { + background: transparent url(../base/tree/img/connector-expand-ie6.png) no-repeat 2px -52px; +} + +.v-ie6 .v-tree-connectors .v-tree-node-expanded { + background: transparent url(../base/tree/img/connector-collapse-ie6.png) no-repeat 2px -52px; +} + +.v-ie6 .v-tree-connectors .v-tree-node-last { + background: transparent url(../base/tree/img/connector-expand-last-ie6.png) no-repeat 2px -52px; +} + +.v-ie6 .v-tree-connectors .v-tree-node-last.v-tree-node-expanded { + background: transparent url(../base/tree/img/connector-collapse-last-ie6.png) no-repeat 2px -52px; +} + +.v-treetable-treespacer { + display: inline-block; + background: transparent; + height: 10px; + width: 18px; +} + +.v-ie7 .v-treetable-treespacer { + height: 100%; +} + +.v-treetable-node-closed { + background: url(../base/treetable/img/arrow-right.png) right center no-repeat; +} + +.v-ie6 .v-treetable-node-closed { + background-image: url(../base/treetable/img/arrow-right.gif); +} + +.v-treetable-node-open { + background: url(../base/treetable/img/arrow-down.png) right center no-repeat; +} + +.v-ie6 .v-treetable-node-open { + background-image: url(../base/treetable/img/arrow-down.gif); +} + +.v-treetable .v-checkbox { + display: inline-block; + padding-bottom: 4px; +} + +.v-treetable .v-table-row .v-table-cell-content, .v-treetable .v-table-row-odd .v-table-cell-content { + position: relative; + z-index: 10; +} + +.v-treetable .v-table-body .v-table-table .v-table-row-animating { + zoom: 1; + z-index: 1; +} + +.v-treetable .v-table-body .v-table-table .v-table-row-animating, .v-treetable .v-table-body .v-table-table .v-table-row-animating .v-table-cell-content { + background: transparent; +} + +.v-treetable-animation-clone { + border-spacing: 0; + zoom: 1; +} + +div.v-treetable-animation-clone-wrapper { + position: absolute; + z-index: 2; + background-color: #ffffff; +} + +div.v-treetable-animation-clone-wrapper table.v-treetable-animation-clone { + background-color: #ffffff; +} + +div table.v-treetable-animation-clone tr.v-table-row, div table.v-treetable-animation-clone tr.v-table-row-odd, div table.v-treetable-animation-clone tr.v-table-row td.v-table-cell-content, div table.v-treetable-animation-clone tr.v-table-row-odd td.v-table-cell-content { + visibility: visible; +} + +.v-upload { + white-space: nowrap; +} + +.v-ie6 .v-upload, .v-ie7 .v-upload { + margin: 0; +} + +.v-upload-immediate { + position: relative; + margin: 0; + overflow: hidden; +} + +.v-ff .v-upload-immediate, .v-op .v-upload-immediate { + display: inline-block; +} + +.v-upload-immediate input { + opacity: 0; + filter: alpha(opacity = 0); + z-index: 2; + position: absolute; + right: 0; + height: 21px; + text-align: right; + border: none; + background: transparent; +} + +.v-upload-immediate button { + position: relative; + left: 0; + top: 0; + width: 100%; + text-align: left; +} + +.v-window { + background: #ffffff; +} + +.v-window-outerheader { + padding: 0.3em 1em; + height: 1em; +} + +.v-window-outerheader, .v-window-draggingCurtain { + cursor: move; +} + +.v-window-header { + font-weight: bold; +} + +div.v-window-header { + white-space: nowrap; + text-overflow: ellipsis; + -ms-text-overflow: ellipsis; + overflow: hidden; + padding: 0; +} + +.v-ie6 .v-window-header { + width: 100%; +} + +.v-window-header .v-icon { + vertical-align: middle; +} + +.v-window-contents, x:-moz-any-link { + overflow: hidden; +} + +.v-window-contents, x:-moz-any-link, x:default { + overflow: visible; +} + +.v-window-contents > div { + outline: none; +} + +.v-window-footer { + overflow: hidden; + zoom: 1; + height: 10px; + position: relative; + cursor: move; +} + +.v-window-resizebox { + width: 10px; + height: 10px; + background: #dddddd; + overflow: hidden; + position: absolute; + right: 0; +} + +.v-window-resizebox, .v-window-resizingCurtain { + cursor: se-resize; +} + +.v-window div.v-window-footer-noresize { + height: 0; +} + +.v-window-resizebox-disabled { + cursor: default; + display: none; +} + +.v-window-closebox { + position: absolute; + top: 0; + right: 0; + width: 1em; + height: 1em; + background: red; + cursor: pointer; + overflow: hidden; +} + +.v-window-modalitycurtain { + top: 0; + left: 0; + background: #999999; + opacity: 0.5; + position: fixed; + width: 100%; + height: 100%; + filter: alpha(opacity = 50); +} + +.v-ie6 .v-window-modalitycurtain { + position: absolute; + top: expression(document.documentElement.scrollTop + "px"); +} + +.v-ie6 .v-window { + width: 0; +} + +.v-shadow-window { + position: absolute; +} + +.v-shadow-window .top-left { + position: absolute; + overflow: hidden; + top: -10px; + left: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/top-left.png); +} + +.v-shadow-window .top { + position: absolute; + overflow: hidden; + top: -10px; + left: 13px; + height: 28px; + right: 13px; + background: transparent url(../base/window/img/shadow/top.png); +} + +.v-shadow-window .top-right { + position: absolute; + overflow: hidden; + top: -10px; + right: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/top-right.png); +} + +.v-shadow-window .left { + position: absolute; + overflow: hidden; + top: 18px; + left: -15px; + width: 28px; + bottom: 10px; + background: transparent url(../base/window/img/shadow/left.png); +} + +.v-shadow-window .center { + position: absolute; + overflow: hidden; + top: 18px; + left: 13px; + bottom: 10px; + right: 13px; + background: transparent url(../base/window/img/shadow/center.png); +} + +.v-shadow-window .right { + position: absolute; + overflow: hidden; + top: 18px; + right: -15px; + width: 28px; + bottom: 10px; + background: transparent url(../base/window/img/shadow/right.png); +} + +.v-shadow-window .bottom-left { + position: absolute; + overflow: hidden; + bottom: -18px; + left: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/bottom-left.png); +} + +.v-shadow-window .bottom { + position: absolute; + overflow: hidden; + bottom: -18px; + left: 13px; + right: 13px; + height: 28px; + background: transparent url(../base/window/img/shadow/bottom.png); +} + +.v-shadow-window .bottom-right { + position: absolute; + overflow: hidden; + bottom: -18px; + right: -15px; + width: 28px; + height: 28px; + background: transparent url(../base/window/img/shadow/bottom-right.png); +} + +.v-ie6 .v-shadow-window * { + display: none; +} + +.v-ie6 .v-shadow-window { + background: #000000; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=5 ) alpha(opacity = 20); + margin-top: 2px; + margin-left: 2px; +} + +.v-accordion { + border: 1px solid #bebebe; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + overflow: hidden; +} + +.v-accordion-item { + background-color: #ffffff; +} + +.v-accordion-item-caption { + height: 19px; + background: #e4e4e4 repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -0px; + font-size: 11px; + line-height: normal; + border-top: 1px solid #bebebe; + text-shadow: #ffffff 0 1px 0; +} + +.v-accordion-item-first .v-accordion-item-caption { + border-top: none; +} + +.v-accordion-item-caption .v-caption { + padding: 3px 0 5px 10px; +} + +.v-ie .v-accordion-item-caption .v-caption { + padding: 2px 0 6px 10px; +} + +.v-accordion-item-open .v-accordion-item-caption { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -19px; + border-bottom: 1px solid #bbbbbb; +} + +.v-accordion-item-caption .v-icon { + margin-top: -1px; +} + +.v-ie .v-accordion-item-caption .v-icon { + vertical-align: top; +} + +.v-accordion-borderless { + border: none; + border-radius: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; +} + +.v-button:focus { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -0px; + outline: none; +} + +.v-button:focus .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -26px; + outline: none; +} + +.v-button:active, .v-button.v-pressed { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -52px; + outline: none; +} + +.v-button:active .v-button-wrap, .v-button.v-pressed .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -78px; + outline: none; +} + +.v-button, .v-disabled.v-button { + height: 26px; + padding: 0 0 0 6px; + background-color: transparent; + background-repeat: no-repeat; + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -104px; + border: none; + cursor: default; +} + +.v-button-wrap, .v-disabled.v-button .v-button-wrap { + display: block; + height: 22px; + padding: 4px 15px 0 9px; + background-color: transparent; + background-repeat: no-repeat; + background-position: right top; + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -130px; +} + +.v-button-caption { + color: #222222; + text-shadow: #ffffff 0 1px 0; + font-weight: bold; + font-size: 11px; + line-height: 16px; +} + +.black .v-button:focus { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -0px; +} + +.black .v-button:focus .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -26px; +} + +.black .v-button:active, .black .v-button.v-pressed { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -52px; +} + +.black .v-button:active .v-button-wrap, .black .v-button.v-pressed .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -78px; +} + +.black .v-button, .black .v-disabled.v-button { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -104px; +} + +.black .v-button-wrap, .black .v-disabled.v-button .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -130px; +} + +.black .v-button-caption { + color: #c9ccce; + text-shadow: #121314 0 -1px 0; +} + +.v-button-primary:focus { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -156px; +} + +.v-button-primary:focus .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -182px; +} + +.v-button-primary:active, .v-button-primary.v-pressed { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -208px; +} + +.v-button-primary:active .v-button-wrap, .v-button-primary.v-pressed .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -234px; +} + +.v-button-primary, .v-disabled.v-button-primary { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -260px; +} + +.v-button-primary .v-button-wrap, .v-disabled.v-button-primary .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -286px; +} + +.black .v-button-primary:focus { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -156px; +} + +.black .v-button-primary:focus .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -182px; + color: #eaf4fb; +} + +.black .v-button-primary:active, .black .v-button-primary.v-pressed { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -208px; +} + +.black .v-button-primary:active .v-button-wrap, .black .v-button-primary.v-pressed .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -234px; +} + +.black .v-button-primary, .black .v-disabled.v-button-primary { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -260px; +} + +.black .v-button-primary .v-button-wrap, .black .v-disabled.v-button-primary .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -286px; +} + +.v-button-small:focus { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -312px; +} + +.v-button-small:focus .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -332px; +} + +.v-button-small:active, .v-button-small.v-pressed { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -352px; +} + +.v-button-small:active .v-button-wrap, .v-button-small.v-pressed .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -372px; +} + +.v-button-small, .v-disabled.v-button-small { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: left -392px; + height: 20px; +} + +.v-button-small .v-button-wrap, .v-disabled.v-button-small .v-button-wrap { + background-image: url(button/img/button-sprites.png); + -background-image: url(button/img/button-sprites-ie6.png); + background-position: right -412px; + height: 19px; + padding: 1px 14px 0 8px; +} + +.v-button-small .v-button-caption { + font-weight: normal; +} + +.black .v-button-small:focus { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -312px; +} + +.black .v-button-small:focus .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -332px; +} + +.black .v-button-small:active, .black .v-button-small.v-pressed { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -352px; +} + +.black .v-button-small:active .v-button-wrap, .black .v-button-small.v-pressed .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -372px; +} + +.black .v-button-small, .black .v-disabled.v-button-small { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: left -392px; +} + +.black .v-button-small .v-button-wrap, .black .v-disabled.v-button-small .v-button-wrap { + background-image: url(button/img/black-button-sprites.png); + -background-image: url(button/img/black-button-sprites-ie6.png); + background-position: right -412px; +} + +.v-button.v-button-link, .v-button.v-button-link:focus, .v-button.v-button-link:active, .v-button-link.v-pressed, .v-disabled.v-button.v-button-link, .v-button.v-button-link .v-button-wrap, .v-button.v-button-link:focus .v-button-wrap, .v-button.v-button-link:active .v-button-wrap, .v-button-link.v-pressed .v-button-wrap, .v-disabled.v-button.v-button-link .v-button-wrap { + background: transparent; + height: auto; + padding: 0; + cursor: pointer; + line-height: inherit; +} + +.v-button.v-button-link.v-disabled, .v-button.v-button-link.v-disabled .v-button-wrap { + cursor: default; +} + +.v-button-link .v-button-caption, .v-nativebutton-link .v-nativebutton-caption { + line-height: inherit; + font-weight: normal; + color: #1b699f; + font-size: 12px; + text-shadow: none; +} + +.v-button-link:focus .v-button-caption, .v-nativebutton-link:focus .v-nativebutton-caption { + outline: 1px dotted #1b699f; +} + +.v-ff2 .v-button .v-button-caption { + display: -moz-inline-box; + padding-top: 6px; + height: 20px; +} + +.v-ie6 .v-nativebutton-link, .v-ie7 .v-nativebutton-link, .v-ie8 .v-nativebutton-link { + padding: 0; + text-align: left; +} + +.v-ie6 .v-button { + border: 1px solid #b3b3b3; + border-bottom-color: #9a9a9a; + background: #d8d8d8 url(button/img/right.png) no-repeat 0 -1px; + padding: 0 15px; + height: 23px; +} + +.v-ie6 .v-button .v-button-wrap { + background: transparent; + height: 20px; + padding: 3px 0 0; + display: inline; + zoom: 1; +} + +.v-ie6 .v-button-primary { + background-image: url(button/img/primary-right.png); +} + +.v-ie6 .v-button-small { + background-image: url(button/img/small-right.png); + height: 17px; +} + +.v-ie6 .v-button-small .v-button-wrap { + height: 17px; + padding: 0; +} + +.v-ie6 .v-button.v-pressed { + background: transparent url(button/img/right-pressed.png) no-repeat 0 -1px; +} + +.v-ie6 .blue .v-button { + border-color: #84949c; + border-top-color: #83939b; + border-bottom-color: #888d91; +} + +.v-ie6 .black .v-button { + border: 1px solid #0d0e0f; + background: #202224 url(button/img/black/right.png) no-repeat 0 -1px; + color: #c9ccce; +} + +.v-ie6 .black .v-button-primary { + background-image: url(button/img/black/primary-right.png); +} + +.v-ie6 .black .v-button-small { + background-image: url(button/img/black/small-right.png); +} + +.v-ie6 .black .v-button.v-pressed { + background-image: url(button/img/black/right-pressed.png); +} + +.v-ie6 .v-button-link, .v-ie6 .black .v-button-link { + background: transparent; + border: none; + height: auto; + line-height: normal; + padding: 0; +} + +.v-ie6 .v-button-link .v-button-wrap, .v-ie6 .black .v-button-link .v-button-wrap { + padding: 0; + height: auto; +} + +.v-generated-body, .v-app { + background: #f5f5f5; +} + +.v-app, .v-window, .v-popupview-popup, .v-tooltip, .v-app input, .v-app select, .v-app button, .v-app textarea, .v-window input, .v-window select, .v-window button, .v-window textarea, .v-popupview-popup input, .v-popupview-popup select, .v-popupview-popup button, .v-popupview-popup textarea, .v-filterselect-suggestpopup, .v-datefield-popup, .v-contextmenu, .v-Notification, .v-menubar-submenu, .v-drag-element, .v-table-header-drag { + font-family: Arial, Helvetica, Tahoma, Verdana, sans-serif; + font-size: 12px; + line-height: normal; + color: #222222; +} + +.v-app .black, .v-window-black, .v-window .black, .v-popupview-popup .black { + color: #c9ccce; + text-shadow: #000000 0 0 1px; +} + +.v-errorindicator { + width: 13px; + height: 16px; + background: transparent url(common/icons/error.png) no-repeat 50%; +} + +.v-ie6 .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-tooltip { + background-color: #fffcdd; + border: 1px solid #b8b295; + font-size: 11px; + color: #222222; +} + +.v-tooltip-text { + padding: 2px 4px; +} + +.v-tooltip .v-errormessage { + padding: 3px 4px; + background: #ffecc6; + color: #b74100; + border: none; + border-top: 1px solid #fff3dc; +} + +.v-tooltip .v-errormessage h2 { + font-size: 16px; + font-weight: normal; + color: #ab3101; + margin: 2px 0 8px 0; +} + +.v-tooltip .v-errormessage h3 { + font-size: 13px; + font-weight: bold; + margin: 1px 0 4px 0; +} + +.v-contextmenu { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; + padding: 4px 0; +} + +.v-contextmenu .gwt-MenuItem { + padding: 1px 12px 1px 8px; + height: 16px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + cursor: default; +} + +.v-contextmenu .gwt-MenuItem .v-icon { + margin-right: 3px; +} + +.v-contextmenu .gwt-MenuItem-selected { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -38px; + color: #ffffff; + text-shadow: #3b5a7a 0 1px 0; +} + +.v-ie .v-contextmenu .gwt-MenuItem-selected { + background-image: url(common/img/sel-bg.png); + background-position: left top; +} + +.v-contextmenu .gwt-MenuItem-selected div { + background: transparent; + cursor: default; +} + +.portlet .v-app { + background: transparent; +} + +.portlet .v-app .v-radiobutton input, .portlet .v-window .v-radiobutton input, .portlet .v-popupview-popup .v-radiobutton input, .portlet .v-app .v-checkbox input, .portlet .v-window .v-checkbox input, .portlet .v-popupview-popup .v-checkbox input { + margin-right: 3px; + background: transparent; +} + +input.v-textfield-readonly:focus { + background-color: transparent; +} + +.v-datefield-calendarpanel { + border-collapse: collapse; + margin: 0; + padding: 0; + height: auto !important; +} + +.v-datefield-year .v-datefield-calendarpanel-prevmonth, .v-datefield-year .v-datefield-calendarpanel-nextmonth { + display: none; +} + +.v-datefield-calendarpanel td { + vertical-align: top; +} + +td.v-datefield-calendarpanel-month { + height: 23px; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -58px; +} + +span.v-datefield-calendarpanel-month { + display: block; + text-align: center; + height: 16px; + padding: 3px 10px 0 10px; + border-left: 1px solid #efefef; + border-right: 1px solid #d8d8d8; + text-shadow: #ffffff 0 1px 0; + overflow: hidden; + margin-top: 1px; +} + +.v-datefield-year .v-datefield-calendarpanel-month { + width: 35px; +} + +.v-datefield-month .v-datefield-calendarpanel-month, .v-datefield-day .v-datefield-calendarpanel-month, .v-datefield-full .v-datefield-calendarpanel-month { + width: 124px; +} + +.v-datefield-month, .v-datefield-day, .v-datefield-full { + min-width: 240px; +} + +.v-ff2 .v-datefield-month, .v-ff2 .v-datefield-day, .v-ff2 .v-datefield-full { + min-width: 254px; +} + +.v-datefield-popupcalendar, .v-ff2 .v-datefield-popupcalendar { + min-width: 0; +} + +.v-datefield-year .v-datefield-calendarpanel { + width: 100px; +} + +td.v-datefield-calendarpanel-prevyear { + text-align: right; +} + +td.v-datefield-calendarpanel-nextyear { + text-align: left; +} + +.v-datefield-calendarpanel-prevyear button, .v-datefield-calendarpanel-nextyear button, .v-datefield-calendarpanel-prevmonth button, .v-datefield-calendarpanel-nextmonth button { + width: 24px; + height: 23px; + border: none; + background: transparent; + background-repeat: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -81px; + overflow: hidden; + padding: 0; + text-indent: -9999px; + outline: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.v-ie .v-datefield-calendarpanel-prevyear button, .v-ie .v-datefield-calendarpanel-nextyear button, .v-ie .v-datefield-calendarpanel-prevmonth button, .v-ie .v-datefield-calendarpanel-nextmonth button { + text-indent: 0; + font-size: 1px; +} + +.v-datefield-calendarpanel-nextyear button { + background-position: left top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -104px; +} + +.v-datefield-calendarpanel-prevyear button:active, .v-ie .v-datefield-calendarpanel-prevyear button.v-pressed { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -127px; +} + +.v-datefield-calendarpanel-nextyear button:active, .v-ie .v-datefield-calendarpanel-nextyear button.v-pressed { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -150px; +} + +.v-datefield-calendarpanel-prevmonth, .v-datefield-calendarpanel-nextmonth { + width: 24px; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -173px; +} + +.v-datefield-calendarpanel-prevmonth button, .v-datefield-calendarpanel-nextmonth button { + width: 100%; + height: 21px; + border-left: 1px solid #efefef; + border-right: 1px solid #d8d8d8; + background: transparent; + background-position: center top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -196px; + min-width: 24px; + margin-top: 1px; +} + +.v-ie .v-datefield-calendarpanel-prevmonth button, .v-ie .v-datefield-calendarpanel-nextmonth button { + border: none; +} + +.v-ie6 .v-datefield-calendarpanel-prevmonth button, .v-ie6 .v-datefield-calendarpanel-nextmonth button { + width: 24px; +} + +.v-datefield-calendarpanel-nextmonth button { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -217px; +} + +.v-datefield-calendarpanel-prevmonth button:active, .v-ie .v-datefield-calendarpanel-prevmonth button.v-pressed { + background-position: center top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -238px; +} + +.v-datefield-calendarpanel-nextmonth button:active, .v-ie .v-datefield-calendarpanel-nextmonth button.v-pressed { + background-position: center top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -259px; +} + +.v-datefield-calendarpanel-body, .v-datefield-calendarpanel-time { + text-align: center; + vertical-align: top; +} + +.v-datefield-calendarpanel-body table { + border-collapse: collapse; + margin: 0; + padding: 0; + width: 220px; + margin: 0 auto; +} + +.v-datefield-calendarpanel-weekdays td { + width: 14.2%; + overflow: hidden; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -280px; + font-size: 10px; + line-height: normal; + text-transform: uppercase; + color: #eaeff1; + text-shadow: #3b4651 0 -1px 0; + vertical-align: top; +} + +.v-datefield-calendarpanel-weeknumbers td { + width: 12.4%; +} + +.v-datefield-calendarpanel-weekdays strong { + display: block; + text-align: right; + padding: 1px 5px 0 0; + height: 14px; + border-top: 1px solid #596775; +} + +.v-datefield-calendarpanel-weekdays .v-first { + background-repeat: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -299px; +} + +.v-datefield-calendarpanel-weekdays .v-last { + background-repeat: no-repeat; + background-position: right top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -318px; +} + +.v-ie .v-datefield-calendarpanel-weekdays td { + background: url(datefield/img/weekday-bg.png) repeat-x; + background-position: left top; +} + +.v-ie .v-datefield-calendarpanel .v-first { + background: url(datefield/img/weekday-first.png) no-repeat; +} + +.v-ie .v-datefield-calendarpanel .v-last { + background: url(datefield/img/weekday-last.png) no-repeat right top; +} + +.v-datefield-calendarpanel-body td { + text-align: right; + height: 19px; +} + +.v-datefield-calendarpanel-day, .v-datefield-calendarpanel-weeknumber, .v-datefield-calendarpanel-day-today { + padding: 2px 5px 2px 0; + display: block; + margin: 1px 0 0 5px; +} + +.v-datefield-calendarpanel-weeknumber { + margin: 0; + padding-top: 4px; + padding-bottom: 3px; +} + +.v-datefield-calendarpanel-day-today { + color: #4095d1; + border: none; +} + +.v-datefield-calendarpanel-day-selected { + background: #507ba3; + color: #ffffff; + text-shadow: #3b5b79 0 1px 0; + border-radius: 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; +} + +.v-datefield-calendarpanel-time select { + padding: 0; + font-size: 11px; +} + +.v-datefield-popup { + background: #f8f8f9; + padding: 8px 4px; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} + +.v-sa .v-datefield-popup, .v-ff3 .v-datefield-popup, .v-op .v-datefield-popup { + background: rgba(255, 255, 255, 0.95); +} + +.v-datefield-year .v-datefield-textfield { + width: 4em; +} + +.v-datefield-month .v-datefield-textfield { + width: 5em; +} + +.v-datefield-day .v-datefield-textfield { + width: 5.5em; +} + +.v-datefield-full .v-datefield-textfield { + width: 12em; +} + +.v-datefield-popupcalendar input.v-datefield-textfield { + border-right-width: 0; + -moz-border-radius-topright: 0; + -moz-border-radius-bottomright: 0; + -webkit-border-top-right-radius: 0; + -webkit-border-bottom-right-radius: 0; + height: 14px; +} + +.v-datefield.v-readonly input.v-datefield-textfield { + border-right-width: 1px; + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +.v-datefield-prompt .v-datefield-textfield { + color: #999999; + font-style: normal; +} + +.v-datefield-popupcalendar .v-datefield-button { + width: 24px; + height: 23px; + background: transparent; + border: none; + padding: 0; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -337px; + cursor: pointer; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.v-datefield-popupcalendar .v-datefield-button:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -360px; +} + +.black .v-datefield-popupcalendar .v-datefield-button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -0px; +} + +.black .v-datefield-popupcalendar .v-datefield-button:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -23px; +} + +.v-ie6 .v-datefield-popupcalendar .v-datefield-button { + margin-top: 1px; +} + +.black td.v-datefield-calendarpanel-month { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -46px; + height: 21px; +} + +.black span.v-datefield-calendarpanel-month { + border-left: 1px solid #333638; + border-right: 1px solid #232527; + color: #c9ccce; + text-shadow: #000000 0 -1px 0; + padding: 4px 10px 1px 10px; + margin-top: 0; +} + +.black .v-datefield-calendarpanel-prevyear button, .black .v-datefield-calendarpanel-nextyear button, .black .v-datefield-calendarpanel-prevmonth button, .black .v-datefield-calendarpanel-nextmonth button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -67px; + height: 21px; +} + +.black .v-datefield-calendarpanel-nextyear button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -88px; +} + +.black .v-datefield-calendarpanel-prevyear button:active, .v-ie .black .v-datefield-calendarpanel-prevyear button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -109px; +} + +.black .v-datefield-calendarpanel-nextyear button:active, .v-ie .black .v-datefield-calendarpanel-nextyear button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -130px; +} + +.black .v-datefield-calendarpanel-prevmonth, .black .v-datefield-calendarpanel-nextmonth { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -151px; +} + +.black .v-datefield-calendarpanel-prevmonth button, .black .v-datefield-calendarpanel-nextmonth button { + border-left: 1px solid #333638; + border-right: 1px solid #232527; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -172px; + margin-top: 0; +} + +.black .v-datefield-calendarpanel-nextmonth button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -193px; +} + +.black .v-datefield-calendarpanel-prevmonth button:active, .v-ie .black .v-datefield-calendarpanel-prevmonth button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -214px; +} + +.black .v-datefield-calendarpanel-nextmonth button:active, .v-ie .black .v-datefield-calendarpanel-nextmonth button.v-pressed { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: center -235px; +} + +.v-ie .black .v-datefield-calendarpanel-prevmonth button, .v-ie .black .v-datefield-calendarpanel-nextmonth button { + border: none; +} + +.black .v-datefield-calendarpanel-weekdays td { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -256px; + color: #0a0b0b; + text-shadow: #5a5c5e 0 1px 0; +} + +.black .v-datefield-calendarpanel-weekdays strong { + border-top-color: #1b1c1d; +} + +.black .v-datefield-calendarpanel .v-first { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -275px; +} + +.black .v-datefield-calendarpanel .v-last { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: right -294px; +} + +.black .v-datefield-prompt .v-datefield-textfield { + color: #5f6366; +} + +.v-formlayout-errorcell { + width: 13px; +} + +.v-formlayout-cell .v-errorindicator { + width: 13px; + height: 16px; + background: transparent url(common/icons/error.png) no-repeat 50%; +} + +.v-ie6 .v-formlayout-cell .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-formlayout-captioncell { + text-align: right; + white-space: nowrap; +} + +.v-formlayout-spacing .v-formlayout-row .v-formlayout-captioncell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-contentcell, .v-formlayout-spacing .v-formlayout-row .v-formlayout-errorcell { + padding-top: 8px; +} + +.v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-captioncell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-contentcell, .v-formlayout-margin-top .v-formlayout-firstrow .v-formlayout-errorcell { + padding-top: 15px; +} + +.v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-captioncell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-contentcell, .v-formlayout-margin-bottom .v-formlayout-lastrow .v-formlayout-errorcell { + padding-bottom: 15px; +} + +.v-formlayout-margin-left .v-formlayout-captioncell { + padding-left: 18px; +} + +.v-formlayout-margin-right .v-formlayout-contentcell { + padding-right: 18px; +} + +.v-form-errormessage { + background: transparent url(common/icons/error.png) no-repeat 3px 2px; + padding-left: 20px; + margin-bottom: 5px; + margin-top: 5px; + min-height: 20px; +} + +.v-ie6 .v-form-errormessage { + height: 20px; + background-image: url(common/icons/error-ie6.png); +} + +.v-form fieldset { + border: none; + border-top: 1px solid #babfc0; +} + +.v-form-nocaption fieldset { + border: none; +} + +.v-form-nocaption legend { + display: none; +} + +.v-form legend { + margin: 0 0 0 20px; + padding: 0 5px; + font-weight: bold; + color: #222222; +} + +.black .v-form legend { + color: #e3e6e8; +} + +.v-label { + line-height: 18px; +} + +.white .black, .blue .black { + color: #c9ccce; + text-shadow: 0 0 1px #000000; +} + +.black .v-label-h1, .black .v-label-h2, .black .v-caption-h1, .black .v-caption-h2, .white .black .v-label-h1, .white .black .v-label-h2, .white .black .v-caption-h1, .white .black .v-caption-h2, .blue .black .v-label-h1, .blue .black .v-label-h2, .blue .black .v-caption-h1, .blue .black .v-caption-h2 { + color: #ffffff; + text-shadow: rgba(0, 0, 0, 0.8) 0 2px 2px; +} + +.black .v-label-light, .white .black .v-label-light { + color: #72787c; +} + +.black .v-label hr, .white .black .v-label hr { + background: #0c0d0e; + color: #0c0d0e; + border-bottom-color: #292b2e; +} + +.v-app .white, .v-window .white, .v-app .blue, .v-window .blue { + color: #222222; + text-shadow: none; +} + +.blue .v-label-h1, .blue .v-label-h2, .blue .v-caption-h1, .blue .v-caption-h2, .white .blue .v-label-h1, .white .blue .v-label-h2, .white .blue .v-caption-h1, .white .blue .v-caption-h2 { + color: #ffffff; + text-shadow: rgba(0, 0, 0, 0.3) 0 1px 1px; +} + +.blue .v-label-light, .white .blue .v-label-light { + color: #6e7c83; +} + +.blue .v-label hr, .white .blue .v-label hr { + background: #a3bcc9; + color: #a3bcc9; + border-bottom-color: #cfe2eb; +} + +.v-label-h1, .v-label-h2, .v-caption-h1, .v-caption-h2, .white .v-label-h1, .white .v-label-h2, .white .v-caption-h1, .white .v-caption-h2 { + font-family: Helvetica, Arial, "Lucida Grande", Geneva, Tahoma, Verdana, sans-serif; + font-size: 24px; + line-height: 30px; + font-weight: bold; + color: #44698b; + letter-spacing: -0.02em; + text-shadow: #ffffff 0 -1px 1px; +} + +.v-label-h2, .v-caption-h2, .white .v-label-h2, .white .v-caption-h2 { + font-size: 16px; + line-height: 22px; +} + +.v-label-light, .white .v-label-light { + font-size: 11px; + line-height: 13px; + color: #707070; +} + +.v-label hr, .white .v-label hr { + height: 2px; + overflow: hidden; + background: #dcdcdc; + color: #dcdcdc; + border: none; + border-bottom: 1px solid #ffffff; +} + +.v-sa .v-label hr, .v-ie8 .v-label hr { + height: 1px; +} + +.v-table .v-label { + line-height: normal; +} + +.v-orderedlayout-margin-top, .v-horizontallayout-margin-top, .v-verticallayout-margin-top { + padding-top: 18px; +} + +.v-orderedlayout-margin-right, .v-horizontallayout-margin-right, .v-verticallayout-margin-right { + padding-right: 18px; +} + +.v-orderedlayout-margin-bottom, .v-horizontallayout-margin-bottom, .v-verticallayout-margin-bottom { + padding-bottom: 18px; +} + +.v-orderedlayout-margin-left, .v-horizontallayout-margin-left, .v-verticallayout-margin-left { + padding-left: 18px; +} + +.v-orderedlayout-spacing-on, .v-horizontallayout-spacing-on, .v-verticallayout-spacing-on { + padding-top: 7px; + padding-left: 6px; +} + +.v-gridlayout-margin-top { + padding-top: 24px; +} + +.v-gridlayout-margin-bottom { + padding-bottom: 24px; +} + +.v-gridlayout-margin-left { + padding-left: 24px; +} + +.v-gridlayout-margin-right { + padding-right: 24px; +} + +.v-gridlayout-spacing-on { + padding-left: 12px; + padding-top: 12px; +} + +.v-verticallayout-blue, .v-horizontallayout-blue, .v-orderedlayout-blue, .v-gridlayout-blue, .v-csslayout-blue, .v-formlayout-blue, .v-splitpanel-vertical-blue, .v-splitpanel-horizontal-blue { + background-color: #bcd3de; +} + +.v-panel-content > div.blue { + background-color: #bcd3de; +} + +.v-verticallayout-white, .v-horizontallayout-white, .v-orderedlayout-white, .v-gridlayout-white, .v-csslayout-white, .v-formlayout-white, .v-splitpanel-vertical-white, .v-splitpanel-horizontal-white { + background-color: #ffffff; + color: #222222; +} + +.v-panel-content > div.white { + background-color: #ffffff; + color: #222222; +} + +.v-verticallayout-black, .v-horizontallayout-black, .v-orderedlayout-black, .v-gridlayout-black, .v-csslayout-black, .v-formlayout-black, .v-splitpanel-vertical-black, .v-splitpanel-horizontal-black { + background: #1e2022 url(layouts/img/black-bg.png) repeat-x; +} + +.v-panel-content > div.black { + background: #1e2022 url(layouts/img/black-bg.png) repeat-x; +} + +.v-link a:link span { + color: #1b699f; +} + +.v-link a:visited span { + color: #5c7485; +} + +.v-link a:hover span { + color: #2483c4; +} + +.v-menubar { + height: 23px; + background: #323336 repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -383px; + color: #d1d3d6; + text-shadow: rgba(0, 0, 0, 0.9) 0 1px 0; + padding: 0 8px; +} + +.v-menubar .v-menubar-menuitem { + padding: 3px 8px; + height: 17px; + line-height: 16px; +} + +.v-menubar .v-menubar-menuitem:hover { + color: #ffffff; +} + +.v-menubar-submenu { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; + padding: 4px 0; +} + +.v-menubar-submenu .v-menubar-menuitem { + padding: 1px 26px 1px 10px; + line-height: 16px; +} + +.v-menubar-submenu .v-menubar-menuitem-caption .v-icon { + vertical-align: middle; +} + +.v-menubar .v-menubar-menuitem-selected, .v-menubar-submenu .v-menubar-menuitem-selected { + background: #4d749f repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -406px; + color: #ffffff; + text-shadow: 0 1px 0 #3b5a7a; +} + +.v-menubar .v-menubar-menuitem-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -426px; +} + +.v-menubar-submenu .v-menubar-submenu-indicator { + background: transparent url(menubar/img/submenu-icon.png) no-repeat right 70%; + width: 26px; + height: 16px; + text-indent: -9999px; +} + +.v-menubar-submenu .v-menubar-menuitem-selected .v-menubar-submenu-indicator { + background-image: url(menubar/img/submenu-icon-hover.png); +} + +.v-menubar-submenu-check-column .v-menubar-menuitem { + padding-left: 6px; +} + +.v-menubar-submenu-check-column .v-menubar-menuitem-caption { + padding-left: 18px; +} + +.v-menubar-submenu .v-menubar-menuitem-checked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/checked.png) no-repeat left; +} + +.v-menubar-submenu .v-menubar-menuitem-unchecked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/unchecked.png) no-repeat left; +} + +.v-menubar-submenu .v-menubar-menuitem-selected-checked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/checked-selected.png) no-repeat left; +} + +.v-menubar-submenu .v-menubar-menuitem-selected-unchecked .v-menubar-menuitem-caption { + background: transparent url(menubar/img/unchecked-selected.png) no-repeat left; +} + +.v-Notification { + color: #ffffff; + border-radius: 4px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + font-size: 100%; + background: #c8ccd0; + font-weight: bold; +} + +.v-ie9 .v-Notification H1 { + font-weight: bold; +} + +.v-Notification p { + line-height: 1.3; +} + +.v-Notification-warning { + background: #fdf3b5; + color: #ca9a61; + border: 3px solid #fee3af; +} + +.v-Notification-error { + background: #b40000 url(notification/img/error-close.png) no-repeat right top; + border: 3px solid #ca3030; +} + +.v-Notification-tray { + margin: 0 5px 5px 0; + background: #3b3c3e; + border: 2px solid #585b5c; + padding: 0.8em 0.9em; +} + +.v-Notification-tray h1 { + font-size: 14px; + line-height: 18px; +} + +.v-Notification-tray p { + font-size: 12px; + font-weight: normal; +} + +.v-Notification-system { + background-color: #b40000; +} + +.blue .v-panel-caption, .blue .v-panel-nocaption, .blue .v-panel-content { + border-color: #a8bcc5; +} + +.v-panel-caption, .v-panel-nocaption, .white .v-panel-caption, .white .v-panel-nocaption { + border-bottom: 1px solid #e5e5e5; + line-height: 16px; +} + +.v-webkit .v-panel-caption, .v-webkit .v-panel-nocaption, .v-gecko .v-panel-caption, .v-gecko .v-panel-nocaption, .v-ie9 .v-panel-caption, .v-ie9 .v-panel-nocaption { + border-bottom-color: rgba(0, 0, 0, 0.08); +} + +.v-panel-caption { + padding-bottom: 2px; +} + +.v-panel-content, .white .v-panel-content { + border: 1px solid #dcdcdc; + border-bottom: none; + border-top: none; +} + +.v-webkit .v-panel-content, .v-gecko .v-panel-content, .v-ie9 .v-panel-content { + border-top-color: rgba(0, 0, 0, 0.07); +} + +.v-panel-content > div { + background: #ffffff; + min-height: 100%; +} + +.v-ie6 .v-panel-content { + background: #ffffff; +} + +.blue .v-panel-deco { + border-color: #92a3ac; + background: #adc2cd; +} + +.v-panel-deco, .white .v-panel-deco { + height: 1px; + border-top: 1px solid #bebebe; + background: #e2e2e2; + overflow: hidden; +} + +.v-wekit .v-panel-deco, .v-gecko .v-panel-deco, .v-ie9 .v-panel-deco { + border-top-color: rgba(0, 0, 0, 0.1); + background: rgba(0, 0, 0, 0.08); +} + +.v-panel-caption .v-errorindicator { + height: 16px; + width: 13px; + background: url(common/icons/error.png) no-repeat 50%; + display: inline; + display: inline-block; + vertical-align: middle; +} + +.v-ie6 .v-panel-caption .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-panel-light .v-panel-caption-light, .v-panel-light .v-panel-nocaption-light { + border: none; +} + +.v-panel-light .v-panel-content-light { + border: none; +} + +.v-panel-content-light > div { + background: transparent; +} + +.v-ie6 .v-panel-content-light { + background: transparent; +} + +.v-panel-light .v-panel-deco-light { + height: 0; + border: none; +} + +.v-popupview { + color: #1b699f; +} + +.v-popupview:hover { + color: #2483c4; +} + +.v-popupview-popup { + background: #ffffff; + padding: 3px; +} + +.v-progressindicator-wrapper { + background: #dfe2e4 url(progressindicator/img/base.gif) repeat-x; + border: 1px solid #bfbfbf; +} + +.v-disabled .v-progressindicator-wrapper { + background-image: url(progressindicator/img/disabled.gif); +} + +.v-progressindicator-indicator { + background: #f7f9f9 url(progressindicator/img/progress.png); +} + +.v-filterselect { + height: 24px; + background-repeat: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -450px; + padding-left: 2px; +} + +.v-ie6 .v-filterselect { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -475px; +} + +.v-app .v-filterselect-input, .v-window .v-filterselect-input, .v-popupview-popup .v-filterselect-input { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -499px; + border: none; + height: 16px; +} + +.v-app input.v-filterselect-input, .v-window input.v-filterselect-input, .v-popupview-popup input.v-filterselect-input { + padding: 4px 0 4px 2px; +} + +.v-filterselect-prompt .v-filterselect-input { + font-style: normal; +} + +.v-filterselect-input:focus { + outline: none; +} + +.v-filterselect-focus { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -524px; +} + +.v-ie6 .v-filterselect-focus { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -549px; +} + +.v-filterselect-focus .v-filterselect-input { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -573px; +} + +.v-filterselect-button { + overflow: hidden; + width: 25px; + height: 24px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -597px; + cursor: default; +} + +.v-filterselect-button:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -622px; +} + +.v-filterselect-button:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -646px; +} + +.v-filterselect-focus .v-filterselect-button { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -670px; +} + +.v-filterselect-focus .v-filterselect-button:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -694px; +} + +.v-filterselect-focus .v-filterselect-button:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -718px; +} + +.v-disabled .v-filterselect-button:hover, .v-readonly .v-filterselect-button:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -742px; +} + +.v-filterselect-suggestpopup { + background: #f8f8f9; + border: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + -o-border-radius: 3px; + overflow: hidden; +} + +.v-filterselect-suggestmenu { + margin: 4px 0; +} + +.v-filterselect-suggestmenu .gwt-MenuItem { + padding: 1px 8px; + height: 16px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + cursor: default; +} + +.v-ff .v-filterselect-suggestmenu .gwt-MenuItem { + height: 18px; +} + +.v-filterselect-suggestmenu .gwt-MenuItem .v-icon { + margin-right: 3px; +} + +.v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -766px; + color: #ffffff; + text-shadow: #3b5a7a 0 1px 0; +} + +.v-filterselect-nextpage, .v-filterselect-nextpage-off, .v-filterselect-prevpage-off, .v-filterselect-prevpage { + height: 11px; + width: 100%; + background: transparent; + margin-bottom: -4px; +} + +.v-filterselect-nextpage, .v-filterselect-nextpage-off { + margin: -4px 0 0; +} + +.v-filterselect-nextpage:hover { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -786px; +} + +.v-filterselect-prevpage:hover { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -797px; +} + +.v-filterselect-nextpage:active { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -808px; +} + +.v-filterselect-prevpage:active { + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -819px; +} + +.v-filterselect-nextpage-off span, .v-filterselect-prevpage-off span { + display: none; +} + +.v-filterselect-nextpage span, .v-filterselect-prevpage span { + display: block; + height: 11px; + width: 100%; + overflow: hidden; + text-indent: -99999px; + background: transparent no-repeat center 3px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -830px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} + +.v-filterselect-prevpage span { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -841px; +} + +.v-filterselect-nextpage:hover span { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -852px; +} + +.v-filterselect-prevpage:hover span { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -863px; +} + +.v-filterselect-status { + text-shadow: #e9eaeb 0 1px 0; + font-size: 11px; + line-height: normal; + width: 100%; + padding: 3px 0; + height: 11px; + overflow: hidden; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -874px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-bottom-left-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; +} + +.v-ie .v-filterselect-suggestmenu .gwt-MenuItem-selected { + background: transparent url(common/img/sel-bg.png) repeat-x; +} + +.v-ie .v-filterselect-nextpage:hover { + background: transparent url(select/img/page-down-hover.png) repeat-x; +} + +.v-ie .v-filterselect-prevpage:hover { + background: transparent url(select/img/page-up-hover.png) repeat-x; +} + +.v-ie .v-filterselect-prevpage span { + background: transparent url(select/img/arrow-up.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-nextpage span { + background: transparent url(select/img/arrow-down.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-prevpage:hover span { + background: transparent url(select/img/arrow-up-hover.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-nextpage:hover span { + background: transparent url(select/img/arrow-down-hover.png) no-repeat center 3px; +} + +.v-ie .v-filterselect-status { + background: transparent url(select/img/status-bg.png) repeat-x; +} + +.v-filterselect .v-icon { + width: 16px; + position: relative; +} + +.v-filterselect .v-icon + .v-filterselect-input { + margin-left: -16px; + padding-left: 18px; +} + +.black .v-filterselect { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -310px; +} + +.v-ie6 .black .v-filterselect { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -334px; +} + +.v-app .black .v-filterselect-input, .v-window .black .v-filterselect-input, .v-window-black .v-filterselect-input, .v-popupview-popup .black .v-filterselect-input { + color: #c9ccce; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -358px; +} + +.black .v-filterselect-focus { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -382px; +} + +.v-ie6 .black .v-filterselect-focus { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -406px; +} + +.black .v-filterselect-focus .v-filterselect-input { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -430px; +} + +.black .v-filterselect-button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -454px; +} + +.black .v-filterselect-button:hover { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -478px; +} + +.black .v-filterselect-button:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -502px; +} + +.black .v-filterselect-focus .v-filterselect-button { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -526px; +} + +.black .v-filterselect-focus .v-filterselect-button:hover { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -550px; +} + +.black .v-filterselect-focus .v-filterselect-button:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -574px; +} + +.black .v-disabled .v-filterselect-button:hover, .black .v-readonly .v-filterselect-button:hover { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -598px; +} + +.black .v-filterselect-prompt .v-filterselect-input { + color: #5f6366; +} + +.black .v-select select, .black .v-select-twincol select { + border-color: #38393a; + border-top-color: #2c2d2e; + border-bottom-color: #3e3f3f; + background: #151717; + color: #c9ccce; +} + +.v-ie6 .v-select-twincol-buttons .v-button { + padding-left: 12px; + padding-right: 12px; +} + +.v-ie6 .v-filterselect.v-readonly, .v-ie6 .v-filterselect .v-filterselect-input-readonly { + background: transparent; +} + +.v-slider { + border-top: 1px solid #9a9c9e; + border-bottom: 1px solid #bdbfc1; + margin: 4px 0; +} + +.v-slider-base { + height: 1px; + background: #e0e2e2; + border-top: 1px solid #adb0b1; + border-left: 1px solid #a0a3a6; + border-right: 1px solid #a0a3a6; +} + +.v-slider-handle { + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -891px; + width: 10px; + height: 10px; + margin-top: -5px; +} + +.v-slider-handle-active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -901px; +} + +.v-slider-vertical { + width: 2px; + margin: 0 5px; + border: none; + border-left: 1px solid #9a9c9e; + border-right: 1px solid #bdbfc1; +} + +.v-slider-vertical .v-slider-base { + width: 2px; + border-left: 1px solid #adb0b1; + border-right: none; + border-top: 1px solid #adb0b1; + border-bottom: 1px solid #adb0b1; +} + +.v-slider-vertical .v-slider-handle { + width: 10px; + height: 10px; + margin-left: -5px; +} + +.v-splitpanel-hsplitter, .v-splitpanel-hsplitter-locked { + width: 7px; + background-repeat: repeat-y; + background-image: url(common/img/horizontal-sprites.png); + background-position: -0px top; +} + +.v-splitpanel-hsplitter div { + width: 7px; + height: 100%; + background: transparent; + background-repeat: no-repeat; + background-position: 50%; + background-image: url(common/img/horizontal-sprites.png); + background-position: -7px center; +} + +.v-splitpanel-vsplitter, .v-splitpanel-vsplitter-locked { + height: 7px; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -911px; +} + +.v-splitpanel-vsplitter div { + height: 7px; + background: transparent; + background-repeat: no-repeat; + background-position: 50%; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: center -918px; +} + +.blue .v-splitpanel-hsplitter-small, .blue .v-splitpanel-hsplitter-small-locked { + background: #7c8a91; +} + +.black .v-splitpanel-hsplitter-small, .black .v-splitpanel-hsplitter-small-locked { + background: #4e5253; +} + +.v-splitpanel-hsplitter-small, .v-splitpanel-hsplitter-small-locked, .white .v-splitpanel-hsplitter-small, .white .v-splitpanel-hsplitter-small-locked { + width: 1px; + background: #949698; +} + +.v-splitpanel-vsplitter-small, .v-splitpanel-vsplitter-small-locked, .white .v-splitpanel-vsplitter-small, .white .v-splitpanel-vsplitter-small-locked { + height: 1px; + background: #949698; +} + +.v-splitpanel-hsplitter-small div { + width: 5px; + margin-left: -2px; + background: transparent; +} + +.v-splitpanel-vsplitter-small div { + height: 5px; + margin-top: -2px; + background: transparent; +} + +.blue .v-table-header-wrap { + border-color: #92a2aa; +} + +.blue .v-table-body { + border-color: #92a2aa; + border-top-color: #c2c3c4; +} + +.v-table-header-wrap, .white .v-table-header-wrap, .v-table-footer-wrap, .white .v-table-footer-wrap, .v-table-header-drag { + border-color: #c2c3c4; + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -925px; + height: 20px; + text-transform: uppercase; + font-size: 10px; + font-weight: bold; + color: #222222; + text-shadow: #f3f5f8 0 1px 0; + line-height: normal; +} + +.v-ie6 .v-table, .v-ie6 .v-table-header-wrap, .v-ie6 .v-table-footer-wrap, .v-ie6 .v-table-column-selector { + position: relative; +} + +.v-ie6 .v-table.v-disabled, .v-ie7 .v-table.v-disabled { + position: relative; +} + +.v-table-footer-wrap, .white .v-table-footer-wrap { + text-transform: none; + font-size: 12px; + font-weight: normal; +} + +.v-table-footer td, .white .v-table-footer td { + border-color: #c2c3c4; +} + +.v-table-footer-container { + padding-right: 7px; +} + +.v-table-header, .v-table-footer, .v-table-footer table { + height: 20px; +} + +.v-table-caption-container, .v-table-header-drag { + padding-top: 4px; + padding-right: 4px; +} + +.v-table-caption-container .v-icon, .v-table-header-drag .v-icon { + height: 16px; + margin: -4px 3px 0 0; + vertical-align: middle; +} + +.v-ie .v-table-caption-container .v-icon, .v-ie .v-table-header-drag .v-icon { + margin-top: -3px; +} + +.v-table-resizer { + height: 20px; + width: 2px; + background: transparent; + border-right: 1px solid #c2c3c4; +} + +.v-table-sort-indicator { + background: transparent; + width: 0px; + height: 20px; +} + +.v-table-header-cell-asc .v-table-sort-indicator { + background: transparent no-repeat right 7px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -945px; + width: 16px; +} + +.v-table-header-cell-desc .v-table-sort-indicator { + background: transparent no-repeat right 7px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -965px; + width: 16px; +} + +.v-table-body, .white .v-table-body { + border-color: #c2c3c4; + background: #ffffff; +} + +.v-table-cell-content { + padding-top: 0; + border-right-color: #d3d4d5; + vertical-align: top; +} + +.v-table-cell-wrapper { + padding-top: 3px; + padding-bottom: 3px; +} + +.v-table-row-odd { + background: #eff0f1; +} + +.v-table-generated-row { + background: #dcdee0; + text-transform: uppercase; + font-size: 10px; + font-weight: bold; + color: #222222; + text-shadow: #f3f5f8 0 1px 0; + line-height: normal; +} + +.v-table-generated-row .v-table-cell-content { + padding-top: 1px; + padding-bottom: 2px; +} + +.v-table-cell-content:last-child { + border-right-color: transparent; +} + +.v-table .v-selected, .black .v-table .v-selected { + background: #4d749f url(common/img/sel-bg.png) repeat-x; + color: #ffffff; + text-shadow: #3b5a7a 0 1px 0; +} + +.v-table .v-selected .v-table-cell-content { + border-right-color: #466c90; +} + +.v-table-column-selector { + width: 16px; + height: 20px; + margin-top: -20px; + background: transparent no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -985px; +} + +.v-table-column-selector:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1005px; +} + +.v-table-focus-slot-left { + border-left: 1px solid #222222; + margin-bottom: -20px; + width: auto; +} + +.v-table-focus-slot-right { + border-right-color: #222222; + margin-right: 0; +} + +.v-table-header-drag { + padding-left: 6px; + height: 16px; +} + +.v-table-header-drag img { + height: 16px; + margin: -3px 3px 0 0; +} + +.v-table-scrollposition { + width: auto; + background: transparent; + border: none; +} + +.v-table-scrollposition span { + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1025px; + border: 1px solid #939494; + border: none; + border-radius-bottomleft: 4px; + border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + height: 13px; + padding: 4px 30px; + white-space: nowrap; + color: #222222; + text-shadow: #ffffff 0 1px 0; + position: relative; + top: 1px; + -webkit-box-shadow: rgba(0, 0, 0, 0.5) 0 1px 2px; + -moz-box-shadow: rgba(0, 0, 0, 0.5) 0 1px 2px; +} + +.v-table-borderless .v-table-scrollposition span { + top: 0; +} + +.v-contextmenu .v-on, .v-contextmenu .v-off { + display: inline-block; + zoom: 1; + background: transparent no-repeat 0 4px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1047px; + padding-left: 12px; + padding-right: 4px; +} + +.v-contextmenu .v-off { + background-image: none; + color: #666666; +} + +.v-contextmenu .gwt-MenuItem-selected .v-on { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1061px; +} + +.v-table-strong .v-table-header-wrap, .v-table-strong .v-table-header-drag { + border-color: #2b3033; + border-top-color: #2b3033; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1076px; + color: #e7e9ea; + text-shadow: #000000 0 -1px 0; +} + +.v-table-strong .v-table-body { + border-top-color: #2b3033; +} + +.v-table-strong .v-table-resizer { + border-right-color: #1c1f21; +} + +.v-table-strong .v-table-header-cell-asc .v-table-sort-indicator { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1096px; +} + +.v-table-strong .v-table-header-cell-desc .v-table-sort-indicator { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1115px; +} + +.v-table-strong .v-table-column-selector { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1134px; +} + +.v-table-strong .v-table-column-selector:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1154px; +} + +.v-table-strong .v-table-focus-slot-left, .v-table-strong .v-table-focus-slot-right { + border-color: #9ca1a5; +} + +.black .v-table-header-wrap, .black .v-table-header-drag { + border-color: #252729; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -622px; + color: #e7eaee; + text-shadow: #000000 0 -1px 0; +} + +.black .v-table-resizer { + border-right-color: #252729; +} + +.black .v-table-header-cell-asc .v-table-sort-indicator { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: right -642px; +} + +.black .v-table-header-cell-desc .v-table-sort-indicator { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: right -661px; +} + +.black .v-table-column-selector { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -680px; +} + +.black .v-table-column-selector:active { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -700px; +} + +.black .v-table-focus-slot-left, .black .v-table-focus-slot-right { + border-color: #9ca1a5; +} + +.black .v-table-body { + border-color: #252729; + background: transparent; +} + +.black .v-table-cell-content { + border-right-color: #252729; + border-bottom: 1px solid #252729; +} + +.black .v-table-cell-wrapper { + padding-bottom: 2px; +} + +.black .v-table-row-odd { + background: transparent; +} + +.black .v-table .v-selected .v-table-cell-content { + border-bottom: 1px solid #4d749f; +} + +.v-table-borderless .v-table-header-wrap, .v-table-borderless .v-table-body { + border: none; +} + +.v-tabsheet-tabitemcell, .v-tabsheet-spacertd { + height: 32px; +} + +.v-tabsheet-tabitemcell { + background: no-repeat; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1174px; + padding-left: 3px; +} + +.v-tabsheet-tabitemcell-first { + padding-left: 10px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1206px; +} + +.v-tabsheet-tabitem, .v-tabsheet-spacertd div { + border: none; + height: 32px; + background: transparent repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1238px; + padding: 0; + color: #222222; + text-shadow: #ffffff 0 1px 0; +} + +.v-tabsheet-tabitem .v-caption { + border: none; + height: 23px; + background: no-repeat right top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1270px; + padding: 9px 8px 0 6px; +} + +.v-tabsheet-tabitem .v-caption-closable { + padding-right: 0; + padding-left: 17px; +} + +.v-tabsheet-tabitem .v-captiontext { + height: 16px; + line-height: 16px; +} + +.v-tabsheet-caption-close { + float: right; + width: 19px; + height: 18px; + margin: -1px -1px 0; + padding-left: 2px; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1302px; + cursor: default; + text-indent: -999px; + overflow: hidden; + font-size: 14px; + font-weight: normal; +} + +.v-ff .v-tabsheet-caption-close, .v-ie7 .v-tabsheet-caption-close { + margin-top: -17px; +} + +.v-ie6 .v-tabsheet-caption-close { + float: none; +} + +.v-tabsheet-caption-close:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1320px; +} + +.v-tabsheet-caption-close:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1338px; +} + +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1356px; +} + +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1374px; +} + +.v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1392px; +} + +.v-tabsheet-tabitemcell-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1410px; +} + +.v-tabsheet-tabitemcell-selected-first { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1442px; +} + +.v-tabsheet-tabitem-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1474px; + color: #232930; +} + +.v-tabsheet-tabitem-selected .v-caption { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1506px; +} + +.v-tabsheet-spacertd div { + margin-right: 4px; +} + +.v-tabsheet-spacertd { + background: transparent no-repeat right top; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1538px; +} + +.blue .v-tabsheet-content { + border-color: #a8bcc5; +} + +.v-tabsheet-content, .white .v-tabsheet-content { + border: 1px solid #dcdcdc; + border-bottom: none; + border-top: none; + color: #222222; + text-shadow: none; +} + +.v-tabsheet-tabsheetpanel { + background: #ffffff; +} + +.v-sa .v-tabsheet-content, .v-ff3 .v-tabsheet-content { + border-color: rgba(0, 0, 0, 0.1); +} + +.blue .v-tabsheet-deco { + border-color: #92a3ac; + background: #adc2cd; +} + +.v-tabsheet-deco, .white .v-tabsheet-deco { + height: 1px; + border-top: 1px solid #bebebe; + background: #e2e2e2; + overflow: hidden; +} + +.v-sa .v-tabsheet-deco, .v-ff3 .v-tabsheet-deco { + border-top-color: rgba(0, 0, 0, 0.1); + background: rgba(0, 0, 0, 0.08); +} + +.v-tabsheet-tabs .v-icon, .v-tabsheet-tabs .v-captiontext, .v-tabsheet-tabs .v-errorindicator { + display: inline; + float: none; +} + +.v-sa .v-tabsheet-tabs .v-captiontext { + display: inline-block; +} + +.v-tabsheet-tabs .v-icon { + width: 16px !important; + height: 16px !important; +} + +.v-tabsheet-tabs .v-errorindicator { + display: inline-block; + width: 13px; + height: 16px; + background: transparent url(common/icons/error.png) no-repeat 50%; +} + +.v-ff2 .v-tabsheet-tabs .v-icon, .v-ff2 .v-tabsheet-tabs .v-errorindicator { + display: -moz-inline-stack; +} + +.v-ie6 .v-tabsheet-tabs .v-errorindicator { + background-image: url(common/icons/error-ie6.png); +} + +.v-ie .v-tabsheet-tabs .v-errorindicator { + zoom: 1; + display: inline; +} + +.v-ie8 .v-tabsheet-tabs .v-errorindicator, .v-ie9 .v-tabsheet-tabs .v-errorindicator { + display: inline-block; +} + +.v-tabsheet-scroller { + height: 31px; + margin-top: -31px; + padding: 0 3px 0 4px; + border-right: 1px solid #c2c2c2; + border-left: 1px solid #cfcfcf; + position: relative; + float: right; + background: transparent url(tabsheet/img/framed/tab-bg.png) repeat-x left -1px; + width: 36px; +} + +.v-tabsheet-scroller button { + margin-top: 7px; +} + +.v-tabsheet-scrollerPrev, .v-tabsheet-scrollerNext, .v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerNext-disabled { + border: none; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1570px; + width: 18px; + height: 17px; + overflow: hidden; +} + +.v-tabsheet-scroller button::-moz-focus-inner { + border: none; +} + +.v-tabsheet-scrollerNext { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1587px; +} + +.v-tabsheet-scrollerPrev:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1604px; +} + +.v-tabsheet-scrollerNext:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1621px; +} + +.v-tabsheet-scrollerPrev-disabled, .v-tabsheet-scrollerPrev-disabled:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1638px; + opacity: 1; + filter: none; +} + +.v-tabsheet-scrollerNext-disabled, .v-tabsheet-scrollerNext-disabled:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1655px; + opacity: 1; + filter: none; +} + +.v-tabsheet-borderless .v-tabsheet-tabitemcell-first { + padding-left: 7px; + background: url(tabsheet/img/framed/tab-first-left.png) no-repeat -3px 0; +} + +.v-tabsheet-borderless .v-tabsheet-tabitemcell-selected-first { + background: url(tabsheet/img/framed/tab-first-left-sel.png) no-repeat -3px 0; +} + +.v-tabsheet-borderless .v-tabsheet-spacertd div { + margin-right: 0; +} + +.v-tabsheet-borderless .v-tabsheet-spacertd { + background: transparent; +} + +.v-tabsheet-borderless .v-tabsheet-content { + border: none; +} + +.v-tabsheet-borderless .v-tabsheet-deco { + height: 0; + border-top: none; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, .blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, .blue .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + border-color: #7c8a91; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + color: #7c8a91; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #bcd3de; + background: #778d98; +} + +.blue .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #4f6874; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, .white .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div { + border-bottom: 1px solid #bfbfbf; + height: auto; + background: transparent; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell, .v-tabsheet-tabs-minimal .v-tabsheet-spacertd { + height: auto; + background: transparent; + padding-left: 0; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem, .white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem { + border: none; + border-bottom: 1px solid #bfbfbf; + color: #4d748f; + padding: 0; + height: auto; + background: transparent; + text-shadow: none; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption { + padding: 5px 16px; + height: auto; + background: transparent; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitemcell-selected { + background: transparent; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected, .white .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + background: transparent; + border: 1px solid #bfbfbf; + border-bottom: none; + color: #222222; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption { + background: transparent; + padding: 4px 15px 6px 15px; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-tabitem .v-caption-closable, .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected .v-caption-closable { + padding-right: 6px; +} + +.v-tabsheet-content-minimal, .white .v-tabsheet-content-minimal { + border: none; +} + +.v-tabsheet-content-minimal .v-tabsheet-tabsheetpanel { + background: transparent; +} + +.v-tabsheet-deco-minimal, .white .v-tabsheet-deco-minimal { + height: 0; + border: none; +} + +.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller { + margin-top: -20px; + height: 17px; + padding: 0; + border: none; + background: transparent; +} + +.v-tabsheet-tabcontainer-minimal .v-tabsheet-scroller button { + margin-top: 0; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close, .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + text-indent: 0; + background: transparent; + margin-left: 3px; + margin-right: -3px; + padding: 0; + color: #999999; + width: 14px; + height: 14px; + line-height: 14px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + margin-top: 1px; +} + +.v-ff .v-tabsheet-tabs-minimal .v-tabsheet-caption-close, .v-ie7 .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + margin-top: -15px; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover, .white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #ffffff; + background: #aaaaaa; +} + +.v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active, .white .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #777777; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-spacertd div, .black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem, .black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + border-color: #3e4044; + color: #6a7f89; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-tabitem-selected { + color: #c9ccce; +} + +.black .v-tabsheet-content-minimal, .black .v-tabsheet-content-bar { + color: #c9ccce; + text-shadow: #000000 0 0 1px; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close { + color: #72787c; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:hover { + color: #1d2021; + background: #4d5154; +} + +.black .v-tabsheet-tabs-minimal .v-tabsheet-caption-close:active { + background: #626669; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell, .v-tabsheet-tabs-bar .v-tabsheet-spacertd { + height: 20px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-spacertd { + background: transparent; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1673px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-first { + padding-left: 6px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1693px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem, .v-tabsheet-tabs-bar .v-tabsheet-spacertd div { + height: 20px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1713px; + font-size: 11px; + margin: 0; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption { + height: 18px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1733px; + padding: 2px 12px 0 10px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem .v-caption-closable, .v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption-closable { + padding-right: 8px; + padding-left: 14px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close, .v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover, .v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { + text-indent: 0; + background: transparent; + margin-left: 3px; + margin-right: -3px; + padding: 1px 0 0 1px; + color: #3c3c3c; + width: 13px; + height: 13px; + line-height: 12px; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close { + margin-top: 1px; +} + +.v-ff .v-tabsheet-tabs-bar .v-tabsheet-caption-close, .v-ie7 .v-tabsheet-tabs-bar .v-tabsheet-caption-close { + margin-top: -14px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:hover { + background: #bfbfbf; + -webkit-box-shadow: 0 1px 0 #ffffff; +} + +.v-tabsheet-tabs-bar .v-tabsheet-caption-close:active { + background: #a9a9a9; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close { + color: #404142; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:hover { + background: #5e666e; + color: #ffffff; + text-shadow: 0 -1px 0 #222222; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-tabsheet-caption-close:active { + background: #404142; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1753px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitemcell-selected-first { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1773px; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1793px; + color: #232930; +} + +.v-tabsheet-tabs-bar .v-tabsheet-tabitem-selected .v-caption { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: right -1813px; +} + +.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller { + margin-top: -20px; + height: 19px; + border-right: none; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1833px; +} + +.v-tabsheet-tabcontainer-bar .v-tabsheet-scroller button { + margin-top: 1px; +} + +.v-tabsheet-content-bar, .white .v-tabsheet-content-bar { + border: none; +} + +.v-tabsheet-content-bar .v-tabsheet-tabsheetpanel { + background: transparent; +} + +.v-tabsheet-deco-bar, .white .v-tabsheet-deco-bar { + height: 0; + border: none; +} + +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem .v-tabsheet-caption-close, .v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { + visibility: hidden; +} + +.v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected .v-tabsheet-caption-close, .v-tabsheet-tabs-selected-closable .v-tabsheet-tabitem-selected:hover .v-tabsheet-caption-close { + visibility: visible; +} + +.v-tabsheet-tabs-hover-closable .v-tabsheet-caption-close { + visibility: hidden; +} + +.v-tabsheet-tabs-hover-closable .v-tabsheet-tabitem:hover .v-tabsheet-caption-close { + visibility: visible; +} + +.blue .v-textfield, .blue .v-textarea { + border-color: #92a2aa; + border-top-color: #7c8a90; + border-bottom-color: #a1b3bc; +} + +.v-textfield, .v-textarea, .white .v-textfield, .white .v-textarea { + border: 1px solid #bcbdbe; + border-top-color: #a2a3a4; + border-bottom-color: #d2d3d4; + background: #ffffff; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1853px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + margin: 0; + height: 15px; + line-height: normal; +} + +.v-textarea, .white .v-textarea { + background-image: none; + height: auto; +} + +.v-app input.v-textfield, .v-window input.v-textfield, .v-app textarea.v-textarea, .v-window textarea.v-textarea { + padding: 3px 3px 4px; +} + +.v-app .v-textfield-focus, .v-window .v-textfield-focus, .v-popupview-popup .v-textfield-focus, .v-app .v-textarea-focus, .v-window .v-textarea-focus, .v-popupview-popup .v-textarea-focus { + border-color: #5b97d0; + border-top-color: #4f83b4; + border-bottom-color: #5ca0df; + outline: none; + background-color: #ffffff; +} + +input.v-textfield-prompt, textarea.v-textarea-prompt { + font-style: normal; + color: #999999; +} + +.v-app input.v-textfield-small { + font-size: 11px; + line-height: normal; + height: auto; + padding: 2px; +} + +.v-app textarea.v-textarea-small { + font-size: 11px; +} + +.v-table input.v-textfield { + padding: 1px 2px; + height: auto; + line-height: normal; +} + +.v-table-cell-wrapper > input.v-textfield { + margin-top: -2px; + margin-bottom: -2px; +} + +.v-ie6 .v-table-cell-wrapper input.v-textfield { + margin-top: -2px; + margin-bottom: -2px; +} + +.v-ie6 .v-table-cell-wrapper div input.v-textfield { + margin-top: 0; + margin-bottom: 0; +} + +.black .v-textfield, .black .v-textarea { + border-color: #38393a; + border-top-color: #2c2d2e; + border-bottom-color: #3e3f3f; + background: #151717; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -720px; + color: #c9ccce; + text-shadow: #000000 0 0 1px; +} + +.black .v-textarea { + background-image: none; +} + +.v-app .black .v-textfield-focus, .v-window-black .v-textfield-focus, .v-window .black .v-textfield-focus, .v-popupview-popup .black .v-textfield-focus, .v-app .black .v-textarea-focus, .v-window-black .v-textarea-focus, .v-window .black .v-textarea-focus, .v-popupview-popup .black .v-textarea-focus { + border-color: #4b7192; + border-top-color: #3b5a75; + border-bottom-color: #507596; + background-color: #151717; +} + +.black input.v-textfield-prompt { + color: #5f6366; +} + +input.v-textfield-readonly, .black input.v-textfield-readonly, textarea.v-textarea-readonly, .black textarea.v-textarea-readonly { + border: none; + background: transparent; +} + +.v-tree-node { + background: transparent url(tree/img/arrows.png) no-repeat 6px -10px; +} + +.v-ie6 .v-tree-node { + background-image: url(tree/img/arrows-ie6.png); + background-repeat: no-repeat; +} + +.v-ie6 div.v-tree-node-leaf { + background: transparent; +} + +.v-tree-node-expanded { + background-position: -7px 5px; +} + +.v-tree-node-caption { + margin-left: 16px; + padding-bottom: 1px; +} + +.v-tree-node span { + padding: 1px 2px; + display: inline-block; +} + +.v-tree-node-selected span { + background: #4d749f repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1876px; + color: #ffffff; + padding: 1px 2px; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + text-shadow: #2b425a 0 1px 0; + display: inline-block; +} + +.v-tree-node-children { + padding-left: 16px; +} + +.v-ie6 .v-tree-node-ie6compatnode { + width: 14px; + height: 10px; + padding: 1px; +} + +.v-tree-node-caption.v-tree-node-focused span { + padding-left: 1px; + padding-top: 0px; + padding-bottom: 0px; +} + +.v-tree-node-focused span { + border: 1px dotted black; +} + +.v-ie6 .v-tree-node-ie6compatnode.v-tree-node-focused { + padding-left: 0px; +} + +.v-tree .v-tree-node-drag-top { + background-position: 6px -11px; +} + +.v-tree .v-tree-node-drag-top.v-tree-node-expanded { + background-position: -7px 4px; +} + +.v-tree-connectors .v-tree-node-drag-top, .v-tree-connectors .v-tree-node-expanded.v-tree-node-drag-top { + background-position: 2px -53px; +} + +.v-tree-connectors .v-tree-node-drag-top.v-tree-node-leaf { + background-position: 2px 50%; +} + +.v-window { + background: transparent; +} + +.v-window-wrap { + border: 1px solid #808386; +} + +.v-sa .v-window-wrap, .v-ff3 .v-window-wrap, .v-op .v-window-wrap { + border-color: rgba(0, 0, 0, 0.2); +} + +.v-ff2 .v-window-wrap, .v-ie6 .v-window-wrap { + border: none; +} + +.v-ff2 .v-window-outerheader, .v-ie6 .v-window-outerheader { + border: 1px solid #808386; + border-bottom: none; +} + +.v-ff2 .v-window-contents, .v-ie6 .v-window-contents { + border: 1px solid #808386; + border-top: none; + border-bottom: none; +} + +.v-ff2 .v-window-footer, .v-ie6 .v-window-footer { + border: 1px solid #808386; + border-top: none; +} + +.v-window-outerheader { + padding: 12px 32px 0 14px; + height: 25px; + background: black repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1896px; +} + +.v-window-header { + font-weight: bold; + font-size: 12px; + line-height: normal; + color: #ffffff; + text-shadow: #000000 0 -1px 0; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + -ms-text-overflow: ellipsis; +} + +.v-window-error .v-window-header { + padding-left: 13px; + background: transparent url(common/icons/error.png) no-repeat 0 50%; +} + +.v-ie6 .v-window-error .v-window-header { + background-image: url(common/icons/error-ie6.png); +} + +.v-window-resizebox { + width: 15px; + height: 15px; + cursor: se-resize; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1933px; +} + +.v-window-footer { + background-color: white; + background-repeat: repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1948px; + height: 15px; +} + +.v-window-closebox { + top: 12px; + right: 10px; + width: 15px; + height: 16px; + background: transparent; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1963px; +} + +.v-window-closebox:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1979px; +} + +.v-window-closebox:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -1995px; +} + +.v-window-contents { + background: #ffffff; +} + +.v-window-modalitycurtain { + background: #56595b; +} + +.v-window-light .v-window-outerheader { + background: transparent; + padding: 15px 32px 0 18px; + height: 23px; +} + +.v-window-light .v-window-header { + font-size: 16px; + color: #292e34; + text-shadow: none; +} + +.v-window-light .v-window-resizebox { + width: 12px; + height: 12px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2011px; +} + +.v-window-light .v-window-footer { + background: transparent; + height: 12px; +} + +.v-window-light .v-window-closebox { + right: 1px; + top: 17px; + width: 19px; + height: 15px; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2023px; +} + +.v-window-light .v-window-closebox:hover { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2038px; +} + +.v-window-light .v-window-closebox:active { + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2053px; +} + +.v-window-light .v-window-contents { + background: transparent; +} + +.v-window-light .v-window-wrap2 { + background: #f7f7f8 repeat-x; + background-image: url(common/img/vertical-sprites.png); + -background-image: url(common/img/vertical-sprites-ie6.png); + background-position: left -2068px; +} + +.v-ie6 .v-window-light .v-window-wrap2 { + background-image: none; +} + +.v-window-black .v-window-wrap { + border-color: #2e3030; + border-radius: 8px; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + overflow: hidden; +} + +.v-sa .v-window-black .v-window-wrap, .v-ff3 .v-window-black .v-window-wrap, .v-op .v-window-black .v-window-wrap { + border-color: rgba(0, 0, 0, 0.8); +} + +.v-window-black .v-window-wrap2 { + background-color: #1d2021; + -moz-border-radius: 7px; + -webkit-border-radius: 7px; +} + +.v-sa .v-window-black .v-window-wrap2, .v-ff3 .v-window-black .v-window-wrap2, .v-op .v-window-black .v-window-wrap2 { + background-color: rgba(29, 32, 33, 0.9); +} + +.v-window-black .v-window-outerheader { + height: auto; + padding: 7px 14px; + height: 15px; + background: transparent repeat-x; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -743px; + text-align: center; + -moz-border-radius-topright: 7px; + -moz-border-radius-topleft: 7px; + -webkit-border-top-right-radius: 7px; + -webkit-border-top-left-radius: 7px; + overflow: hidden; + border: none; +} + +.v-window-black .v-window-header { + font-size: 12px; + font-weight: normal; + color: #dddfe1; +} + +.v-window-black .v-window-closebox { + top: 8px; +} + +.v-window-black .v-window-footer { + background: transparent; + border: none; + height: 14px; +} + +.v-window-black .v-window-resizebox { + background: transparent no-repeat; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -772px; + width: 14px; + height: 14px; +} + +.v-ie6 .v-window-black .v-window-resizebox { + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -786px; +} + +.v-ie6 .v-window-black .v-window-contents { + background: transparent url(window/img/black/content-bg-ie6.png) repeat-x; +} + +.v-window-black .v-window-contents { + border: none; + background: transparent repeat-x; + background-image: url(common/img/black-vertical-sprites.png); + -background-image: url(common/img/black-vertical-sprites-ie6.png); + background-position: left -800px; +}
\ No newline at end of file diff --git a/tests/sass/resources/basic/selectors.css b/tests/sass/resources/basic/selectors.css new file mode 100644 index 0000000000..50c5fb7cc5 --- /dev/null +++ b/tests/sass/resources/basic/selectors.css @@ -0,0 +1,103 @@ +.foo { + color: red; +} + +.foo-bar { + color: red; +} + +.foo_bar { + color: red; +} + +.foo .bar { + color: red; +} + +.foo .bar .baz .fee .roo { + color: red; +} + +.foo.bar.baz.fee.roo { + color: red; +} + +.foo.bar .baz.fee.roo .dar { + color: red; +} + +.foo > .bar { + color: red; +} + +#foo { + color: red; +} + +#foo .bar { + color: red; +} + +.foo #bar { + color: red; +} + +#foo.bar { + color: red; +} + +#foo, #bar, .baz, .roo .dar { + color: red; +} + +#foo a, .foo pre img { + color: red; +} + +#foo a.bar { + color: red; +} + +a:link { + color: red; +} + +a.foo:visited, .bar { + color: red; +} + +.v-app input[type="text"] { + color: red; +} + +.foo + .bar { + color: red; +} + +h1 + .foo { + color: red; +} + +.foo * { + color: red; +} + +.foo * h1 { + color: red; +} + +h1 * .foo { + color: red; +} + +* .foo { + color: red; +} + +p::abc { + color: red; +} + +p:first { + color: red; +}
\ No newline at end of file diff --git a/tests/sass/resources/css/control-directives.scss b/tests/sass/resources/css/control-directives.scss new file mode 100644 index 0000000000..0a6f1f7233 --- /dev/null +++ b/tests/sass/resources/css/control-directives.scss @@ -0,0 +1 @@ +Implement a sane test case.
\ No newline at end of file diff --git a/tests/sass/resources/css/extends.css b/tests/sass/resources/css/extends.css new file mode 100644 index 0000000000..d1c903f166 --- /dev/null +++ b/tests/sass/resources/css/extends.css @@ -0,0 +1,13 @@ +.error, .badError { + border: 1px #f00; + background: #fdd; +} + +.error.intrusion, .badError.intrusion { + font-size: 1.3em; + font-weight: bold; +} + +.badError { + border-width: 3px; +}
\ No newline at end of file diff --git a/tests/sass/resources/css/functions.css b/tests/sass/resources/css/functions.css new file mode 100644 index 0000000000..3757096667 --- /dev/null +++ b/tests/sass/resources/css/functions.css @@ -0,0 +1,14 @@ +.main { + margin: 2px; + border: 11px; + border: 10px; + border: 10px; + color: hsl(0, 0%, 30%); + color: hsl(25, 100%, 50%); + color: rgb(36, 0, 0); + color: rgb(240, 0, 0); + color: #200; + color: #240000; + color: #f00; + color: #f00000; +} diff --git a/tests/sass/resources/css/imports.css b/tests/sass/resources/css/imports.css new file mode 100644 index 0000000000..5b1001802a --- /dev/null +++ b/tests/sass/resources/css/imports.css @@ -0,0 +1,11 @@ +.caption { + border: 1px solid black; + background: #ff0000; + padding: 10px; + margin: 10px; +} + +.text { + font-weight: bold; + color: red; +}
\ No newline at end of file diff --git a/tests/sass/resources/css/mixins.css b/tests/sass/resources/css/mixins.css new file mode 100644 index 0000000000..cd5c9b85aa --- /dev/null +++ b/tests/sass/resources/css/mixins.css @@ -0,0 +1,41 @@ +.main { + border: 1px solid black; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + font-family: arial; + font-size: 16px; + font-weight: bold; +} + +.footer { + border: 2px solid black; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; +} + +.header { + width: 100%; +} + +.main { + width: 100%; + height: 100%; +} + +.footer { + width: 100%; +} + +@media print { + .v-view { + overflow: visible; + } +} + +font-family: arial; + +font-size: 16px; + +font-weight: bold;
\ No newline at end of file diff --git a/tests/sass/resources/css/nested-properties.css b/tests/sass/resources/css/nested-properties.css new file mode 100644 index 0000000000..79b21e632b --- /dev/null +++ b/tests/sass/resources/css/nested-properties.css @@ -0,0 +1,5 @@ +li { + font-family: serif; + font-weight: bold; + font-size: 1.2em; +}
\ No newline at end of file diff --git a/tests/sass/resources/css/nesting.css b/tests/sass/resources/css/nesting.css new file mode 100644 index 0000000000..2400c73d43 --- /dev/null +++ b/tests/sass/resources/css/nesting.css @@ -0,0 +1,47 @@ +.top-bar { + color: red; +} + +.top-bar .alt { + color: blue; +} + +.menu { + background-color: red; +} + +.menu a { + color: blue; +} + +.caption { + padding: 10px; +} + +.caption .text, .caption .header { + color: green; +} + +.footer { + padding: 10px; +} + +.footer .left, .footer .right { + color: purple; +} + +.footer .left a, .footer .right a { + color: orange; +} + +.main { + color: red; +} + +.main .second.third { + color: blue; +} + +.main .second.third .fourth { + color: black; +} diff --git a/tests/sass/resources/css/parent-import.css b/tests/sass/resources/css/parent-import.css new file mode 100644 index 0000000000..f67d17f8b4 --- /dev/null +++ b/tests/sass/resources/css/parent-import.css @@ -0,0 +1,25 @@ +.content-navigation { + border-color: #3bbfce; + color: #0000ff; +} + +.border { + padding: 8px; + margin: 8px; + border-color: #3bbfce; +} + +.body { + background-image: url(../folder-test2/bg.png); + background: transparent url(../folder-test2/img/loading-indicator.gif); + background-image: url(http://abc/bg.png); + background-image: url(/abc/bg.png); +} + +.base { + color: red; +} + +.text { + font-weight: bold; +}
\ No newline at end of file diff --git a/tests/sass/resources/css/parent-selector.css b/tests/sass/resources/css/parent-selector.css new file mode 100644 index 0000000000..9c7140e313 --- /dev/null +++ b/tests/sass/resources/css/parent-selector.css @@ -0,0 +1,24 @@ +a { + font-weight: bold; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +body.firefox a { + font-weight: normal; +} + +#main { + color: black; +} + +#main a { + font-weight: bold; +} + +#main a:hover { + color: red; +}
\ No newline at end of file diff --git a/tests/sass/resources/css/variables.css b/tests/sass/resources/css/variables.css new file mode 100644 index 0000000000..67ca5fdb7a --- /dev/null +++ b/tests/sass/resources/css/variables.css @@ -0,0 +1,11 @@ +.content-navigation { + border-color: #3bbfce; + color: #0000ff; + font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; +} + +.border { + padding: 8px; + margin: 8px; + border-color: #3bbfce; +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/_partial-for-import.scss b/tests/sass/resources/scss/_partial-for-import.scss new file mode 100644 index 0000000000..32c3149a5b --- /dev/null +++ b/tests/sass/resources/scss/_partial-for-import.scss @@ -0,0 +1,9 @@ +$foo : red; + +.caption { + $side: right; + border: 1px solid black; + background: #ff0000; + padding: 10px; + margin: 10px; +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/control-directives.scss b/tests/sass/resources/scss/control-directives.scss new file mode 100644 index 0000000000..febd563f19 --- /dev/null +++ b/tests/sass/resources/scss/control-directives.scss @@ -0,0 +1,14 @@ +@for $i from 1 through 3 { + .item-#{$i} { width: 2em * $i; } +} + +@while $i > 0 { + .item-#{$i} { width: 2em * $i; } + $i: $i - 2; +} + +@each $animal in puma, sea-slug, egret, salamander { + .#{$animal}-icon { + background-image: url('/images/#{$animal}.png'); + } +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/extends.scss b/tests/sass/resources/scss/extends.scss new file mode 100644 index 0000000000..c9e0f85381 --- /dev/null +++ b/tests/sass/resources/scss/extends.scss @@ -0,0 +1,13 @@ +.error { + border: 1px #f00; + background: #fdd; +} +.error.intrusion { + font-size: 1.3em; + font-weight: bold; +} + +.badError { + @extend .error; + border-width: 3px; +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test/parent-import.scss b/tests/sass/resources/scss/folder-test/parent-import.scss new file mode 100644 index 0000000000..b3f6c8000e --- /dev/null +++ b/tests/sass/resources/scss/folder-test/parent-import.scss @@ -0,0 +1,6 @@ +@import "../folder-test2/variables.scss"; +@import "../folder-test2/url"; +@import "../folder-test2/base-imported.scss"; +.text { + font-weight: bold; +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/base-imported.scss b/tests/sass/resources/scss/folder-test2/base-imported.scss new file mode 100644 index 0000000000..17d801e4aa --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/base-imported.scss @@ -0,0 +1 @@ +@import "base.scss";
\ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/base.scss b/tests/sass/resources/scss/folder-test2/base.scss new file mode 100644 index 0000000000..57ca0bb7a2 --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/base.scss @@ -0,0 +1,3 @@ +.base{ + color: red; +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/url.scss b/tests/sass/resources/scss/folder-test2/url.scss new file mode 100644 index 0000000000..a4be967ad7 --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/url.scss @@ -0,0 +1,6 @@ +.body{ + background-image: url(bg.png); + background: transparent url(img/loading-indicator.gif); + background-image: url(http://abc/bg.png); + background-image: url(/abc/bg.png); +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/folder-test2/variables.scss b/tests/sass/resources/scss/folder-test2/variables.scss new file mode 100644 index 0000000000..2d06d36650 --- /dev/null +++ b/tests/sass/resources/scss/folder-test2/variables.scss @@ -0,0 +1,14 @@ +$blue: #3bbfce; +$margin: 8px; + +.content-navigation { + border-color: $blue; + $blue: #0000ff; + color: $blue; +} + +.border { + padding: $margin; + margin: $margin; + border-color: $blue; +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/functions.scss b/tests/sass/resources/scss/functions.scss new file mode 100644 index 0000000000..abf6f6187d --- /dev/null +++ b/tests/sass/resources/scss/functions.scss @@ -0,0 +1,16 @@ +.main { + margin: abs(-2px); + border: ceil(10.4px); + border: floor(10.4px); + border: round(10.4px); + color: lighten(hsl(0, 0%, 0%), 30%); + color: darken(hsl(25, 100%, 80%), 30%); + color: darken(rgb(136, 0, 0), 20%); + color: lighten(rgb(136, 0, 0), 20%); + color: darken(#880000, 20%); + color: darken(#800, 20%); + color: lighten(#880000, 20%); + color: lighten(#800, 20%); +} + + diff --git a/tests/sass/resources/scss/imports.scss b/tests/sass/resources/scss/imports.scss new file mode 100644 index 0000000000..4d53a120d2 --- /dev/null +++ b/tests/sass/resources/scss/imports.scss @@ -0,0 +1,6 @@ +@import "_partial-for-import"; + +.text { + font-weight: bold; + color: $foo; +} diff --git a/tests/sass/resources/scss/interpolation.scss b/tests/sass/resources/scss/interpolation.scss new file mode 100644 index 0000000000..5859a9838b --- /dev/null +++ b/tests/sass/resources/scss/interpolation.scss @@ -0,0 +1,3 @@ +$name: foo; +$attr: border; +p.#{$name}abc { abc#{$attr}-color: blue }
\ No newline at end of file diff --git a/tests/sass/resources/scss/mixins.scss b/tests/sass/resources/scss/mixins.scss new file mode 100644 index 0000000000..f16c9a0e06 --- /dev/null +++ b/tests/sass/resources/scss/mixins.scss @@ -0,0 +1,44 @@ +//asfdasdf + +@mixin font-settings { + font-family: arial; + font-size: 16px; + font-weight: bold; +} + +@mixin rounded-borders($thickness, $radius : 3px) { + border: $thickness solid black; + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + border-radius: $radius; +} + +.main { + @include rounded-borders(1px); + @include font-settings; +} + +.footer { + @include rounded-borders(2px, 10px); +} + +@mixin layout { + .header { + width: 100%; + } + .main { + width: 100%; + height: 100%; + } + + .footer { + width: 100%; + } + @media print { + .v-view { + overflow: visible; + } + } + @include font-settings; +} +@include layout;
\ No newline at end of file diff --git a/tests/sass/resources/scss/nested-properties.scss b/tests/sass/resources/scss/nested-properties.scss new file mode 100644 index 0000000000..e12a83aa2d --- /dev/null +++ b/tests/sass/resources/scss/nested-properties.scss @@ -0,0 +1,7 @@ +li { + font: { + family: serif;; + weight: bold; + size: 1.2em + } +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/nesting.scss b/tests/sass/resources/scss/nesting.scss new file mode 100644 index 0000000000..0336c9e86d --- /dev/null +++ b/tests/sass/resources/scss/nesting.scss @@ -0,0 +1,40 @@ +.top-bar { + color: red; + .alt { + color: blue; + } +} + +.menu { + background-color: red; + a { + color: blue; + } +} + +.caption { + padding: 10px; + .text, .header { + color: green; + } +} + +.footer { + padding: 10px; + .left, .right { + color: purple; + a { + color: orange; + } + } +} + +.main { + color: red; + .second.third { + color: blue; + .fourth { + color: black; + } + } +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/parent-selector.scss b/tests/sass/resources/scss/parent-selector.scss new file mode 100644 index 0000000000..3d0f694801 --- /dev/null +++ b/tests/sass/resources/scss/parent-selector.scss @@ -0,0 +1,14 @@ +a { + font-weight: bold; + text-decoration: none; + &:hover { text-decoration: underline; } + body.firefox & { font-weight: normal; } +} + +#main { + color: black; + a { + font-weight: bold; + &:hover { color: red; } + } +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/reference-parent-selector.css b/tests/sass/resources/scss/reference-parent-selector.css new file mode 100644 index 0000000000..733c8fd42d --- /dev/null +++ b/tests/sass/resources/scss/reference-parent-selector.css @@ -0,0 +1,6 @@ +a { + color: #660000; + &:hover {color: #000000;} + &:visited {color:#660066;} + &:active {color: #ffffff;} +}
\ No newline at end of file diff --git a/tests/sass/resources/scss/variables.scss b/tests/sass/resources/scss/variables.scss new file mode 100644 index 0000000000..2b39ef4a8d --- /dev/null +++ b/tests/sass/resources/scss/variables.scss @@ -0,0 +1,16 @@ +$blue: #3bbfce; +$margin: 8px; +$chameleon-font-family: Arial, Helvetica, "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif; + +.content-navigation { + border-color: $blue; + $blue: #0000ff; + color: $blue; + font-family: $chameleon-font-family; +} + +.border { + padding: $margin; + margin: $margin; + border-color: $blue; +}
\ No newline at end of file diff --git a/tests/sass/src/com/vaadin/sass/AllTests.java b/tests/sass/src/com/vaadin/sass/AllTests.java new file mode 100644 index 0000000000..574b1a4d93 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/AllTests.java @@ -0,0 +1,11 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ CssTestSuite.class, ScssTestSuite.class, VisitorTestSuite.class }) +public class AllTests { + +} diff --git a/tests/sass/src/com/vaadin/sass/CssTestSuite.java b/tests/sass/src/com/vaadin/sass/CssTestSuite.java new file mode 100644 index 0000000000..e15da68e0c --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/CssTestSuite.java @@ -0,0 +1,17 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import com.vaadin.sass.testcases.css.Comments; +import com.vaadin.sass.testcases.css.Media; +import com.vaadin.sass.testcases.css.Properties; +import com.vaadin.sass.testcases.css.Reindeer; +import com.vaadin.sass.testcases.css.Selectors; + +@RunWith(Suite.class) +@SuiteClasses({ Selectors.class, Properties.class, Reindeer.class, Media.class, + Comments.class }) +public class CssTestSuite { +} diff --git a/tests/sass/src/com/vaadin/sass/ScssTestSuite.java b/tests/sass/src/com/vaadin/sass/ScssTestSuite.java new file mode 100644 index 0000000000..9ab0a76597 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/ScssTestSuite.java @@ -0,0 +1,26 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import com.vaadin.sass.testcases.scss.ControlDirectives; +import com.vaadin.sass.testcases.scss.Extends; +import com.vaadin.sass.testcases.scss.Functions; +import com.vaadin.sass.testcases.scss.Imports; +import com.vaadin.sass.testcases.scss.Mixins; +import com.vaadin.sass.testcases.scss.NestedProperties; +import com.vaadin.sass.testcases.scss.Nesting; +import com.vaadin.sass.testcases.scss.ParentImports; +import com.vaadin.sass.testcases.scss.ParentSelector; +import com.vaadin.sass.testcases.scss.Variables; +import com.vaadin.sass.tree.ImportNodeTest; + +@RunWith(Suite.class) +@SuiteClasses({ ControlDirectives.class, Extends.class, Functions.class, + ImportNodeTest.class, Imports.class, Mixins.class, + NestedProperties.class, Nesting.class, ParentImports.class, + Variables.class, ParentSelector.class }) +public class ScssTestSuite { + +} diff --git a/tests/sass/src/com/vaadin/sass/TestBase.java b/tests/sass/src/com/vaadin/sass/TestBase.java new file mode 100644 index 0000000000..6947d24961 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/TestBase.java @@ -0,0 +1,84 @@ +package com.vaadin.sass; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.net.URISyntaxException; + +import org.w3c.css.sac.CSSException; + +public class TestBase { + + protected ScssStylesheet stylesheet; + protected String originalScss; + protected String parsedScss; + protected String comparisonCss; + + public ScssStylesheet getStyleSheet(String filename) + throws URISyntaxException, CSSException, IOException { + File file = getFile(filename); + stylesheet = ScssStylesheet.get(file); + return stylesheet; + } + + public File getFile(String filename) throws URISyntaxException, + CSSException, IOException { + return new File(getClass().getResource(filename).toURI()); + } + + public String getFileContent(String filename) throws IOException, + CSSException, URISyntaxException { + File file = getFile(filename); + return getFileContent(file); + } + + /** + * Read in the full content of a file into a string. + * + * @param file + * the file to be read + * @return a String with the content of the + * @throws IOException + * when file reading fails + */ + public String getFileContent(File file) throws IOException { + StringBuilder content = new StringBuilder(); + + FileReader fileReader = new FileReader(file); + BufferedReader bufferedReader = new BufferedReader(fileReader); + String line = null; + // Handle the first line separately to get the right amount of line + // separators in the loop + if ((line = bufferedReader.readLine()) != null) { + content.append(line); + } + // Handle the rest of the lines + while ((line = bufferedReader.readLine()) != null) { + content.append(System.getProperty("line.separator")); + content.append(line); + } + bufferedReader.close(); + return content.toString(); + } + + public boolean testParser(String file) throws CSSException, IOException, + URISyntaxException { + originalScss = getFileContent(file); + ScssStylesheet sheet = getStyleSheet(file); + parsedScss = sheet.toString(); + return parsedScss.equals(originalScss); + } + + public boolean testCompiler(String scss, String css) { + try { + comparisonCss = getFileContent(css); + ScssStylesheet sheet = getStyleSheet(scss); + sheet.compile(); + parsedScss = sheet.toString(); + } catch (Exception e) { + return false; + } + return parsedScss.equals(comparisonCss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java b/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java new file mode 100644 index 0000000000..46dfce6fe1 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/VisitorTestSuite.java @@ -0,0 +1,14 @@ +package com.vaadin.sass; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +import com.vaadin.sass.testcases.visitor.MixinVisitorTest; +import com.vaadin.sass.testcases.visitor.NestedPropertiesVisitorTest; + +@RunWith(Suite.class) +@SuiteClasses({ NestedPropertiesVisitorTest.class, MixinVisitorTest.class }) +public class VisitorTestSuite { + +} diff --git a/tests/sass/src/com/vaadin/sass/parser/ParserTest.java b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java new file mode 100644 index 0000000000..db7754406d --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/parser/ParserTest.java @@ -0,0 +1,49 @@ +package com.vaadin.sass.parser; + +import java.io.IOException; +import java.io.StringReader; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.InputSource; +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; + +public class ParserTest { + + @Test + public void testParsePropertyValue() throws CSSException, IOException { + Parser parser = new Parser(); + + LexicalUnit value = parser.parsePropertyValue(new InputSource( + new StringReader("$margin/2;"))); + + Assert.assertEquals("margin", value.getStringValue()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, + value.getLexicalUnitType()); + value = value.getNextLexicalUnit(); + Assert.assertEquals(LexicalUnit.SAC_OPERATOR_SLASH, + value.getLexicalUnitType()); + value = value.getNextLexicalUnit(); + Assert.assertEquals(LexicalUnit.SAC_INTEGER, value.getLexicalUnitType()); + Assert.assertEquals(2, value.getIntegerValue()); + + } + + @Test + public void testCanIngoreSingleLineComment() { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + try { + parser.parseStyleSheet(new InputSource(new StringReader( + "//kjaljsföajsfalkj\n@12abcg;"))); + Assert.assertTrue(true); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + } +}
\ No newline at end of file diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java b/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java new file mode 100644 index 0000000000..c0690418e2 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Comments.java @@ -0,0 +1,23 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Comments extends TestBase { + String css = "/basic/comments.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java new file mode 100644 index 0000000000..c80ebeac56 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/EmptyBlock.java @@ -0,0 +1,23 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class EmptyBlock extends TestBase { + String css = "/basic/empty_block.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java new file mode 100644 index 0000000000..fd57f1c982 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Interpolation.java @@ -0,0 +1,33 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; + +public class Interpolation extends TestBase { + String scss = "/scss/interpolation.scss"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + + Assert.assertEquals(3, root.getChildren().size()); + BlockNode blockNodeWithInterpolation = (BlockNode) root.getChildren() + .get(2); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Media.java b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java new file mode 100644 index 0000000000..21ab421ce4 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Media.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Media extends TestBase { + + String css = "/basic/media.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java new file mode 100644 index 0000000000..e140a40a97 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Properties.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Properties extends TestBase { + + String css = "/basic/properties.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java new file mode 100644 index 0000000000..9a82096026 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Reindeer.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Reindeer extends TestBase { + + String css = "/basic/reindeer.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java new file mode 100644 index 0000000000..f8259e85c3 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/css/Selectors.java @@ -0,0 +1,24 @@ +package com.vaadin.sass.testcases.css; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.TestBase; + +public class Selectors extends TestBase { + + String css = "/basic/selectors.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + testParser(css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + originalScss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java new file mode 100644 index 0000000000..d42199d1a6 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ControlDirectives.java @@ -0,0 +1,40 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; + +public class ControlDirectives extends TestBase { + + String scss = "/scss/control-directives.scss"; + String css = "/css/control-directives.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertNotNull(root); + Assert.fail("Implement assert nodes"); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java new file mode 100644 index 0000000000..fa0d323528 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Extends.java @@ -0,0 +1,40 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.ExtendNode; + +public class Extends extends TestBase { + String scss = "/scss/extends.scss"; + String css = "/css/extends.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + + Assert.assertTrue(root.getChildren().get(2).getChildren().get(0) instanceof ExtendNode); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java new file mode 100644 index 0000000000..d3085f675c --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Functions.java @@ -0,0 +1,42 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; + +public class Functions extends TestBase { + + String scss = "/scss/functions.scss"; + String css = "/css/functions.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(1, root.getChildren().size()); + BlockNode blockNode = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(12, blockNode.getChildren().size()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java new file mode 100644 index 0000000000..bcee04f46f --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Imports.java @@ -0,0 +1,42 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.ImportNode; + +public class Imports extends TestBase { + + String scss = "/scss/imports.scss"; + String css = "/css/imports.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + ImportNode importNode = (ImportNode) root.getChildren().get(0); + Assert.assertEquals("_partial-for-import", importNode.getUri()); + Assert.assertFalse(importNode.isPureCssImport()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java new file mode 100644 index 0000000000..a4ecf75a35 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Mixins.java @@ -0,0 +1,103 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; +import org.w3c.css.sac.LexicalUnit; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.MediaNode; +import com.vaadin.sass.tree.MixinDefNode; +import com.vaadin.sass.tree.MixinNode; + +public class Mixins extends TestBase { + + String scss = "/scss/mixins.scss"; + String css = "/css/mixins.css"; + + @Test + public void testParser() throws CSSException, URISyntaxException, + IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + + MixinDefNode mixinDefNode0 = (MixinDefNode) root.getChildren().get(0); + Assert.assertEquals("font-settings", mixinDefNode0.getName()); + Assert.assertTrue(mixinDefNode0.getArglist().isEmpty()); + Assert.assertEquals(3, mixinDefNode0.getChildren().size()); + + MixinDefNode mixinDefNode1 = (MixinDefNode) root.getChildren().get(1); + Assert.assertEquals("rounded-borders", mixinDefNode1.getName()); + Assert.assertEquals(2, mixinDefNode1.getArglist().size()); + Assert.assertEquals("thickness", mixinDefNode1.getArglist().get(0) + .getName()); + Assert.assertEquals("radius", mixinDefNode1.getArglist().get(1) + .getName()); + Assert.assertEquals(LexicalUnit.SAC_PIXEL, mixinDefNode1.getArglist() + .get(1).getExpr().getLexicalUnitType()); + Assert.assertEquals(3f, mixinDefNode1.getArglist().get(1).getExpr() + .getFloatValue()); + + Assert.assertEquals(4, mixinDefNode1.getChildren().size()); + + BlockNode mainBlockNode = (BlockNode) root.getChildren().get(2); + Assert.assertEquals(2, mainBlockNode.getChildren().size()); + MixinNode mixinNode0MainBlock = (MixinNode) mainBlockNode.getChildren() + .get(0); + Assert.assertEquals("rounded-borders", mixinNode0MainBlock.getName()); + Assert.assertEquals(1f, mixinNode0MainBlock.getArglist().get(0) + .getFloatValue()); + Assert.assertEquals(LexicalUnit.SAC_PIXEL, mixinNode0MainBlock + .getArglist().get(0).getLexicalUnitType()); + MixinNode mixinNOde1MainBlock = (MixinNode) mainBlockNode.getChildren() + .get(1); + Assert.assertEquals("font-settings", mixinNOde1MainBlock.getName()); + Assert.assertTrue(mixinNOde1MainBlock.getArglist().isEmpty()); + + MixinNode mixinNode1MainBlock = (MixinNode) mainBlockNode.getChildren() + .get(1); + Assert.assertTrue(mixinNode1MainBlock.getArglist().isEmpty()); + + BlockNode footerBlockNode = (BlockNode) root.getChildren().get(3); + MixinNode mixinNodeFooterBlock = (MixinNode) footerBlockNode + .getChildren().get(0); + Assert.assertEquals(2f, mixinNodeFooterBlock.getArglist().get(0) + .getFloatValue()); + Assert.assertEquals("px", mixinNodeFooterBlock.getArglist().get(0) + .getDimensionUnitText()); + + Assert.assertEquals(10f, mixinNodeFooterBlock.getArglist().get(1) + .getFloatValue()); + Assert.assertEquals("px", mixinNodeFooterBlock.getArglist().get(1) + .getDimensionUnitText()); + + Assert.assertTrue(root.getChildren().get(4) instanceof MixinDefNode); + Assert.assertTrue(root.getChildren().get(4).getChildren().get(3) instanceof MediaNode); + Assert.assertTrue(root.getChildren().get(4).getChildren().get(4) instanceof MixinNode); + + MixinNode topLevelMixin = (MixinNode) root.getChildren().get(5); + Assert.assertEquals("layout", topLevelMixin.getName()); + + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } + +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java new file mode 100644 index 0000000000..a236eeac12 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/NestedProperties.java @@ -0,0 +1,57 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.NestPropertiesNode; +import com.vaadin.sass.tree.RuleNode; + +public class NestedProperties extends TestBase { + String scss = "/scss/nested-properties.scss"; + String css = "/css/nested-properties.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(1, root.getChildren().size()); + + BlockNode blockNode = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(1, blockNode.getChildren().size()); + + NestPropertiesNode nestPropertiesNode = (NestPropertiesNode) blockNode + .getChildren().get(0); + Assert.assertEquals("font", nestPropertiesNode.getName()); + RuleNode nestedProperty0 = (RuleNode) nestPropertiesNode.getChildren() + .get(0); + RuleNode nestedProperty1 = (RuleNode) nestPropertiesNode.getChildren() + .get(1); + RuleNode nestedProperty2 = (RuleNode) nestPropertiesNode.getChildren() + .get(2); + Assert.assertEquals("family", nestedProperty0.getVariable()); + Assert.assertEquals("weight", nestedProperty1.getVariable()); + Assert.assertEquals("size", nestedProperty2.getVariable()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java new file mode 100644 index 0000000000..1ca8bc762b --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Nesting.java @@ -0,0 +1,75 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.BlockNode; + +public class Nesting extends TestBase { + + String scss = "/scss/nesting.scss"; + String css = "/css/nesting.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(5, root.getChildren().size()); + + BlockNode blockNode0 = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(2, blockNode0.getChildren().size()); + BlockNode nestedBlock0 = (BlockNode) blockNode0.getChildren().get(1); + org.junit.Assert.assertEquals(1, nestedBlock0.getChildren().size()); + + BlockNode blockNode1 = (BlockNode) root.getChildren().get(1); + Assert.assertEquals(2, blockNode1.getChildren().size()); + BlockNode nestedBlockInBlock1 = (BlockNode) blockNode1.getChildren() + .get(1); + Assert.assertEquals(1, nestedBlockInBlock1.getChildren().size()); + + BlockNode blockNode2 = (BlockNode) root.getChildren().get(2); + Assert.assertEquals(2, blockNode2.getChildren().size()); + BlockNode nestedBlockInBlock2 = (BlockNode) blockNode2.getChildren() + .get(1); + Assert.assertEquals(1, nestedBlockInBlock2.getChildren().size()); + + BlockNode blockNode3 = (BlockNode) root.getChildren().get(3); + Assert.assertEquals(2, blockNode3.getChildren().size()); + BlockNode nestedBlockInBlock3 = (BlockNode) blockNode3.getChildren() + .get(1); + Assert.assertEquals(2, nestedBlockInBlock3.getChildren().size()); + BlockNode nestednestedBlockInBlock3 = (BlockNode) nestedBlockInBlock3 + .getChildren().get(1); + Assert.assertEquals(1, nestednestedBlockInBlock3.getChildren().size()); + + BlockNode blockNode4 = (BlockNode) root.getChildren().get(4); + Assert.assertEquals(2, blockNode4.getChildren().size()); + BlockNode nestedBlockInBlock4 = (BlockNode) blockNode3.getChildren() + .get(1); + Assert.assertEquals(2, nestedBlockInBlock4.getChildren().size()); + BlockNode nestednestedBlockInBlock4 = (BlockNode) nestedBlockInBlock3 + .getChildren().get(1); + Assert.assertEquals(1, nestednestedBlockInBlock4.getChildren().size()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java new file mode 100644 index 0000000000..b25c8417b8 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentImports.java @@ -0,0 +1,52 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.tree.ImportNode; + +public class ParentImports extends TestBase { + + String scss = "/scss/folder-test/parent-import.scss"; + String css = "/css/parent-import.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + ImportNode importVariableNode = (ImportNode) root.getChildren().get(0); + Assert.assertEquals("../folder-test2/variables.scss", + importVariableNode.getUri()); + Assert.assertFalse(importVariableNode.isPureCssImport()); + + ImportNode importURLNode = (ImportNode) root.getChildren().get(1); + Assert.assertEquals("../folder-test2/url", importURLNode.getUri()); + Assert.assertFalse(importURLNode.isPureCssImport()); + + ImportNode importImportNode = (ImportNode) root.getChildren().get(2); + Assert.assertEquals("../folder-test2/base-imported.scss", + importImportNode.getUri()); + Assert.assertFalse(importImportNode.isPureCssImport()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java new file mode 100644 index 0000000000..0df3fde8eb --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/ParentSelector.java @@ -0,0 +1,47 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.selector.SelectorUtil; +import com.vaadin.sass.tree.BlockNode; + +public class ParentSelector extends TestBase { + String scss = "/scss/parent-selector.scss"; + String css = "/css/parent-selector.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + BlockNode blockNode = (BlockNode) root.getChildren().get(0); + Assert.assertEquals(4, blockNode.getChildren().size()); + BlockNode nestedBlock1 = (BlockNode) blockNode.getChildren().get(2); + Assert.assertEquals("&:hover", + SelectorUtil.toString(nestedBlock1.getSelectorList())); + BlockNode nestedBlock2 = (BlockNode) blockNode.getChildren().get(3); + Assert.assertEquals("body.firefox &", + SelectorUtil.toString(nestedBlock2.getSelectorList())); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java new file mode 100644 index 0000000000..df6bd41fe1 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/scss/Variables.java @@ -0,0 +1,94 @@ +package com.vaadin.sass.testcases.scss; + +import java.io.IOException; +import java.net.URISyntaxException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.w3c.css.sac.CSSException; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.TestBase; +import com.vaadin.sass.handler.SCSSDocumentHandler; +import com.vaadin.sass.handler.SCSSDocumentHandlerImpl; +import com.vaadin.sass.parser.Parser; +import com.vaadin.sass.parser.SCSSLexicalUnit; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; + +public class Variables extends TestBase { + + String scss = "/scss/variables.scss"; + String css = "/css/variables.css"; + + @Test + public void testParser() throws CSSException, IOException { + Parser parser = new Parser(); + SCSSDocumentHandler handler = new SCSSDocumentHandlerImpl(); + parser.setDocumentHandler(handler); + parser.parseStyleSheet(getClass().getResource(scss).getPath()); + ScssStylesheet root = handler.getStyleSheet(); + Assert.assertEquals(5, root.getChildren().size()); + + VariableNode varNode1 = (VariableNode) root.getChildren().get(0); + Assert.assertEquals("blue", varNode1.getName()); + // Assert.assertEquals("blue", varNode1.getExpr().); + + VariableNode varNode2 = (VariableNode) root.getChildren().get(1); + Assert.assertEquals("margin", varNode2.getName()); + Assert.assertEquals(8f, varNode2.getExpr().getFloatValue()); + Assert.assertEquals("px", varNode2.getExpr().getDimensionUnitText()); + + VariableNode varNode3 = (VariableNode) root.getChildren().get(2); + Assert.assertEquals("chameleon-font-family", varNode3.getName()); + + BlockNode blockNode1 = (BlockNode) root.getChildren().get(3); + Assert.assertEquals(4, blockNode1.getChildren().size()); + RuleNode ruleNode1Block1 = (RuleNode) blockNode1.getChildren().get(0); + Assert.assertEquals("border-color", ruleNode1Block1.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode1Block1 + .getValue().getLexicalUnitType()); + Assert.assertEquals("blue", ruleNode1Block1.getValue().getStringValue()); + + VariableNode varNode1Block1 = (VariableNode) blockNode1.getChildren() + .get(1); + Assert.assertEquals("blue", varNode1Block1.getName()); + + RuleNode ruleNode2Block1 = (RuleNode) blockNode1.getChildren().get(2); + Assert.assertEquals("color", ruleNode2Block1.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode2Block1 + .getValue().getLexicalUnitType()); + Assert.assertEquals("blue", ruleNode2Block1.getValue().getStringValue()); + + BlockNode blockNode2 = (BlockNode) root.getChildren().get(4); + RuleNode ruleNode1Block2 = (RuleNode) blockNode2.getChildren().get(0); + Assert.assertEquals("padding", ruleNode1Block2.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode1Block2 + .getValue().getLexicalUnitType()); + Assert.assertEquals("margin", ruleNode1Block2.getValue() + .getStringValue()); + + RuleNode ruleNode2Block2 = (RuleNode) blockNode2.getChildren().get(1); + Assert.assertEquals("margin", ruleNode2Block2.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode2Block2 + .getValue().getLexicalUnitType()); + Assert.assertEquals("margin", ruleNode2Block2.getValue() + .getStringValue()); + + RuleNode ruleNode3Block2 = (RuleNode) blockNode2.getChildren().get(2); + Assert.assertEquals("border-color", ruleNode3Block2.getVariable()); + Assert.assertEquals(SCSSLexicalUnit.SCSS_VARIABLE, ruleNode1Block2 + .getValue().getLexicalUnitType()); + Assert.assertEquals("blue", ruleNode3Block2.getValue().getStringValue()); + } + + @Test + public void testCompiler() throws CSSException, URISyntaxException, + IOException { + testCompiler(scss, css); + Assert.assertEquals("Original CSS and parsed CSS doesn't match", + comparisonCss, parsedScss); + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java new file mode 100644 index 0000000000..0bc6cb8799 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/ImportVisitorTest.java @@ -0,0 +1,9 @@ +package com.vaadin.sass.testcases.visitor; + +import org.junit.Test; + +public class ImportVisitorTest { + @Test + public void canHandleNestedImports() { + } +} diff --git a/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java b/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java new file mode 100644 index 0000000000..8030d4e0b1 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/MixinVisitorTest.java @@ -0,0 +1,263 @@ +package com.vaadin.sass.testcases.visitor; + +import java.util.ArrayList; + +import org.junit.Assert; +import org.junit.Test; +import org.w3c.css.sac.LexicalUnit; + +import com.steadystate.css.parser.LexicalUnitImpl; +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.parser.SCSSLexicalUnit; +import com.vaadin.sass.tree.BlockNode; +import com.vaadin.sass.tree.MixinDefNode; +import com.vaadin.sass.tree.MixinNode; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; +import com.vaadin.sass.visitor.MixinVisitor; + +public class MixinVisitorTest { + private MixinVisitor mixinVisitor = new MixinVisitor(); + + @Test + public void testTraversMixinWithoutArgs() { + ScssStylesheet root = new ScssStylesheet(); + MixinDefNode mixinDefNoArgs = new MixinDefNode("no-args", null); + BlockNode blockNode = new BlockNode(null); + mixinDefNoArgs.appendChild(blockNode); + root.appendChild(mixinDefNoArgs); + + BlockNode blockWithMixin = new BlockNode(null); + MixinNode mixin = new MixinNode("no-args", null); + blockWithMixin.appendChild(mixin); + root.appendChild(blockWithMixin); + + try { + mixinVisitor.traverse(root); + } catch (Exception e) { + Assert.fail(e.getMessage()); + } + + Assert.assertEquals(1, root.getChildren().size()); + BlockNode child = (BlockNode) root.getChildren().get(0); + BlockNode fromMixin = (BlockNode) child.getChildren().get(0); + Assert.assertFalse(fromMixin.hasChildren()); + } + + @Test + public void testTraverseMixinWithNonDefaultArgs() { + ScssStylesheet root = new ScssStylesheet(); + ArrayList<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..48705c157e --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/testcases/visitor/NestedPropertiesVisitorTest.java @@ -0,0 +1,51 @@ +package com.vaadin.sass.testcases.visitor; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.sass.ScssStylesheet; +import com.vaadin.sass.tree.NestPropertiesNode; +import com.vaadin.sass.tree.RuleNode; +import com.vaadin.sass.tree.VariableNode; +import com.vaadin.sass.visitor.NestPropertiesVisitor; + +public class NestedPropertiesVisitorTest { + private NestPropertiesVisitor visitor = new NestPropertiesVisitor(); + + @Test + public void testEmptyTreeNoChange() { + ScssStylesheet root = new ScssStylesheet(); + Assert.assertFalse(root.hasChildren()); + visitor.traverse(root); + Assert.assertFalse(root.hasChildren()); + } + + @Test + public void testNoNestPropertiesNodeNoChange() { + ScssStylesheet root = new ScssStylesheet(); + root.appendChild(new VariableNode("", "")); + Assert.assertEquals(1, root.getChildren().size()); + visitor.traverse(root); + Assert.assertEquals(1, root.getChildren().size()); + } + + @Test + public void testNestedPropertiesCanBeUnnested() { + ScssStylesheet root = new ScssStylesheet(); + NestPropertiesNode nested = new NestPropertiesNode("nested"); + RuleNode child0 = new RuleNode("child0", null, false, null); + RuleNode child1 = new RuleNode("child1", null, true, null); + nested.appendChild(child0); + nested.appendChild(child1); + root.appendChild(nested); + + Assert.assertEquals(1, root.getChildren().size()); + visitor.traverse(root); + Assert.assertEquals(2, root.getChildren().size()); + + for (int i = 0; i < root.getChildren().size(); i++) { + RuleNode node = (RuleNode) root.getChildren().get(i); + Assert.assertEquals("nested-child" + i, node.getVariable()); + } + } +} diff --git a/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java b/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java new file mode 100644 index 0000000000..ff7e4d9034 --- /dev/null +++ b/tests/sass/src/com/vaadin/sass/tree/ImportNodeTest.java @@ -0,0 +1,60 @@ +package com.vaadin.sass.tree; + +import org.junit.Assert; +import org.junit.Test; + +import com.steadystate.css.parser.SACMediaListImpl; + +public class ImportNodeTest { + @Test + public void testIsPureCssImportShouldReturnTrueWhenIsURL() { + ImportNode node = new ImportNode("", null, true); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnTrueWhenStartsWithHttp() { + ImportNode node = new ImportNode("http://abc", null, false); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnTrueWhenEndsWithCss() { + ImportNode node = new ImportNode("abc.css", null, false); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnTrueWhenHasMediaQueries() { + SACMediaListImpl ml = new SACMediaListImpl(); + ml.add("screen"); + ImportNode node = new ImportNode("", ml, false); + Assert.assertTrue(node.isPureCssImport()); + } + + @Test + public void testIsPureCssImportShouldReturnFalseInOtherCases() { + ImportNode node = new ImportNode("", null, false); + Assert.assertFalse(node.isPureCssImport()); + } + + @Test + public void testToStringWhenIsURL() { + ImportNode node = new ImportNode("test", null, true); + Assert.assertEquals("@import url(test);", node.toString()); + } + + @Test + public void testToStringWhenIsNotURL() { + ImportNode node = new ImportNode("test", null, false); + Assert.assertEquals("@import \"test\";", node.toString()); + } + + @Test + public void testToStringWithMediaQueries() { + SACMediaListImpl ml = new SACMediaListImpl(); + ml.add("screen"); + ImportNode node = new ImportNode("test", ml, true); + Assert.assertEquals("@import url(test) screen;", node.toString()); + } +} |