summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--WebContent/VAADIN/themes/base/datefield/datefield.scss2
-rw-r--r--WebContent/VAADIN/themes/base/menubar/menubar.scss2
-rw-r--r--WebContent/VAADIN/themes/chameleon/common/common.scss2
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/button/button.scss4
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss8
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/label/label.scss14
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/notification/notification.scss2
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/panel/panel.scss4
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/selects/selects.scss14
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/table/table.scss6
-rw-r--r--WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss4
-rw-r--r--WebContent/VAADIN/themes/chameleon/compound/compound.scss2
-rw-r--r--WebContent/VAADIN/themes/liferay/button/button.scss4
-rw-r--r--WebContent/VAADIN/themes/runo/common/common.scss6
-rw-r--r--WebContent/VAADIN/themes/runo/label/label.scss2
-rw-r--r--WebContent/VAADIN/themes/runo/notification/notification.scss8
-rw-r--r--client-compiler/src/com/vaadin/sass/linker/SassLinker.java11
-rw-r--r--client/src/com/vaadin/client/ui/dd/VDragAndDropManager.java2
-rw-r--r--server/src/com/vaadin/data/util/HierarchicalContainer.java227
-rw-r--r--server/src/com/vaadin/server/VaadinServlet.java17
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java8
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java1416
-rw-r--r--theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj52
-rw-r--r--theme-compiler/tests/resources/automatic/css/microsoft-extensions.css1
-rw-r--r--theme-compiler/tests/resources/automatic/css/unknown_as_is.css3
-rw-r--r--theme-compiler/tests/resources/automatic/scss/microsoft-extensions.scss1
-rw-r--r--theme-compiler/tests/resources/automatic/scss/unknown_as_is.scss3
-rw-r--r--uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.html42
-rw-r--r--uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.java170
-rw-r--r--uitest/src/com/vaadin/tests/components/uitest/base_theme_test.html432
-rw-r--r--uitest/src/com/vaadin/tests/components/uitest/chameleon_theme_test.html432
-rw-r--r--uitest/src/com/vaadin/tests/components/uitest/liferay_theme_test.html432
-rw-r--r--uitest/src/com/vaadin/tests/components/uitest/runo_theme_test.html432
-rw-r--r--uitest/src/com/vaadin/tests/layouts/TestLayoutClickListeners.html4
34 files changed, 2971 insertions, 798 deletions
diff --git a/WebContent/VAADIN/themes/base/datefield/datefield.scss b/WebContent/VAADIN/themes/base/datefield/datefield.scss
index e6309aadd3..21f544cb72 100644
--- a/WebContent/VAADIN/themes/base/datefield/datefield.scss
+++ b/WebContent/VAADIN/themes/base/datefield/datefield.scss
@@ -42,7 +42,7 @@
.#{$primaryStyleName}-calendarpanel-weeknumber {
color: #999;
border-right: 1px solid #ddd;
- font-size: 0.9em;
+ font-size: 11.7px;
}
.#{$primaryStyleName}-calendarpanel-day,
.#{$primaryStyleName}-calendarpanel-day-today {
diff --git a/WebContent/VAADIN/themes/base/menubar/menubar.scss b/WebContent/VAADIN/themes/base/menubar/menubar.scss
index 732f3d3444..b5f0752c9b 100644
--- a/WebContent/VAADIN/themes/base/menubar/menubar.scss
+++ b/WebContent/VAADIN/themes/base/menubar/menubar.scss
@@ -48,7 +48,7 @@
right: 0;
width: 1em;
height: 1em;
- font-size: 0.9em;
+ font-size: 11.7px;
}
.#{$primaryStyleName}-menuitem-disabled,
.#{$primaryStyleName} span.#{$primaryStyleName}-menuitem-disabled:hover,
diff --git a/WebContent/VAADIN/themes/chameleon/common/common.scss b/WebContent/VAADIN/themes/chameleon/common/common.scss
index 050d100673..2f3dc53ef3 100644
--- a/WebContent/VAADIN/themes/chameleon/common/common.scss
+++ b/WebContent/VAADIN/themes/chameleon/common/common.scss
@@ -25,7 +25,7 @@ $chameleon-line-height: 1.4;
border: 1px solid #c0c0b9;
padding: 1px 5px;
color: #222;
- font-size: 0.9em;
+ font-size: 11.7px;
line-height: normal;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
diff --git a/WebContent/VAADIN/themes/chameleon/components/button/button.scss b/WebContent/VAADIN/themes/chameleon/components/button/button.scss
index 75970cdac7..cfb5ab2917 100644
--- a/WebContent/VAADIN/themes/chameleon/components/button/button.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/button/button.scss
@@ -79,7 +79,7 @@ div.#{$primaryStyleName}-down .#{$primaryStyleName}-wrap {
* Big
******************************************************************************/
.#{$primaryStyleName}-big {
- font-size: 1.2em;
+ font-size: 15.6px;
}
@@ -87,7 +87,7 @@ div.#{$primaryStyleName}-down .#{$primaryStyleName}-wrap {
* Small
******************************************************************************/
.#{$primaryStyleName}-small {
- font-size: 0.85em;
+ font-size: 11.05px;
font-weight: normal;
}
diff --git a/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss b/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss
index bd9c89bb33..e63e96417c 100644
--- a/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/datefield/datefield.scss
@@ -69,7 +69,7 @@ input.#{$primaryStyleName}-textfield {
margin: 0;
padding: 0;
height: auto !important;
- font-size: 0.9em;
+ font-size: 11.7px;
}
.#{$primaryStyleName}-month .#{$primaryStyleName}-textfield {
@@ -134,7 +134,7 @@ td.#{$primaryStyleName}-calendarpanel-nextyear {
}
.#{$primaryStyleName}-calendarpanel-header button {
- font-size: 1em;
+ font-size: 13px;
line-height: normal;
width: 100%;
padding: 0 .8em;
@@ -205,7 +205,7 @@ td.#{$primaryStyleName}-calendarpanel-nextyear {
.#{$primaryStyleName}-calendarpanel-weekdays strong {
display: block;
text-align: right;
- font-size: 0.8em;
+ font-size: 10.4px;
padding: .3em .5em .35em 0;
height: 1.1em;
color: #fff;
@@ -272,7 +272,7 @@ td.#{$primaryStyleName}-calendarpanel-nextyear {
.#{$primaryStyleName}-calendarpanel-time select {
padding: 0;
- font-size: 0.9em;
+ font-size: 11.7px;
margin: 0;
}
diff --git a/WebContent/VAADIN/themes/chameleon/components/label/label.scss b/WebContent/VAADIN/themes/chameleon/components/label/label.scss
index 5952ee2802..736c29f075 100644
--- a/WebContent/VAADIN/themes/chameleon/components/label/label.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/label/label.scss
@@ -18,25 +18,25 @@
.#{$primaryStyleName}-h1,
.#{$primaryStyleName} h1 {
padding: .75em 0 .5em 0;
- font-size: 1.85em;
+ font-size: 24.05px;
}
.#{$primaryStyleName}-h2,
.#{$primaryStyleName} h2 {
padding: .67em 0 .33em 0;
- font-size: 1.4em;
+ font-size: 18.2px;
}
.#{$primaryStyleName}-h3,
.#{$primaryStyleName} h3 {
margin: .71em 0 .29em 0;
- font-size: 1.1em;
+ font-size: 14.3px;
}
.#{$primaryStyleName}-h4,
.#{$primaryStyleName} h4 {
padding: .23em 0;
- font-size: 1em;
+ font-size: 13px;
}
@@ -44,7 +44,7 @@
* Big
******************************************************************************/
.#{$primaryStyleName}-big {
- font-size: 1.2em;
+ font-size: 15.6px;
}
@@ -52,7 +52,7 @@
* Small
******************************************************************************/
.#{$primaryStyleName}-small {
- font-size: 0.9em;
+ font-size: 11.7px;
line-height: 1.3;
opacity: .8;
filter: alpha(opacity=80);
@@ -63,7 +63,7 @@
* Tiny
******************************************************************************/
.#{$primaryStyleName}-tiny {
- font-size: 0.85em;
+ font-size: 11.05px;
line-height: 1.2;
opacity: .7;
filter: alpha(opacity=70);
diff --git a/WebContent/VAADIN/themes/chameleon/components/notification/notification.scss b/WebContent/VAADIN/themes/chameleon/components/notification/notification.scss
index 1218b476f5..fbf78d40c4 100644
--- a/WebContent/VAADIN/themes/chameleon/components/notification/notification.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/notification/notification.scss
@@ -4,7 +4,7 @@ div.#{$primaryStyleName} {
-moz-border-radius: 0;
-webkit-border-radius: 0;
border-radius: 0;
- font-size: 16px;
+ font-size: 16px;
-webkit-box-shadow: 0 2px 5px rgba(0,0,0,.7);
-moz-box-shadow: 0 2px 5px rgba(0,0,0,.7);
box-shadow: 0 2px 5px rgba(0,0,0,.7);
diff --git a/WebContent/VAADIN/themes/chameleon/components/panel/panel.scss b/WebContent/VAADIN/themes/chameleon/components/panel/panel.scss
index bc6a8f555c..bae827b484 100644
--- a/WebContent/VAADIN/themes/chameleon/components/panel/panel.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/panel/panel.scss
@@ -2,7 +2,7 @@
.#{$primaryStyleName}-caption {
background: #b9dcff;
- font-size: 1.2em;
+ font-size: 15.6px;
border: 1px solid #b3b3b3;
border-bottom: none;
padding: .2em .6em;
@@ -84,7 +84,7 @@ div.#{$primaryStyleName}-content-light {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
margin: 1px 0;
- font-size: 1em;
+ font-size: 13px;
line-height: 1.2;
padding: .3em .6em;
}
diff --git a/WebContent/VAADIN/themes/chameleon/components/selects/selects.scss b/WebContent/VAADIN/themes/chameleon/components/selects/selects.scss
index 7810e818bf..7dac94fe9d 100644
--- a/WebContent/VAADIN/themes/chameleon/components/selects/selects.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/selects/selects.scss
@@ -53,11 +53,11 @@
}
&.v-app .#{$primaryStyleName}-suggestpopup-small td {
- font-size: .85em;
+ font-size: 11.05px;
}
&.v-app .#{$primaryStyleName}-suggestpopup-big td {
- font-size: 1.1em;
+ font-size: 14.3px;
}
.#{$primaryStyleName}-big .#{$primaryStyleName}-button {
@@ -112,7 +112,7 @@
}
.#{$primaryStyleName}-status {
- font-size: .85em;
+ font-size: 11.05px;
margin: 1px 0 -3px;
user-select: none;
-webkit-user-select: none;
@@ -126,19 +126,19 @@
}
.#{$primaryStyleName}-suggestpopup-small .#{$primaryStyleName}-status {
- font-size: .8em;
+ font-size: 10.4px;
}
.#{$primaryStyleName}-suggestpopup-big .#{$primaryStyleName}-status {
- font-size: .9em;
+ font-size: 11.7px;
}
.v-select-small .v-select-select {
- font-size: 0.8em;
+ font-size: 10.4px;
}
.v-select-big .v-select-select {
- font-size: 1.2em;
+ font-size: 15.6px;
}
diff --git a/WebContent/VAADIN/themes/chameleon/components/table/table.scss b/WebContent/VAADIN/themes/chameleon/components/table/table.scss
index b3ebf44d63..41f6b2edba 100644
--- a/WebContent/VAADIN/themes/chameleon/components/table/table.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/table/table.scss
@@ -96,7 +96,7 @@ div.#{$primaryStyleName}-focus-slot-right {
}
.#{$primaryStyleName}-scrollposition {
- font-size: 0.9em;
+ font-size: 11.7px;
opacity: .85;
filter: alpha(opacity=85);
}
@@ -106,7 +106,7 @@ div.#{$primaryStyleName}-focus-slot-right {
******************************************************************************/
.#{$primaryStyleName}-small .#{$primaryStyleName}-caption-container,
.#{$primaryStyleName}-small .#{$primaryStyleName}-body {
- font-size: 0.85em;
+ font-size: 11.05px;
}
.#{$primaryStyleName}-small .#{$primaryStyleName}-resizer,
@@ -124,7 +124,7 @@ div.#{$primaryStyleName}-focus-slot-right {
******************************************************************************/
.#{$primaryStyleName}-big .#{$primaryStyleName}-caption-container,
.#{$primaryStyleName}-big .#{$primaryStyleName}-body {
- font-size: 1.2em;
+ font-size: 15.6px;
}
.#{$primaryStyleName}-big .#{$primaryStyleName}-caption-container {
diff --git a/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss b/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss
index 860d91a6e7..787a4a4f91 100644
--- a/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss
+++ b/WebContent/VAADIN/themes/chameleon/components/textfield/textfield.scss
@@ -74,7 +74,7 @@ textarea.v-textarea-readonly {
.v-datefield-small .v-datefield-textfield,
.v-datefield-small .v-datefield-button,
.v-filterselect-small .v-filterselect-input {
- font-size: 0.85em;
+ font-size: 11.05px;
}
@@ -86,7 +86,7 @@ textarea.v-textarea-readonly {
.v-datefield-big .v-datefield-textfield,
.v-datefield-big .v-datefield-button,
.v-filterselect-big .v-filterselect-input {
- font-size: 1.2em;
+ font-size: 15.6px;
}
input.#{$primaryStyleName}-big[type=text],
diff --git a/WebContent/VAADIN/themes/chameleon/compound/compound.scss b/WebContent/VAADIN/themes/chameleon/compound/compound.scss
index b3f0e72f8f..43a8717dbb 100644
--- a/WebContent/VAADIN/themes/chameleon/compound/compound.scss
+++ b/WebContent/VAADIN/themes/chameleon/compound/compound.scss
@@ -66,7 +66,7 @@
.sidebar-menu {
.v-label {
- font-size: 0.85em;
+ font-size: 11.05px;
text-transform: uppercase;
font-weight: bold;
letter-spacing: 0.03em;
diff --git a/WebContent/VAADIN/themes/liferay/button/button.scss b/WebContent/VAADIN/themes/liferay/button/button.scss
index 9835628d31..c604f26af9 100644
--- a/WebContent/VAADIN/themes/liferay/button/button.scss
+++ b/WebContent/VAADIN/themes/liferay/button/button.scss
@@ -28,7 +28,7 @@
.v-button .v-button-wrap,
.v-disabled.v-button .v-button-wrap {
display: block;
- font-size: 11px;
+ font-size: $font-size;
font-weight: bold;
border: 1px solid #c8c9ca;
border-right-color: #9e9e9e;
@@ -75,7 +75,7 @@ button.v-nativebutton-link-pressed,
border-style: none;
background: transparent;
padding: 0;
- font-size: inherit;
+ font-size: $font-size;
-webkit-box-shadow: none;
-mox-box-shadow: none;
-webkit-border-radius: 0;
diff --git a/WebContent/VAADIN/themes/runo/common/common.scss b/WebContent/VAADIN/themes/runo/common/common.scss
index 9d4b4a4858..36447d9593 100644
--- a/WebContent/VAADIN/themes/runo/common/common.scss
+++ b/WebContent/VAADIN/themes/runo/common/common.scss
@@ -4,8 +4,8 @@
background: #e9eced url(img/main-bg.png) repeat-x;
font-family: "Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", geneva, helvetica, arial, tahoma, verdana, sans-serif;
color: #464f52;
- font-size: 13px;
- line-height: 18px;
+ font-size: $font-size;
+ line-height: $line-height;
}
/* Global font styles */
&.v-app,
@@ -32,7 +32,7 @@
.v-drag-element {
font-family: "Trebuchet MS", geneva, helvetica, arial, tahoma, verdana, sans-serif;
color: #464f52;
- font-size: 13px;
+ font-size: $font-size;
}
&.v-app select,
.v-window select {
diff --git a/WebContent/VAADIN/themes/runo/label/label.scss b/WebContent/VAADIN/themes/runo/label/label.scss
index 926f1d2cc3..50792d61a1 100644
--- a/WebContent/VAADIN/themes/runo/label/label.scss
+++ b/WebContent/VAADIN/themes/runo/label/label.scss
@@ -47,7 +47,7 @@
}
.#{$primaryStyleName}-small {
- font-size: .87em;
+ font-size: 11.31px;
line-height: 1.4;
color: #707679;
}
diff --git a/WebContent/VAADIN/themes/runo/notification/notification.scss b/WebContent/VAADIN/themes/runo/notification/notification.scss
index af0a2edc32..b8ffecf243 100644
--- a/WebContent/VAADIN/themes/runo/notification/notification.scss
+++ b/WebContent/VAADIN/themes/runo/notification/notification.scss
@@ -10,7 +10,7 @@
-webkit-border-radius: 3px;
border-radius: 3px;
overflow: hidden;
- font-size: 1.2em;
+ font-size: 15.6px;
-webkit-box-shadow: 0 3px 10px rgba(0,0,0,.3);
-moz-box-shadow: 0 3px 10px rgba(0,0,0,.3);
margin: 10px;
@@ -46,7 +46,7 @@
.#{$primaryStyleName}-tray h1 {
display: block;
font-weight: bold;
- font-size: 0.9em;
+ font-size: 11.7px;
line-height: 1;
background: #3b4245;
padding: 2px 10px;
@@ -57,14 +57,14 @@
}
.#{$primaryStyleName}-tray p {
display: block;
- font-size: 0.8em;
+ font-size: 10.4px;
line-height: 1.2;
margin: 4px 10px 5px 10px;
color: #e4e7ea;
}
.#{$primaryStyleName}-system {
background-color: #ff0a0a;
- font-size: .9em;
+ font-size: 11.7px;
padding: 14px 32px;
}
diff --git a/client-compiler/src/com/vaadin/sass/linker/SassLinker.java b/client-compiler/src/com/vaadin/sass/linker/SassLinker.java
index a568ca9672..88178ba1d0 100644
--- a/client-compiler/src/com/vaadin/sass/linker/SassLinker.java
+++ b/client-compiler/src/com/vaadin/sass/linker/SassLinker.java
@@ -65,6 +65,10 @@ public class SassLinker extends AbstractLinker {
// Create the temporary files.
String partialPath = resource.getPartialPath();
if (partialPath.endsWith(".scss")) {
+ // In my opinion, the SCSS file does not need to be
+ // output to the web content folder, as they can't
+ // be used there
+ toReturn.remove(resource);
String fileName = partialPath;
File path = tempFolder;
@@ -89,11 +93,6 @@ public class SassLinker extends AbstractLinker {
// Store the file info for the compilation
scssFiles.add(new FileInfo(tempfile, partialPath));
-
- // In my opinion, the SCSS file does not need to be
- // output to the web content folder, as they can't
- // be used there
- toReturn.remove(resource);
} else {
logger.log(TreeLogger.WARN, "Duplicate file "
+ tempfile.getPath());
@@ -180,7 +179,7 @@ public class SassLinker extends AbstractLinker {
File tempDir = new File(baseTempPath + File.separator + partialPath);
if (!tempDir.exists()) {
- tempDir.mkdir();
+ tempDir.mkdirs();
}
tempDir.deleteOnExit();
diff --git a/client/src/com/vaadin/client/ui/dd/VDragAndDropManager.java b/client/src/com/vaadin/client/ui/dd/VDragAndDropManager.java
index ac1ae72877..8dfba0649f 100644
--- a/client/src/com/vaadin/client/ui/dd/VDragAndDropManager.java
+++ b/client/src/com/vaadin/client/ui/dd/VDragAndDropManager.java
@@ -283,7 +283,7 @@ public class VDragAndDropManager {
}
/* Singleton */
- private VDragAndDropManager() {
+ protected VDragAndDropManager() {
}
private NativePreviewHandler defaultDragAndDropEventHandler = new DefaultDragAndDropEventHandler();
diff --git a/server/src/com/vaadin/data/util/HierarchicalContainer.java b/server/src/com/vaadin/data/util/HierarchicalContainer.java
index 8338e3c190..6505a96097 100644
--- a/server/src/com/vaadin/data/util/HierarchicalContainer.java
+++ b/server/src/com/vaadin/data/util/HierarchicalContainer.java
@@ -23,6 +23,8 @@ import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import com.vaadin.data.Container;
import com.vaadin.data.Item;
@@ -79,7 +81,12 @@ public class HierarchicalContainer extends IndexedContainer implements
*/
private boolean includeParentsWhenFiltering = true;
- private boolean contentChangedEventsDisabled = false;
+ /**
+ * Counts how many nested contents change disable calls are in progress.
+ *
+ * Pending events are only fired when the counter reaches zero again.
+ */
+ private int contentChangedEventsDisabledCount = 0;
private boolean contentsChangedEventPending;
@@ -401,21 +408,24 @@ public class HierarchicalContainer extends IndexedContainer implements
@Override
public Object addItem() {
disableContentsChangeEvents();
- final Object itemId = super.addItem();
- if (itemId == null) {
- return null;
- }
+ try {
+ final Object itemId = super.addItem();
+ if (itemId == null) {
+ return null;
+ }
- if (!roots.contains(itemId)) {
- roots.add(itemId);
- if (filteredRoots != null) {
- if (passesFilters(itemId)) {
- filteredRoots.add(itemId);
+ if (!roots.contains(itemId)) {
+ roots.add(itemId);
+ if (filteredRoots != null) {
+ if (passesFilters(itemId)) {
+ filteredRoots.add(itemId);
+ }
}
}
+ return itemId;
+ } finally {
+ enableAndFireContentsChangeEvents();
}
- enableAndFireContentsChangeEvents();
- return itemId;
}
@Override
@@ -429,19 +439,28 @@ public class HierarchicalContainer extends IndexedContainer implements
}
private boolean contentsChangeEventsOn() {
- return !contentChangedEventsDisabled;
+ return contentChangedEventsDisabledCount == 0;
}
private void disableContentsChangeEvents() {
- contentChangedEventsDisabled = true;
+ contentChangedEventsDisabledCount++;
}
private void enableAndFireContentsChangeEvents() {
- contentChangedEventsDisabled = false;
- if (contentsChangedEventPending) {
- fireItemSetChange();
+ if (contentChangedEventsDisabledCount <= 0) {
+ getLogger()
+ .log(Level.WARNING,
+ "Mismatched calls to disable and enable contents change events in HierarchicalContainer");
+ contentChangedEventsDisabledCount = 0;
+ } else {
+ contentChangedEventsDisabledCount--;
+ }
+ if (contentChangedEventsDisabledCount == 0) {
+ if (contentsChangedEventPending) {
+ fireItemSetChange();
+ }
+ contentsChangedEventPending = false;
}
- contentsChangedEventPending = false;
}
/*
@@ -452,20 +471,23 @@ public class HierarchicalContainer extends IndexedContainer implements
@Override
public Item addItem(Object itemId) {
disableContentsChangeEvents();
- final Item item = super.addItem(itemId);
- if (item == null) {
- return null;
- }
+ try {
+ final Item item = super.addItem(itemId);
+ if (item == null) {
+ return null;
+ }
- roots.add(itemId);
+ roots.add(itemId);
- if (filteredRoots != null) {
- if (passesFilters(itemId)) {
- filteredRoots.add(itemId);
+ if (filteredRoots != null) {
+ if (passesFilters(itemId)) {
+ filteredRoots.add(itemId);
+ }
}
+ return item;
+ } finally {
+ enableAndFireContentsChangeEvents();
}
- enableAndFireContentsChangeEvents();
- return item;
}
/*
@@ -476,25 +498,28 @@ public class HierarchicalContainer extends IndexedContainer implements
@Override
public boolean removeAllItems() {
disableContentsChangeEvents();
- final boolean success = super.removeAllItems();
-
- if (success) {
- roots.clear();
- parent.clear();
- children.clear();
- noChildrenAllowed.clear();
- if (filteredRoots != null) {
- filteredRoots = null;
- }
- if (filteredChildren != null) {
- filteredChildren = null;
- }
- if (filteredParent != null) {
- filteredParent = null;
+ try {
+ final boolean success = super.removeAllItems();
+
+ if (success) {
+ roots.clear();
+ parent.clear();
+ children.clear();
+ noChildrenAllowed.clear();
+ if (filteredRoots != null) {
+ filteredRoots = null;
+ }
+ if (filteredChildren != null) {
+ filteredChildren = null;
+ }
+ if (filteredParent != null) {
+ filteredParent = null;
+ }
}
+ return success;
+ } finally {
+ enableAndFireContentsChangeEvents();
}
- enableAndFireContentsChangeEvents();
- return success;
}
/*
@@ -505,68 +530,71 @@ public class HierarchicalContainer extends IndexedContainer implements
@Override
public boolean removeItem(Object itemId) {
disableContentsChangeEvents();
- final boolean success = super.removeItem(itemId);
+ try {
+ final boolean success = super.removeItem(itemId);
- if (success) {
- // Remove from roots if this was a root
- if (roots.remove(itemId)) {
+ if (success) {
+ // Remove from roots if this was a root
+ if (roots.remove(itemId)) {
- // If filtering is enabled we might need to remove it from the
- // filtered list also
- if (filteredRoots != null) {
- filteredRoots.remove(itemId);
+ // If filtering is enabled we might need to remove it from
+ // the filtered list also
+ if (filteredRoots != null) {
+ filteredRoots.remove(itemId);
+ }
}
- }
- // Clear the children list. Old children will now become root nodes
- LinkedList<Object> childNodeIds = children.remove(itemId);
- if (childNodeIds != null) {
- if (filteredChildren != null) {
- filteredChildren.remove(itemId);
- }
- for (Object childId : childNodeIds) {
- setParent(childId, null);
+ // Clear the children list. Old children will now become root
+ // nodes
+ LinkedList<Object> childNodeIds = children.remove(itemId);
+ if (childNodeIds != null) {
+ if (filteredChildren != null) {
+ filteredChildren.remove(itemId);
+ }
+ for (Object childId : childNodeIds) {
+ setParent(childId, null);
+ }
}
- }
- // Parent of the item that we are removing will contain the item id
- // in its children list
- final Object parentItemId = parent.get(itemId);
- if (parentItemId != null) {
- final LinkedList<Object> c = children.get(parentItemId);
- if (c != null) {
- c.remove(itemId);
+ // Parent of the item that we are removing will contain the item
+ // id in its children list
+ final Object parentItemId = parent.get(itemId);
+ if (parentItemId != null) {
+ final LinkedList<Object> c = children.get(parentItemId);
+ if (c != null) {
+ c.remove(itemId);
- if (c.isEmpty()) {
- children.remove(parentItemId);
- }
+ if (c.isEmpty()) {
+ children.remove(parentItemId);
+ }
- // Found in the children list so might also be in the
- // filteredChildren list
- if (filteredChildren != null) {
- LinkedList<Object> f = filteredChildren
- .get(parentItemId);
- if (f != null) {
- f.remove(itemId);
- if (f.isEmpty()) {
- filteredChildren.remove(parentItemId);
+ // Found in the children list so might also be in the
+ // filteredChildren list
+ if (filteredChildren != null) {
+ LinkedList<Object> f = filteredChildren
+ .get(parentItemId);
+ if (f != null) {
+ f.remove(itemId);
+ if (f.isEmpty()) {
+ filteredChildren.remove(parentItemId);
+ }
}
}
}
}
+ parent.remove(itemId);
+ if (filteredParent != null) {
+ // Item id no longer has a parent as the item id is not in
+ // the container.
+ filteredParent.remove(itemId);
+ }
+ noChildrenAllowed.remove(itemId);
}
- parent.remove(itemId);
- if (filteredParent != null) {
- // Item id no longer has a parent as the item id is not in the
- // container.
- filteredParent.remove(itemId);
- }
- noChildrenAllowed.remove(itemId);
- }
-
- enableAndFireContentsChangeEvents();
- return success;
+ return success;
+ } finally {
+ enableAndFireContentsChangeEvents();
+ }
}
/**
@@ -579,9 +607,12 @@ public class HierarchicalContainer extends IndexedContainer implements
*/
public boolean removeItemRecursively(Object itemId) {
disableContentsChangeEvents();
- boolean removeItemRecursively = removeItemRecursively(this, itemId);
- enableAndFireContentsChangeEvents();
- return removeItemRecursively;
+ try {
+ boolean removeItemRecursively = removeItemRecursively(this, itemId);
+ return removeItemRecursively;
+ } finally {
+ enableAndFireContentsChangeEvents();
+ }
}
/**
@@ -821,4 +852,8 @@ public class HierarchicalContainer extends IndexedContainer implements
return super.passesFilters(itemId);
}
}
+
+ private static final Logger getLogger() {
+ return Logger.getLogger(HierarchicalContainer.class.getName());
+ }
}
diff --git a/server/src/com/vaadin/server/VaadinServlet.java b/server/src/com/vaadin/server/VaadinServlet.java
index b099767b4f..fbb3750b3b 100644
--- a/server/src/com/vaadin/server/VaadinServlet.java
+++ b/server/src/com/vaadin/server/VaadinServlet.java
@@ -878,6 +878,23 @@ public class VaadinServlet extends HttpServlet implements Constants {
response.setHeader("Cache-Control", cacheControl);
}
+ writeStaticResourceResponse(request, response, resourceUrl);
+ }
+
+ /**
+ * Writes the contents of the given resourceUrl in the response. Can be
+ * overridden to add/modify response headers and similar.
+ *
+ * @param request
+ * The request for the resource
+ * @param response
+ * The response
+ * @param resourceUrl
+ * The url to send
+ * @throws IOException
+ */
+ protected void writeStaticResourceResponse(HttpServletRequest request,
+ HttpServletResponse response, URL resourceUrl) throws IOException {
// Write the resource to the client.
final OutputStream os = response.getOutputStream();
final byte buffer[] = new byte[DEFAULT_BUFFER_SIZE];
diff --git a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java b/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java
index 4b98815a4b..b259e7b69f 100644
--- a/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java
+++ b/theme-compiler/src/com/vaadin/sass/internal/handler/SCSSDocumentHandlerImpl.java
@@ -44,6 +44,7 @@ import com.vaadin.sass.internal.tree.MixinNode;
import com.vaadin.sass.internal.tree.NestPropertiesNode;
import com.vaadin.sass.internal.tree.Node;
import com.vaadin.sass.internal.tree.RuleNode;
+import com.vaadin.sass.internal.tree.SimpleNode;
import com.vaadin.sass.internal.tree.VariableNode;
import com.vaadin.sass.internal.tree.WhileNode;
import com.vaadin.sass.internal.tree.controldirective.EachDefNode;
@@ -293,6 +294,13 @@ public class SCSSDocumentHandlerImpl implements SCSSDocumentHandler {
nodeStack.peek().appendChild(node);
}
+ // rule that is passed to the output as-is (except variable value
+ // substitution) - no children
+ public void unrecognizedRule(String text) {
+ SimpleNode node = new SimpleNode(text);
+ nodeStack.peek().appendChild(node);
+ }
+
@Override
public void endSelector(SelectorList arg0) throws CSSException {
// TODO Auto-generated method stub
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
index d2575e3764..ea2f261475 100644
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
+++ b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java
@@ -567,6 +567,12 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
}
}
break;
+ case DEBUG_SYM:
+ debugDirective();
+ break;
+ case WARN_SYM:
+ warnDirective();
+ break;
case IF_SYM:
ifDirective();
break;
@@ -605,9 +611,10 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
if ((ret == null) || (ret.length() == 0)) {
{if (true) return;}
}
- reportWarningSkipText(l, ret);
if (ret.charAt(0) == '@') {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
+ } else {
+ reportWarningSkipText(l, ret);
}
}
label_8:
@@ -803,6 +810,8 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
case COLON:
case INTERPOLATION:
case NONASCII:
+ case DEBUG_SYM:
+ case WARN_SYM:
case STRING:
case IDENT:
case NUMBER:
@@ -826,6 +835,12 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
break label_15;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DEBUG_SYM:
+ debugDirective();
+ break;
+ case WARN_SYM:
+ warnDirective();
+ break;
case LBRACKET:
case ANY:
case PARENT:
@@ -1210,9 +1225,10 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
String ret;
n = jj_consume_token(ATKEYWORD);
ret=skipStatement();
- reportWarningSkipText(getLocator(), ret);
if ((ret != null) && (ret.charAt(0) == '@')) {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
+ } else {
+ reportWarningSkipText(getLocator(), ret);
}
}
@@ -1302,9 +1318,10 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants {
String ret;
Locator loc = getLocator();
ret=skipStatement();
- reportWarningSkipText(loc, ret);
if ((ret != null) && (n.image.charAt(0) == '@')) {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
+ } else {
+ reportWarningSkipText(loc, ret);
}
}
@@ -1417,7 +1434,8 @@ char connector = ' ';
Token n;
String name = "";
String value = "";
- n = jj_consume_token(MICROSOFT_RULE);
+ // This is not really taking the syntax of filter rules into account
+ n = jj_consume_token(MICROSOFT_RULE);
label_36:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -1443,6 +1461,14 @@ char connector = ' ';
n = jj_consume_token(NUMBER);
value += n.image;
break;
+ case STRING:
+ n = jj_consume_token(STRING);
+ value += n.image;
+ break;
+ case COMMA:
+ n = jj_consume_token(COMMA);
+ value += n.image;
+ break;
case INTERPOLATION:
n = jj_consume_token(INTERPOLATION);
value += n.image;
@@ -1480,10 +1506,12 @@ char connector = ' ';
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
case EQ:
+ case COMMA:
case DOT:
case RPARAN:
case COLON:
case INTERPOLATION:
+ case STRING:
case IDENT:
case NUMBER:
case FUNCTION:
@@ -1606,6 +1634,8 @@ char connector = ' ';
case COLON:
case INTERPOLATION:
case INCLUDE_SYM:
+ case DEBUG_SYM:
+ case WARN_SYM:
case EACH_SYM:
case IF_SYM:
case EXTEND_SYM:
@@ -1657,6 +1687,8 @@ char connector = ' ';
case DOT:
case COLON:
case INTERPOLATION:
+ case DEBUG_SYM:
+ case WARN_SYM:
case IDENT:
case HASH:
styleRuleOrDeclarationOrNestedProperties();
@@ -2485,6 +2517,8 @@ boolean isPseudoElement = false;
case COLON:
case INTERPOLATION:
case INCLUDE_SYM:
+ case DEBUG_SYM:
+ case WARN_SYM:
case EXTEND_SYM:
case IDENT:
case VARIABLE:
@@ -2515,6 +2549,8 @@ boolean isPseudoElement = false;
case DOT:
case COLON:
case INTERPOLATION:
+ case DEBUG_SYM:
+ case WARN_SYM:
case IDENT:
case HASH:
styleRuleOrDeclarationOrNestedProperties();
@@ -2631,6 +2667,8 @@ boolean isPseudoElement = false;
case COLON:
case INTERPOLATION:
case INCLUDE_SYM:
+ case DEBUG_SYM:
+ case WARN_SYM:
case EXTEND_SYM:
case IDENT:
case VARIABLE:
@@ -2661,6 +2699,8 @@ boolean isPseudoElement = false;
case DOT:
case COLON:
case INTERPOLATION:
+ case DEBUG_SYM:
+ case WARN_SYM:
case IDENT:
case HASH:
styleRuleOrDeclarationOrNestedProperties();
@@ -2829,6 +2869,8 @@ boolean isPseudoElement = false;
case COLON:
case INTERPOLATION:
case INCLUDE_SYM:
+ case DEBUG_SYM:
+ case WARN_SYM:
case EXTEND_SYM:
case IDENT:
case VARIABLE:
@@ -2865,6 +2907,8 @@ boolean isPseudoElement = false;
case DOT:
case COLON:
case INTERPOLATION:
+ case DEBUG_SYM:
+ case WARN_SYM:
case IDENT:
case HASH:
styleRuleOrDeclarationOrNestedProperties();
@@ -3019,6 +3063,8 @@ boolean isPseudoElement = false;
case COLON:
case INTERPOLATION:
case INCLUDE_SYM:
+ case DEBUG_SYM:
+ case WARN_SYM:
case EACH_SYM:
case IF_SYM:
case EXTEND_SYM:
@@ -3065,6 +3111,8 @@ boolean isPseudoElement = false;
case DOT:
case COLON:
case INTERPOLATION:
+ case DEBUG_SYM:
+ case WARN_SYM:
case IDENT:
case HASH:
styleRuleOrDeclarationOrNestedProperties();
@@ -3955,10 +4003,42 @@ boolean isPseudoElement = false;
throw new Error("Missing return statement in function");
}
- void debugDirective() throws ParseException {
+ final public void debugDirective() throws ParseException {
+ jj_consume_token(DEBUG_SYM);
+ String content = skipStatementUntilSemiColon();
+ // TODO should evaluate the content expression, call documentHandler.debugDirective() etc.
+ System.out.println(content);
+ label_127:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case S:
+ ;
+ break;
+ default:
+ jj_la1[182] = jj_gen;
+ break label_127;
+ }
+ jj_consume_token(S);
+ }
}
- void warnDirective() throws ParseException {
+ final public void warnDirective() throws ParseException {
+ jj_consume_token(WARN_SYM);
+ String content = skipStatementUntilSemiColon();
+ // TODO should evaluate the content expression, call documentHandler.warnDirective() etc.
+ System.err.println(content);
+ label_128:
+ while (true) {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case S:
+ ;
+ break;
+ default:
+ jj_la1[183] = jj_gen;
+ break label_128;
+ }
+ jj_consume_token(S);
+ }
}
final public Node forDirective() throws ParseException {
@@ -3981,20 +4061,20 @@ boolean isPseudoElement = false;
exclusive = false;
break;
default:
- jj_la1[182] = jj_gen;
+ jj_la1[184] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
to = skipStatementUntilLeftBrace();
- label_127:
+ label_129:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[183] = jj_gen;
- break label_127;
+ jj_la1[185] = jj_gen;
+ break label_129;
}
jj_consume_token(S);
}
@@ -4015,31 +4095,31 @@ boolean isPseudoElement = false;
final public void extendDirective() throws ParseException {
ArrayList<String> list;
jj_consume_token(EXTEND_SYM);
- label_128:
+ label_130:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[184] = jj_gen;
- break label_128;
+ jj_la1[186] = jj_gen;
+ break label_130;
}
jj_consume_token(S);
}
list = selectorList();
- label_129:
+ label_131:
while (true) {
jj_consume_token(SEMICOLON);
- label_130:
+ label_132:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[185] = jj_gen;
- break label_130;
+ jj_la1[187] = jj_gen;
+ break label_132;
}
jj_consume_token(S);
}
@@ -4048,8 +4128,8 @@ boolean isPseudoElement = false;
;
break;
default:
- jj_la1[186] = jj_gen;
- break label_129;
+ jj_la1[188] = jj_gen;
+ break label_131;
}
}
documentHandler.extendDirective(list);
@@ -4076,28 +4156,28 @@ boolean isPseudoElement = false;
LexicalUnit exp;
name = property();
jj_consume_token(COLON);
- label_131:
+ label_133:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[187] = jj_gen;
- break label_131;
+ jj_la1[189] = jj_gen;
+ break label_133;
}
jj_consume_token(S);
}
jj_consume_token(LBRACE);
- label_132:
+ label_134:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[188] = jj_gen;
- break label_132;
+ jj_la1[190] = jj_gen;
+ break label_134;
}
jj_consume_token(S);
}
@@ -4107,29 +4187,29 @@ LexicalUnit exp;
declaration();
break;
default:
- jj_la1[189] = jj_gen;
+ jj_la1[191] = jj_gen;
;
}
- label_133:
+ label_135:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SEMICOLON:
;
break;
default:
- jj_la1[190] = jj_gen;
- break label_133;
+ jj_la1[192] = jj_gen;
+ break label_135;
}
jj_consume_token(SEMICOLON);
- label_134:
+ label_136:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[191] = jj_gen;
- break label_134;
+ jj_la1[193] = jj_gen;
+ break label_136;
}
jj_consume_token(S);
}
@@ -4138,21 +4218,21 @@ LexicalUnit exp;
declaration();
break;
default:
- jj_la1[192] = jj_gen;
+ jj_la1[194] = jj_gen;
;
}
}
jj_consume_token(RBRACE);
documentHandler.endNestedProperties(name);
- label_135:
+ label_137:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[193] = jj_gen;
- break label_135;
+ jj_la1[195] = jj_gen;
+ break label_137;
}
jj_consume_token(S);
}
@@ -4167,11 +4247,17 @@ LexicalUnit exp;
styleRule();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case DEBUG_SYM:
+ debugDirective();
+ break;
+ case WARN_SYM:
+ warnDirective();
+ break;
case IDENT:
declarationOrNestedProperties();
break;
default:
- jj_la1[194] = jj_gen;
+ jj_la1[196] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
@@ -4215,15 +4301,15 @@ LexicalUnit exp;
name = property();
save = token;
jj_consume_token(COLON);
- label_136:
+ label_138:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[195] = jj_gen;
- break label_136;
+ jj_la1[197] = jj_gen;
+ break label_138;
}
jj_consume_token(S);
}
@@ -4262,7 +4348,7 @@ LexicalUnit exp;
important = prio();
break;
default:
- jj_la1[196] = jj_gen;
+ jj_la1[198] = jj_gen;
;
}
Token next = getToken(1);
@@ -4280,15 +4366,15 @@ LexicalUnit exp;
break;
case LBRACE:
jj_consume_token(LBRACE);
- label_137:
+ label_139:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[197] = jj_gen;
- break label_137;
+ jj_la1[199] = jj_gen;
+ break label_139;
}
jj_consume_token(S);
}
@@ -4298,29 +4384,29 @@ LexicalUnit exp;
declaration();
break;
default:
- jj_la1[198] = jj_gen;
+ jj_la1[200] = jj_gen;
;
}
- label_138:
+ label_140:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SEMICOLON:
;
break;
default:
- jj_la1[199] = jj_gen;
- break label_138;
+ jj_la1[201] = jj_gen;
+ break label_140;
}
jj_consume_token(SEMICOLON);
- label_139:
+ label_141:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[200] = jj_gen;
- break label_139;
+ jj_la1[202] = jj_gen;
+ break label_141;
}
jj_consume_token(S);
}
@@ -4329,27 +4415,27 @@ LexicalUnit exp;
declaration();
break;
default:
- jj_la1[201] = jj_gen;
+ jj_la1[203] = jj_gen;
;
}
}
jj_consume_token(RBRACE);
- label_140:
+ label_142:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[202] = jj_gen;
- break label_140;
+ jj_la1[204] = jj_gen;
+ break label_142;
}
jj_consume_token(S);
}
documentHandler.endNestedProperties(name);
break;
default:
- jj_la1[203] = jj_gen;
+ jj_la1[205] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
@@ -4399,15 +4485,15 @@ LexicalUnit exp;
name = property();
save = token;
jj_consume_token(COLON);
- label_141:
+ label_143:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[204] = jj_gen;
- break label_141;
+ jj_la1[206] = jj_gen;
+ break label_143;
}
jj_consume_token(S);
}
@@ -4417,7 +4503,7 @@ LexicalUnit exp;
important = prio();
break;
default:
- jj_la1[205] = jj_gen;
+ jj_la1[207] = jj_gen;
;
}
documentHandler.property(name, exp, important);
@@ -4460,15 +4546,15 @@ LexicalUnit exp;
*/
final public boolean prio() throws ParseException {
jj_consume_token(IMPORTANT_SYM);
- label_142:
+ label_144:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[206] = jj_gen;
- break label_142;
+ jj_la1[208] = jj_gen;
+ break label_144;
}
jj_consume_token(S);
}
@@ -4478,15 +4564,15 @@ LexicalUnit exp;
final public boolean guarded() throws ParseException {
jj_consume_token(GUARDED_SYM);
- label_143:
+ label_145:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[207] = jj_gen;
- break label_143;
+ jj_la1[209] = jj_gen;
+ break label_145;
}
jj_consume_token(S);
}
@@ -4502,15 +4588,15 @@ LexicalUnit exp;
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case DIV:
n = jj_consume_token(DIV);
- label_144:
+ label_146:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[208] = jj_gen;
- break label_144;
+ jj_la1[210] = jj_gen;
+ break label_146;
}
jj_consume_token(S);
}
@@ -4520,15 +4606,15 @@ LexicalUnit exp;
break;
case COMMA:
n = jj_consume_token(COMMA);
- label_145:
+ label_147:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[209] = jj_gen;
- break label_145;
+ jj_la1[211] = jj_gen;
+ break label_147;
}
jj_consume_token(S);
}
@@ -4537,7 +4623,7 @@ LexicalUnit exp;
prev);}
break;
default:
- jj_la1[210] = jj_gen;
+ jj_la1[212] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
@@ -4552,12 +4638,12 @@ LexicalUnit exp;
char op;
first = term(null);
res = first;
- label_146:
+ label_148:
while (true) {
if (jj_2_12(2)) {
;
} else {
- break label_146;
+ break label_148;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case COMMA:
@@ -4565,7 +4651,7 @@ LexicalUnit exp;
res = operator(res);
break;
default:
- jj_la1[211] = jj_gen;
+ jj_la1[213] = jj_gen;
;
}
res = term(res);
@@ -4588,7 +4674,7 @@ LexicalUnit exp;
{if (true) return '+';}
break;
default:
- jj_la1[212] = jj_gen;
+ jj_la1[214] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
@@ -4636,7 +4722,7 @@ LexicalUnit exp;
result = variableTerm(prev);
break;
default:
- jj_la1[213] = jj_gen;
+ jj_la1[215] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
@@ -4687,7 +4773,7 @@ LexicalUnitImpl result = null;
op = unaryOperator();
break;
default:
- jj_la1[214] = jj_gen;
+ jj_la1[216] = jj_gen;
;
}
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -4792,7 +4878,7 @@ LexicalUnitImpl result = null;
result = function(op, prev);
break;
default:
- jj_la1[215] = jj_gen;
+ jj_la1[217] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
@@ -4819,7 +4905,7 @@ LexicalUnitImpl result = null;
s+=".";
break;
default:
- jj_la1[216] = jj_gen;
+ jj_la1[218] = jj_gen;
;
}
n = jj_consume_token(IDENT);
@@ -4866,25 +4952,25 @@ LexicalUnitImpl result = null;
result = unicode(prev);
break;
default:
- jj_la1[217] = jj_gen;
+ jj_la1[219] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
break;
default:
- jj_la1[218] = jj_gen;
+ jj_la1[220] = jj_gen;
jj_consume_token(-1);
throw new ParseException();
}
- label_147:
+ label_149:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[219] = jj_gen;
- break label_147;
+ jj_la1[221] = jj_gen;
+ break label_149;
}
jj_consume_token(S);
}
@@ -4900,15 +4986,15 @@ LexicalUnitImpl result = null;
Token n;
LexicalUnit params = null;
n = jj_consume_token(FUNCTION);
- label_148:
+ label_150:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[220] = jj_gen;
- break label_148;
+ jj_la1[222] = jj_gen;
+ break label_150;
}
jj_consume_token(S);
}
@@ -4950,7 +5036,7 @@ LexicalUnitImpl result = null;
params = expr();
break;
default:
- jj_la1[221] = jj_gen;
+ jj_la1[223] = jj_gen;
;
}
jj_consume_token(RPARAN);
@@ -5421,15 +5507,15 @@ LexicalUnitImpl result = null;
*/
final public void _parseRule() throws ParseException {
String ret = null;
- label_149:
+ label_151:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[222] = jj_gen;
- break label_149;
+ jj_la1[224] = jj_gen;
+ break label_151;
}
jj_consume_token(S);
}
@@ -5437,6 +5523,12 @@ LexicalUnitImpl result = null;
case IMPORT_SYM:
importDeclaration();
break;
+ case DEBUG_SYM:
+ debugDirective();
+ break;
+ case WARN_SYM:
+ warnDirective();
+ break;
case LBRACKET:
case ANY:
case PARENT:
@@ -5457,13 +5549,13 @@ LexicalUnitImpl result = null;
fontFace();
break;
default:
- jj_la1[223] = jj_gen;
+ jj_la1[225] = jj_gen;
ret = skipStatement();
if ((ret == null) || (ret.length() == 0)) {
{if (true) return;}
}
if (ret.charAt(0) == '@') {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
} else {
{if (true) throw new CSSParseException("unrecognize rule: " + ret,
getLocator());}
@@ -5472,15 +5564,15 @@ LexicalUnitImpl result = null;
}
final public void _parseImportRule() throws ParseException {
- label_150:
+ label_152:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[224] = jj_gen;
- break label_150;
+ jj_la1[226] = jj_gen;
+ break label_152;
}
jj_consume_token(S);
}
@@ -5488,15 +5580,15 @@ LexicalUnitImpl result = null;
}
final public void _parseMediaRule() throws ParseException {
- label_151:
+ label_153:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[225] = jj_gen;
- break label_151;
+ jj_la1[227] = jj_gen;
+ break label_153;
}
jj_consume_token(S);
}
@@ -5504,15 +5596,15 @@ LexicalUnitImpl result = null;
}
final public void _parseDeclarationBlock() throws ParseException {
- label_152:
+ label_154:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[226] = jj_gen;
- break label_152;
+ jj_la1[228] = jj_gen;
+ break label_154;
}
jj_consume_token(S);
}
@@ -5521,29 +5613,29 @@ LexicalUnitImpl result = null;
declaration();
break;
default:
- jj_la1[227] = jj_gen;
+ jj_la1[229] = jj_gen;
;
}
- label_153:
+ label_155:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case SEMICOLON:
;
break;
default:
- jj_la1[228] = jj_gen;
- break label_153;
+ jj_la1[230] = jj_gen;
+ break label_155;
}
jj_consume_token(SEMICOLON);
- label_154:
+ label_156:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[229] = jj_gen;
- break label_154;
+ jj_la1[231] = jj_gen;
+ break label_156;
}
jj_consume_token(S);
}
@@ -5552,7 +5644,7 @@ LexicalUnitImpl result = null;
declaration();
break;
default:
- jj_la1[230] = jj_gen;
+ jj_la1[232] = jj_gen;
;
}
}
@@ -5561,15 +5653,15 @@ LexicalUnitImpl result = null;
final public ArrayList<String> _parseSelectors() throws ParseException {
ArrayList<String> p = null;
try {
- label_155:
+ label_157:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case S:
;
break;
default:
- jj_la1[231] = jj_gen;
- break label_155;
+ jj_la1[233] = jj_gen;
+ break label_157;
}
jj_consume_token(S);
}
@@ -5665,71 +5757,61 @@ LexicalUnitImpl result = null;
finally { jj_save(11, xla); }
}
- private boolean jj_3R_310() {
- if (jj_3R_269()) return true;
- return false;
- }
-
- private boolean jj_3R_229() {
- if (jj_3R_251()) return true;
- return false;
- }
-
- private boolean jj_3R_285() {
- if (jj_3R_279()) return true;
- if (jj_scan_token(COLON)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3R_310()) {
- jj_scanpos = xsp;
- if (jj_3R_311()) return true;
- }
+ private boolean jj_3_1() {
+ if (jj_3R_158()) return true;
return false;
}
- private boolean jj_3_1() {
- if (jj_3R_156()) return true;
+ private boolean jj_3R_232() {
+ if (jj_3R_254()) return true;
return false;
}
- private boolean jj_3R_270() {
- if (jj_3R_285()) return true;
+ private boolean jj_3_11() {
+ if (jj_3R_167()) return true;
return false;
}
- private boolean jj_3R_228() {
- if (jj_3R_250()) return true;
+ private boolean jj_3_4() {
+ if (jj_3R_160()) return true;
+ if (jj_3R_161()) return true;
return false;
}
- private boolean jj_3_4() {
- if (jj_3R_158()) return true;
- if (jj_3R_159()) return true;
+ private boolean jj_3R_259() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_11()) {
+ jj_scanpos = xsp;
+ if (jj_3R_274()) {
+ jj_scanpos = xsp;
+ if (jj_3R_275()) {
+ jj_scanpos = xsp;
+ if (jj_3R_276()) return true;
+ }
+ }
+ }
return false;
}
- private boolean jj_3R_226() {
+ private boolean jj_3R_230() {
if (jj_scan_token(COMMA)) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
- if (jj_3R_225()) return true;
+ if (jj_3R_229()) return true;
return false;
}
private boolean jj_3_5() {
- if (jj_3R_156()) return true;
+ if (jj_3R_158()) return true;
return false;
}
- private boolean jj_3R_225() {
- if (jj_3R_159()) return true;
+ private boolean jj_3R_229() {
+ if (jj_3R_161()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
@@ -5742,55 +5824,55 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3_11() {
- if (jj_3R_165()) return true;
+ private boolean jj_3R_264() {
+ if (jj_3R_273()) return true;
return false;
}
- private boolean jj_3R_255() {
+ private boolean jj_3R_248() {
+ if (jj_scan_token(FUNCTION)) return true;
Token xsp;
- xsp = jj_scanpos;
- if (jj_3_11()) {
- jj_scanpos = xsp;
- if (jj_3R_270()) return true;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
+ xsp = jj_scanpos;
+ if (jj_3R_264()) jj_scanpos = xsp;
+ if (jj_scan_token(RPARAN)) return true;
return false;
}
- private boolean jj_3R_180() {
- if (jj_3R_225()) return true;
+ private boolean jj_3R_182() {
+ if (jj_3R_229()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_226()) { jj_scanpos = xsp; break; }
+ if (jj_3R_230()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_260() {
- if (jj_3R_269()) return true;
+ private boolean jj_3R_228() {
+ if (jj_3R_252()) return true;
return false;
}
private boolean jj_3_2() {
- if (jj_3R_156()) return true;
+ if (jj_3R_158()) return true;
return false;
}
- private boolean jj_3R_244() {
- if (jj_scan_token(FUNCTION)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3R_260()) jj_scanpos = xsp;
- if (jj_scan_token(RPARAN)) return true;
+ private boolean jj_3R_227() {
+ if (jj_3R_251()) return true;
return false;
}
- private boolean jj_3R_253() {
+ private boolean jj_3R_226() {
+ if (jj_3R_250()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_257() {
if (jj_scan_token(EACH_SYM)) return true;
Token xsp;
while (true) {
@@ -5806,31 +5888,31 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_224() {
- if (jj_3R_248()) return true;
+ private boolean jj_3R_272() {
+ if (jj_scan_token(SEMICOLON)) return true;
return false;
}
- private boolean jj_3R_181() {
+ private boolean jj_3R_183() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_227()) {
+ if (jj_3R_231()) {
jj_scanpos = xsp;
if (jj_3_2()) {
jj_scanpos = xsp;
- if (jj_3R_228()) {
+ if (jj_3R_232()) {
jj_scanpos = xsp;
- if (jj_3R_229()) {
+ if (jj_3R_233()) {
jj_scanpos = xsp;
- if (jj_3R_230()) {
+ if (jj_3R_234()) {
jj_scanpos = xsp;
- if (jj_3R_231()) {
+ if (jj_3R_235()) {
jj_scanpos = xsp;
- if (jj_3R_232()) {
+ if (jj_3R_236()) {
jj_scanpos = xsp;
if (jj_3_3()) {
jj_scanpos = xsp;
- if (jj_3R_233()) return true;
+ if (jj_3R_237()) return true;
}
}
}
@@ -5842,23 +5924,29 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_227() {
- if (jj_3R_249()) return true;
- return false;
- }
-
- private boolean jj_3R_223() {
- if (jj_3R_247()) return true;
+ private boolean jj_3R_231() {
+ if (jj_3R_253()) return true;
return false;
}
- private boolean jj_3R_222() {
- if (jj_3R_246()) return true;
+ private boolean jj_3R_256() {
+ if (jj_scan_token(EXTEND_SYM)) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+ }
+ if (jj_3R_182()) return true;
+ if (jj_3R_272()) return true;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_272()) { jj_scanpos = xsp; break; }
+ }
return false;
}
- private boolean jj_3R_165() {
- if (jj_3R_180()) return true;
+ private boolean jj_3R_167() {
+ if (jj_3R_182()) return true;
if (jj_scan_token(LBRACE)) return true;
Token xsp;
while (true) {
@@ -5867,7 +5955,7 @@ LexicalUnitImpl result = null;
}
while (true) {
xsp = jj_scanpos;
- if (jj_3R_181()) { jj_scanpos = xsp; break; }
+ if (jj_3R_183()) { jj_scanpos = xsp; break; }
}
if (jj_scan_token(RBRACE)) return true;
while (true) {
@@ -5877,28 +5965,20 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_268() {
- if (jj_scan_token(SEMICOLON)) return true;
+ private boolean jj_3R_249() {
+ if (jj_scan_token(DOT)) return true;
return false;
}
- private boolean jj_3R_252() {
- if (jj_scan_token(EXTEND_SYM)) return true;
+ private boolean jj_3R_225() {
Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (jj_3R_180()) return true;
- if (jj_3R_268()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_268()) { jj_scanpos = xsp; break; }
- }
+ xsp = jj_scanpos;
+ if (jj_3R_249()) jj_scanpos = xsp;
+ if (jj_scan_token(IDENT)) return true;
return false;
}
- private boolean jj_3R_278() {
+ private boolean jj_3R_284() {
Token xsp;
xsp = jj_scanpos;
if (jj_scan_token(75)) {
@@ -5953,7 +6033,7 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_281() {
+ private boolean jj_3R_287() {
if (jj_scan_token(FUNCTION)) return true;
Token xsp;
while (true) {
@@ -5963,7 +6043,7 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_279() {
+ private boolean jj_3R_285() {
if (jj_scan_token(IDENT)) return true;
Token xsp;
while (true) {
@@ -5973,7 +6053,12 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_256() {
+ private boolean jj_3R_224() {
+ if (jj_scan_token(STRING)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_260() {
if (jj_scan_token(VARIABLE)) return true;
Token xsp;
while (true) {
@@ -5983,105 +6068,140 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_245() {
- if (jj_scan_token(DOT)) return true;
+ private boolean jj_3R_223() {
+ if (jj_3R_248()) return true;
return false;
}
- private boolean jj_3R_221() {
+ private boolean jj_3R_181() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_245()) jj_scanpos = xsp;
- if (jj_scan_token(IDENT)) return true;
+ if (jj_3R_224()) {
+ jj_scanpos = xsp;
+ if (jj_3R_225()) {
+ jj_scanpos = xsp;
+ if (jj_3R_226()) {
+ jj_scanpos = xsp;
+ if (jj_3R_227()) {
+ jj_scanpos = xsp;
+ if (jj_3R_228()) return true;
+ }
+ }
+ }
+ }
return false;
}
- private boolean jj_3R_193() {
- if (jj_scan_token(S)) return true;
+ private boolean jj_3R_222() {
+ if (jj_scan_token(DIMEN)) return true;
return false;
}
- private boolean jj_3R_220() {
- if (jj_scan_token(STRING)) return true;
+ private boolean jj_3R_197() {
+ if (jj_scan_token(S)) return true;
return false;
}
- private boolean jj_3R_192() {
- if (jj_scan_token(DOT)) return true;
+ private boolean jj_3R_221() {
+ if (jj_scan_token(KHZ)) return true;
return false;
}
- private boolean jj_3R_219() {
- if (jj_3R_244()) return true;
+ private boolean jj_3R_196() {
+ if (jj_scan_token(DOT)) return true;
return false;
}
- private boolean jj_3R_191() {
+ private boolean jj_3R_195() {
if (jj_scan_token(EQ)) return true;
return false;
}
- private boolean jj_3R_179() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_220()) {
- jj_scanpos = xsp;
- if (jj_3R_221()) {
- jj_scanpos = xsp;
- if (jj_3R_222()) {
- jj_scanpos = xsp;
- if (jj_3R_223()) {
- jj_scanpos = xsp;
- if (jj_3R_224()) return true;
- }
- }
- }
- }
+ private boolean jj_3R_194() {
+ if (jj_scan_token(RPARAN)) return true;
return false;
}
- private boolean jj_3R_190() {
- if (jj_scan_token(RPARAN)) return true;
+ private boolean jj_3R_220() {
+ if (jj_scan_token(HZ)) return true;
return false;
}
- private boolean jj_3R_189() {
+ private boolean jj_3R_193() {
if (jj_scan_token(FUNCTION)) return true;
return false;
}
- private boolean jj_3R_188() {
+ private boolean jj_3R_192() {
if (jj_scan_token(COLON)) return true;
return false;
}
- private boolean jj_3R_187() {
+ private boolean jj_3R_292() {
+ if (jj_scan_token(WARN_SYM)) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ private boolean jj_3R_191() {
if (jj_scan_token(INTERPOLATION)) return true;
return false;
}
- private boolean jj_3R_186() {
+ private boolean jj_3R_219() {
+ if (jj_scan_token(MS)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_190() {
+ if (jj_scan_token(COMMA)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_265() {
+ if (jj_3R_284()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_189() {
+ if (jj_scan_token(STRING)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_188() {
if (jj_scan_token(NUMBER)) return true;
return false;
}
- private boolean jj_3R_261() {
- if (jj_3R_278()) return true;
+ private boolean jj_3R_218() {
+ if (jj_scan_token(SECOND)) return true;
return false;
}
- private boolean jj_3R_185() {
+ private boolean jj_3R_253() {
+ if (jj_scan_token(IF_SYM)) return true;
+ Token xsp;
+ if (jj_3R_265()) return true;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_265()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_scan_token(LBRACE)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_187() {
if (jj_scan_token(IDENT)) return true;
return false;
}
- private boolean jj_3R_168() {
+ private boolean jj_3R_170() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_185()) {
- jj_scanpos = xsp;
- if (jj_3R_186()) {
- jj_scanpos = xsp;
if (jj_3R_187()) {
jj_scanpos = xsp;
if (jj_3R_188()) {
@@ -6094,7 +6214,17 @@ LexicalUnitImpl result = null;
jj_scanpos = xsp;
if (jj_3R_192()) {
jj_scanpos = xsp;
- if (jj_3R_193()) return true;
+ if (jj_3R_193()) {
+ jj_scanpos = xsp;
+ if (jj_3R_194()) {
+ jj_scanpos = xsp;
+ if (jj_3R_195()) {
+ jj_scanpos = xsp;
+ if (jj_3R_196()) {
+ jj_scanpos = xsp;
+ if (jj_3R_197()) return true;
+ }
+ }
}
}
}
@@ -6106,29 +6236,32 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_249() {
- if (jj_scan_token(IF_SYM)) return true;
+ private boolean jj_3R_217() {
+ if (jj_scan_token(GRAD)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_216() {
+ if (jj_scan_token(RAD)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_291() {
+ if (jj_scan_token(DEBUG_SYM)) return true;
Token xsp;
- if (jj_3R_261()) return true;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_261()) { jj_scanpos = xsp; break; }
+ if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
- if (jj_scan_token(LBRACE)) return true;
- return false;
- }
-
- private boolean jj_3R_218() {
- if (jj_scan_token(DIMEN)) return true;
return false;
}
- private boolean jj_3R_217() {
- if (jj_scan_token(KHZ)) return true;
+ private boolean jj_3R_215() {
+ if (jj_scan_token(DEG)) return true;
return false;
}
- private boolean jj_3R_157() {
+ private boolean jj_3R_159() {
if (jj_scan_token(MICROSOFT_RULE)) return true;
Token xsp;
while (true) {
@@ -6136,47 +6269,52 @@ LexicalUnitImpl result = null;
if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
if (jj_scan_token(COLON)) return true;
- if (jj_3R_168()) return true;
+ if (jj_3R_170()) return true;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_168()) { jj_scanpos = xsp; break; }
+ if (jj_3R_170()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_239() {
- if (jj_scan_token(SIBLING)) return true;
+ private boolean jj_3R_214() {
+ if (jj_scan_token(EXS)) return true;
return false;
}
- private boolean jj_3R_216() {
- if (jj_scan_token(HZ)) return true;
+ private boolean jj_3R_243() {
+ if (jj_scan_token(SIBLING)) return true;
return false;
}
- private boolean jj_3R_238() {
+ private boolean jj_3R_242() {
if (jj_scan_token(PRECEDES)) return true;
return false;
}
- private boolean jj_3R_215() {
- if (jj_scan_token(MS)) return true;
+ private boolean jj_3R_213() {
+ if (jj_scan_token(EMS)) return true;
return false;
}
- private boolean jj_3R_237() {
+ private boolean jj_3R_241() {
if (jj_scan_token(PLUS)) return true;
return false;
}
- private boolean jj_3R_194() {
+ private boolean jj_3R_212() {
+ if (jj_scan_token(PX)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_198() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_237()) {
+ if (jj_3R_241()) {
jj_scanpos = xsp;
- if (jj_3R_238()) {
+ if (jj_3R_242()) {
jj_scanpos = xsp;
- if (jj_3R_239()) return true;
+ if (jj_3R_243()) return true;
}
}
while (true) {
@@ -6186,17 +6324,12 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_214() {
- if (jj_scan_token(SECOND)) return true;
- return false;
- }
-
- private boolean jj_3R_213() {
- if (jj_scan_token(GRAD)) return true;
+ private boolean jj_3R_211() {
+ if (jj_scan_token(IN)) return true;
return false;
}
- private boolean jj_3R_171() {
+ private boolean jj_3R_173() {
if (jj_scan_token(SIBLING)) return true;
Token xsp;
while (true) {
@@ -6206,7 +6339,7 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_170() {
+ private boolean jj_3R_172() {
if (jj_scan_token(PRECEDES)) return true;
Token xsp;
while (true) {
@@ -6216,36 +6349,36 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_212() {
- if (jj_scan_token(RAD)) return true;
+ private boolean jj_3R_210() {
+ if (jj_scan_token(PC)) return true;
return false;
}
- private boolean jj_3R_172() {
+ private boolean jj_3R_174() {
if (jj_scan_token(S)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_194()) jj_scanpos = xsp;
+ if (jj_3R_198()) jj_scanpos = xsp;
return false;
}
- private boolean jj_3R_158() {
+ private boolean jj_3R_160() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_169()) {
+ if (jj_3R_171()) {
jj_scanpos = xsp;
- if (jj_3R_170()) {
+ if (jj_3R_172()) {
jj_scanpos = xsp;
- if (jj_3R_171()) {
+ if (jj_3R_173()) {
jj_scanpos = xsp;
- if (jj_3R_172()) return true;
+ if (jj_3R_174()) return true;
}
}
}
return false;
}
- private boolean jj_3R_169() {
+ private boolean jj_3R_171() {
if (jj_scan_token(PLUS)) return true;
Token xsp;
while (true) {
@@ -6255,101 +6388,58 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_211() {
- if (jj_scan_token(DEG)) return true;
- return false;
- }
-
- private boolean jj_3R_210() {
- if (jj_scan_token(EXS)) return true;
+ private boolean jj_3R_209() {
+ if (jj_scan_token(MM)) return true;
return false;
}
- private boolean jj_3R_209() {
- if (jj_scan_token(EMS)) return true;
+ private boolean jj_3R_208() {
+ if (jj_scan_token(CM)) return true;
return false;
}
- private boolean jj_3R_208() {
- if (jj_scan_token(PX)) return true;
+ private boolean jj_3R_207() {
+ if (jj_scan_token(PT)) return true;
return false;
}
- private boolean jj_3R_254() {
- if (jj_3R_256()) return true;
+ private boolean jj_3R_258() {
+ if (jj_3R_260()) return true;
if (jj_scan_token(COLON)) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
- if (jj_3R_269()) return true;
- return false;
- }
-
- private boolean jj_3R_207() {
- if (jj_scan_token(IN)) return true;
+ if (jj_3R_273()) return true;
return false;
}
private boolean jj_3R_206() {
- if (jj_scan_token(PC)) return true;
- return false;
- }
-
- private boolean jj_3R_205() {
- if (jj_scan_token(MM)) return true;
- return false;
- }
-
- private boolean jj_3R_204() {
- if (jj_scan_token(CM)) return true;
- return false;
- }
-
- private boolean jj_3R_203() {
- if (jj_scan_token(PT)) return true;
- return false;
- }
-
- private boolean jj_3R_202() {
if (jj_scan_token(PERCENTAGE)) return true;
return false;
}
- private boolean jj_3R_184() {
- if (jj_3R_236()) return true;
+ private boolean jj_3R_186() {
+ if (jj_3R_240()) return true;
return false;
}
- private boolean jj_3R_201() {
+ private boolean jj_3R_205() {
if (jj_scan_token(NUMBER)) return true;
return false;
}
- private boolean jj_3R_200() {
- if (jj_3R_243()) return true;
- return false;
- }
-
- private boolean jj_3R_196() {
- if (jj_scan_token(HASH)) return true;
+ private boolean jj_3R_204() {
+ if (jj_3R_247()) return true;
return false;
}
- private boolean jj_3R_178() {
+ private boolean jj_3R_180() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_200()) jj_scanpos = xsp;
+ if (jj_3R_204()) jj_scanpos = xsp;
xsp = jj_scanpos;
- if (jj_3R_201()) {
- jj_scanpos = xsp;
- if (jj_3R_202()) {
- jj_scanpos = xsp;
- if (jj_3R_203()) {
- jj_scanpos = xsp;
- if (jj_3R_204()) {
- jj_scanpos = xsp;
if (jj_3R_205()) {
jj_scanpos = xsp;
if (jj_3R_206()) {
@@ -6378,7 +6468,15 @@ LexicalUnitImpl result = null;
jj_scanpos = xsp;
if (jj_3R_218()) {
jj_scanpos = xsp;
- if (jj_3R_219()) return true;
+ if (jj_3R_219()) {
+ jj_scanpos = xsp;
+ if (jj_3R_220()) {
+ jj_scanpos = xsp;
+ if (jj_3R_221()) {
+ jj_scanpos = xsp;
+ if (jj_3R_222()) {
+ jj_scanpos = xsp;
+ if (jj_3R_223()) return true;
}
}
}
@@ -6400,12 +6498,12 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_161() {
+ private boolean jj_3R_163() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_178()) {
+ if (jj_3R_180()) {
jj_scanpos = xsp;
- if (jj_3R_179()) return true;
+ if (jj_3R_181()) return true;
}
while (true) {
xsp = jj_scanpos;
@@ -6414,104 +6512,124 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_299() {
- if (jj_scan_token(IDENT)) return true;
+ private boolean jj_3R_250() {
+ if (jj_scan_token(HASH)) return true;
return false;
}
- private boolean jj_3R_300() {
- if (jj_scan_token(FUNCTION)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+ private boolean jj_3R_240() {
+ if (jj_3R_260()) return true;
return false;
}
- private boolean jj_3R_246() {
+ private boolean jj_3R_200() {
if (jj_scan_token(HASH)) return true;
return false;
}
- private boolean jj_3R_236() {
- if (jj_3R_256()) return true;
+ private boolean jj_3R_307() {
+ if (jj_scan_token(IDENT)) return true;
return false;
}
- private boolean jj_3R_183() {
- if (jj_3R_161()) return true;
+ private boolean jj_3R_185() {
+ if (jj_3R_163()) return true;
return false;
}
- private boolean jj_3R_167() {
+ private boolean jj_3R_169() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_183()) {
+ if (jj_3R_185()) {
jj_scanpos = xsp;
- if (jj_3R_184()) return true;
+ if (jj_3R_186()) return true;
}
return false;
}
- private boolean jj_3R_247() {
+ private boolean jj_3R_251() {
if (jj_scan_token(URL)) return true;
return false;
}
- private boolean jj_3R_166() {
- if (jj_3R_182()) return true;
+ private boolean jj_3R_308() {
+ if (jj_scan_token(FUNCTION)) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+ }
+ if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
return false;
}
- private boolean jj_3R_298() {
- if (jj_scan_token(COLON)) return true;
+ private boolean jj_3R_168() {
+ if (jj_3R_184()) return true;
return false;
}
- private boolean jj_3R_259() {
+ private boolean jj_3R_263() {
if (jj_scan_token(PLUS)) return true;
return false;
}
- private boolean jj_3R_198() {
- if (jj_scan_token(COLON)) return true;
+ private boolean jj_3R_247() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_298()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3R_299()) {
+ if (jj_3R_262()) {
jj_scanpos = xsp;
- if (jj_3R_300()) return true;
+ if (jj_3R_263()) return true;
}
return false;
}
- private boolean jj_3R_243() {
+ private boolean jj_3R_262() {
+ if (jj_scan_token(MINUS)) return true;
+ return false;
+ }
+
+ private boolean jj_3_12() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_258()) {
- jj_scanpos = xsp;
- if (jj_3R_259()) return true;
+ if (jj_3R_168()) jj_scanpos = xsp;
+ if (jj_3R_169()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_273() {
+ if (jj_3R_169()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_12()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_258() {
- if (jj_scan_token(MINUS)) return true;
+ private boolean jj_3R_306() {
+ if (jj_scan_token(COLON)) return true;
return false;
}
- private boolean jj_3_12() {
+ private boolean jj_3R_252() {
+ if (jj_scan_token(UNICODERANGE)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_202() {
+ if (jj_scan_token(COLON)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_166()) jj_scanpos = xsp;
- if (jj_3R_167()) return true;
+ if (jj_3R_306()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_307()) {
+ jj_scanpos = xsp;
+ if (jj_3R_308()) return true;
+ }
return false;
}
- private boolean jj_3R_164() {
+ private boolean jj_3R_166() {
if (jj_scan_token(VARIABLE)) return true;
Token xsp;
while (true) {
@@ -6532,27 +6650,7 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_269() {
- if (jj_3R_167()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_12()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- private boolean jj_3_10() {
- if (jj_3R_164()) return true;
- return false;
- }
-
- private boolean jj_3R_248() {
- if (jj_scan_token(UNICODERANGE)) return true;
- return false;
- }
-
- private boolean jj_3R_235() {
+ private boolean jj_3R_239() {
if (jj_scan_token(COMMA)) return true;
Token xsp;
while (true) {
@@ -6562,22 +6660,22 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_264() {
- if (jj_3R_280()) return true;
+ private boolean jj_3_10() {
+ if (jj_3R_166()) return true;
return false;
}
- private boolean jj_3R_182() {
+ private boolean jj_3R_184() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_234()) {
+ if (jj_3R_238()) {
jj_scanpos = xsp;
- if (jj_3R_235()) return true;
+ if (jj_3R_239()) return true;
}
return false;
}
- private boolean jj_3R_234() {
+ private boolean jj_3R_238() {
if (jj_scan_token(DIV)) return true;
Token xsp;
while (true) {
@@ -6587,7 +6685,12 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_162() {
+ private boolean jj_3R_268() {
+ if (jj_3R_286()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_164() {
if (jj_scan_token(VARIABLE)) return true;
Token xsp;
while (true) {
@@ -6609,61 +6712,61 @@ LexicalUnitImpl result = null;
}
private boolean jj_3_9() {
- if (jj_3R_163()) return true;
+ if (jj_3R_165()) return true;
return false;
}
- private boolean jj_3R_321() {
+ private boolean jj_3R_329() {
if (jj_scan_token(STRING)) return true;
return false;
}
- private boolean jj_3R_319() {
+ private boolean jj_3R_327() {
if (jj_scan_token(STARMATCH)) return true;
return false;
}
- private boolean jj_3R_320() {
+ private boolean jj_3R_328() {
if (jj_scan_token(IDENT)) return true;
return false;
}
- private boolean jj_3R_318() {
+ private boolean jj_3R_326() {
if (jj_scan_token(DOLLARMATCH)) return true;
return false;
}
- private boolean jj_3R_266() {
+ private boolean jj_3R_270() {
if (jj_scan_token(SEMICOLON)) return true;
return false;
}
- private boolean jj_3R_317() {
+ private boolean jj_3R_325() {
if (jj_scan_token(CARETMATCH)) return true;
return false;
}
- private boolean jj_3R_316() {
+ private boolean jj_3R_324() {
if (jj_scan_token(DASHMATCH)) return true;
return false;
}
- private boolean jj_3R_315() {
+ private boolean jj_3R_323() {
if (jj_scan_token(INCLUDES)) return true;
return false;
}
- private boolean jj_3R_272() {
+ private boolean jj_3R_278() {
if (jj_scan_token(INTERPOLATION)) return true;
return false;
}
- private boolean jj_3R_314() {
+ private boolean jj_3R_322() {
if (jj_scan_token(EQ)) return true;
return false;
}
- private boolean jj_3R_163() {
+ private boolean jj_3R_165() {
if (jj_scan_token(VARIABLE)) return true;
Token xsp;
while (true) {
@@ -6684,20 +6787,20 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_305() {
+ private boolean jj_3R_313() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_314()) {
+ if (jj_3R_322()) {
jj_scanpos = xsp;
- if (jj_3R_315()) {
+ if (jj_3R_323()) {
jj_scanpos = xsp;
- if (jj_3R_316()) {
+ if (jj_3R_324()) {
jj_scanpos = xsp;
- if (jj_3R_317()) {
+ if (jj_3R_325()) {
jj_scanpos = xsp;
- if (jj_3R_318()) {
+ if (jj_3R_326()) {
jj_scanpos = xsp;
- if (jj_3R_319()) return true;
+ if (jj_3R_327()) return true;
}
}
}
@@ -6708,9 +6811,9 @@ LexicalUnitImpl result = null;
if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
xsp = jj_scanpos;
- if (jj_3R_320()) {
+ if (jj_3R_328()) {
jj_scanpos = xsp;
- if (jj_3R_321()) return true;
+ if (jj_3R_329()) return true;
}
while (true) {
xsp = jj_scanpos;
@@ -6719,12 +6822,7 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_284() {
- if (jj_scan_token(COMMA)) return true;
- return false;
- }
-
- private boolean jj_3R_199() {
+ private boolean jj_3R_203() {
if (jj_scan_token(LBRACKET)) return true;
Token xsp;
while (true) {
@@ -6737,17 +6835,27 @@ LexicalUnitImpl result = null;
if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
xsp = jj_scanpos;
- if (jj_3R_305()) jj_scanpos = xsp;
+ if (jj_3R_313()) jj_scanpos = xsp;
if (jj_scan_token(RBRACKET)) return true;
return false;
}
- private boolean jj_3R_233() {
- if (jj_3R_255()) return true;
+ private boolean jj_3R_237() {
+ if (jj_3R_259()) return true;
return false;
}
- private boolean jj_3R_283() {
+ private boolean jj_3R_321() {
+ if (jj_scan_token(INTERPOLATION)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_290() {
+ if (jj_scan_token(COMMA)) return true;
+ return false;
+ }
+
+ private boolean jj_3R_289() {
if (jj_scan_token(IDENT)) return true;
Token xsp;
while (true) {
@@ -6757,22 +6865,17 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_313() {
- if (jj_scan_token(INTERPOLATION)) return true;
- return false;
- }
-
- private boolean jj_3R_263() {
- if (jj_3R_256()) return true;
+ private boolean jj_3R_267() {
+ if (jj_3R_260()) return true;
return false;
}
- private boolean jj_3R_242() {
+ private boolean jj_3R_246() {
if (jj_scan_token(PARENT)) return true;
return false;
}
- private boolean jj_3R_156() {
+ private boolean jj_3R_158() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_8()) {
@@ -6786,80 +6889,80 @@ LexicalUnitImpl result = null;
}
private boolean jj_3_8() {
- if (jj_3R_162()) return true;
+ if (jj_3R_164()) return true;
return false;
}
- private boolean jj_3R_241() {
+ private boolean jj_3R_245() {
if (jj_scan_token(ANY)) return true;
return false;
}
- private boolean jj_3R_267() {
- if (jj_3R_283()) return true;
+ private boolean jj_3R_271() {
+ if (jj_3R_289()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_284()) { jj_scanpos = xsp; break; }
+ if (jj_3R_290()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_257() {
+ private boolean jj_3R_261() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_271()) {
+ if (jj_3R_277()) {
jj_scanpos = xsp;
- if (jj_3R_272()) return true;
+ if (jj_3R_278()) return true;
}
return false;
}
- private boolean jj_3R_271() {
+ private boolean jj_3R_277() {
if (jj_scan_token(IDENT)) return true;
return false;
}
- private boolean jj_3R_280() {
+ private boolean jj_3R_286() {
if (jj_scan_token(INTERPOLATION)) return true;
return false;
}
- private boolean jj_3R_195() {
+ private boolean jj_3R_199() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_240()) {
+ if (jj_3R_244()) {
jj_scanpos = xsp;
- if (jj_3R_241()) {
+ if (jj_3R_245()) {
jj_scanpos = xsp;
- if (jj_3R_242()) return true;
+ if (jj_3R_246()) return true;
}
}
return false;
}
- private boolean jj_3R_240() {
+ private boolean jj_3R_244() {
Token xsp;
- if (jj_3R_257()) return true;
+ if (jj_3R_261()) return true;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_257()) { jj_scanpos = xsp; break; }
+ if (jj_3R_261()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_265() {
- if (jj_3R_281()) return true;
- if (jj_3R_282()) return true;
+ private boolean jj_3R_269() {
+ if (jj_3R_287()) return true;
+ if (jj_3R_288()) return true;
return false;
}
- private boolean jj_3R_262() {
- if (jj_3R_279()) return true;
+ private boolean jj_3R_266() {
+ if (jj_3R_285()) return true;
return false;
}
- private boolean jj_3R_250() {
+ private boolean jj_3R_254() {
if (jj_scan_token(INCLUDE_SYM)) return true;
Token xsp;
while (true) {
@@ -6867,108 +6970,108 @@ LexicalUnitImpl result = null;
if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
}
xsp = jj_scanpos;
- if (jj_3R_262()) {
+ if (jj_3R_266()) {
jj_scanpos = xsp;
- if (jj_3R_263()) {
+ if (jj_3R_267()) {
jj_scanpos = xsp;
- if (jj_3R_264()) {
+ if (jj_3R_268()) {
jj_scanpos = xsp;
- if (jj_3R_265()) return true;
+ if (jj_3R_269()) return true;
}
}
}
- if (jj_3R_266()) return true;
+ if (jj_3R_270()) return true;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_266()) { jj_scanpos = xsp; break; }
+ if (jj_3R_270()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_309() {
- if (jj_3R_198()) return true;
+ private boolean jj_3R_317() {
+ if (jj_3R_202()) return true;
return false;
}
- private boolean jj_3R_312() {
+ private boolean jj_3R_320() {
if (jj_scan_token(IDENT)) return true;
return false;
}
- private boolean jj_3R_293() {
+ private boolean jj_3R_301() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_312()) {
+ if (jj_3R_320()) {
jj_scanpos = xsp;
- if (jj_3R_313()) return true;
+ if (jj_3R_321()) return true;
}
return false;
}
- private boolean jj_3R_307() {
- if (jj_3R_197()) return true;
- return false;
- }
-
- private boolean jj_3R_251() {
- if (jj_scan_token(MEDIA_SYM)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
- }
- if (jj_3R_267()) return true;
- if (jj_scan_token(LBRACE)) return true;
+ private boolean jj_3R_315() {
+ if (jj_3R_201()) return true;
return false;
}
private boolean jj_3_3() {
- if (jj_3R_157()) return true;
+ if (jj_3R_159()) return true;
return false;
}
- private boolean jj_3R_304() {
- if (jj_3R_198()) return true;
+ private boolean jj_3R_312() {
+ if (jj_3R_202()) return true;
return false;
}
- private boolean jj_3R_302() {
- if (jj_3R_197()) return true;
+ private boolean jj_3R_310() {
+ if (jj_3R_201()) return true;
return false;
}
- private boolean jj_3R_292() {
- if (jj_3R_198()) return true;
+ private boolean jj_3R_300() {
+ if (jj_3R_202()) return true;
return false;
}
- private boolean jj_3R_197() {
+ private boolean jj_3R_201() {
if (jj_scan_token(DOT)) return true;
Token xsp;
- if (jj_3R_293()) return true;
+ if (jj_3R_301()) return true;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_293()) { jj_scanpos = xsp; break; }
+ if (jj_3R_301()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_297() {
- if (jj_3R_198()) return true;
+ private boolean jj_3R_305() {
+ if (jj_3R_202()) return true;
return false;
}
- private boolean jj_3R_295() {
- if (jj_3R_197()) return true;
+ private boolean jj_3R_303() {
+ if (jj_3R_201()) return true;
return false;
}
- private boolean jj_3R_282() {
- if (jj_3R_167()) return true;
+ private boolean jj_3R_255() {
+ if (jj_scan_token(MEDIA_SYM)) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+ }
+ if (jj_3R_271()) return true;
+ if (jj_scan_token(LBRACE)) return true;
return false;
}
- private boolean jj_3R_160() {
+ private boolean jj_3R_288() {
+ if (jj_3R_169()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_162() {
if (jj_scan_token(COMMA)) return true;
Token xsp;
while (true) {
@@ -6978,200 +7081,215 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_232() {
- if (jj_3R_254()) return true;
+ private boolean jj_3R_236() {
+ if (jj_3R_258()) return true;
return false;
}
- private boolean jj_3R_308() {
- if (jj_3R_199()) return true;
+ private boolean jj_3R_316() {
+ if (jj_3R_203()) return true;
return false;
}
- private boolean jj_3R_306() {
- if (jj_3R_196()) return true;
+ private boolean jj_3R_314() {
+ if (jj_3R_200()) return true;
return false;
}
- private boolean jj_3R_277() {
+ private boolean jj_3R_283() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_306()) {
+ if (jj_3R_314()) {
jj_scanpos = xsp;
- if (jj_3R_307()) {
+ if (jj_3R_315()) {
jj_scanpos = xsp;
- if (jj_3R_308()) {
+ if (jj_3R_316()) {
jj_scanpos = xsp;
- if (jj_3R_309()) return true;
+ if (jj_3R_317()) return true;
}
}
}
return false;
}
- private boolean jj_3R_301() {
- if (jj_3R_196()) return true;
+ private boolean jj_3R_276() {
+ if (jj_3R_293()) return true;
return false;
}
- private boolean jj_3R_276() {
+ private boolean jj_3R_309() {
+ if (jj_3R_200()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_282() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_301()) {
+ if (jj_3R_309()) {
jj_scanpos = xsp;
- if (jj_3R_302()) {
+ if (jj_3R_310()) {
jj_scanpos = xsp;
- if (jj_3R_303()) {
+ if (jj_3R_311()) {
jj_scanpos = xsp;
- if (jj_3R_304()) return true;
+ if (jj_3R_312()) return true;
}
}
}
return false;
}
- private boolean jj_3R_289() {
- if (jj_3R_198()) return true;
+ private boolean jj_3R_297() {
+ if (jj_3R_202()) return true;
return false;
}
private boolean jj_3_7() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_160()) jj_scanpos = xsp;
- if (jj_3R_161()) return true;
+ if (jj_3R_162()) jj_scanpos = xsp;
+ if (jj_3R_163()) return true;
return false;
}
- private boolean jj_3R_303() {
- if (jj_3R_199()) return true;
+ private boolean jj_3R_311() {
+ if (jj_3R_203()) return true;
return false;
}
- private boolean jj_3R_294() {
- if (jj_3R_196()) return true;
+ private boolean jj_3R_302() {
+ if (jj_3R_200()) return true;
return false;
}
- private boolean jj_3R_275() {
+ private boolean jj_3R_281() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_294()) {
+ if (jj_3R_302()) {
jj_scanpos = xsp;
- if (jj_3R_295()) {
+ if (jj_3R_303()) {
jj_scanpos = xsp;
- if (jj_3R_296()) {
+ if (jj_3R_304()) {
jj_scanpos = xsp;
- if (jj_3R_297()) return true;
+ if (jj_3R_305()) return true;
}
}
}
return false;
}
- private boolean jj_3R_291() {
- if (jj_3R_199()) return true;
+ private boolean jj_3R_299() {
+ if (jj_3R_203()) return true;
return false;
}
- private boolean jj_3R_296() {
- if (jj_3R_199()) return true;
+ private boolean jj_3R_304() {
+ if (jj_3R_203()) return true;
return false;
}
- private boolean jj_3R_290() {
- if (jj_3R_197()) return true;
+ private boolean jj_3R_319() {
+ if (jj_scan_token(LBRACE)) return true;
return false;
}
- private boolean jj_3R_287() {
- if (jj_3R_197()) return true;
+ private boolean jj_3R_298() {
+ if (jj_3R_201()) return true;
return false;
}
- private boolean jj_3R_274() {
+ private boolean jj_3R_295() {
+ if (jj_3R_201()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_280() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_290()) {
+ if (jj_3R_298()) {
jj_scanpos = xsp;
- if (jj_3R_291()) {
+ if (jj_3R_299()) {
jj_scanpos = xsp;
- if (jj_3R_292()) return true;
+ if (jj_3R_300()) return true;
}
}
return false;
}
- private boolean jj_3R_231() {
- if (jj_3R_253()) return true;
+ private boolean jj_3R_235() {
+ if (jj_3R_257()) return true;
return false;
}
- private boolean jj_3R_177() {
- if (jj_3R_199()) return true;
+ private boolean jj_3R_275() {
+ if (jj_3R_292()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_179() {
+ if (jj_3R_203()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_277()) { jj_scanpos = xsp; break; }
+ if (jj_3R_283()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_176() {
- if (jj_3R_198()) return true;
+ private boolean jj_3R_178() {
+ if (jj_3R_202()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_276()) { jj_scanpos = xsp; break; }
+ if (jj_3R_282()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_288() {
- if (jj_3R_199()) return true;
+ private boolean jj_3R_318() {
+ if (jj_3R_273()) return true;
return false;
}
- private boolean jj_3R_311() {
- if (jj_scan_token(LBRACE)) return true;
+ private boolean jj_3R_296() {
+ if (jj_3R_203()) return true;
return false;
}
- private boolean jj_3R_175() {
- if (jj_3R_197()) return true;
+ private boolean jj_3R_177() {
+ if (jj_3R_201()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_275()) { jj_scanpos = xsp; break; }
+ if (jj_3R_281()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_286() {
- if (jj_3R_196()) return true;
+ private boolean jj_3R_294() {
+ if (jj_3R_200()) return true;
return false;
}
- private boolean jj_3R_174() {
- if (jj_3R_196()) return true;
+ private boolean jj_3R_176() {
+ if (jj_3R_200()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_274()) { jj_scanpos = xsp; break; }
+ if (jj_3R_280()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_273() {
+ private boolean jj_3R_279() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_286()) {
+ if (jj_3R_294()) {
jj_scanpos = xsp;
- if (jj_3R_287()) {
+ if (jj_3R_295()) {
jj_scanpos = xsp;
- if (jj_3R_288()) {
+ if (jj_3R_296()) {
jj_scanpos = xsp;
- if (jj_3R_289()) return true;
+ if (jj_3R_297()) return true;
}
}
}
@@ -7179,32 +7297,48 @@ LexicalUnitImpl result = null;
}
private boolean jj_3_6() {
- if (jj_3R_156()) return true;
+ if (jj_3R_158()) return true;
return false;
}
- private boolean jj_3R_173() {
- if (jj_3R_195()) return true;
+ private boolean jj_3R_175() {
+ if (jj_3R_199()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3R_273()) { jj_scanpos = xsp; break; }
+ if (jj_3R_279()) { jj_scanpos = xsp; break; }
}
return false;
}
- private boolean jj_3R_159() {
+ private boolean jj_3R_293() {
+ if (jj_3R_285()) return true;
+ if (jj_scan_token(COLON)) return true;
Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_scan_token(1)) { jj_scanpos = xsp; break; }
+ }
xsp = jj_scanpos;
- if (jj_3R_173()) {
- jj_scanpos = xsp;
- if (jj_3R_174()) {
+ if (jj_3R_318()) {
jj_scanpos = xsp;
+ if (jj_3R_319()) return true;
+ }
+ return false;
+ }
+
+ private boolean jj_3R_161() {
+ Token xsp;
+ xsp = jj_scanpos;
if (jj_3R_175()) {
jj_scanpos = xsp;
if (jj_3R_176()) {
jj_scanpos = xsp;
- if (jj_3R_177()) return true;
+ if (jj_3R_177()) {
+ jj_scanpos = xsp;
+ if (jj_3R_178()) {
+ jj_scanpos = xsp;
+ if (jj_3R_179()) return true;
}
}
}
@@ -7212,8 +7346,18 @@ LexicalUnitImpl result = null;
return false;
}
- private boolean jj_3R_230() {
- if (jj_3R_252()) return true;
+ private boolean jj_3R_234() {
+ if (jj_3R_256()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_274() {
+ if (jj_3R_291()) return true;
+ return false;
+ }
+
+ private boolean jj_3R_233() {
+ if (jj_3R_255()) return true;
return false;
}
@@ -7227,7 +7371,7 @@ LexicalUnitImpl result = null;
private Token jj_scanpos, jj_lastpos;
private int jj_la;
private int jj_gen;
- final private int[] jj_la1 = new int[232];
+ final private int[] jj_la1 = new int[234];
static private int[] jj_la1_0;
static private int[] jj_la1_1;
static private int[] jj_la1_2;
@@ -7239,16 +7383,16 @@ LexicalUnitImpl result = null;
jj_la1_init_3();
}
private static void jj_la1_init_0() {
- jj_la1_0 = new int[] {0x0,0xc02,0xc02,0x0,0xc00,0x2,0x2,0x2,0x0,0xd0000000,0xc00,0x2,0xc00,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0xd3f45400,0xd3f45400,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x3f45400,0x2,0x2,0x2,0x3100000,0x2,0x3100000,0x3100002,0x2,0x80002,0x80002,0x2,0x2,0x2,0x2,0x2,0xd0000000,0x0,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0xd0000000,0x0,0x0,0x0,0x0,0xc0000000,0x2,0x2,0xfc000,0x2,0x0,0x2,0xfc000,0x0,0x2,0x0,0x2,0x0,0x2,0x800000,0x4d380002,0x2,0xd0000000,0xd0000000,0x2,0x0,0x2,0x4d380002,0x0,0x2,0xd0000000,0xd0000000,0x2,0x4d380002,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x2,0x400000,0x0,0x0,0x300000,0x2,0x0,0x400000,0x2,0x300000,0x2,0x0,0x2,0x0,0x2,0x800000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x0,0x2,0x2,0x2,0x800000,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x0,0x2,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x301000,0x2,0x0,0x2,0x2,0x2,0x2,0x8400000,0x8400000,0x300000,0x300000,0x300000,0x0,0x0,0x0,0x300000,0x2,0x2,0x300000,0x2,0xd0000000,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,};
+ jj_la1_0 = new int[] {0x0,0xc02,0xc02,0x0,0xc00,0x2,0x2,0x2,0x0,0xd0000000,0xc00,0x2,0xc00,0x2,0x0,0x2,0x0,0x2,0x2,0x2,0xd3f45400,0xd3f45400,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x3f45400,0x2,0x2,0x2,0x3100000,0x2,0x3100000,0x3100002,0x2,0x480002,0x480002,0x2,0x2,0x2,0x2,0x2,0xd0000000,0x0,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0x10000000,0xd0000000,0x0,0x0,0x0,0x0,0xc0000000,0x2,0x2,0xfc000,0x2,0x0,0x2,0xfc000,0x0,0x2,0x0,0x2,0x0,0x2,0x800000,0x4d380002,0x2,0xd0000000,0xd0000000,0x2,0x0,0x2,0x4d380002,0x0,0x2,0xd0000000,0xd0000000,0x2,0x4d380002,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,0xd0000000,0x2,0x400000,0x2,0x2,0x2,0x400000,0x0,0x0,0x300000,0x2,0x0,0x400000,0x2,0x300000,0x2,0x0,0x2,0x0,0x2,0x800000,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0x2,0x2,0x800000,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,0x0,0x2,0x0,0x2,0x0,0x800000,0x2,0x0,0x2,0x301000,0x2,0x0,0x2,0x2,0x2,0x2,0x8400000,0x8400000,0x300000,0x300000,0x300000,0x0,0x0,0x0,0x300000,0x2,0x2,0x300000,0x2,0xd0000000,0x2,0x2,0x2,0x0,0x800000,0x2,0x0,0x2,};
}
private static void jj_la1_init_1() {
- jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50600181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x381,0x381,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x185,0x185,0x0,0x0,0x0,0x0,0x0,0x50400181,0x40000000,0x10400000,0x181,0x0,0x0,0x0,0x0,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x181,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x0,0x400181,0x400181,0x0,0x80000000,0x0,0x7e,0x0,0x0,0x400181,0x400181,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x400181,0x400000,0x181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x50400181,0x400000,0x50000181,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x81,0x0,0x80,0x0,0x0,0x81,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0xc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x56600181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000381,0x6000381,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x185,0x185,0x0,0x0,0x0,0x0,0x0,0x56400181,0x40000000,0x10400000,0x6000181,0x0,0x0,0x0,0x0,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x181,0x100,0x100,0x100,0x100,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x7e,0x0,0x6400181,0x6400181,0x0,0x80000000,0x0,0x7e,0x0,0x0,0x6400181,0x6400181,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x6400181,0x400000,0x6000181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x56400181,0x400000,0x56000181,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x80,0x81,0x0,0x80,0x0,0x0,0x81,0x0,0x80,0x0,0x100,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x1,0x1,0x0,0x0,0x1,0x0,0x6000181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_init_2() {
- jj_la1_2 = new int[] {0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x800,0xa0000880,0x0,0x0,0x0,0x0,0x440,0x0,0x80,0x0,0x0,0x0,0xe00015c0,0xe00015c0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0xc0001540,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x180,0x180,0x0,0x0,0x0,0x0,0x0,0xa0000889,0x0,0x80000801,0x20000080,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000080,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x0,0x0,0x980,0x0,0xa0000881,0xa0000881,0x0,0x0,0x0,0x980,0x10,0x0,0xa0000881,0xa0000881,0x0,0x980,0x0,0x0,0x0,0x880,0x0,0xa0000881,0x0,0xa0000881,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xa0000881,0x80000000,0x20000881,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x3ffffdc0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x3ffffdc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x1ffff100,0x0,0x200004c0,0x3ffff5c0,0x0,0x0,0x3ffffdc0,0x0,0xe0000080,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
+ jj_la1_2 = new int[] {0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x0,0x800,0xa0000880,0x0,0x0,0x0,0x0,0x440,0x0,0x80,0x0,0x0,0x0,0xe00015c0,0xe00015c0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0xc0001540,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1c0,0x1c0,0x0,0x0,0x0,0x0,0x0,0xa0000889,0x0,0x80000801,0x20000080,0x0,0x0,0x0,0x0,0x20000000,0x20000000,0x0,0x0,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000000,0x20000080,0x80,0x80,0x80,0x80,0x80,0x0,0x0,0x0,0x0,0xc0,0x0,0x0,0x0,0x0,0x80,0x0,0x20,0x0,0x0,0x980,0x0,0xa0000881,0xa0000881,0x0,0x0,0x0,0x980,0x10,0x0,0xa0000881,0xa0000881,0x0,0x980,0x0,0x0,0x0,0x880,0x0,0xa0000881,0x0,0xa0000881,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xa0000881,0x80000000,0x20000881,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x800,0x3ffffdc0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x0,0x0,0x880,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x80,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,0x3ffffdc0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3ffffdc0,0x0,0x1ffff100,0x0,0x200004c0,0x3ffff5c0,0x0,0x0,0x3ffffdc0,0x0,0xe0000080,0x0,0x0,0x0,0x80,0x0,0x0,0x80,0x0,};
}
private static void jj_la1_init_3() {
- jj_la1_3 = new int[] {0x1,0x8,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x6,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x40000,0x0,0x4000,0x44000,0x0,0x0,0x44000,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_3 = new int[] {0x1,0x8,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x6,0x8,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc401f,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000,0x0,0x6,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x0,0x44000,0x0,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x44000,0x0,0x40000,0x0,0x4000,0x44000,0x0,0x0,0x44000,0x0,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
final private JJCalls[] jj_2_rtns = new JJCalls[12];
private boolean jj_rescan = false;
@@ -7260,7 +7404,7 @@ LexicalUnitImpl result = null;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 232; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 234; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -7270,7 +7414,7 @@ LexicalUnitImpl result = null;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 232; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 234; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -7280,7 +7424,7 @@ LexicalUnitImpl result = null;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 232; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 234; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -7290,7 +7434,7 @@ LexicalUnitImpl result = null;
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 232; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 234; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -7407,7 +7551,7 @@ LexicalUnitImpl result = null;
la1tokens[jj_kind] = true;
jj_kind = -1;
}
- for (int i = 0; i < 232; i++) {
+ for (int i = 0; i < 234; i++) {
if (jj_la1[i] == jj_gen) {
for (int j = 0; j < 32; j++) {
if ((jj_la1_0[i] & (1<<j)) != 0) {
diff --git a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
index dfb12de6d6..81a7b10531 100644
--- a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
+++ b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj
@@ -743,15 +743,16 @@ void afterImportDeclaration() :
}
{
(
- ( (LOOKAHEAD(5)listModifyDirective()|variable()) | ifDirective()|mixinDirective()| eachDirective() | includeDirective() | styleRule() | media()| page() | fontFace()
+ ( (LOOKAHEAD(5)listModifyDirective()|variable()) | debugDirective() | warnDirective() | ifDirective()|mixinDirective()| eachDirective() | includeDirective() | styleRule() | media()| page() | fontFace()
| { l = getLocator(); } ret=skipStatement()
{
if ((ret == null) || (ret.length() == 0)) {
return;
}
- reportWarningSkipText(l, ret);
if (ret.charAt(0) == '@') {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
+ } else {
+ reportWarningSkipText(l, ret);
}
}
)
@@ -820,7 +821,7 @@ void media() :
<MEDIA_SYM> ( <S> )*
mediaStatement(ml)
{ start = true; documentHandler.startMedia(ml); }
- <LBRACE> ( <S> )* ( styleRule() | skipUnknownRule() )* <RBRACE> ( <S> )*
+ <LBRACE> ( <S> )* ( debugDirective() | warnDirective() | styleRule() | skipUnknownRule() )* <RBRACE> ( <S> )*
} catch (ParseException e) {
reportError(getLocator(), e);
skipStatement();
@@ -933,9 +934,10 @@ void atRuleDeclaration() :
n=<ATKEYWORD>
{
ret=skipStatement();
- reportWarningSkipText(getLocator(), ret);
if ((ret != null) && (ret.charAt(0) == '@')) {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
+ } else {
+ reportWarningSkipText(getLocator(), ret);
}
}
}
@@ -972,9 +974,10 @@ void skipUnknownRule() :
String ret;
Locator loc = getLocator();
ret=skipStatement();
- reportWarningSkipText(loc, ret);
if ((ret != null) && (n.image.charAt(0) == '@')) {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
+ } else {
+ reportWarningSkipText(loc, ret);
}
}
}
@@ -1004,10 +1007,13 @@ void microsoftExtension() :
}
{
+ // This is not really taking the syntax of filter rules into account
n = < MICROSOFT_RULE > (< S >)* { name = n.image; }
< COLON >
((n = < IDENT > { value += n.image; })
| (n = < NUMBER > { value += n.image; })
+ | (n = < STRING > { value += n.image; })
+ | (n = < COMMA > { value += n.image; })
| (n = < INTERPOLATION > { value += n.image; })
| (n = < COLON > { value += n.image; })
| (n = < FUNCTION > { value += n.image; })
@@ -1717,12 +1723,28 @@ Node returnDirective() :
{return null;}
}
-JAVACODE
-void debugDirective(){
+void debugDirective() :
+{}
+{
+ <DEBUG_SYM>
+ {
+ String content = skipStatementUntilSemiColon();
+ // TODO should evaluate the content expression, call documentHandler.debugDirective() etc.
+ System.out.println(content);
+ }
+ (<S>)*
}
-JAVACODE
-void warnDirective(){
+void warnDirective() :
+{}
+{
+ <WARN_SYM>
+ {
+ String content = skipStatementUntilSemiColon();
+ // TODO should evaluate the content expression, call documentHandler.warnDirective() etc.
+ System.err.println(content);
+ }
+ (<S>)*
}
Node forDirective() :
@@ -1816,7 +1838,7 @@ void styleRuleOrDeclarationOrNestedProperties() :
{
try {
// differentiate between the colon of a pseudo and the colon of nested properties and the colon of a simple property
- (LOOKAHEAD(5) styleRule() | declarationOrNestedProperties())
+ (LOOKAHEAD(5) styleRule() | debugDirective() | warnDirective() | declarationOrNestedProperties())
} catch (JumpException e) {
skipAfterExpression();
// reportWarningSkipText(getLocator(), skipAfterExpression());
@@ -2686,14 +2708,14 @@ void _parseRule() :
}
{
( <S> )*
- ( importDeclaration() | styleRule() | media() | page()
+ ( importDeclaration() | debugDirective() | warnDirective() | styleRule() | media() | page()
| fontFace() | ret=skipStatement()
{
if ((ret == null) || (ret.length() == 0)) {
return;
}
if (ret.charAt(0) == '@') {
- documentHandler.ignorableAtRule(ret);
+ documentHandler.unrecognizedRule(ret);
} else {
throw new CSSParseException("unrecognize rule: " + ret,
getLocator());
diff --git a/theme-compiler/tests/resources/automatic/css/microsoft-extensions.css b/theme-compiler/tests/resources/automatic/css/microsoft-extensions.css
index 18bc34ca6c..af614316c9 100644
--- a/theme-compiler/tests/resources/automatic/css/microsoft-extensions.css
+++ b/theme-compiler/tests/resources/automatic/css/microsoft-extensions.css
@@ -1,6 +1,7 @@
.v-ie6 .v-shadow-window {
background: #000000;
filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=5 ) alpha(opacity = 20);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf', endColorstr='#ededed');
margin-top: 2px;
margin-left: 2px;
} \ No newline at end of file
diff --git a/theme-compiler/tests/resources/automatic/css/unknown_as_is.css b/theme-compiler/tests/resources/automatic/css/unknown_as_is.css
new file mode 100644
index 0000000000..bfe76855fb
--- /dev/null
+++ b/theme-compiler/tests/resources/automatic/css/unknown_as_is.css
@@ -0,0 +1,3 @@
+@-webkit-keyframes fade-in {
+ 0% { opacity: 0; }
+}
diff --git a/theme-compiler/tests/resources/automatic/scss/microsoft-extensions.scss b/theme-compiler/tests/resources/automatic/scss/microsoft-extensions.scss
index 69670969de..e08f3f07a3 100644
--- a/theme-compiler/tests/resources/automatic/scss/microsoft-extensions.scss
+++ b/theme-compiler/tests/resources/automatic/scss/microsoft-extensions.scss
@@ -1,6 +1,7 @@
.v-ie6 .v-shadow-window {
background: #000000;
filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=5 ) alpha(opacity = 20);
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#dfdfdf', endColorstr='#ededed');
margin-top: 2px;
margin-left: 2px;
}
diff --git a/theme-compiler/tests/resources/automatic/scss/unknown_as_is.scss b/theme-compiler/tests/resources/automatic/scss/unknown_as_is.scss
new file mode 100644
index 0000000000..bfe76855fb
--- /dev/null
+++ b/theme-compiler/tests/resources/automatic/scss/unknown_as_is.scss
@@ -0,0 +1,3 @@
+@-webkit-keyframes fade-in {
+ 0% { opacity: 0; }
+}
diff --git a/uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.html b/uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.html
new file mode 100644
index 0000000000..a4e36b6f44
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:9999/" />
+<title>ButtonWithShortcutNotRendered</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">ButtonWithShortcutNotRendered</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.button.ButtonWithShortcutNotRendered?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runcomvaadintestscomponentsbuttonButtonWithShortcutNotRendered::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[0]/VSplitPanelVertical[0]/VScrollTable[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[1]/domChild[0]/domChild[0]</td>
+ <td>190,7</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>button-initial</td>
+</tr>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.components.button.ButtonWithShortcutNotRendered</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>button-with-caption</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.java b/uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.java
new file mode 100644
index 0000000000..b01e0a85d0
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/button/ButtonWithShortcutNotRendered.java
@@ -0,0 +1,170 @@
+package com.vaadin.tests.components.button;
+
+import com.vaadin.annotations.PreserveOnRefresh;
+import com.vaadin.data.Item;
+import com.vaadin.data.Property;
+import com.vaadin.data.util.HierarchicalContainer;
+import com.vaadin.event.ShortcutAction.KeyCode;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.DefaultFieldFactory;
+import com.vaadin.ui.Field;
+import com.vaadin.ui.Form;
+import com.vaadin.ui.GridLayout;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.Table;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalSplitPanel;
+
+@PreserveOnRefresh
+@SuppressWarnings("deprecation")
+public class ButtonWithShortcutNotRendered extends AbstractTestUI {
+
+ @Override
+ protected String getTestDescription() {
+ return "Button with shortcut broken if the shortcut is rendered before the button";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 9825;
+ }
+
+ Button defaultButton;
+ Button otherButton;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ protected void setup(VaadinRequest request) {
+ getLayout().setWidth(100, Unit.PERCENTAGE);
+ getLayout().setHeight(null);
+ getLayout().setMargin(new MarginInfo(true, false, false, false));
+
+ HierarchicalContainer container = new HierarchicalContainer();
+ container.addContainerProperty("t1", String.class, "");
+ container.addContainerProperty("t2", String.class, "");
+
+ Item item = container.addItem("r1");
+ item.getItemProperty("t1").setValue("Row1 t1");
+ item.getItemProperty("t2").setValue("Row1 t2");
+
+ item = container.addItem("r2");
+ item.getItemProperty("t1").setValue("Row2 t1");
+ item.getItemProperty("t2").setValue("Row2 t2");
+
+ MyForm form = new MyForm();
+ MyTable table = new MyTable(form, container);
+
+ VerticalSplitPanel splitPanel = new VerticalSplitPanel();
+ splitPanel.setWidth(100, Unit.PERCENTAGE);
+ splitPanel.setHeight(400, Unit.PIXELS);
+ splitPanel.setFirstComponent(table);
+ splitPanel.setSecondComponent(form);
+ splitPanel.setSplitPosition(50, Unit.PERCENTAGE);
+
+ addComponent(splitPanel);
+ }
+
+ public class MyTable extends Table {
+ final MyForm form;
+
+ public MyTable(MyForm pform, HierarchicalContainer container) {
+ form = pform;
+ setContainerDataSource(container);
+ setSelectable(true);
+ setImmediate(true);
+ setWidth(100, Unit.PERCENTAGE);
+ setHeight(null);
+
+ addValueChangeListener(new Property.ValueChangeListener() {
+
+ public void valueChange(
+ com.vaadin.data.Property.ValueChangeEvent event) {
+ final Item item = getItem(getValue());
+ form.setItemDataSource(item);
+ }
+
+ });
+ }
+ }
+
+ public class MyForm extends Form implements ClickListener {
+ final GridLayout layout;
+
+ @SuppressWarnings("unchecked")
+ public MyForm() {
+ setWidth(100, Unit.PERCENTAGE);
+ setHeight(null);
+ setImmediate(true);
+
+ setFormFieldFactory(new DefaultFieldFactory() {
+
+ @Override
+ public TextField createField(Item item, Object propertyId,
+ Component uiContext) {
+ TextField t = new TextField();
+ t.setWidth(100, Unit.PERCENTAGE);
+ t.setHeight(null);
+ t.setCaption((String) propertyId);
+ t.setImmediate(false);
+ return t;
+ }
+ });
+
+ layout = new GridLayout(2, 1);
+ layout.setWidth(100, Unit.PERCENTAGE);
+ layout.setHeight(null);
+ layout.setColumnExpandRatio(0, 0.5f);
+ layout.setColumnExpandRatio(1, 0.5f);
+ layout.setMargin(true);
+ layout.setSpacing(true);
+ setLayout(layout);
+
+ HorizontalLayout footer = new HorizontalLayout();
+ footer.setSpacing(true);
+ footer.setMargin(false);
+ footer.setVisible(false);
+ setFooter(footer);
+
+ defaultButton = new Button("Default Button", this);
+ defaultButton.setClickShortcut(KeyCode.ENTER);
+ footer.addComponent(defaultButton);
+
+ otherButton = new Button("Other button", this);
+ footer.addComponent(otherButton);
+ }
+
+ @Override
+ public void setItemDataSource(Item newDataSource) {
+ if (newDataSource != null) {
+ super.setItemDataSource(newDataSource);
+ layout.setVisible(true);
+ getFooter().setVisible(true);
+ } else {
+ super.setItemDataSource(null);
+ layout.setVisible(false);
+ getFooter().setVisible(false);
+ }
+ }
+
+ @Override
+ @SuppressWarnings("rawtypes")
+ protected void attachField(Object propertyId, Field field) {
+ if (propertyId.equals("t1")) {
+ layout.addComponent(field, 0, 0);
+ } else if (propertyId.equals("t2")) {
+ layout.addComponent(field, 1, 0);
+ }
+ }
+
+ public void buttonClick(ClickEvent event) {
+ // NOP
+ }
+
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/components/uitest/base_theme_test.html b/uitest/src/com/vaadin/tests/components/uitest/base_theme_test.html
new file mode 100644
index 0000000000..27805ef61e
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/uitest/base_theme_test.html
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>base_theme_test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">base_theme_test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/ThemeTestUI?restartApplication&amp;theme=base</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td>150</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>labels</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[2]/div/div/div</td>
+ <td>31,8</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>buttons</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[3]/div/div/div</td>
+ <td>27,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>embedded</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[4]/div/div</td>
+ <td>33,24</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield0']/button</td>
+ <td>11,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-first-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[2]/div/div[3]/div/div</td>
+ <td>402,158</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield1']/button</td>
+ <td>14,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-second-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield2']/button</td>
+ <td>9,16</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-third-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield3']/button</td>
+ <td>9,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-fourth-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[5]/div/div/div</td>
+ <td>35,2</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>textfields</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[6]/div/div/div</td>
+ <td>27,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select0']/div</td>
+ <td>9,11</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-first-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select1']/div</td>
+ <td>10,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-second-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select6']/div</td>
+ <td>7,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-third-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select7']/div</td>
+ <td>7,12</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-fourth-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select8']/div</td>
+ <td>9,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[7]/div/div/div</td>
+ <td>20,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>sliders</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[8]/div/div/div</td>
+ <td>18,5</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VVerticalLayout[0]</td>
+ <td>518,136</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>uploads</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[9]/div/div/div</td>
+ <td>18,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>forms</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[10]/div/div</td>
+ <td>22,25</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables</td>
+</tr>
+<tr>
+ <td>contextmenu</td>
+ <td>//div[@id='table0']/div[2]/div[1]/table/tbody/tr[2]/td[1]/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-contextmenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='table0']/div[1]/div[2]</td>
+ <td>12,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-collapsemenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[11]/div/div/div</td>
+ <td>28,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>trees</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[12]/div/div</td>
+ <td>52,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>treetable</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[13]/div/div</td>
+ <td>23,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>layouts</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[14]/div/div/div</td>
+ <td>24,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tabsheets</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[15]/div/div/div</td>
+ <td>24,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>accordions</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[16]/div/div/div</td>
+ <td>15,0</td>
+</tr>
+<!--Window and Notification screenshots-->
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton0']/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-default</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-light</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>11,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-black</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>8,5</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-dialog</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton4']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-opaque</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>10,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[17]/div/div</td>
+ <td>46,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt0']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-humanized</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>214,15</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-warning</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>172,13</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-error</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>318,11</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-tray</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>66,9</td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/uitest/chameleon_theme_test.html b/uitest/src/com/vaadin/tests/components/uitest/chameleon_theme_test.html
new file mode 100644
index 0000000000..754fadf3d6
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/uitest/chameleon_theme_test.html
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>chameleon_theme_test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">chameleon_theme_test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/ThemeTestUI?restartApplication&amp;theme=chameleon</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td>150</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>labels</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[2]/div/div/div</td>
+ <td>31,8</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>buttons</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[3]/div/div/div</td>
+ <td>27,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>embedded</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[4]/div/div</td>
+ <td>33,24</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield0']/button</td>
+ <td>11,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-first-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[2]/div/div[3]/div/div</td>
+ <td>402,158</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield1']/button</td>
+ <td>14,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-second-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield2']/button</td>
+ <td>9,16</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-third-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield3']/button</td>
+ <td>9,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-fourth-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[5]/div/div/div</td>
+ <td>35,2</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>textfields</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[6]/div/div/div</td>
+ <td>27,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select0']/div</td>
+ <td>9,11</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-first-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select1']/div</td>
+ <td>10,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-second-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select6']/div</td>
+ <td>7,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-third-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select7']/div</td>
+ <td>7,12</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-fourth-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select8']/div</td>
+ <td>9,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[7]/div/div/div</td>
+ <td>20,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>sliders</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[8]/div/div/div</td>
+ <td>18,5</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VVerticalLayout[0]</td>
+ <td>518,136</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>uploads</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[9]/div/div/div</td>
+ <td>18,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>forms</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[10]/div/div</td>
+ <td>22,25</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables</td>
+</tr>
+<tr>
+ <td>contextmenu</td>
+ <td>//div[@id='table0']/div[2]/div[1]/table/tbody/tr[2]/td[1]/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-contextmenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='table0']/div[1]/div[2]</td>
+ <td>12,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-collapsemenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[11]/div/div/div</td>
+ <td>28,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>trees</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[12]/div/div</td>
+ <td>52,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>treetable</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[13]/div/div</td>
+ <td>23,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>layouts</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[14]/div/div/div</td>
+ <td>24,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tabsheets</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[15]/div/div/div</td>
+ <td>24,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>accordions</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[16]/div/div/div</td>
+ <td>15,0</td>
+</tr>
+<!--Window and Notification screenshots-->
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton0']/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-default</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-light</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>11,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-black</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>8,5</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-dialog</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton4']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-opaque</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>10,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[17]/div/div</td>
+ <td>46,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt0']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-humanized</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>214,15</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-warning</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>172,13</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-error</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>318,11</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-tray</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>66,9</td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/uitest/liferay_theme_test.html b/uitest/src/com/vaadin/tests/components/uitest/liferay_theme_test.html
new file mode 100644
index 0000000000..04778d76ba
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/uitest/liferay_theme_test.html
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>liferay_theme_test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">liferay_theme_test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/ThemeTestUI?restartApplication&amp;theme=liferay</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td>150</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>labels</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[2]/div/div/div</td>
+ <td>31,8</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>buttons</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[3]/div/div/div</td>
+ <td>27,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>embedded</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[4]/div/div</td>
+ <td>33,24</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield0']/button</td>
+ <td>11,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-first-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[2]/div/div[3]/div/div</td>
+ <td>402,158</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield1']/button</td>
+ <td>14,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-second-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield2']/button</td>
+ <td>9,16</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-third-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield3']/button</td>
+ <td>9,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-fourth-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[5]/div/div/div</td>
+ <td>35,2</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>textfields</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[6]/div/div/div</td>
+ <td>27,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select0']/div</td>
+ <td>9,11</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-first-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select1']/div</td>
+ <td>10,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-second-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select6']/div</td>
+ <td>7,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-third-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select7']/div</td>
+ <td>7,12</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-fourth-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select8']/div</td>
+ <td>9,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[7]/div/div/div</td>
+ <td>20,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>sliders</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[8]/div/div/div</td>
+ <td>18,5</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VVerticalLayout[0]</td>
+ <td>518,136</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>uploads</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[9]/div/div/div</td>
+ <td>18,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>forms</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[10]/div/div</td>
+ <td>22,25</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables</td>
+</tr>
+<tr>
+ <td>contextmenu</td>
+ <td>//div[@id='table0']/div[2]/div[1]/table/tbody/tr[2]/td[1]/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-contextmenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='table0']/div[1]/div[2]</td>
+ <td>12,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-collapsemenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[11]/div/div/div</td>
+ <td>28,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>trees</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[12]/div/div</td>
+ <td>52,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>treetable</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[13]/div/div</td>
+ <td>23,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>layouts</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[14]/div/div/div</td>
+ <td>24,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tabsheets</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[15]/div/div/div</td>
+ <td>24,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>accordions</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[16]/div/div/div</td>
+ <td>15,0</td>
+</tr>
+<!--Window and Notification screenshots-->
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton0']/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-default</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-light</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>11,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-black</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>8,5</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-dialog</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton4']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-opaque</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>10,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[17]/div/div</td>
+ <td>46,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt0']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-humanized</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>214,15</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-warning</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>172,13</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-error</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>318,11</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-tray</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>66,9</td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/components/uitest/runo_theme_test.html b/uitest/src/com/vaadin/tests/components/uitest/runo_theme_test.html
new file mode 100644
index 0000000000..725d5bda74
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/uitest/runo_theme_test.html
@@ -0,0 +1,432 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="" />
+<title>runo_theme_test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">runo_theme_test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/ThemeTestUI?restartApplication&amp;theme=runo</td>
+ <td></td>
+</tr>
+<tr>
+ <td>setSpeed</td>
+ <td>150</td>
+ <td>150</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>labels</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[2]/div/div/div</td>
+ <td>31,8</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>buttons</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[3]/div/div/div</td>
+ <td>27,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>embedded</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[4]/div/div</td>
+ <td>33,24</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield0']/button</td>
+ <td>11,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-first-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[2]/div/div[3]/div/div</td>
+ <td>402,158</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield1']/button</td>
+ <td>14,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-second-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield2']/button</td>
+ <td>9,16</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-third-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='datefield3']/button</td>
+ <td>9,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>dates-fourth-popup</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[5]/div/div/div</td>
+ <td>35,2</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>textfields</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[6]/div/div/div</td>
+ <td>27,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select0']/div</td>
+ <td>9,11</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-first-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select1']/div</td>
+ <td>10,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-second-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select6']/div</td>
+ <td>7,13</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-third-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select7']/div</td>
+ <td>7,12</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>selects-fourth-open</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='select8']/div</td>
+ <td>9,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[7]/div/div/div</td>
+ <td>20,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>sliders</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[8]/div/div/div</td>
+ <td>18,5</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VVerticalLayout[0]</td>
+ <td>518,136</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>uploads</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[9]/div/div/div</td>
+ <td>18,10</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>forms</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[10]/div/div</td>
+ <td>22,25</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables</td>
+</tr>
+<tr>
+ <td>contextmenu</td>
+ <td>//div[@id='table0']/div[2]/div[1]/table/tbody/tr[2]/td[1]/div</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-contextmenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='table0']/div[1]/div[2]</td>
+ <td>12,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tables-collapsemenu</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[11]/div/div/div</td>
+ <td>28,3</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>trees</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[12]/div/div</td>
+ <td>52,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>treetable</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[13]/div/div</td>
+ <td>23,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>layouts</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[14]/div/div/div</td>
+ <td>24,1</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>tabsheets</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[15]/div/div/div</td>
+ <td>24,9</td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>accordions</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[16]/div/div/div</td>
+ <td>15,0</td>
+</tr>
+<!--Window and Notification screenshots-->
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton0']/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-default</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-light</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>11,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-black</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>8,5</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-dialog</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>9,6</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='windButton4']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>subwindow-opaque</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::/VWindow[0]/domChild[0]/domChild[0]/domChild[1]</td>
+ <td>10,7</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>//div[@id='testsampler']/div[1]/table/tbody/tr/td[17]/div/div</td>
+ <td>46,8</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt0']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-humanized</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>214,15</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt1']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-warning</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>172,13</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt2']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-error</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>318,11</td>
+</tr>
+<tr>
+ <td>click</td>
+ <td>//div[@id='notifButt3']/span/span</td>
+ <td></td>
+</tr>
+<tr>
+ <td>screenCapture</td>
+ <td></td>
+ <td>notification-tray</td>
+</tr>
+<tr>
+ <td>mouseClick</td>
+ <td>vaadin=runThemeTestUI::Root/VNotification[0]</td>
+ <td>66,9</td>
+</tr>
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/layouts/TestLayoutClickListeners.html b/uitest/src/com/vaadin/tests/layouts/TestLayoutClickListeners.html
index a3f46626c0..496994a60c 100644
--- a/uitest/src/com/vaadin/tests/layouts/TestLayoutClickListeners.html
+++ b/uitest/src/com/vaadin/tests/layouts/TestLayoutClickListeners.html
@@ -190,12 +190,12 @@
<!--Drag in AbsoluteLayout-->
<tr>
<td>drag</td>
- <td>vaadin=runcomvaadintestslayoutsTestLayoutClickListeners::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VHorizontalLayout[0]/VOrderedLayout$Slot[2]/VAbsoluteLayout[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]/domChild[0]</td>
+ <td>vaadin=runcomvaadintestslayoutsTestLayoutClickListeners::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VHorizontalLayout[0]/VOrderedLayout$Slot[2]/VAbsoluteLayout[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]</td>
<td>21,9</td>
</tr>
<tr>
<td>drop</td>
- <td>vaadin=runcomvaadintestslayoutsTestLayoutClickListeners::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VHorizontalLayout[0]/VOrderedLayout$Slot[2]/VAbsoluteLayout[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]/domChild[0]</td>
+ <td>vaadin=runcomvaadintestslayoutsTestLayoutClickListeners::/VVerticalLayout[0]/VOrderedLayout$Slot[1]/VHorizontalLayout[0]/VOrderedLayout$Slot[2]/VAbsoluteLayout[0]/domChild[0]/domChild[0]/domChild[3]/domChild[0]</td>
<td>21,9</td>
</tr>
<tr>