diff options
47 files changed, 3916 insertions, 1366 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/WebContent/VAADIN/themes/runo/panel/panel.scss b/WebContent/VAADIN/themes/runo/panel/panel.scss index 1243cfbb77..66fb751d88 100644 --- a/WebContent/VAADIN/themes/runo/panel/panel.scss +++ b/WebContent/VAADIN/themes/runo/panel/panel.scss @@ -38,7 +38,7 @@ } .#{$primaryStyleName}-deco:before { display: block; - + content: ""; width: 9px; height: 9px; margin-left: -9px; 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/VTooltip.java b/client/src/com/vaadin/client/VTooltip.java index a4c4766e4f..2fb7c39d5f 100644 --- a/client/src/com/vaadin/client/VTooltip.java +++ b/client/src/com/vaadin/client/VTooltip.java @@ -117,12 +117,14 @@ public class VTooltip extends VOverlay { if (x + offsetWidth + MARGIN - Window.getScrollLeft() > Window .getClientWidth()) { - x = Window.getClientWidth() - offsetWidth - MARGIN; + x = Window.getClientWidth() - offsetWidth - MARGIN + + Window.getScrollLeft(); } if (y + offsetHeight + MARGIN - Window.getScrollTop() > Window .getClientHeight()) { - y = tooltipEventMouseY - 5 - offsetHeight; + y = tooltipEventMouseY - 5 - offsetHeight + + Window.getScrollTop(); if (y - Window.getScrollTop() < 0) { // tooltip does not fit on top of the mouse either, // put it at the top of the screen diff --git a/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java b/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java index e062d37dd6..ce16b67d8b 100644 --- a/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java +++ b/client/src/com/vaadin/client/ui/orderedlayout/AbstractOrderedLayoutConnector.java @@ -15,14 +15,15 @@ */ package com.vaadin.client.ui.orderedlayout; -import java.util.HashMap; -import java.util.HashSet; import java.util.List; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.user.client.Element; +import com.vaadin.client.ApplicationConnection; import com.vaadin.client.ComponentConnector; import com.vaadin.client.ConnectorHierarchyChangeEvent; +import com.vaadin.client.LayoutManager; +import com.vaadin.client.ServerConnector; import com.vaadin.client.Util; import com.vaadin.client.communication.StateChangeEvent; import com.vaadin.client.communication.StateChangeEvent.StateChangeHandler; @@ -62,35 +63,28 @@ public abstract class AbstractOrderedLayoutConnector extends @Override protected LayoutClickRpc getLayoutClickRPC() { return getRpcProxy(AbstractOrderedLayoutServerRpc.class); - }; + } }; private StateChangeHandler childStateChangeHandler = new StateChangeHandler() { @Override public void onStateChanged(StateChangeEvent stateChangeEvent) { - - ComponentConnector child = (ComponentConnector) stateChangeEvent - .getConnector(); - - // We need to update the slot size if the component size is changed - // to relative - Slot slot = getWidget().getSlot(child.getWidget()); - slot.setRelativeWidth(child.isRelativeWidth()); - slot.setRelativeHeight(child.isRelativeHeight()); - - // Update slot style names - List<String> childStyles = child.getState().styles; - if (childStyles == null) { - getWidget().setSlotStyleNames(child.getWidget(), - (String[]) null); - } else { - getWidget().setSlotStyleNames(child.getWidget(), - childStyles.toArray(new String[childStyles.size()])); + // Child state has changed, update stuff it hasn't already been done + updateInternalState(); + + /* + * Some changes must always be done after each child's own state + * change handler has been run because it might have changed some + * styles that are overridden here. + */ + ServerConnector child = stateChangeEvent.getConnector(); + if (child instanceof ComponentConnector) { + ComponentConnector component = (ComponentConnector) child; + Slot slot = getWidget().getSlot(component.getWidget()); + + slot.setRelativeWidth(component.isRelativeWidth()); + slot.setRelativeHeight(component.isRelativeHeight()); } - - updateSlotListeners(child); - - updateLayoutHeight(); } }; @@ -123,7 +117,6 @@ public abstract class AbstractOrderedLayoutConnector extends if (slot != null) { slot.setCaptionResizeListener(null); } - childCaptionElementHeight.remove(widgetElement); return; } @@ -138,14 +131,10 @@ public abstract class AbstractOrderedLayoutConnector extends getWidget().updateCaptionOffset(captionElement); } - int h = getLayoutManager().getOuterHeight(captionElement) - - getLayoutManager().getMarginHeight(captionElement); - childCaptionElementHeight.put(widgetElement, h); - updateLayoutHeight(); if (needsExpand()) { - getWidget().updateExpand(); + getWidget().updateExpandCompensation(); } } }; @@ -155,7 +144,7 @@ public abstract class AbstractOrderedLayoutConnector extends public void onElementResize(ElementResizeEvent e) { updateLayoutHeight(); if (needsExpand()) { - getWidget().updateExpand(); + getWidget().updateExpandCompensation(); } } }; @@ -164,7 +153,7 @@ public abstract class AbstractOrderedLayoutConnector extends @Override public void onElementResize(ElementResizeEvent e) { if (needsExpand()) { - getWidget().updateExpand(); + getWidget().updateExpandCompensation(); } } }; @@ -201,42 +190,44 @@ public abstract class AbstractOrderedLayoutConnector extends } /** - * For bookkeeping. Used to determine if extra calculations are needed for - * horizontal layout. - */ - private HashSet<ComponentConnector> hasVerticalAlignment = new HashSet<ComponentConnector>(); - - /** - * For bookkeeping. Used to determine if extra calculations are needed for - * horizontal layout. - */ - private HashSet<ComponentConnector> hasRelativeHeight = new HashSet<ComponentConnector>(); - - /** - * For bookkeeping. Used to determine if extra calculations are needed for - * horizontal layout. + * Keep track of whether any child has relative height. Used to determine + * whether measurements are needed to make relative child heights work + * together with undefined container height. */ - private HashSet<ComponentConnector> hasExpandRatio = new HashSet<ComponentConnector>(); + private boolean hasChildrenWithRelativeHeight = false; /** - * For bookkeeping. Used in extra calculations for horizontal layout. + * Keeps track of whether slots should be expanded based on available space. */ - private HashSet<Element> needsMeasure = new HashSet<Element>(); + private boolean needsExpand = false; /** - * For bookkeeping. Used in extra calculations for horizontal layout. + * The id of the previous response for which state changes have been + * processed. If this is the same as the + * {@link ApplicationConnection#getLastResponseId()}, it means that we can + * skip some quite expensive calculations because we know that the state + * hasn't changed since the last time the values were calculated. */ - private HashMap<Element, Integer> childCaptionElementHeight = new HashMap<Element, Integer>(); + private int processedResponseId = -1; /* * (non-Javadoc) * - * @see - * com.vaadin.client.HasComponentsConnector#updateCaption(com.vaadin + * @see com.vaadin.client.HasComponentsConnector#updateCaption(com.vaadin * .client.ComponentConnector) */ @Override - public void updateCaption(ComponentConnector child) { + public void updateCaption(ComponentConnector connector) { + /* + * Don't directly update captions here to avoid calling e.g. + * updateLayoutHeight() before everything is initialized. + * updateInternalState() will ensure all captions are updated when + * appropriate. + */ + updateInternalState(); + } + + private void updateCaptionInternal(ComponentConnector child) { Slot slot = getWidget().getSlot(child.getWidget()); String caption = child.getState().caption; @@ -274,15 +265,8 @@ public abstract class AbstractOrderedLayoutConnector extends && (pos == CaptionPosition.LEFT || pos == CaptionPosition.RIGHT)) { getWidget().updateCaptionOffset(slot.getCaptionElement()); } - } else { - childCaptionElementHeight.remove(child.getWidget().getElement()); } - updateLayoutHeight(); - - if (needsExpand()) { - getWidget().updateExpand(); - } } /* @@ -312,12 +296,6 @@ public abstract class AbstractOrderedLayoutConnector extends for (ComponentConnector child : previousChildren) { if (child.getParent() != this) { Slot slot = layout.getSlot(child.getWidget()); - hasVerticalAlignment.remove(child); - hasRelativeHeight.remove(child); - hasExpandRatio.remove(child); - needsMeasure.remove(child.getWidget().getElement()); - childCaptionElementHeight - .remove(child.getWidget().getElement()); slot.setWidgetResizeListener(null); if (slot.hasCaption()) { slot.setCaptionResizeListener(null); @@ -330,13 +308,7 @@ public abstract class AbstractOrderedLayoutConnector extends } } - // If some component is added/removed, we need to recalculate the expand - if (needsExpand()) { - getWidget().updateExpand(); - } else { - getWidget().clearExpand(); - } - + updateInternalState(); } /* @@ -354,51 +326,91 @@ public abstract class AbstractOrderedLayoutConnector extends getWidget().setMargin(new MarginInfo(getState().marginsBitmask)); getWidget().setSpacing(getState().spacing); - hasExpandRatio.clear(); - hasVerticalAlignment.clear(); - hasRelativeHeight.clear(); - needsMeasure.clear(); + updateInternalState(); + } - boolean equalExpandRatio = getWidget().vertical ? !isUndefinedHeight() + /** + * Updates DOM properties and listeners based on the current state of this + * layout and its children. + */ + private void updateInternalState() { + // Avoid updating again for the same data + int lastResponseId = getConnection().getLastResponseId(); + if (processedResponseId == lastResponseId) { + return; + } + // Remember that everything is updated for this response + processedResponseId = lastResponseId; + + hasChildrenWithRelativeHeight = false; + + needsExpand = getWidget().vertical ? !isUndefinedHeight() : !isUndefinedWidth(); - for (ComponentConnector child : getChildComponents()) { - double expandRatio = getState().childData.get(child).expandRatio; - if (expandRatio > 0) { - equalExpandRatio = false; - break; + + boolean onlyZeroExpands = true; + if (needsExpand) { + for (ComponentConnector child : getChildComponents()) { + double expandRatio = getState().childData.get(child).expandRatio; + if (expandRatio != 0) { + onlyZeroExpands = false; + break; + } } } + // First update bookkeeping for all children for (ComponentConnector child : getChildComponents()) { + if (child.delegateCaptionHandling()) { + updateCaptionInternal(child); + } + Slot slot = getWidget().getSlot(child.getWidget()); + // Update slot style names + List<String> childStyles = child.getState().styles; + if (childStyles == null) { + getWidget().setSlotStyleNames(child.getWidget(), + (String[]) null); + } else { + getWidget().setSlotStyleNames(child.getWidget(), + childStyles.toArray(new String[childStyles.size()])); + } + AlignmentInfo alignment = new AlignmentInfo( getState().childData.get(child).alignmentBitmask); slot.setAlignment(alignment); - double expandRatio = getState().childData.get(child).expandRatio; + double expandRatio = onlyZeroExpands ? 1 : getState().childData + .get(child).expandRatio; - if (equalExpandRatio) { - expandRatio = 1; - } else if (expandRatio == 0) { - expandRatio = -1; - } slot.setExpandRatio(expandRatio); - // Bookkeeping to identify special cases that need extra - // calculations - if (alignment.isVerticalCenter() || alignment.isBottom()) { - hasVerticalAlignment.add(child); + if (child.isRelativeHeight()) { + hasChildrenWithRelativeHeight = true; } + } - if (expandRatio > 0) { - hasExpandRatio.add(child); - } + if (needsFixedHeight()) { + // Add resize listener to ensure the widget itself is measured + getLayoutManager().addElementResizeListener( + getWidget().getElement(), childComponentResizeListener); + } else { + getLayoutManager().removeElementResizeListener( + getWidget().getElement(), childComponentResizeListener); } + // Then update listeners based on bookkeeping updateAllSlotListeners(); + // Update the layout at this point to ensure it's OK even if we get no + // element resize events updateLayoutHeight(); + if (needsExpand()) { + getWidget().updateExpandedSizes(); + getWidget().updateExpandCompensation(); + } else { + getWidget().clearExpand(); + } } /** @@ -406,29 +418,19 @@ public abstract class AbstractOrderedLayoutConnector extends */ private boolean needsFixedHeight() { boolean isVertical = getWidget().vertical; - boolean hasChildrenWithVerticalAlignmentCenterOrBottom = !hasVerticalAlignment - .isEmpty(); - boolean allChildrenHasVerticalAlignmentCenterOrBottom = hasVerticalAlignment - .size() == getChildren().size(); - boolean hasChildrenWithRelativeHeight = !hasRelativeHeight.isEmpty(); if (isVertical) { + // Doesn't need height fix for vertical layouts return false; } else if (!isUndefinedHeight()) { + // Fix not needed unless the height is undefined return false; } else if (!hasChildrenWithRelativeHeight) { - return false; - } - - else if (!hasChildrenWithVerticalAlignmentCenterOrBottom) { - return false; - } - - else if (allChildrenHasVerticalAlignmentCenterOrBottom) { + // Already works if there are no relative heights return false; } @@ -439,9 +441,7 @@ public abstract class AbstractOrderedLayoutConnector extends * Does the layout need to expand? */ private boolean needsExpand() { - boolean canApplyExpand = (getWidget().vertical && !isUndefinedHeight()) - || (!getWidget().vertical && !isUndefinedWidth()); - return hasExpandRatio.size() > 0 && canApplyExpand; + return needsExpand; } /** @@ -477,27 +477,24 @@ public abstract class AbstractOrderedLayoutConnector extends } } else if ((child.isRelativeHeight() || child.isRelativeWidth()) && slot.hasCaption()) { - // If the slot has caption, we need to listen for it's size changes - // in order to update the padding/margin offset for relative sized - // components + /* + * If the slot has caption, we need to listen for its size changes + * in order to update the padding/margin offset for relative sized + * components. + * + * TODO might only be needed if the caption is in the same direction + * as the relative size? + */ slot.setCaptionResizeListener(slotCaptionResizeListener); } if (needsExpand()) { + // TODO widget resize only be needed for children without expand? slot.setWidgetResizeListener(childComponentResizeListener); if (slot.hasSpacing()) { slot.setSpacingResizeListener(spacingResizeListener); } } - - if (child.isRelativeHeight()) { - hasRelativeHeight.add(child); - needsMeasure.remove(child.getWidget().getElement()); - } else { - hasRelativeHeight.remove(child); - needsMeasure.add(child.getWidget().getElement()); - } - } /** @@ -506,7 +503,11 @@ public abstract class AbstractOrderedLayoutConnector extends private void updateLayoutHeight() { if (needsFixedHeight()) { int h = getMaxHeight(); - assert (h >= 0); + if (h < 0) { + // Postpone change if there are elements that have not yet been + // measured + return; + } h += getLayoutManager().getBorderHeight(getWidget().getElement()) + getLayoutManager().getPaddingHeight( getWidget().getElement()); @@ -522,37 +523,49 @@ public abstract class AbstractOrderedLayoutConnector extends int highestNonRelative = -1; int highestRelative = -1; + LayoutManager layoutManager = getLayoutManager(); + for (ComponentConnector child : getChildComponents()) { - // TODO would be more efficient to measure the slot element if both - // caption and child widget elements need to be measured. Keeping - // track of what to measure is the most difficult part of this - // layout. - Element el = child.getWidget().getElement(); - CaptionPosition pos = getWidget().getCaptionPositionFromElement( - (Element) el.getParentElement().cast()); - int h = getLayoutManager().getOuterHeight(el); + Slot slot = getWidget().getSlot(child.getWidget()); + Element captionElement = slot.getCaptionElement(); + CaptionPosition pos = slot.getCaptionPosition(); + + Element childElement = child.getWidget().getElement(); + int h = layoutManager.getOuterHeight(childElement); if (h == -1) { - // Height has not yet been measured so using a more - // conventional method instead. - h = Util.getRequiredHeight(el); + // Height has not yet been measured -> postpone actions that + // depend on the max height + return -1; } - if (needsMeasure.contains(el)) { - String sHeight = el.getStyle().getHeight(); - // Only add the caption size to the height of the slot if - // coption position is top or bottom - if (childCaptionElementHeight.containsKey(el) - && (sHeight == null || !sHeight.endsWith("%")) - && (pos == CaptionPosition.TOP || pos == CaptionPosition.BOTTOM)) { - h += childCaptionElementHeight.get(el); + + boolean hasRelativeHeight = slot.hasRelativeHeight(); + + boolean includeCaptionHeight = captionElement != null + && (pos == CaptionPosition.TOP || pos == CaptionPosition.BOTTOM); + if (!hasRelativeHeight && !includeCaptionHeight + && captionElement != null) { + String sHeight = childElement.getStyle().getHeight(); + includeCaptionHeight = (sHeight == null || !sHeight + .endsWith("%")); + } + + if (includeCaptionHeight) { + int captionHeight = layoutManager + .getOuterHeight(captionElement) + - getLayoutManager().getMarginHeight(captionElement); + if (captionHeight == -1) { + // Height has not yet been measured -> postpone actions that + // depend on the max height + return -1; } + h += captionHeight; + } + + if (!hasRelativeHeight) { if (h > highestNonRelative) { highestNonRelative = h; } } else { - if (childCaptionElementHeight.containsKey(el) - && (pos == CaptionPosition.TOP || pos == CaptionPosition.BOTTOM)) { - h += childCaptionElementHeight.get(el); - } if (h > highestRelative) { highestRelative = h; } diff --git a/client/src/com/vaadin/client/ui/orderedlayout/Slot.java b/client/src/com/vaadin/client/ui/orderedlayout/Slot.java index 094a7f1f0a..fc1c10de68 100644 --- a/client/src/com/vaadin/client/ui/orderedlayout/Slot.java +++ b/client/src/com/vaadin/client/ui/orderedlayout/Slot.java @@ -276,7 +276,11 @@ public final class Slot extends SimplePanel { } /** - * Set how the slot should be expanded relative to the other slots + * Set how the slot should be expanded relative to the other slots. 0 means + * that the slot should not participate in the division of space based on + * the expand ratios but instead be allocated space based on its natural + * size. Other values causes the slot to get a share of the otherwise + * unallocated space in proportion to the slot's expand ratio value. * * @param expandRatio * The ratio of the space the slot should occupy @@ -290,7 +294,9 @@ public final class Slot extends SimplePanel { * Get the expand ratio for the slot. The expand ratio describes how the * slot should be resized compared to other slots in the layout * - * @return + * @return the expand ratio of the slot + * + * @see #setExpandRatio(double) */ public double getExpandRatio() { return expandRatio; diff --git a/client/src/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java b/client/src/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java index 00b7092d81..0199e95c58 100644 --- a/client/src/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java +++ b/client/src/com/vaadin/client/ui/orderedlayout/VAbstractOrderedLayout.java @@ -26,10 +26,10 @@ import com.google.gwt.regexp.shared.RegExp; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.RequiresResize; import com.google.gwt.user.client.ui.Widget; import com.vaadin.client.LayoutManager; import com.vaadin.client.Util; -import com.vaadin.shared.ui.AlignmentInfo; import com.vaadin.shared.ui.MarginInfo; /** @@ -50,6 +50,12 @@ public class VAbstractOrderedLayout extends FlowPanel { private LayoutManager layoutManager; + /** + * Keep track of the last allocated expand size to help detecting when it + * changes. + */ + private int lastExpandSize = -1; + public VAbstractOrderedLayout(boolean vertical) { this.vertical = vertical; } @@ -332,12 +338,25 @@ public class VAbstractOrderedLayout extends FlowPanel { } /** - * Triggers a recalculation of the expand width and heights + * Assigns relative sizes to the children that should expand based on their + * expand ratios. */ - private void recalculateExpands() { + public void updateExpandedSizes() { + // Ensure the expand wrapper is in place + if (expandWrapper == null) { + expandWrapper = DOM.createDiv(); + expandWrapper.setClassName("v-expand"); + while (getElement().getChildCount() > 0) { + Node el = getElement().getChild(0); + expandWrapper.appendChild(el); + } + getElement().appendChild(expandWrapper); + } + + // Sum up expand ratios to get the denominator double total = 0; for (Slot slot : widgetToSlot.values()) { - if (slot.getExpandRatio() > -1) { + if (slot.getExpandRatio() != 0) { total += slot.getExpandRatio(); } else { if (vertical) { @@ -346,9 +365,13 @@ public class VAbstractOrderedLayout extends FlowPanel { slot.getElement().getStyle().clearWidth(); } } + slot.getElement().getStyle().clearMarginLeft(); + slot.getElement().getStyle().clearMarginTop(); } + + // Give each child its own share for (Slot slot : widgetToSlot.values()) { - if (slot.getExpandRatio() > -1) { + if (slot.getExpandRatio() != 0) { if (vertical) { slot.setHeight((100 * (slot.getExpandRatio() / total)) + "%"); @@ -372,7 +395,8 @@ public class VAbstractOrderedLayout extends FlowPanel { */ public void clearExpand() { if (expandWrapper != null) { - for (; expandWrapper.getChildCount() > 0;) { + lastExpandSize = -1; + while (expandWrapper.getChildCount() > 0) { Element el = expandWrapper.getChild(0).cast(); getElement().appendChild(el); if (vertical) { @@ -389,39 +413,23 @@ public class VAbstractOrderedLayout extends FlowPanel { } /** - * Adds elements used to expand a slot + * Updates the expand compensation based on the measured sizes of children + * without expand. */ - public void updateExpand() { + public void updateExpandCompensation() { boolean isExpanding = false; for (Widget slot : getChildren()) { - if (((Slot) slot).getExpandRatio() > -1) { + if (((Slot) slot).getExpandRatio() != 0) { isExpanding = true; - } else { - if (vertical) { - slot.getElement().getStyle().clearHeight(); - } else { - slot.getElement().getStyle().clearWidth(); - } + break; } - slot.getElement().getStyle().clearMarginLeft(); - slot.getElement().getStyle().clearMarginTop(); } if (isExpanding) { - if (expandWrapper == null) { - expandWrapper = DOM.createDiv(); - expandWrapper.setClassName("v-expand"); - for (; getElement().getChildCount() > 0;) { - Node el = getElement().getChild(0); - expandWrapper.appendChild(el); - } - getElement().appendChild(expandWrapper); - } - int totalSize = 0; for (Widget w : getChildren()) { Slot slot = (Slot) w; - if (slot.getExpandRatio() == -1) { + if (slot.getExpandRatio() == 0) { if (layoutManager != null) { // TODO check caption position @@ -483,44 +491,21 @@ public class VAbstractOrderedLayout extends FlowPanel { .setMarginLeft(-totalSize, Unit.PX); } - recalculateExpands(); - } - } - - /** - * Perform a recalculation of the layout height - */ - public void recalculateLayoutHeight() { - // Only needed if a horizontal layout is undefined high, and contains - // relative height children or vertical alignments - if (vertical || definedHeight) { - return; - } - - boolean hasRelativeHeightChildren = false; - boolean hasVAlign = false; - - for (Widget slot : getChildren()) { - Widget widget = ((Slot) slot).getWidget(); - String h = widget.getElement().getStyle().getHeight(); - if (h != null && h.indexOf("%") > -1) { - hasRelativeHeightChildren = true; - } - AlignmentInfo a = ((Slot) slot).getAlignment(); - if (a != null && (a.isVerticalCenter() || a.isBottom())) { - hasVAlign = true; - } - } - - if (hasRelativeHeightChildren || hasVAlign) { - int newHeight; - if (layoutManager != null) { - newHeight = layoutManager.getOuterHeight(getElement()) - - layoutManager.getMarginHeight(getElement()); - } else { - newHeight = getElement().getOffsetHeight(); + // Measure expanded children again if their size might have changed + if (totalSize != lastExpandSize) { + lastExpandSize = totalSize; + for (Widget w : getChildren()) { + Slot slot = (Slot) w; + if (slot.getExpandRatio() != 0) { + if (layoutManager != null) { + layoutManager.setNeedsMeasure(Util + .findConnectorFor(slot.getWidget())); + } else if (slot.getWidget() instanceof RequiresResize) { + ((RequiresResize) slot.getWidget()).onResize(); + } + } + } } - getElement().getStyle().setHeight(newHeight, Unit.PX); } } diff --git a/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java b/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java index 12cb892090..065810a7b4 100644 --- a/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java +++ b/server/src/com/vaadin/data/util/sqlcontainer/SQLContainer.java @@ -854,7 +854,21 @@ public class SQLContainer implements Container, Container.Filterable, * Does NOT remove sorting or filtering rules! */ public void refresh() { - sizeDirty = true; + refresh(true); + } + + /** + * Refreshes the container. If <code>setSizeDirty</code> is + * <code>false</code>, assumes that the current size is up to date. This is + * used in {@link #updateCount()} to refresh the contents when we know the + * size was just updated. + * + * @param setSizeDirty + */ + private void refresh(boolean setSizeDirty) { + if (setSizeDirty) { + sizeDirty = true; + } currentOffset = 0; cachedItems.clear(); itemIndexes.clear(); @@ -1105,12 +1119,13 @@ public class SQLContainer implements Container, Container.Filterable, "The query delegate doesn't support filtering", e); } int newSize = delegate.getCount(); + sizeUpdated = new Date(); + sizeDirty = false; if (newSize != size) { size = newSize; - refresh(); + // Size is up to date so don't set it back to dirty in refresh() + refresh(false); } - sizeUpdated = new Date(); - sizeDirty = false; getLogger().log(Level.FINER, "Updated row count. New count is: " + size); } catch (SQLException e) { 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/server/src/com/vaadin/ui/AbstractSelect.java b/server/src/com/vaadin/ui/AbstractSelect.java index ac80dfbb74..5a674d4b89 100644 --- a/server/src/com/vaadin/ui/AbstractSelect.java +++ b/server/src/com/vaadin/ui/AbstractSelect.java @@ -17,6 +17,7 @@ package com.vaadin.ui; import java.io.Serializable; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.EventObject; @@ -25,6 +26,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.LinkedList; +import java.util.List; import java.util.Map; import java.util.Set; @@ -896,6 +898,42 @@ public abstract class AbstractSelect extends AbstractField<Object> implements } /** + * Checks that the current selection is valid, i.e. the selected item ids + * exist in the container. Updates the selection if one or several selected + * item ids are no longer available in the container. + */ + @SuppressWarnings("unchecked") + public void sanitizeSelection() { + Object value = getValue(); + if (value == null) { + return; + } + + boolean changed = false; + + if (isMultiSelect()) { + Collection<Object> valueAsCollection = (Collection<Object>) value; + List<Object> newSelection = new ArrayList<Object>( + valueAsCollection.size()); + for (Object subValue : valueAsCollection) { + if (containsId(subValue)) { + newSelection.add(subValue); + } else { + changed = true; + } + } + if (changed) { + setValue(newSelection); + } + } else { + if (!containsId(value)) { + setValue(null); + } + } + + } + + /** * Removes the property from all items. Removes a property with given id * from all the items in the container. * @@ -943,11 +981,11 @@ public abstract class AbstractSelect extends AbstractField<Object> implements if (items != null) { if (items instanceof Container.ItemSetChangeNotifier) { ((Container.ItemSetChangeNotifier) items) - .removeListener(this); + .removeItemSetChangeListener(this); } if (items instanceof Container.PropertySetChangeNotifier) { ((Container.PropertySetChangeNotifier) items) - .removeListener(this); + .removePropertySetChangeListener(this); } } @@ -960,11 +998,12 @@ public abstract class AbstractSelect extends AbstractField<Object> implements // Adds listeners if (items != null) { if (items instanceof Container.ItemSetChangeNotifier) { - ((Container.ItemSetChangeNotifier) items).addListener(this); + ((Container.ItemSetChangeNotifier) items) + .addItemSetChangeListener(this); } if (items instanceof Container.PropertySetChangeNotifier) { ((Container.PropertySetChangeNotifier) items) - .addListener(this); + .addPropertySetChangeListener(this); } } @@ -1829,7 +1868,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements } if (i instanceof Item.PropertySetChangeNotifier) { ((Item.PropertySetChangeNotifier) i) - .addListener(getCaptionChangeListener()); + .addPropertySetChangeListener(getCaptionChangeListener()); captionChangeNotifiers.add(i); } Collection<?> pids = i.getItemPropertyIds(); @@ -1839,7 +1878,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements if (p != null && p instanceof Property.ValueChangeNotifier) { ((Property.ValueChangeNotifier) p) - .addListener(getCaptionChangeListener()); + .addValueChangeListener(getCaptionChangeListener()); captionChangeNotifiers.add(p); } } @@ -1851,7 +1890,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements getItemCaptionPropertyId()); if (p != null && p instanceof Property.ValueChangeNotifier) { ((Property.ValueChangeNotifier) p) - .addListener(getCaptionChangeListener()); + .addValueChangeListener(getCaptionChangeListener()); captionChangeNotifiers.add(p); } break; @@ -1862,7 +1901,7 @@ public abstract class AbstractSelect extends AbstractField<Object> implements getItemIconPropertyId()); if (p != null && p instanceof Property.ValueChangeNotifier) { ((Property.ValueChangeNotifier) p) - .addListener(getCaptionChangeListener()); + .addValueChangeListener(getCaptionChangeListener()); captionChangeNotifiers.add(p); } } @@ -1874,10 +1913,10 @@ public abstract class AbstractSelect extends AbstractField<Object> implements Object notifier = it.next(); if (notifier instanceof Item.PropertySetChangeNotifier) { ((Item.PropertySetChangeNotifier) notifier) - .removeListener(getCaptionChangeListener()); + .removePropertySetChangeListener(getCaptionChangeListener()); } else { ((Property.ValueChangeNotifier) notifier) - .removeListener(getCaptionChangeListener()); + .removeValueChangeListener(getCaptionChangeListener()); } } captionChangeNotifiers.clear(); diff --git a/server/src/com/vaadin/ui/AbstractSplitPanel.java b/server/src/com/vaadin/ui/AbstractSplitPanel.java index 5e3f7ec24d..689feda7ed 100644 --- a/server/src/com/vaadin/ui/AbstractSplitPanel.java +++ b/server/src/com/vaadin/ui/AbstractSplitPanel.java @@ -357,7 +357,7 @@ public abstract class AbstractSplitPanel extends AbstractComponentContainer { * the unit (from {@link Sizeable}) in which the size is given. * Allowed units are UNITS_PERCENTAGE and UNITS_PIXELS */ - public void setMinSplitPosition(int pos, Unit unit) { + public void setMinSplitPosition(float pos, Unit unit) { setSplitPositionLimits(pos, unit, getSplitterState().maxPosition, posMaxUnit); } diff --git a/theme-compiler/build.xml b/theme-compiler/build.xml index 48ee9fdc73..1f9cddebd7 100644 --- a/theme-compiler/build.xml +++ b/theme-compiler/build.xml @@ -20,8 +20,8 @@ <!--<property name="classes.exclude" value="com/vaadin/buildhelpers/**" />--> <target name="parser"> - <!-- Copy javacc-5.0.jar to ${result.path}/javacc/javacc.jar as the javacc task requires the jar to be named javacc.jar --> - <property name="javacc.home" location="${result.path}/javacc" /> + <!-- Copy javacc-5.0.jar to ${result.dir}/javacc/javacc.jar as the javacc task requires the jar to be named javacc.jar --> + <property name="javacc.home" location="${result.dir}/javacc" /> <ivy:retrieve organisation="net.java.dev.javacc" module="javacc" revision="5.0" inline="true" type="jar" pattern="${javacc.home}/[artifact].[ext]" /> <javacc target="${sass.parser.jj}" javacchome="${javacc.home}"> </javacc> 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 83e46c34c9..52a93389e0 100644 --- a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java +++ b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.java @@ -551,63 +551,50 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { label_7: while (true) { ; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case VARIABLE: - if (jj_2_1(5)) { - listModifyDirective(); - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case VARIABLE: - variable(); - break; - default: - jj_la1[8] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - break; - case DEBUG_SYM: - debugDirective(); - break; - case WARN_SYM: - warnDirective(); - break; - case IF_SYM: - ifDirective(); - break; - case MIXIN_SYM: - mixinDirective(); - break; - case EACH_SYM: - eachDirective(); - break; - case INCLUDE_SYM: - includeDirective(); - break; - case LBRACKET: - case ANY: - case PARENT: - case DOT: - case COLON: - case INTERPOLATION: - case IDENT: - case HASH: - styleRule(); - break; - case MEDIA_SYM: - media(); - break; - case PAGE_SYM: - page(); - break; - case FONT_FACE_SYM: - fontFace(); - break; - default: - jj_la1[9] = jj_gen; + if (jj_2_1(5)) { + listModifyDirective(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case VARIABLE: + variable(); + break; + case DEBUG_SYM: + case WARN_SYM: + debuggingDirective(); + break; + case MIXIN_SYM: + mixinDirective(); + break; + case EACH_SYM: + case IF_SYM: + controlDirective(); + break; + case INCLUDE_SYM: + includeDirective(); + break; + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case INTERPOLATION: + case IDENT: + case HASH: + styleRule(); + break; + case MEDIA_SYM: + media(); + break; + case PAGE_SYM: + page(); + break; + case FONT_FACE_SYM: + fontFace(); + break; + default: + jj_la1[8] = jj_gen; l = getLocator(); - ret = skipStatement(); + ret = skipStatement(); if ((ret == null) || (ret.length() == 0)) { {if (true) return;} } @@ -616,6 +603,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { } else { reportWarningSkipText(l, ret); } + } } label_8: while (true) { @@ -626,7 +614,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[10] = jj_gen; + jj_la1[9] = jj_gen; break label_8; } ignoreStatement(); @@ -637,7 +625,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[11] = jj_gen; + jj_la1[10] = jj_gen; break label_9; } jj_consume_token(S); @@ -658,7 +646,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { atRuleDeclaration(); break; default: - jj_la1[12] = jj_gen; + jj_la1[11] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -683,7 +671,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[13] = jj_gen; + jj_la1[12] = jj_gen; break label_10; } jj_consume_token(S); @@ -704,7 +692,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { } break; default: - jj_la1[14] = jj_gen; + jj_la1[13] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -715,7 +703,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[15] = jj_gen; + jj_la1[14] = jj_gen; break label_11; } jj_consume_token(S); @@ -725,7 +713,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { mediaStatement(ml); break; default: - jj_la1[16] = jj_gen; + jj_la1[15] = jj_gen; ; } jj_consume_token(SEMICOLON); @@ -736,7 +724,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[17] = jj_gen; + jj_la1[16] = jj_gen; break label_12; } jj_consume_token(S); @@ -770,7 +758,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[18] = jj_gen; + jj_la1[17] = jj_gen; break label_13; } jj_consume_token(S); @@ -785,7 +773,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[19] = jj_gen; + jj_la1[18] = jj_gen; break label_14; } jj_consume_token(S); @@ -831,15 +819,13 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[20] = jj_gen; + jj_la1[19] = jj_gen; break label_15; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DEBUG_SYM: - debugDirective(); - break; case WARN_SYM: - warnDirective(); + debuggingDirective(); break; case LBRACKET: case ANY: @@ -879,7 +865,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { skipUnknownRule(); break; default: - jj_la1[21] = jj_gen; + jj_la1[20] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -892,7 +878,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[22] = jj_gen; + jj_la1[21] = jj_gen; break label_16; } jj_consume_token(S); @@ -919,7 +905,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[23] = jj_gen; + jj_la1[22] = jj_gen; break label_17; } jj_consume_token(COMMA); @@ -930,7 +916,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[24] = jj_gen; + jj_la1[23] = jj_gen; break label_18; } jj_consume_token(S); @@ -954,7 +940,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[25] = jj_gen; + jj_la1[24] = jj_gen; break label_19; } jj_consume_token(S); @@ -980,7 +966,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[26] = jj_gen; + jj_la1[25] = jj_gen; break label_20; } jj_consume_token(S); @@ -995,14 +981,14 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[27] = jj_gen; + jj_la1[26] = jj_gen; break label_21; } jj_consume_token(S); } break; default: - jj_la1[28] = jj_gen; + jj_la1[27] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1010,7 +996,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { pseudo = pseudo_page(); break; default: - jj_la1[29] = jj_gen; + jj_la1[28] = jj_gen; ; } if (n != null) { @@ -1024,7 +1010,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[30] = jj_gen; + jj_la1[29] = jj_gen; break label_22; } jj_consume_token(S); @@ -1036,7 +1022,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { declaration(); break; default: - jj_la1[31] = jj_gen; + jj_la1[30] = jj_gen; ; } label_23: @@ -1046,7 +1032,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[32] = jj_gen; + jj_la1[31] = jj_gen; break label_23; } jj_consume_token(SEMICOLON); @@ -1057,7 +1043,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[33] = jj_gen; + jj_la1[32] = jj_gen; break label_24; } jj_consume_token(S); @@ -1067,7 +1053,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { declaration(); break; default: - jj_la1[34] = jj_gen; + jj_la1[33] = jj_gen; ; } } @@ -1079,7 +1065,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[35] = jj_gen; + jj_la1[34] = jj_gen; break label_25; } jj_consume_token(S); @@ -1113,7 +1099,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[36] = jj_gen; + jj_la1[35] = jj_gen; break label_26; } jj_consume_token(S); @@ -1133,7 +1119,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[37] = jj_gen; + jj_la1[36] = jj_gen; break label_27; } jj_consume_token(S); @@ -1146,7 +1132,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[38] = jj_gen; + jj_la1[37] = jj_gen; break label_28; } jj_consume_token(S); @@ -1157,7 +1143,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { declaration(); break; default: - jj_la1[39] = jj_gen; + jj_la1[38] = jj_gen; ; } label_29: @@ -1167,7 +1153,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[40] = jj_gen; + jj_la1[39] = jj_gen; break label_29; } jj_consume_token(SEMICOLON); @@ -1178,7 +1164,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[41] = jj_gen; + jj_la1[40] = jj_gen; break label_30; } jj_consume_token(S); @@ -1188,7 +1174,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { declaration(); break; default: - jj_la1[42] = jj_gen; + jj_la1[41] = jj_gen; ; } } @@ -1200,7 +1186,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { ; break; default: - jj_la1[43] = jj_gen; + jj_la1[42] = jj_gen; break label_31; } jj_consume_token(S); @@ -1311,7 +1297,7 @@ public class Parser implements org.w3c.css.sac.Parser, ParserConstants { n = jj_consume_token(UNKNOWN); break; default: - jj_la1[44] = jj_gen; + jj_la1[43] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1340,7 +1326,7 @@ char connector = ' '; ; break; default: - jj_la1[45] = jj_gen; + jj_la1[44] = jj_gen; break label_32; } jj_consume_token(S); @@ -1356,7 +1342,7 @@ char connector = ' '; ; break; default: - jj_la1[46] = jj_gen; + jj_la1[45] = jj_gen; break label_33; } jj_consume_token(S); @@ -1372,7 +1358,7 @@ char connector = ' '; ; break; default: - jj_la1[47] = jj_gen; + jj_la1[46] = jj_gen; break label_34; } jj_consume_token(S); @@ -1399,7 +1385,7 @@ char connector = ' '; connector = '~'; break; default: - jj_la1[48] = jj_gen; + jj_la1[47] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1410,20 +1396,20 @@ char connector = ' '; ; break; default: - jj_la1[49] = jj_gen; + jj_la1[48] = jj_gen; break label_35; } jj_consume_token(S); } break; default: - jj_la1[50] = jj_gen; + jj_la1[49] = jj_gen; ; } {if (true) return connector;} break; default: - jj_la1[51] = jj_gen; + jj_la1[50] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1434,7 +1420,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) { @@ -1442,7 +1429,7 @@ char connector = ' '; ; break; default: - jj_la1[52] = jj_gen; + jj_la1[51] = jj_gen; break label_36; } jj_consume_token(S); @@ -1460,6 +1447,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; @@ -1490,24 +1485,26 @@ char connector = ' '; { value += n.image; } break; default: - jj_la1[53] = jj_gen; + jj_la1[52] = jj_gen; jj_consume_token(-1); throw new ParseException(); } 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: ; break; default: - jj_la1[54] = jj_gen; + jj_la1[53] = jj_gen; break label_37; } } @@ -1519,7 +1516,7 @@ char connector = ' '; ; break; default: - jj_la1[55] = jj_gen; + jj_la1[54] = jj_gen; break label_38; } jj_consume_token(S); @@ -1540,7 +1537,7 @@ char connector = ' '; ; break; default: - jj_la1[56] = jj_gen; + jj_la1[55] = jj_gen; break label_39; } jj_consume_token(S); @@ -1559,7 +1556,7 @@ char connector = ' '; ; break; default: - jj_la1[57] = jj_gen; + jj_la1[56] = jj_gen; break label_40; } jj_consume_token(S); @@ -1578,7 +1575,7 @@ char connector = ' '; ; break; default: - jj_la1[58] = jj_gen; + jj_la1[57] = jj_gen; break label_41; } jj_consume_token(S); @@ -1606,7 +1603,7 @@ char connector = ' '; ; break; default: - jj_la1[59] = jj_gen; + jj_la1[58] = jj_gen; break label_42; } jj_consume_token(S); @@ -1636,59 +1633,24 @@ char connector = ' '; ; break; default: - jj_la1[60] = jj_gen; + jj_la1[59] = jj_gen; break label_43; } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IF_SYM: - ifDirective(); - break; - default: - jj_la1[61] = jj_gen; - if (jj_2_2(5)) { - listModifyDirective(); - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INCLUDE_SYM: - includeDirective(); - break; - case MEDIA_SYM: - media(); - break; - case EXTEND_SYM: - extendDirective(); - break; - case EACH_SYM: - eachDirective(); - break; - case VARIABLE: - variable(); - break; - default: - jj_la1[62] = jj_gen; - if (jj_2_3(3)) { - microsoftExtension(); - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LBRACKET: - case ANY: - case PARENT: - case DOT: - case COLON: - case INTERPOLATION: - case DEBUG_SYM: - case WARN_SYM: - case IDENT: - case HASH: - styleRuleOrDeclarationOrNestedProperties(); - break; - default: - jj_la1[63] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - } + if (jj_2_2(5)) { + ifContentStatement(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EACH_SYM: + case IF_SYM: + controlDirective(); + break; + case MICROSOFT_RULE: + microsoftExtension(); + break; + default: + jj_la1[60] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); } } } @@ -1700,7 +1662,7 @@ char connector = ' '; ; break; default: - jj_la1[64] = jj_gen; + jj_la1[61] = jj_gen; break label_44; } jj_consume_token(S); @@ -1737,7 +1699,7 @@ char connector = ' '; ; break; default: - jj_la1[65] = jj_gen; + jj_la1[62] = jj_gen; break label_45; } jj_consume_token(COMMA); @@ -1748,7 +1710,7 @@ char connector = ' '; ; break; default: - jj_la1[66] = jj_gen; + jj_la1[63] = jj_gen; break label_46; } jj_consume_token(S); @@ -1771,7 +1733,7 @@ char connector = ' '; selector = simple_selector(null, ' '); label_47: while (true) { - if (jj_2_4(2)) { + if (jj_2_3(2)) { ; } else { break label_47; @@ -1786,7 +1748,7 @@ char connector = ' '; ; break; default: - jj_la1[67] = jj_gen; + jj_la1[64] = jj_gen; break label_48; } jj_consume_token(S); @@ -1841,7 +1803,7 @@ char connector = ' '; ; break; default: - jj_la1[68] = jj_gen; + jj_la1[65] = jj_gen; break label_49; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1858,7 +1820,7 @@ char connector = ' '; cond = pseudo(cond); break; default: - jj_la1[69] = jj_gen; + jj_la1[66] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1875,7 +1837,7 @@ char connector = ' '; ; break; default: - jj_la1[70] = jj_gen; + jj_la1[67] = jj_gen; break label_50; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1889,7 +1851,7 @@ char connector = ' '; cond = pseudo(cond); break; default: - jj_la1[71] = jj_gen; + jj_la1[68] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1907,7 +1869,7 @@ char connector = ' '; ; break; default: - jj_la1[72] = jj_gen; + jj_la1[69] = jj_gen; break label_51; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1924,7 +1886,7 @@ char connector = ' '; cond = pseudo(cond); break; default: - jj_la1[73] = jj_gen; + jj_la1[70] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1942,7 +1904,7 @@ char connector = ' '; ; break; default: - jj_la1[74] = jj_gen; + jj_la1[71] = jj_gen; break label_52; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1959,7 +1921,7 @@ char connector = ' '; cond = pseudo(cond); break; default: - jj_la1[75] = jj_gen; + jj_la1[72] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1977,7 +1939,7 @@ char connector = ' '; ; break; default: - jj_la1[76] = jj_gen; + jj_la1[73] = jj_gen; break label_53; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1994,14 +1956,14 @@ char connector = ' '; cond = pseudo(cond); break; default: - jj_la1[77] = jj_gen; + jj_la1[74] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } break; default: - jj_la1[78] = jj_gen; + jj_la1[75] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2053,7 +2015,7 @@ String s = "."; s += t.image; break; default: - jj_la1[79] = jj_gen; + jj_la1[76] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2063,7 +2025,7 @@ String s = "."; ; break; default: - jj_la1[80] = jj_gen; + jj_la1[77] = jj_gen; break label_54; } } @@ -2095,7 +2057,7 @@ String s = "."; s += t.image; break; default: - jj_la1[81] = jj_gen; + jj_la1[78] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2105,7 +2067,7 @@ String s = "."; ; break; default: - jj_la1[82] = jj_gen; + jj_la1[79] = jj_gen; break label_55; } } @@ -2120,7 +2082,7 @@ String s = "."; {if (true) return "&";} break; default: - jj_la1[83] = jj_gen; + jj_la1[80] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2143,7 +2105,7 @@ String s = "."; ; break; default: - jj_la1[84] = jj_gen; + jj_la1[81] = jj_gen; break label_56; } jj_consume_token(S); @@ -2156,7 +2118,7 @@ String s = "."; ; break; default: - jj_la1[85] = jj_gen; + jj_la1[82] = jj_gen; break label_57; } jj_consume_token(S); @@ -2194,7 +2156,7 @@ String s = "."; cases = 6; break; default: - jj_la1[86] = jj_gen; + jj_la1[83] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2205,7 +2167,7 @@ String s = "."; ; break; default: - jj_la1[87] = jj_gen; + jj_la1[84] = jj_gen; break label_58; } jj_consume_token(S); @@ -2220,7 +2182,7 @@ String s = "."; attValue = val.image; break; default: - jj_la1[88] = jj_gen; + jj_la1[85] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2231,14 +2193,14 @@ String s = "."; ; break; default: - jj_la1[89] = jj_gen; + jj_la1[86] = jj_gen; break label_59; } jj_consume_token(S); } break; default: - jj_la1[90] = jj_gen; + jj_la1[87] = jj_gen; ; } jj_consume_token(RBRACKET); @@ -2294,7 +2256,7 @@ boolean isPseudoElement = false; isPseudoElement=true; break; default: - jj_la1[91] = jj_gen; + jj_la1[88] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -2327,7 +2289,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[92] = jj_gen; + jj_la1[89] = jj_gen; break label_60; } jj_consume_token(S); @@ -2345,7 +2307,7 @@ boolean isPseudoElement = false; } break; default: - jj_la1[93] = jj_gen; + jj_la1[90] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2382,7 +2344,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[94] = jj_gen; + jj_la1[91] = jj_gen; break label_61; } jj_consume_token(S); @@ -2393,7 +2355,7 @@ boolean isPseudoElement = false; guarded = guarded(); break; default: - jj_la1[95] = jj_gen; + jj_la1[92] = jj_gen; ; } label_62: @@ -2406,7 +2368,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[96] = jj_gen; + jj_la1[93] = jj_gen; break label_63; } jj_consume_token(S); @@ -2416,7 +2378,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[97] = jj_gen; + jj_la1[94] = jj_gen; break label_62; } } @@ -2448,6 +2410,58 @@ boolean isPseudoElement = false; } } + final public void controlDirective() throws ParseException { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case IF_SYM: + ifDirective(); + break; + case EACH_SYM: + eachDirective(); + break; + default: + jj_la1[95] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + + final public void ifContentStatement() throws ParseException { + if (jj_2_4(5)) { + listModifyDirective(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCLUDE_SYM: + includeDirective(); + break; + case MEDIA_SYM: + media(); + break; + case EXTEND_SYM: + extendDirective(); + break; + case VARIABLE: + variable(); + break; + case LBRACKET: + case ANY: + case PARENT: + case DOT: + case COLON: + case INTERPOLATION: + case DEBUG_SYM: + case WARN_SYM: + case IDENT: + case HASH: + styleRuleOrDeclarationOrNestedProperties(); + break; + default: + jj_la1[96] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + } + final public void ifDirective() throws ParseException { Token n = null; String evaluator = ""; @@ -2477,7 +2491,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[98] = jj_gen; + jj_la1[97] = jj_gen; break label_64; } } @@ -2489,7 +2503,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[99] = jj_gen; + jj_la1[98] = jj_gen; break label_65; } jj_consume_token(S); @@ -2516,39 +2530,10 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[100] = jj_gen; + jj_la1[99] = jj_gen; break label_66; } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INCLUDE_SYM: - includeDirective(); - break; - case MEDIA_SYM: - media(); - break; - case EXTEND_SYM: - extendDirective(); - break; - case VARIABLE: - variable(); - break; - case LBRACKET: - case ANY: - case PARENT: - case DOT: - case COLON: - case INTERPOLATION: - case DEBUG_SYM: - case WARN_SYM: - case IDENT: - case HASH: - styleRuleOrDeclarationOrNestedProperties(); - break; - default: - jj_la1[101] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } + ifContentStatement(); } jj_consume_token(RBRACE); label_67: @@ -2558,7 +2543,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[102] = jj_gen; + jj_la1[100] = jj_gen; break label_67; } jj_consume_token(S); @@ -2570,7 +2555,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[103] = jj_gen; + jj_la1[101] = jj_gen; break label_68; } elseDirective(); @@ -2589,7 +2574,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[104] = jj_gen; + jj_la1[102] = jj_gen; break label_69; } jj_consume_token(S); @@ -2599,6 +2584,8 @@ boolean isPseudoElement = false; jj_consume_token(IF); label_70: while (true) { + n = booleanExpressionToken(); + evaluator += n.image; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case S: case EQ: @@ -2620,15 +2607,13 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[105] = jj_gen; + jj_la1[103] = jj_gen; break label_70; } - n = booleanExpressionToken(); - if(n != null) evaluator += n.image; } break; default: - jj_la1[106] = jj_gen; + jj_la1[104] = jj_gen; ; } jj_consume_token(LBRACE); @@ -2639,7 +2624,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[107] = jj_gen; + jj_la1[105] = jj_gen; break label_71; } jj_consume_token(S); @@ -2666,39 +2651,10 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[108] = jj_gen; + jj_la1[106] = jj_gen; break label_72; } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INCLUDE_SYM: - includeDirective(); - break; - case MEDIA_SYM: - media(); - break; - case EXTEND_SYM: - extendDirective(); - break; - case VARIABLE: - variable(); - break; - case LBRACKET: - case ANY: - case PARENT: - case DOT: - case COLON: - case INTERPOLATION: - case DEBUG_SYM: - case WARN_SYM: - case IDENT: - case HASH: - styleRuleOrDeclarationOrNestedProperties(); - break; - default: - jj_la1[109] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } + ifContentStatement(); } jj_consume_token(RBRACE); label_73: @@ -2708,7 +2664,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[110] = jj_gen; + jj_la1[107] = jj_gen; break label_73; } jj_consume_token(S); @@ -2770,7 +2726,7 @@ boolean isPseudoElement = false; n = jj_consume_token(NOT_EQ); break; default: - jj_la1[111] = jj_gen; + jj_la1[108] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2790,7 +2746,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[112] = jj_gen; + jj_la1[109] = jj_gen; break label_74; } jj_consume_token(S); @@ -2803,7 +2759,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[113] = jj_gen; + jj_la1[110] = jj_gen; break label_75; } jj_consume_token(S); @@ -2816,7 +2772,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[114] = jj_gen; + jj_la1[111] = jj_gen; break label_76; } jj_consume_token(S); @@ -2831,7 +2787,7 @@ boolean isPseudoElement = false; documentHandler.startEachDirective(var.image, listVariable); break; default: - jj_la1[115] = jj_gen; + jj_la1[112] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2843,7 +2799,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[116] = jj_gen; + jj_la1[113] = jj_gen; break label_77; } jj_consume_token(S); @@ -2868,47 +2824,10 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[117] = jj_gen; + jj_la1[114] = jj_gen; break label_78; } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INCLUDE_SYM: - includeDirective(); - break; - default: - jj_la1[118] = jj_gen; - if (jj_2_5(5)) { - listModifyDirective(); - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case MEDIA_SYM: - media(); - break; - case EXTEND_SYM: - extendDirective(); - break; - case VARIABLE: - variable(); - break; - case LBRACKET: - case ANY: - case PARENT: - case DOT: - case COLON: - case INTERPOLATION: - case DEBUG_SYM: - case WARN_SYM: - case IDENT: - case HASH: - styleRuleOrDeclarationOrNestedProperties(); - break; - default: - jj_la1[119] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - } + ifContentStatement(); } jj_consume_token(RBRACE); label_79: @@ -2918,7 +2837,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[120] = jj_gen; + jj_la1[115] = jj_gen; break label_79; } jj_consume_token(S); @@ -2937,7 +2856,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[121] = jj_gen; + jj_la1[116] = jj_gen; break label_80; } jj_consume_token(S); @@ -2950,7 +2869,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[122] = jj_gen; + jj_la1[117] = jj_gen; break label_81; } jj_consume_token(COMMA); @@ -2961,7 +2880,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[123] = jj_gen; + jj_la1[118] = jj_gen; break label_82; } jj_consume_token(S); @@ -2975,7 +2894,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[124] = jj_gen; + jj_la1[119] = jj_gen; break label_83; } jj_consume_token(S); @@ -2997,7 +2916,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[125] = jj_gen; + jj_la1[120] = jj_gen; break label_84; } jj_consume_token(S); @@ -3017,14 +2936,14 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[126] = jj_gen; + jj_la1[121] = jj_gen; break label_85; } jj_consume_token(S); } break; default: - jj_la1[127] = jj_gen; + jj_la1[122] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3036,7 +2955,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[128] = jj_gen; + jj_la1[123] = jj_gen; break label_86; } jj_consume_token(S); @@ -3066,57 +2985,27 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[129] = jj_gen; + jj_la1[124] = jj_gen; break label_87; } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INCLUDE_SYM: - includeDirective(); - break; - case MEDIA_SYM: - media(); - break; - default: - jj_la1[130] = jj_gen; - if (jj_2_6(5)) { - listModifyDirective(); - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IF_SYM: - ifDirective(); - break; - case EACH_SYM: - eachDirective(); - break; - case EXTEND_SYM: - extendDirective(); - break; - case VARIABLE: - variable(); - break; - case LBRACKET: - case ANY: - case PARENT: - case DOT: - case COLON: - case INTERPOLATION: - case DEBUG_SYM: - case WARN_SYM: - case IDENT: - case HASH: - styleRuleOrDeclarationOrNestedProperties(); - break; - case FONT_FACE_SYM: - fontFace(); - break; - case PAGE_SYM: - page(); - break; - default: - jj_la1[131] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } + if (jj_2_5(5)) { + ifContentStatement(); + } else { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case EACH_SYM: + case IF_SYM: + controlDirective(); + break; + case FONT_FACE_SYM: + fontFace(); + break; + case PAGE_SYM: + page(); + break; + default: + jj_la1[125] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); } } } @@ -3128,7 +3017,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[132] = jj_gen; + jj_la1[126] = jj_gen; break label_88; } jj_consume_token(S); @@ -3148,7 +3037,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[133] = jj_gen; + jj_la1[127] = jj_gen; break label_89; } jj_consume_token(COMMA); @@ -3159,7 +3048,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[134] = jj_gen; + jj_la1[128] = jj_gen; break label_90; } jj_consume_token(S); @@ -3208,7 +3097,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[135] = jj_gen; + jj_la1[129] = jj_gen; break label_91; } jj_consume_token(S); @@ -3217,7 +3106,7 @@ boolean isPseudoElement = false; prev = first; label_92: while (true) { - if (jj_2_7(3)) { + if (jj_2_6(3)) { ; } else { break label_92; @@ -3232,14 +3121,14 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[136] = jj_gen; + jj_la1[130] = jj_gen; break label_93; } jj_consume_token(S); } break; default: - jj_la1[137] = jj_gen; + jj_la1[131] = jj_gen; ; } prev = nonVariableTerm(prev); @@ -3251,13 +3140,13 @@ boolean isPseudoElement = false; prev, variable.image); break; default: - jj_la1[138] = jj_gen; + jj_la1[132] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: - jj_la1[139] = jj_gen; + jj_la1[133] = jj_gen; ; } VariableNode arg = new VariableNode(name, first, false); @@ -3307,7 +3196,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[140] = jj_gen; + jj_la1[134] = jj_gen; break label_94; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -3320,14 +3209,14 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[141] = jj_gen; + jj_la1[135] = jj_gen; break label_95; } jj_consume_token(S); } break; default: - jj_la1[142] = jj_gen; + jj_la1[136] = jj_gen; ; } next = term(prev); @@ -3340,7 +3229,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[143] = jj_gen; + jj_la1[137] = jj_gen; break label_96; } jj_consume_token(COMMA); @@ -3351,7 +3240,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[144] = jj_gen; + jj_la1[138] = jj_gen; break label_97; } jj_consume_token(S); @@ -3393,7 +3282,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[145] = jj_gen; + jj_la1[139] = jj_gen; break label_98; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -3406,14 +3295,14 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[146] = jj_gen; + jj_la1[140] = jj_gen; break label_99; } jj_consume_token(S); } break; default: - jj_la1[147] = jj_gen; + jj_la1[141] = jj_gen; ; } next = term(prev); @@ -3435,7 +3324,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[148] = jj_gen; + jj_la1[142] = jj_gen; break label_100; } jj_consume_token(S); @@ -3457,7 +3346,7 @@ boolean isPseudoElement = false; jj_consume_token(RPARAN); break; default: - jj_la1[149] = jj_gen; + jj_la1[143] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -3471,7 +3360,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[150] = jj_gen; + jj_la1[144] = jj_gen; break label_102; } jj_consume_token(S); @@ -3481,7 +3370,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[151] = jj_gen; + jj_la1[145] = jj_gen; break label_101; } } @@ -3496,11 +3385,11 @@ boolean isPseudoElement = false; } final public void listModifyDirective() throws ParseException { - if (jj_2_8(5)) { + if (jj_2_7(5)) { removeDirective(); - } else if (jj_2_9(5)) { + } else if (jj_2_8(5)) { appendDirective(); - } else if (jj_2_10(5)) { + } else if (jj_2_9(5)) { containsDirective(); } else { jj_consume_token(-1); @@ -3526,7 +3415,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[152] = jj_gen; + jj_la1[146] = jj_gen; break label_103; } jj_consume_token(S); @@ -3539,7 +3428,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[153] = jj_gen; + jj_la1[147] = jj_gen; break label_104; } jj_consume_token(S); @@ -3552,7 +3441,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[154] = jj_gen; + jj_la1[148] = jj_gen; break label_105; } jj_consume_token(S); @@ -3563,7 +3452,7 @@ boolean isPseudoElement = false; jj_consume_token(RPARAN); break; default: - jj_la1[155] = jj_gen; + jj_la1[149] = jj_gen; ; } jj_consume_token(COMMA); @@ -3574,7 +3463,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[156] = jj_gen; + jj_la1[150] = jj_gen; break label_106; } jj_consume_token(S); @@ -3590,7 +3479,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[157] = jj_gen; + jj_la1[151] = jj_gen; break label_107; } jj_consume_token(S); @@ -3604,14 +3493,14 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[158] = jj_gen; + jj_la1[152] = jj_gen; break label_108; } jj_consume_token(S); } break; default: - jj_la1[159] = jj_gen; + jj_la1[153] = jj_gen; ; } jj_consume_token(RPARAN); @@ -3622,7 +3511,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[160] = jj_gen; + jj_la1[154] = jj_gen; break label_109; } jj_consume_token(S); @@ -3635,7 +3524,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[161] = jj_gen; + jj_la1[155] = jj_gen; break label_110; } jj_consume_token(S); @@ -3661,7 +3550,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[162] = jj_gen; + jj_la1[156] = jj_gen; break label_111; } jj_consume_token(S); @@ -3674,7 +3563,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[163] = jj_gen; + jj_la1[157] = jj_gen; break label_112; } jj_consume_token(S); @@ -3687,7 +3576,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[164] = jj_gen; + jj_la1[158] = jj_gen; break label_113; } jj_consume_token(S); @@ -3698,7 +3587,7 @@ boolean isPseudoElement = false; jj_consume_token(RPARAN); break; default: - jj_la1[165] = jj_gen; + jj_la1[159] = jj_gen; ; } jj_consume_token(COMMA); @@ -3709,7 +3598,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[166] = jj_gen; + jj_la1[160] = jj_gen; break label_114; } jj_consume_token(S); @@ -3725,7 +3614,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[167] = jj_gen; + jj_la1[161] = jj_gen; break label_115; } jj_consume_token(S); @@ -3739,14 +3628,14 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[168] = jj_gen; + jj_la1[162] = jj_gen; break label_116; } jj_consume_token(S); } break; default: - jj_la1[169] = jj_gen; + jj_la1[163] = jj_gen; ; } jj_consume_token(RPARAN); @@ -3757,7 +3646,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[170] = jj_gen; + jj_la1[164] = jj_gen; break label_117; } jj_consume_token(S); @@ -3770,7 +3659,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[171] = jj_gen; + jj_la1[165] = jj_gen; break label_118; } jj_consume_token(S); @@ -3796,7 +3685,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[172] = jj_gen; + jj_la1[166] = jj_gen; break label_119; } jj_consume_token(S); @@ -3809,7 +3698,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[173] = jj_gen; + jj_la1[167] = jj_gen; break label_120; } jj_consume_token(S); @@ -3822,7 +3711,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[174] = jj_gen; + jj_la1[168] = jj_gen; break label_121; } jj_consume_token(S); @@ -3833,7 +3722,7 @@ boolean isPseudoElement = false; jj_consume_token(RPARAN); break; default: - jj_la1[175] = jj_gen; + jj_la1[169] = jj_gen; ; } jj_consume_token(COMMA); @@ -3844,7 +3733,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[176] = jj_gen; + jj_la1[170] = jj_gen; break label_122; } jj_consume_token(S); @@ -3860,7 +3749,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[177] = jj_gen; + jj_la1[171] = jj_gen; break label_123; } jj_consume_token(S); @@ -3874,14 +3763,14 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[178] = jj_gen; + jj_la1[172] = jj_gen; break label_124; } jj_consume_token(S); } break; default: - jj_la1[179] = jj_gen; + jj_la1[173] = jj_gen; ; } jj_consume_token(RPARAN); @@ -3892,7 +3781,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[180] = jj_gen; + jj_la1[174] = jj_gen; break label_125; } jj_consume_token(S); @@ -3905,7 +3794,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[181] = jj_gen; + jj_la1[175] = jj_gen; break label_126; } jj_consume_token(S); @@ -3992,6 +3881,21 @@ boolean isPseudoElement = false; throw new Error("Missing return statement in function"); } + final public void debuggingDirective() throws ParseException { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case DEBUG_SYM: + debugDirective(); + break; + case WARN_SYM: + warnDirective(); + break; + default: + jj_la1[176] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + } + final public void debugDirective() throws ParseException { jj_consume_token(DEBUG_SYM); String content = skipStatementUntilSemiColon(); @@ -4004,7 +3908,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[182] = jj_gen; + jj_la1[177] = jj_gen; break label_127; } jj_consume_token(S); @@ -4023,7 +3927,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[183] = jj_gen; + jj_la1[178] = jj_gen; break label_128; } jj_consume_token(S); @@ -4050,7 +3954,7 @@ boolean isPseudoElement = false; exclusive = false; break; default: - jj_la1[184] = jj_gen; + jj_la1[179] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4062,7 +3966,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[185] = jj_gen; + jj_la1[180] = jj_gen; break label_129; } jj_consume_token(S); @@ -4091,7 +3995,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[186] = jj_gen; + jj_la1[181] = jj_gen; break label_130; } jj_consume_token(S); @@ -4107,7 +4011,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[187] = jj_gen; + jj_la1[182] = jj_gen; break label_132; } jj_consume_token(S); @@ -4117,7 +4021,7 @@ boolean isPseudoElement = false; ; break; default: - jj_la1[188] = jj_gen; + jj_la1[183] = jj_gen; break label_131; } } @@ -4152,7 +4056,7 @@ LexicalUnit exp; ; break; default: - jj_la1[189] = jj_gen; + jj_la1[184] = jj_gen; break label_133; } jj_consume_token(S); @@ -4165,7 +4069,7 @@ LexicalUnit exp; ; break; default: - jj_la1[190] = jj_gen; + jj_la1[185] = jj_gen; break label_134; } jj_consume_token(S); @@ -4176,7 +4080,7 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[191] = jj_gen; + jj_la1[186] = jj_gen; ; } label_135: @@ -4186,7 +4090,7 @@ LexicalUnit exp; ; break; default: - jj_la1[192] = jj_gen; + jj_la1[187] = jj_gen; break label_135; } jj_consume_token(SEMICOLON); @@ -4197,7 +4101,7 @@ LexicalUnit exp; ; break; default: - jj_la1[193] = jj_gen; + jj_la1[188] = jj_gen; break label_136; } jj_consume_token(S); @@ -4207,7 +4111,7 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[194] = jj_gen; + jj_la1[189] = jj_gen; ; } } @@ -4220,7 +4124,7 @@ LexicalUnit exp; ; break; default: - jj_la1[195] = jj_gen; + jj_la1[190] = jj_gen; break label_137; } jj_consume_token(S); @@ -4232,21 +4136,19 @@ LexicalUnit exp; */ final public void styleRuleOrDeclarationOrNestedProperties() throws ParseException { try { - if (jj_2_11(5)) { + if (jj_2_10(5)) { styleRule(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DEBUG_SYM: - debugDirective(); - break; case WARN_SYM: - warnDirective(); + debuggingDirective(); break; case IDENT: declarationOrNestedProperties(); break; default: - jj_la1[196] = jj_gen; + jj_la1[191] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4297,7 +4199,7 @@ LexicalUnit exp; ; break; default: - jj_la1[197] = jj_gen; + jj_la1[192] = jj_gen; break label_138; } jj_consume_token(S); @@ -4337,7 +4239,7 @@ LexicalUnit exp; important = prio(); break; default: - jj_la1[198] = jj_gen; + jj_la1[193] = jj_gen; ; } Token next = getToken(1); @@ -4362,7 +4264,7 @@ LexicalUnit exp; ; break; default: - jj_la1[199] = jj_gen; + jj_la1[194] = jj_gen; break label_139; } jj_consume_token(S); @@ -4373,7 +4275,7 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[200] = jj_gen; + jj_la1[195] = jj_gen; ; } label_140: @@ -4383,7 +4285,7 @@ LexicalUnit exp; ; break; default: - jj_la1[201] = jj_gen; + jj_la1[196] = jj_gen; break label_140; } jj_consume_token(SEMICOLON); @@ -4394,7 +4296,7 @@ LexicalUnit exp; ; break; default: - jj_la1[202] = jj_gen; + jj_la1[197] = jj_gen; break label_141; } jj_consume_token(S); @@ -4404,7 +4306,7 @@ LexicalUnit exp; declaration(); break; default: - jj_la1[203] = jj_gen; + jj_la1[198] = jj_gen; ; } } @@ -4416,7 +4318,7 @@ LexicalUnit exp; ; break; default: - jj_la1[204] = jj_gen; + jj_la1[199] = jj_gen; break label_142; } jj_consume_token(S); @@ -4424,7 +4326,7 @@ LexicalUnit exp; documentHandler.endNestedProperties(name); break; default: - jj_la1[205] = jj_gen; + jj_la1[200] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4481,7 +4383,7 @@ LexicalUnit exp; ; break; default: - jj_la1[206] = jj_gen; + jj_la1[201] = jj_gen; break label_143; } jj_consume_token(S); @@ -4492,7 +4394,7 @@ LexicalUnit exp; important = prio(); break; default: - jj_la1[207] = jj_gen; + jj_la1[202] = jj_gen; ; } documentHandler.property(name, exp, important); @@ -4542,7 +4444,7 @@ LexicalUnit exp; ; break; default: - jj_la1[208] = jj_gen; + jj_la1[203] = jj_gen; break label_144; } jj_consume_token(S); @@ -4560,7 +4462,7 @@ LexicalUnit exp; ; break; default: - jj_la1[209] = jj_gen; + jj_la1[204] = jj_gen; break label_145; } jj_consume_token(S); @@ -4584,7 +4486,7 @@ LexicalUnit exp; ; break; default: - jj_la1[210] = jj_gen; + jj_la1[205] = jj_gen; break label_146; } jj_consume_token(S); @@ -4602,7 +4504,7 @@ LexicalUnit exp; ; break; default: - jj_la1[211] = jj_gen; + jj_la1[206] = jj_gen; break label_147; } jj_consume_token(S); @@ -4612,7 +4514,7 @@ LexicalUnit exp; prev);} break; default: - jj_la1[212] = jj_gen; + jj_la1[207] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4629,7 +4531,7 @@ LexicalUnit exp; res = first; label_148: while (true) { - if (jj_2_12(2)) { + if (jj_2_11(2)) { ; } else { break label_148; @@ -4640,7 +4542,7 @@ LexicalUnit exp; res = operator(res); break; default: - jj_la1[213] = jj_gen; + jj_la1[208] = jj_gen; ; } res = term(res); @@ -4663,7 +4565,7 @@ LexicalUnit exp; {if (true) return '+';} break; default: - jj_la1[214] = jj_gen; + jj_la1[209] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4711,7 +4613,7 @@ LexicalUnit exp; result = variableTerm(prev); break; default: - jj_la1[215] = jj_gen; + jj_la1[210] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4762,7 +4664,7 @@ LexicalUnitImpl result = null; op = unaryOperator(); break; default: - jj_la1[216] = jj_gen; + jj_la1[211] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -4867,7 +4769,7 @@ LexicalUnitImpl result = null; result = function(op, prev); break; default: - jj_la1[217] = jj_gen; + jj_la1[212] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4894,7 +4796,7 @@ LexicalUnitImpl result = null; s+="."; break; default: - jj_la1[218] = jj_gen; + jj_la1[213] = jj_gen; ; } n = jj_consume_token(IDENT); @@ -4941,13 +4843,13 @@ LexicalUnitImpl result = null; result = unicode(prev); break; default: - jj_la1[219] = jj_gen; + jj_la1[214] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: - jj_la1[220] = jj_gen; + jj_la1[215] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -4958,7 +4860,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[221] = jj_gen; + jj_la1[216] = jj_gen; break label_149; } jj_consume_token(S); @@ -4982,7 +4884,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[222] = jj_gen; + jj_la1[217] = jj_gen; break label_150; } jj_consume_token(S); @@ -5025,7 +4927,7 @@ LexicalUnitImpl result = null; params = expr(); break; default: - jj_la1[223] = jj_gen; + jj_la1[218] = jj_gen; ; } jj_consume_token(RPARAN); @@ -5503,7 +5405,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[224] = jj_gen; + jj_la1[219] = jj_gen; break label_151; } jj_consume_token(S); @@ -5513,10 +5415,8 @@ LexicalUnitImpl result = null; importDeclaration(); break; case DEBUG_SYM: - debugDirective(); - break; case WARN_SYM: - warnDirective(); + debuggingDirective(); break; case LBRACKET: case ANY: @@ -5538,7 +5438,7 @@ LexicalUnitImpl result = null; fontFace(); break; default: - jj_la1[225] = jj_gen; + jj_la1[220] = jj_gen; ret = skipStatement(); if ((ret == null) || (ret.length() == 0)) { {if (true) return;} @@ -5560,7 +5460,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[226] = jj_gen; + jj_la1[221] = jj_gen; break label_152; } jj_consume_token(S); @@ -5576,7 +5476,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[227] = jj_gen; + jj_la1[222] = jj_gen; break label_153; } jj_consume_token(S); @@ -5592,7 +5492,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[228] = jj_gen; + jj_la1[223] = jj_gen; break label_154; } jj_consume_token(S); @@ -5602,7 +5502,7 @@ LexicalUnitImpl result = null; declaration(); break; default: - jj_la1[229] = jj_gen; + jj_la1[224] = jj_gen; ; } label_155: @@ -5612,7 +5512,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[230] = jj_gen; + jj_la1[225] = jj_gen; break label_155; } jj_consume_token(SEMICOLON); @@ -5623,7 +5523,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[231] = jj_gen; + jj_la1[226] = jj_gen; break label_156; } jj_consume_token(S); @@ -5633,7 +5533,7 @@ LexicalUnitImpl result = null; declaration(); break; default: - jj_la1[232] = jj_gen; + jj_la1[227] = jj_gen; ; } } @@ -5649,7 +5549,7 @@ LexicalUnitImpl result = null; ; break; default: - jj_la1[233] = jj_gen; + jj_la1[228] = jj_gen; break label_157; } jj_consume_token(S); @@ -5739,15 +5639,26 @@ LexicalUnitImpl result = null; finally { jj_save(10, xla); } } - private boolean jj_2_12(int xla) { - jj_la = xla; jj_lastpos = jj_scanpos = token; - try { return !jj_3_12(); } - catch(LookaheadSuccess ls) { return true; } - finally { jj_save(11, xla); } + private boolean jj_3_10() { + if (jj_3R_167()) return true; + return false; } - private boolean jj_3R_231() { - if (jj_3R_253()) return true; + private boolean jj_3_5() { + if (jj_3R_159()) return true; + return false; + } + + private boolean jj_3R_195() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_10()) { + jj_scanpos = xsp; + if (jj_3R_246()) { + jj_scanpos = xsp; + if (jj_3R_247()) return true; + } + } return false; } @@ -5757,34 +5668,36 @@ LexicalUnitImpl result = null; } private boolean jj_3R_230() { - if (jj_3R_252()) return true; + if (jj_3R_261()) return true; return false; } - private boolean jj_3_11() { - if (jj_3R_167()) return true; + private boolean jj_3R_277() { + if (jj_3R_243()) return true; return false; } - private boolean jj_3_4() { + private boolean jj_3R_174() { + if (jj_3R_195()) return true; + return false; + } + + private boolean jj_3_3() { if (jj_3R_160()) return true; if (jj_3R_161()) return true; return false; } - private boolean jj_3R_257() { + private boolean jj_3R_255() { + if (jj_scan_token(FUNCTION)) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3_11()) { - jj_scanpos = xsp; - if (jj_3R_272()) { - jj_scanpos = xsp; - if (jj_3R_273()) { - jj_scanpos = xsp; - if (jj_3R_274()) return true; - } - } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } + xsp = jj_scanpos; + if (jj_3R_277()) jj_scanpos = xsp; + if (jj_scan_token(RPARAN)) return true; return false; } @@ -5799,17 +5712,12 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3_5() { - if (jj_3R_158()) return true; - return false; - } - private boolean jj_3R_227() { if (jj_3R_161()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_4()) { jj_scanpos = xsp; break; } + if (jj_3_3()) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; @@ -5818,55 +5726,32 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_262() { - if (jj_3R_271()) return true; - return false; - } - - private boolean jj_3R_246() { - 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_262()) jj_scanpos = xsp; - if (jj_scan_token(RPARAN)) return true; + private boolean jj_3R_173() { + if (jj_3R_194()) return true; return false; } - private boolean jj_3R_182() { - if (jj_3R_227()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_228()) { jj_scanpos = xsp; break; } - } + private boolean jj_3R_229() { + if (jj_3R_260()) return true; return false; } private boolean jj_3R_226() { - if (jj_3R_250()) return true; - return false; - } - - private boolean jj_3_2() { - if (jj_3R_158()) return true; + if (jj_3R_259()) return true; return false; } private boolean jj_3R_225() { - if (jj_3R_249()) return true; + if (jj_3R_258()) return true; return false; } private boolean jj_3R_224() { - if (jj_3R_248()) return true; + if (jj_3R_257()) return true; return false; } - private boolean jj_3R_255() { + private boolean jj_3R_296() { if (jj_scan_token(EACH_SYM)) return true; Token xsp; while (true) { @@ -5882,84 +5767,71 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_270() { - if (jj_scan_token(SEMICOLON)) return true; + private boolean jj_3R_186() { + if (jj_3R_227()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_228()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_183() { + private boolean jj_3R_241() { + if (jj_scan_token(SEMICOLON)) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_229()) { - jj_scanpos = xsp; - if (jj_3_2()) { - jj_scanpos = xsp; - if (jj_3R_230()) { - jj_scanpos = xsp; - if (jj_3R_231()) { - jj_scanpos = xsp; - if (jj_3R_232()) { - jj_scanpos = xsp; - if (jj_3R_233()) { - jj_scanpos = xsp; - if (jj_3R_234()) { - jj_scanpos = xsp; - if (jj_3_3()) { - jj_scanpos = xsp; - if (jj_3R_235()) return true; - } - } - } - } - } - } - } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_229() { - if (jj_3R_251()) return true; + private boolean jj_3R_172() { + if (jj_3R_193()) return true; return false; } - private boolean jj_3R_254() { + private boolean jj_3R_193() { 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_270()) return true; + if (jj_3R_186()) return true; + if (jj_3R_241()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_270()) { jj_scanpos = xsp; break; } + if (jj_3R_241()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_167() { - if (jj_3R_182()) return true; - if (jj_scan_token(LBRACE)) return true; + private boolean jj_3R_171() { + if (jj_3R_192()) return true; + return false; + } + + private boolean jj_3R_187() { Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3_2()) { + jj_scanpos = xsp; + if (jj_3R_229()) { + jj_scanpos = xsp; + if (jj_3R_230()) return true; } - while (true) { - xsp = jj_scanpos; - if (jj_3R_183()) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(RBRACE)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_247() { + private boolean jj_3_2() { + if (jj_3R_159()) return true; + return false; + } + + private boolean jj_3R_256() { if (jj_scan_token(DOT)) return true; return false; } @@ -5967,12 +5839,12 @@ LexicalUnitImpl result = null; private boolean jj_3R_223() { Token xsp; xsp = jj_scanpos; - if (jj_3R_247()) jj_scanpos = xsp; + if (jj_3R_256()) jj_scanpos = xsp; if (jj_scan_token(IDENT)) return true; return false; } - private boolean jj_3R_282() { + private boolean jj_3R_352() { Token xsp; xsp = jj_scanpos; if (jj_scan_token(75)) { @@ -6027,9 +5899,48 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_285() { - if (jj_scan_token(FUNCTION)) return true; + private boolean jj_3R_222() { + if (jj_scan_token(STRING)) return true; + return false; + } + + private boolean jj_3R_221() { + if (jj_3R_255()) return true; + return false; + } + + private boolean jj_3R_185() { Token xsp; + xsp = jj_scanpos; + if (jj_3R_222()) { + jj_scanpos = xsp; + if (jj_3R_223()) { + jj_scanpos = xsp; + if (jj_3R_224()) { + jj_scanpos = xsp; + if (jj_3R_225()) { + jj_scanpos = xsp; + if (jj_3R_226()) return true; + } + } + } + } + return false; + } + + private boolean jj_3R_167() { + if (jj_3R_186()) return true; + if (jj_scan_token(LBRACE)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_3R_187()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; while (true) { xsp = jj_scanpos; if (jj_scan_token(1)) { jj_scanpos = xsp; break; } @@ -6037,8 +5948,13 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_283() { - if (jj_scan_token(IDENT)) return true; + private boolean jj_3R_170() { + if (jj_3R_191()) return true; + return false; + } + + private boolean jj_3R_264() { + if (jj_scan_token(FUNCTION)) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -6047,12 +5963,27 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_222() { - if (jj_scan_token(STRING)) return true; + private boolean jj_3R_220() { + if (jj_scan_token(DIMEN)) return true; return false; } - private boolean jj_3R_258() { + private boolean jj_3R_219() { + if (jj_scan_token(KHZ)) return true; + return false; + } + + private boolean jj_3R_262() { + if (jj_scan_token(IDENT)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_242() { if (jj_scan_token(VARIABLE)) return true; Token xsp; while (true) { @@ -6062,130 +5993,236 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_221() { - if (jj_3R_246()) return true; + private boolean jj_3R_218() { + if (jj_scan_token(HZ)) return true; return false; } - private boolean jj_3R_181() { + private boolean jj_3R_245() { + if (jj_scan_token(SEMICOLON)) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_222()) { - jj_scanpos = xsp; - if (jj_3R_223()) { - jj_scanpos = xsp; - if (jj_3R_224()) { - jj_scanpos = xsp; - if (jj_3R_225()) { - jj_scanpos = xsp; - if (jj_3R_226()) return true; - } + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } + return false; + } + + private boolean jj_3R_310() { + 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_217() { + if (jj_scan_token(MS)) return true; + return false; + } + + private boolean jj_3R_285() { + if (jj_3R_310()) return true; + return false; + } + + private boolean jj_3R_216() { + if (jj_scan_token(SECOND)) return true; + return false; + } + + private boolean jj_3R_215() { + if (jj_scan_token(GRAD)) return true; + return false; + } + + private boolean jj_3R_338() { + if (jj_3R_352()) return true; + return false; + } + + private boolean jj_3R_279() { + if (jj_3R_296()) return true; + return false; + } + + private boolean jj_3R_214() { + if (jj_scan_token(RAD)) return true; + return false; + } + + private boolean jj_3R_295() { + if (jj_scan_token(IF_SYM)) return true; + Token xsp; + if (jj_3R_338()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_338()) { jj_scanpos = xsp; break; } } + if (jj_scan_token(LBRACE)) return true; return false; } - private boolean jj_3R_220() { - if (jj_scan_token(DIMEN)) return true; + private boolean jj_3R_309() { + if (jj_scan_token(DEBUG_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_195() { + private boolean jj_3R_307() { if (jj_scan_token(S)) return true; return false; } - private boolean jj_3R_219() { - if (jj_scan_token(KHZ)) return true; + private boolean jj_3R_213() { + if (jj_scan_token(DEG)) return true; return false; } - private boolean jj_3R_194() { + private boolean jj_3R_306() { if (jj_scan_token(DOT)) return true; return false; } - private boolean jj_3R_193() { + private boolean jj_3R_305() { if (jj_scan_token(EQ)) return true; return false; } - private boolean jj_3R_192() { + private boolean jj_3R_304() { if (jj_scan_token(RPARAN)) return true; return false; } - private boolean jj_3R_218() { - if (jj_scan_token(HZ)) return true; + private boolean jj_3R_212() { + if (jj_scan_token(EXS)) return true; return false; } - private boolean jj_3R_191() { + private boolean jj_3R_303() { if (jj_scan_token(FUNCTION)) return true; return false; } - private boolean jj_3R_190() { + private boolean jj_3R_302() { if (jj_scan_token(COLON)) return true; return false; } - private boolean jj_3R_290() { - if (jj_scan_token(WARN_SYM)) return true; + private boolean jj_3R_301() { + if (jj_scan_token(INTERPOLATION)) return true; + return false; + } + + private boolean jj_3R_211() { + if (jj_scan_token(EMS)) return true; + return false; + } + + private boolean jj_3R_300() { + if (jj_scan_token(COMMA)) return true; + return false; + } + + private boolean jj_3R_159() { Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3_4()) { + jj_scanpos = xsp; + if (jj_3R_170()) { + jj_scanpos = xsp; + if (jj_3R_171()) { + jj_scanpos = xsp; + if (jj_3R_172()) { + jj_scanpos = xsp; + if (jj_3R_173()) { + jj_scanpos = xsp; + if (jj_3R_174()) return true; + } + } + } + } } return false; } - private boolean jj_3R_189() { - if (jj_scan_token(INTERPOLATION)) return true; + private boolean jj_3_4() { + if (jj_3R_158()) return true; return false; } - private boolean jj_3R_217() { - if (jj_scan_token(MS)) return true; + private boolean jj_3R_299() { + if (jj_scan_token(STRING)) return true; return false; } - private boolean jj_3R_188() { + private boolean jj_3R_244() { + if (jj_3R_271()) return true; + return false; + } + + private boolean jj_3R_272() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_284()) { + jj_scanpos = xsp; + if (jj_3R_285()) return true; + } + return false; + } + + private boolean jj_3R_284() { + if (jj_3R_309()) return true; + return false; + } + + private boolean jj_3R_298() { if (jj_scan_token(NUMBER)) return true; return false; } - private boolean jj_3R_263() { - if (jj_3R_282()) return true; + private boolean jj_3R_210() { + if (jj_scan_token(PX)) return true; return false; } - private boolean jj_3R_187() { + private boolean jj_3R_297() { if (jj_scan_token(IDENT)) return true; return false; } - private boolean jj_3R_170() { + private boolean jj_3R_280() { Token xsp; xsp = jj_scanpos; - if (jj_3R_187()) { + if (jj_3R_297()) { jj_scanpos = xsp; - if (jj_3R_188()) { + if (jj_3R_298()) { jj_scanpos = xsp; - if (jj_3R_189()) { + if (jj_3R_299()) { jj_scanpos = xsp; - if (jj_3R_190()) { + if (jj_3R_300()) { jj_scanpos = xsp; - if (jj_3R_191()) { + if (jj_3R_301()) { jj_scanpos = xsp; - if (jj_3R_192()) { + if (jj_3R_302()) { jj_scanpos = xsp; - if (jj_3R_193()) { + if (jj_3R_303()) { jj_scanpos = xsp; - if (jj_3R_194()) { + if (jj_3R_304()) { jj_scanpos = xsp; - if (jj_3R_195()) return true; + if (jj_3R_305()) { + jj_scanpos = xsp; + if (jj_3R_306()) { + jj_scanpos = xsp; + if (jj_3R_307()) return true; + } + } } } } @@ -6197,44 +6234,37 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_216() { - if (jj_scan_token(SECOND)) return true; + private boolean jj_3R_209() { + if (jj_scan_token(IN)) return true; return false; } - private boolean jj_3R_251() { - if (jj_scan_token(IF_SYM)) return true; + private boolean jj_3R_260() { Token xsp; - if (jj_3R_263()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3R_263()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_278()) { + jj_scanpos = xsp; + if (jj_3R_279()) return true; } - if (jj_scan_token(LBRACE)) return true; return false; } - private boolean jj_3R_215() { - if (jj_scan_token(GRAD)) return true; + private boolean jj_3R_278() { + if (jj_3R_295()) return true; return false; } - private boolean jj_3R_214() { - if (jj_scan_token(RAD)) return true; + private boolean jj_3R_208() { + if (jj_scan_token(PC)) return true; return false; } - private boolean jj_3R_289() { - if (jj_scan_token(DEBUG_SYM)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } + private boolean jj_3R_207() { + if (jj_scan_token(MM)) return true; return false; } - private boolean jj_3R_159() { + private boolean jj_3R_261() { if (jj_scan_token(MICROSOFT_RULE)) return true; Token xsp; while (true) { @@ -6242,52 +6272,52 @@ LexicalUnitImpl result = null; if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } if (jj_scan_token(COLON)) return true; - if (jj_3R_170()) return true; + if (jj_3R_280()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_170()) { jj_scanpos = xsp; break; } + if (jj_3R_280()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_213() { - if (jj_scan_token(DEG)) return true; + private boolean jj_3R_206() { + if (jj_scan_token(CM)) return true; return false; } - private boolean jj_3R_241() { + private boolean jj_3R_250() { if (jj_scan_token(SIBLING)) return true; return false; } - private boolean jj_3R_240() { + private boolean jj_3R_249() { if (jj_scan_token(PRECEDES)) return true; return false; } - private boolean jj_3R_212() { - if (jj_scan_token(EXS)) return true; + private boolean jj_3R_205() { + if (jj_scan_token(PT)) return true; return false; } - private boolean jj_3R_239() { + private boolean jj_3R_248() { if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_211() { - if (jj_scan_token(EMS)) return true; + private boolean jj_3R_204() { + if (jj_scan_token(PERCENTAGE)) return true; return false; } private boolean jj_3R_196() { Token xsp; xsp = jj_scanpos; - if (jj_3R_239()) { + if (jj_3R_248()) { jj_scanpos = xsp; - if (jj_3R_240()) { + if (jj_3R_249()) { jj_scanpos = xsp; - if (jj_3R_241()) return true; + if (jj_3R_250()) return true; } } while (true) { @@ -6297,12 +6327,17 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_210() { - if (jj_scan_token(PX)) return true; + private boolean jj_3R_190() { + if (jj_3R_233()) return true; return false; } - private boolean jj_3R_173() { + private boolean jj_3R_203() { + if (jj_scan_token(NUMBER)) return true; + return false; + } + + private boolean jj_3R_177() { if (jj_scan_token(SIBLING)) return true; Token xsp; while (true) { @@ -6312,7 +6347,12 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_172() { + private boolean jj_3R_202() { + if (jj_3R_254()) return true; + return false; + } + + private boolean jj_3R_176() { if (jj_scan_token(PRECEDES)) return true; Token xsp; while (true) { @@ -6322,12 +6362,7 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_209() { - if (jj_scan_token(IN)) return true; - return false; - } - - private boolean jj_3R_174() { + private boolean jj_3R_178() { if (jj_scan_token(S)) return true; Token xsp; xsp = jj_scanpos; @@ -6338,20 +6373,20 @@ LexicalUnitImpl result = null; private boolean jj_3R_160() { Token xsp; xsp = jj_scanpos; - if (jj_3R_171()) { + if (jj_3R_175()) { jj_scanpos = xsp; - if (jj_3R_172()) { + if (jj_3R_176()) { jj_scanpos = xsp; - if (jj_3R_173()) { + if (jj_3R_177()) { jj_scanpos = xsp; - if (jj_3R_174()) return true; + if (jj_3R_178()) return true; } } } return false; } - private boolean jj_3R_171() { + private boolean jj_3R_175() { if (jj_scan_token(PLUS)) return true; Token xsp; while (true) { @@ -6361,59 +6396,7 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_208() { - if (jj_scan_token(PC)) return true; - return false; - } - - private boolean jj_3R_207() { - if (jj_scan_token(MM)) return true; - return false; - } - - private boolean jj_3R_206() { - if (jj_scan_token(CM)) return true; - return false; - } - - private boolean jj_3R_205() { - if (jj_scan_token(PT)) return true; - return false; - } - - private boolean jj_3R_256() { - if (jj_3R_258()) 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_271()) return true; - return false; - } - - private boolean jj_3R_204() { - if (jj_scan_token(PERCENTAGE)) return true; - return false; - } - - private boolean jj_3R_186() { - if (jj_3R_238()) return true; - return false; - } - - private boolean jj_3R_203() { - if (jj_scan_token(NUMBER)) return true; - return false; - } - - private boolean jj_3R_202() { - if (jj_3R_245()) return true; - return false; - } - - private boolean jj_3R_180() { + private boolean jj_3R_184() { Token xsp; xsp = jj_scanpos; if (jj_3R_202()) jj_scanpos = xsp; @@ -6479,9 +6462,9 @@ LexicalUnitImpl result = null; private boolean jj_3R_163() { Token xsp; xsp = jj_scanpos; - if (jj_3R_180()) { + if (jj_3R_184()) { jj_scanpos = xsp; - if (jj_3R_181()) return true; + if (jj_3R_185()) return true; } while (true) { xsp = jj_scanpos; @@ -6490,83 +6473,102 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_248() { - if (jj_scan_token(HASH)) return true; - return false; - } - - private boolean jj_3R_238() { - if (jj_3R_258()) return true; + private boolean jj_3R_194() { + if (jj_3R_242()) 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_243()) return true; + xsp = jj_scanpos; + if (jj_3R_244()) jj_scanpos = xsp; + if (jj_3R_245()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_245()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_198() { + private boolean jj_3R_257() { if (jj_scan_token(HASH)) return true; return false; } - private boolean jj_3R_305() { - if (jj_scan_token(IDENT)) return true; + private boolean jj_3R_233() { + if (jj_3R_242()) return true; return false; } - private boolean jj_3R_185() { + private boolean jj_3R_189() { if (jj_3R_163()) return true; return false; } - private boolean jj_3R_249() { - if (jj_scan_token(URL)) return true; - return false; - } - private boolean jj_3R_169() { Token xsp; xsp = jj_scanpos; - if (jj_3R_185()) { + if (jj_3R_189()) { jj_scanpos = xsp; - if (jj_3R_186()) return true; + if (jj_3R_190()) return true; } return false; } - private boolean jj_3R_306() { - 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_258() { + if (jj_scan_token(URL)) return true; return false; } private boolean jj_3R_168() { - if (jj_3R_184()) return true; + if (jj_3R_188()) return true; return false; } - private boolean jj_3R_261() { + private boolean jj_3R_198() { + if (jj_scan_token(HASH)) return true; + return false; + } + + private boolean jj_3R_327() { + if (jj_scan_token(IDENT)) return true; + return false; + } + + private boolean jj_3R_276() { if (jj_scan_token(PLUS)) return true; return false; } - private boolean jj_3R_245() { + private boolean jj_3R_254() { Token xsp; xsp = jj_scanpos; - if (jj_3R_260()) { + if (jj_3R_275()) { jj_scanpos = xsp; - if (jj_3R_261()) return true; + if (jj_3R_276()) return true; } return false; } - private boolean jj_3R_260() { + private boolean jj_3R_275() { if (jj_scan_token(MINUS)) return true; return false; } - private boolean jj_3_12() { + private boolean jj_3R_328() { + 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_3_11() { Token xsp; xsp = jj_scanpos; if (jj_3R_168()) jj_scanpos = xsp; @@ -6574,36 +6576,112 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_271() { + private boolean jj_3R_283() { + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(99)) { + jj_scanpos = xsp; + if (jj_scan_token(10)) { + jj_scanpos = xsp; + if (jj_scan_token(96)) { + jj_scanpos = xsp; + if (jj_scan_token(22)) { + jj_scanpos = xsp; + if (jj_scan_token(14)) { + jj_scanpos = xsp; + if (jj_scan_token(98)) { + jj_scanpos = xsp; + if (jj_scan_token(114)) { + jj_scanpos = xsp; + if (jj_scan_token(100)) { + jj_scanpos = xsp; + if (jj_scan_token(94)) { + jj_scanpos = xsp; + if (jj_scan_token(18)) { + jj_scanpos = xsp; + if (jj_scan_token(12)) { + jj_scanpos = xsp; + if (jj_scan_token(95)) { + jj_scanpos = xsp; + if (jj_scan_token(41)) { + jj_scanpos = xsp; + if (jj_scan_token(72)) { + jj_scanpos = xsp; + if (jj_scan_token(97)) { + jj_scanpos = xsp; + if (jj_scan_token(76)) { + jj_scanpos = xsp; + if (jj_scan_token(70)) { + jj_scanpos = xsp; + if (jj_scan_token(110)) { + jj_scanpos = xsp; + if (jj_scan_token(74)) { + jj_scanpos = xsp; + if (jj_scan_token(23)) { + jj_scanpos = xsp; + if (jj_scan_token(20)) { + jj_scanpos = xsp; + if (jj_scan_token(24)) { + jj_scanpos = xsp; + if (jj_scan_token(25)) { + jj_scanpos = xsp; + if (jj_scan_token(21)) { + jj_scanpos = xsp; + if (jj_scan_token(115)) return true; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return false; + } + + private boolean jj_3R_243() { if (jj_3R_169()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_12()) { jj_scanpos = xsp; break; } + if (jj_3_11()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_304() { - if (jj_scan_token(COLON)) return true; + private boolean jj_3R_259() { + if (jj_scan_token(UNICODERANGE)) return true; return false; } - private boolean jj_3R_250() { - if (jj_scan_token(UNICODERANGE)) return true; + private boolean jj_3R_232() { + if (jj_scan_token(COMMA)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_200() { + private boolean jj_3R_326() { if (jj_scan_token(COLON)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_304()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_305()) { - jj_scanpos = xsp; - if (jj_3R_306()) return true; - } return false; } @@ -6628,8 +6706,18 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_237() { - if (jj_scan_token(COMMA)) return true; + private boolean jj_3R_188() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_231()) { + jj_scanpos = xsp; + if (jj_3R_232()) return true; + } + return false; + } + + private boolean jj_3R_231() { + if (jj_scan_token(DIV)) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -6638,23 +6726,36 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3_10() { + private boolean jj_3R_200() { + if (jj_scan_token(COLON)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_326()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_327()) { + jj_scanpos = xsp; + if (jj_3R_328()) return true; + } + return false; + } + + private boolean jj_3_9() { if (jj_3R_166()) return true; return false; } - private boolean jj_3R_184() { + private boolean jj_3R_271() { + if (jj_scan_token(GUARDED_SYM)) return true; Token xsp; - xsp = jj_scanpos; - if (jj_3R_236()) { - jj_scanpos = xsp; - if (jj_3R_237()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_236() { - if (jj_scan_token(DIV)) return true; + private boolean jj_3R_339() { + if (jj_scan_token(IMPORTANT_SYM)) return true; Token xsp; while (true) { xsp = jj_scanpos; @@ -6663,8 +6764,8 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_266() { - if (jj_3R_284()) return true; + private boolean jj_3R_236() { + if (jj_3R_263()) return true; return false; } @@ -6689,96 +6790,129 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3_9() { + private boolean jj_3_8() { if (jj_3R_165()) return true; return false; } - private boolean jj_3R_327() { + private boolean jj_3R_238() { + if (jj_scan_token(SEMICOLON)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_308() { + if (jj_scan_token(COLON)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + return false; + } + + private boolean jj_3R_281() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_308()) jj_scanpos = xsp; + if (jj_3R_169()) return true; + return false; + } + + private boolean jj_3R_270() { + if (jj_3R_283()) return true; + return false; + } + + private boolean jj_3R_165() { + if (jj_scan_token(VARIABLE)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(COLON)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(APPEND)) return true; + 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_351() { if (jj_scan_token(STRING)) return true; return false; } - private boolean jj_3R_325() { + private boolean jj_3R_349() { if (jj_scan_token(STARMATCH)) return true; return false; } - private boolean jj_3R_326() { + private boolean jj_3R_350() { if (jj_scan_token(IDENT)) return true; return false; } - private boolean jj_3R_324() { + private boolean jj_3R_348() { if (jj_scan_token(DOLLARMATCH)) return true; return false; } - private boolean jj_3R_268() { - if (jj_scan_token(SEMICOLON)) return true; - return false; - } - - private boolean jj_3R_323() { + private boolean jj_3R_347() { if (jj_scan_token(CARETMATCH)) return true; return false; } - private boolean jj_3R_322() { + private boolean jj_3R_346() { if (jj_scan_token(DASHMATCH)) return true; return false; } - private boolean jj_3R_321() { + private boolean jj_3R_345() { if (jj_scan_token(INCLUDES)) return true; return false; } - private boolean jj_3R_276() { + private boolean jj_3R_289() { if (jj_scan_token(INTERPOLATION)) return true; return false; } - private boolean jj_3R_320() { + private boolean jj_3R_344() { if (jj_scan_token(EQ)) return true; return false; } - private boolean jj_3R_165() { - if (jj_scan_token(VARIABLE)) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(COLON)) return true; - while (true) { - xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - if (jj_scan_token(APPEND)) return true; - 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_269() { + if (jj_3R_167()) return true; return false; } - private boolean jj_3R_311() { + private boolean jj_3R_333() { Token xsp; xsp = jj_scanpos; - if (jj_3R_320()) { + if (jj_3R_344()) { jj_scanpos = xsp; - if (jj_3R_321()) { + if (jj_3R_345()) { jj_scanpos = xsp; - if (jj_3R_322()) { + if (jj_3R_346()) { jj_scanpos = xsp; - if (jj_3R_323()) { + if (jj_3R_347()) { jj_scanpos = xsp; - if (jj_3R_324()) { + if (jj_3R_348()) { jj_scanpos = xsp; - if (jj_3R_325()) return true; + if (jj_3R_349()) return true; } } } @@ -6789,9 +6923,9 @@ LexicalUnitImpl result = null; if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_326()) { + if (jj_3R_350()) { jj_scanpos = xsp; - if (jj_3R_327()) return true; + if (jj_3R_351()) return true; } while (true) { xsp = jj_scanpos; @@ -6800,6 +6934,35 @@ LexicalUnitImpl result = null; return false; } + private boolean jj_3R_340() { + if (jj_3R_262()) return true; + if (jj_scan_token(COLON)) return true; + return false; + } + + private boolean jj_3R_235() { + if (jj_3R_242()) return true; + return false; + } + + private boolean jj_3R_158() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_7()) { + jj_scanpos = xsp; + if (jj_3_8()) { + jj_scanpos = xsp; + if (jj_3_9()) return true; + } + } + return false; + } + + private boolean jj_3_7() { + if (jj_3R_164()) return true; + return false; + } + private boolean jj_3R_201() { if (jj_scan_token(LBRACKET)) return true; Token xsp; @@ -6813,494 +6976,550 @@ LexicalUnitImpl result = null; if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_311()) jj_scanpos = xsp; + if (jj_3R_333()) jj_scanpos = xsp; if (jj_scan_token(RBRACKET)) return true; return false; } - private boolean jj_3R_235() { - if (jj_3R_257()) return true; + private boolean jj_3R_341() { + if (jj_3R_340()) return true; return false; } - private boolean jj_3R_288() { - if (jj_scan_token(COMMA)) return true; + private boolean jj_3R_343() { + if (jj_scan_token(INTERPOLATION)) return true; return false; } - private boolean jj_3R_287() { - if (jj_scan_token(IDENT)) return true; + private boolean jj_3R_267() { + 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_266()) return true; return false; } - private boolean jj_3R_319() { + private boolean jj_3R_263() { if (jj_scan_token(INTERPOLATION)) return true; return false; } - private boolean jj_3R_265() { - if (jj_3R_258()) return true; + private boolean jj_3R_266() { + if (jj_scan_token(IDENT)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_244() { + private boolean jj_3R_237() { + if (jj_3R_264()) return true; + if (jj_3R_265()) return true; + if (jj_scan_token(RPARAN)) return true; + return false; + } + + private boolean jj_3R_253() { if (jj_scan_token(PARENT)) return true; return false; } - private boolean jj_3R_158() { + private boolean jj_3R_252() { + if (jj_scan_token(ANY)) return true; + return false; + } + + private boolean jj_3R_234() { + if (jj_3R_262()) return true; + return false; + } + + private boolean jj_3R_240() { Token xsp; xsp = jj_scanpos; - if (jj_3_8()) { + if (jj_3R_268()) { jj_scanpos = xsp; - if (jj_3_9()) { + if (jj_3R_269()) { jj_scanpos = xsp; - if (jj_3_10()) return true; + if (jj_3R_270()) return true; } } return false; } - private boolean jj_3_8() { - if (jj_3R_164()) return true; + private boolean jj_3R_268() { + if (jj_3R_272()) return true; return false; } - private boolean jj_3R_243() { - if (jj_scan_token(ANY)) return true; + private boolean jj_3R_191() { + if (jj_scan_token(INCLUDE_SYM)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_234()) { + jj_scanpos = xsp; + if (jj_3R_235()) { + jj_scanpos = xsp; + if (jj_3R_236()) { + jj_scanpos = xsp; + if (jj_3R_237()) return true; + } + } + } + if (jj_3R_238()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3R_238()) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_269() { - if (jj_3R_287()) return true; + private boolean jj_3R_239() { + if (jj_3R_266()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_288()) { jj_scanpos = xsp; break; } + if (jj_3R_267()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_259() { + private boolean jj_3R_274() { Token xsp; xsp = jj_scanpos; - if (jj_3R_275()) { + if (jj_3R_288()) { jj_scanpos = xsp; - if (jj_3R_276()) return true; + if (jj_3R_289()) return true; } return false; } - private boolean jj_3R_275() { + private boolean jj_3R_288() { if (jj_scan_token(IDENT)) return true; return false; } - private boolean jj_3R_284() { - if (jj_scan_token(INTERPOLATION)) return true; + private boolean jj_3R_313() { + if (jj_scan_token(SEMICOLON)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + xsp = jj_scanpos; + if (jj_3R_341()) jj_scanpos = xsp; return false; } private boolean jj_3R_197() { Token xsp; xsp = jj_scanpos; - if (jj_3R_242()) { + if (jj_3R_251()) { jj_scanpos = xsp; - if (jj_3R_243()) { + if (jj_3R_252()) { jj_scanpos = xsp; - if (jj_3R_244()) return true; + if (jj_3R_253()) return true; } } return false; } - private boolean jj_3R_242() { + private boolean jj_3R_251() { Token xsp; - if (jj_3R_259()) return true; + if (jj_3R_274()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_259()) { jj_scanpos = xsp; break; } + if (jj_3R_274()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_267() { - if (jj_3R_285()) return true; - if (jj_3R_286()) return true; + private boolean jj_3R_282() { + 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_169()) return true; return false; } - private boolean jj_3R_264() { - if (jj_3R_283()) return true; + private boolean jj_3R_337() { + if (jj_3R_200()) return true; return false; } - private boolean jj_3R_252() { - if (jj_scan_token(INCLUDE_SYM)) return true; + private boolean jj_3R_265() { + if (jj_3R_169()) return true; Token xsp; 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_3R_265()) { - jj_scanpos = xsp; - if (jj_3R_266()) { - jj_scanpos = xsp; - if (jj_3R_267()) return true; - } - } + if (jj_3R_281()) { jj_scanpos = xsp; break; } } - if (jj_3R_268()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_268()) { jj_scanpos = xsp; break; } + if (jj_3R_282()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_315() { - if (jj_3R_200()) return true; + private boolean jj_3R_162() { + if (jj_scan_token(COMMA)) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_318() { + private boolean jj_3R_342() { if (jj_scan_token(IDENT)) return true; return false; } - private boolean jj_3R_299() { + private boolean jj_3R_321() { Token xsp; xsp = jj_scanpos; - if (jj_3R_318()) { + if (jj_3R_342()) { jj_scanpos = xsp; - if (jj_3R_319()) return true; + if (jj_3R_343()) return true; } return false; } - private boolean jj_3R_313() { + private boolean jj_3R_335() { if (jj_3R_199()) return true; return false; } - private boolean jj_3_3() { - if (jj_3R_159()) return true; - return false; - } - - private boolean jj_3R_310() { + private boolean jj_3R_332() { if (jj_3R_200()) return true; return false; } - private boolean jj_3R_308() { + private boolean jj_3R_330() { if (jj_3R_199()) return true; return false; } - private boolean jj_3R_298() { + private boolean jj_3R_320() { if (jj_3R_200()) return true; return false; } - private boolean jj_3R_253() { - 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_269()) return true; - if (jj_scan_token(LBRACE)) return true; + private boolean jj_3R_312() { + if (jj_3R_340()) return true; return false; } private boolean jj_3R_199() { if (jj_scan_token(DOT)) return true; Token xsp; - if (jj_3R_299()) return true; + if (jj_3R_321()) return true; while (true) { xsp = jj_scanpos; - if (jj_3R_299()) { jj_scanpos = xsp; break; } + if (jj_3R_321()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_303() { + private boolean jj_3R_325() { if (jj_3R_200()) return true; return false; } - private boolean jj_3R_301() { + private boolean jj_3R_323() { if (jj_3R_199()) return true; return false; } - private boolean jj_3R_286() { - if (jj_3R_169()) return true; + private boolean jj_3R_192() { + 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_239()) return true; + if (jj_scan_token(LBRACE)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_3R_240()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_162() { - if (jj_scan_token(COMMA)) return true; + private boolean jj_3R_287() { + if (jj_scan_token(LBRACE)) return true; Token xsp; while (true) { xsp = jj_scanpos; if (jj_scan_token(1)) { jj_scanpos = xsp; break; } } + xsp = jj_scanpos; + if (jj_3R_312()) jj_scanpos = xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_313()) { jj_scanpos = xsp; break; } + } + if (jj_scan_token(RBRACE)) return true; + while (true) { + xsp = jj_scanpos; + if (jj_scan_token(1)) { jj_scanpos = xsp; break; } + } return false; } - private boolean jj_3R_234() { - if (jj_3R_256()) return true; + private boolean jj_3_6() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_162()) jj_scanpos = xsp; + if (jj_3R_163()) return true; return false; } - private boolean jj_3R_314() { + private boolean jj_3R_311() { + if (jj_3R_339()) return true; + return false; + } + + private boolean jj_3R_247() { + if (jj_3R_273()) return true; + return false; + } + + private boolean jj_3R_336() { if (jj_3R_201()) return true; return false; } - private boolean jj_3R_312() { + private boolean jj_3R_334() { if (jj_3R_198()) return true; return false; } - private boolean jj_3R_281() { + private boolean jj_3R_294() { Token xsp; xsp = jj_scanpos; - if (jj_3R_312()) { + if (jj_3R_334()) { jj_scanpos = xsp; - if (jj_3R_313()) { + if (jj_3R_335()) { jj_scanpos = xsp; - if (jj_3R_314()) { + if (jj_3R_336()) { jj_scanpos = xsp; - if (jj_3R_315()) return true; + if (jj_3R_337()) return true; } } } return false; } - private boolean jj_3R_274() { - if (jj_3R_291()) return true; - return false; - } - - private boolean jj_3R_307() { + private boolean jj_3R_329() { if (jj_3R_198()) return true; return false; } - private boolean jj_3R_280() { + private boolean jj_3R_293() { Token xsp; xsp = jj_scanpos; - if (jj_3R_307()) { + if (jj_3R_329()) { jj_scanpos = xsp; - if (jj_3R_308()) { + if (jj_3R_330()) { jj_scanpos = xsp; - if (jj_3R_309()) { + if (jj_3R_331()) { jj_scanpos = xsp; - if (jj_3R_310()) return true; + if (jj_3R_332()) return true; } } } return false; } - private boolean jj_3R_295() { + private boolean jj_3R_317() { if (jj_3R_200()) return true; return false; } - private boolean jj_3_7() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_162()) jj_scanpos = xsp; - if (jj_3R_163()) return true; - return false; - } - - private boolean jj_3R_309() { + private boolean jj_3R_331() { if (jj_3R_201()) return true; return false; } - private boolean jj_3R_300() { + private boolean jj_3R_322() { if (jj_3R_198()) return true; return false; } - private boolean jj_3R_279() { + private boolean jj_3R_292() { Token xsp; xsp = jj_scanpos; - if (jj_3R_300()) { + if (jj_3R_322()) { jj_scanpos = xsp; - if (jj_3R_301()) { + if (jj_3R_323()) { jj_scanpos = xsp; - if (jj_3R_302()) { + if (jj_3R_324()) { jj_scanpos = xsp; - if (jj_3R_303()) return true; + if (jj_3R_325()) return true; } } } return false; } - private boolean jj_3R_297() { + private boolean jj_3R_319() { if (jj_3R_201()) return true; return false; } - private boolean jj_3R_302() { - if (jj_3R_201()) return true; + private boolean jj_3R_286() { + if (jj_3R_243()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_311()) jj_scanpos = xsp; return false; } - private boolean jj_3R_317() { - if (jj_scan_token(LBRACE)) return true; + private boolean jj_3R_324() { + if (jj_3R_201()) return true; return false; } - private boolean jj_3R_296() { + private boolean jj_3R_318() { if (jj_3R_199()) return true; return false; } - private boolean jj_3R_293() { + private boolean jj_3R_315() { if (jj_3R_199()) return true; return false; } - private boolean jj_3R_278() { + private boolean jj_3R_291() { Token xsp; xsp = jj_scanpos; - if (jj_3R_296()) { + if (jj_3R_318()) { jj_scanpos = xsp; - if (jj_3R_297()) { + if (jj_3R_319()) { jj_scanpos = xsp; - if (jj_3R_298()) return true; + if (jj_3R_320()) return true; } } return false; } - private boolean jj_3R_233() { - if (jj_3R_255()) return true; + private boolean jj_3R_273() { + if (jj_3R_262()) 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_286()) { + jj_scanpos = xsp; + if (jj_3R_287()) return true; + } return false; } - private boolean jj_3R_273() { - if (jj_3R_290()) return true; + private boolean jj_3R_246() { + if (jj_3R_272()) return true; return false; } - private boolean jj_3R_179() { + private boolean jj_3R_183() { if (jj_3R_201()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_281()) { jj_scanpos = xsp; break; } + if (jj_3R_294()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_178() { + private boolean jj_3R_182() { if (jj_3R_200()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_280()) { jj_scanpos = xsp; break; } + if (jj_3R_293()) { jj_scanpos = xsp; break; } } return false; } private boolean jj_3R_316() { - if (jj_3R_271()) return true; - return false; - } - - private boolean jj_3R_294() { if (jj_3R_201()) return true; return false; } - private boolean jj_3R_177() { + private boolean jj_3R_181() { if (jj_3R_199()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_279()) { jj_scanpos = xsp; break; } + if (jj_3R_292()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_292() { + private boolean jj_3R_314() { if (jj_3R_198()) return true; return false; } - private boolean jj_3R_176() { - if (jj_3R_198()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_278()) { jj_scanpos = xsp; break; } - } - return false; - } - - private boolean jj_3R_277() { + private boolean jj_3R_290() { Token xsp; xsp = jj_scanpos; - if (jj_3R_292()) { + if (jj_3R_314()) { jj_scanpos = xsp; - if (jj_3R_293()) { + if (jj_3R_315()) { jj_scanpos = xsp; - if (jj_3R_294()) { + if (jj_3R_316()) { jj_scanpos = xsp; - if (jj_3R_295()) return true; + if (jj_3R_317()) return true; } } } return false; } - private boolean jj_3_6() { - if (jj_3R_158()) return true; - return false; - } - - private boolean jj_3R_175() { - if (jj_3R_197()) return true; + private boolean jj_3R_180() { + if (jj_3R_198()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_277()) { jj_scanpos = xsp; break; } + if (jj_3R_291()) { jj_scanpos = xsp; break; } } return false; } - private boolean jj_3R_291() { - if (jj_3R_283()) return true; - if (jj_scan_token(COLON)) return true; + private boolean jj_3R_179() { + if (jj_3R_197()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_scan_token(1)) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3R_316()) { - jj_scanpos = xsp; - if (jj_3R_317()) return true; + if (jj_3R_290()) { jj_scanpos = xsp; break; } } return false; } @@ -7308,15 +7527,15 @@ LexicalUnitImpl result = null; private boolean jj_3R_161() { Token xsp; xsp = jj_scanpos; - if (jj_3R_175()) { + if (jj_3R_179()) { jj_scanpos = xsp; - if (jj_3R_176()) { + if (jj_3R_180()) { jj_scanpos = xsp; - if (jj_3R_177()) { + if (jj_3R_181()) { jj_scanpos = xsp; - if (jj_3R_178()) { + if (jj_3R_182()) { jj_scanpos = xsp; - if (jj_3R_179()) return true; + if (jj_3R_183()) return true; } } } @@ -7324,16 +7543,6 @@ LexicalUnitImpl result = null; return false; } - private boolean jj_3R_232() { - if (jj_3R_254()) return true; - return false; - } - - private boolean jj_3R_272() { - if (jj_3R_289()) return true; - return false; - } - /** Generated Token Manager. */ public ParserTokenManager token_source; /** Current token. */ @@ -7344,7 +7553,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[234]; + final private int[] jj_la1 = new int[229]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; @@ -7356,18 +7565,18 @@ 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,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,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,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,0x0,0xd0000000,0x4d380002,0x2,0xd0000000,0x2,0x0,0x2,0x4d380002,0x0,0x2,0xd0000000,0x2,0x4d380002,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x2,0x2,0x400000,0x2,0x2,0x2,0x2,0x0,0x2,0xd0000000,0x0,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,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,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,}; + jj_la1_1 = new int[] {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,0x50000000,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,0x50000000,0x6400181,0x7e,0x0,0x6400181,0x0,0x80000000,0x0,0x7e,0x0,0x0,0x6400181,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x6400181,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x56400181,0x50000000,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,0x6000000,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,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,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,0x8,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,0x0,0xa0000881,0x980,0x0,0xa0000881,0x0,0x0,0x0,0x980,0x10,0x0,0xa0000881,0x0,0x980,0x0,0x0,0x0,0x880,0x0,0xa0000881,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x80,0x0,0xa0000881,0x0,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,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,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,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,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,0x40000,0x0,0x6,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,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]; + final private JJCalls[] jj_2_rtns = new JJCalls[11]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -7377,7 +7586,7 @@ LexicalUnitImpl result = null; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 234; i++) jj_la1[i] = -1; + for (int i = 0; i < 229; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -7387,7 +7596,7 @@ LexicalUnitImpl result = null; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 234; i++) jj_la1[i] = -1; + for (int i = 0; i < 229; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -7397,7 +7606,7 @@ LexicalUnitImpl result = null; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 234; i++) jj_la1[i] = -1; + for (int i = 0; i < 229; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -7407,7 +7616,7 @@ LexicalUnitImpl result = null; token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 234; i++) jj_la1[i] = -1; + for (int i = 0; i < 229; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -7524,7 +7733,7 @@ LexicalUnitImpl result = null; la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 234; i++) { + for (int i = 0; i < 229; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1<<j)) != 0) { @@ -7569,7 +7778,7 @@ LexicalUnitImpl result = null; private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 12; i++) { + for (int i = 0; i < 11; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -7587,7 +7796,6 @@ LexicalUnitImpl result = null; case 8: jj_3_9(); break; case 9: jj_3_10(); break; case 10: jj_3_11(); break; - case 11: jj_3_12(); break; } } p = p.next; 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 efd1ce2857..8d7cc4c32d 100644 --- a/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj +++ b/theme-compiler/src/com/vaadin/sass/internal/parser/Parser.jj @@ -743,7 +743,7 @@ void afterImportDeclaration() : } { ( - ( (LOOKAHEAD(5)listModifyDirective()|variable()) | debugDirective() | warnDirective() | ifDirective()|mixinDirective()| eachDirective() | includeDirective() | styleRule() | media()| page() | fontFace() + ( LOOKAHEAD(5)listModifyDirective() | variable() | debuggingDirective() | mixinDirective() | controlDirective() | includeDirective() | styleRule() | media() | page() | fontFace() | { l = getLocator(); } ret=skipStatement() { if ((ret == null) || (ret.length() == 0)) { @@ -821,7 +821,7 @@ void media() : <MEDIA_SYM> ( <S> )* mediaStatement(ml) { start = true; documentHandler.startMedia(ml); } - <LBRACE> ( <S> )* ( debugDirective() | warnDirective() | styleRule() | skipUnknownRule() )* <RBRACE> ( <S> )* + <LBRACE> ( <S> )* ( debuggingDirective() | styleRule() | skipUnknownRule() )* <RBRACE> ( <S> )* } catch (ParseException e) { reportError(getLocator(), e); skipStatement(); @@ -1007,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; }) @@ -1063,7 +1066,7 @@ void styleRule() : start = true; documentHandler.startSelector(l); } - ( ifDirective() | LOOKAHEAD(5)listModifyDirective() | includeDirective() | media() | extendDirective()| eachDirective() | variable() | LOOKAHEAD(3) microsoftExtension()| styleRuleOrDeclarationOrNestedProperties())* + ( LOOKAHEAD(5)ifContentStatement() | controlDirective() | microsoftExtension() )* <RBRACE> (<S>)* } catch (ThrowedParseException e) { if (errorHandler != null) { @@ -1392,6 +1395,18 @@ void variable() : } } +void controlDirective() : +{} +{ + ifDirective() | eachDirective() +} + +void ifContentStatement() : +{} +{ + LOOKAHEAD(5)listModifyDirective() | includeDirective() | media() | extendDirective() | variable() | styleRuleOrDeclarationOrNestedProperties() +} + void ifDirective() : { Token n = null; @@ -1404,7 +1419,7 @@ void ifDirective() : { documentHandler.startIfElseDirective(); documentHandler.ifDirective(evaluator); } - ( includeDirective() | media() | extendDirective()| variable() | styleRuleOrDeclarationOrNestedProperties())* + ( ifContentStatement() )* < RBRACE >(< S >)* (elseDirective())* { documentHandler.endIfElseDirective(); } @@ -1417,12 +1432,12 @@ void elseDirective() : } { < ELSE_SYM >(< S >)* - ( < IF > (n = booleanExpressionToken() { if(n != null) evaluator += n.image; })*)? + ( < IF > ( n = booleanExpressionToken() { evaluator += n.image; } )+ )? < LBRACE >(< S >)* { if(!evaluator.trim().equals("")){ documentHandler.ifDirective(evaluator); } else{ documentHandler.elseDirective(); } } - ( includeDirective() | media() | extendDirective()| variable() | styleRuleOrDeclarationOrNestedProperties())* + ( ifContentStatement() )* < RBRACE >(< S >)* } @@ -1470,7 +1485,7 @@ void eachDirective() : {documentHandler.startEachDirective(var.image, listVariable);} ) < LBRACE >(< S >)* - ( includeDirective() | LOOKAHEAD(5)listModifyDirective() | media() | extendDirective()| variable() | styleRuleOrDeclarationOrNestedProperties())* + ( ifContentStatement() )* < RBRACE >(< S >)* { documentHandler.endEachDirective();} } @@ -1502,7 +1517,7 @@ void mixinDirective() : |(name = functionName() args = arglist()) <RPARAN> (<S>)*) <LBRACE> (<S>)* {documentHandler.startMixinDirective(name, args);} - ( includeDirective() | media() | LOOKAHEAD(5)listModifyDirective() | ifDirective() | eachDirective() | extendDirective()| variable() | styleRuleOrDeclarationOrNestedProperties() | fontFace() | page())* + ( LOOKAHEAD(5)ifContentStatement() | controlDirective() | fontFace() | page())* <RBRACE>(<S>)* {documentHandler.endMixinDirective(name, args);} } @@ -1720,6 +1735,12 @@ Node returnDirective() : {return null;} } +void debuggingDirective() : +{} +{ + debugDirective() | warnDirective() +} + void debugDirective() : {} { @@ -1835,7 +1856,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() | debugDirective() | warnDirective() | declarationOrNestedProperties()) + (LOOKAHEAD(5) styleRule() | debuggingDirective() | declarationOrNestedProperties()) } catch (JumpException e) { skipAfterExpression(); // reportWarningSkipText(getLocator(), skipAfterExpression()); @@ -2705,8 +2726,7 @@ void _parseRule() : } { ( <S> )* - ( importDeclaration() | debugDirective() | warnDirective() | styleRule() | media() | page() - | fontFace() | ret=skipStatement() + ( importDeclaration() | debuggingDirective() | styleRule() | media() | page() | fontFace() | ret=skipStatement() { if ((ret == null) || (ret.length() == 0)) { return; diff --git a/theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java b/theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java index 1ba1072767..67e6df6383 100644 --- a/theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java +++ b/theme-compiler/src/com/vaadin/sass/internal/visitor/ImportNodeHandler.java @@ -100,7 +100,9 @@ public class ImportNodeHandler { LexicalUnit value = ((RuleNode) child).getValue(); while (value != null) { if (value.getLexicalUnitType() == LexicalUnit.SAC_URI) { - String path = value.getStringValue(); + String path = value.getStringValue() + .replaceAll("^\"|\"$", "") + .replaceAll("^'|'$", ""); if (!path.startsWith("/") && !path.contains(":")) { path = prefix + path; path = StringUtil.cleanPath(path); 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/url-path.css b/theme-compiler/tests/resources/automatic/css/url-path.css new file mode 100644 index 0000000000..1045948ac8 --- /dev/null +++ b/theme-compiler/tests/resources/automatic/css/url-path.css @@ -0,0 +1,5 @@ +.bar { + background: url(foo/lorem.png); + background: url(foo/lorem.png); + background: url(foo/lorem.png); +}
\ No newline at end of file diff --git a/theme-compiler/tests/resources/automatic/scss/foo/bar.scss b/theme-compiler/tests/resources/automatic/scss/foo/bar.scss new file mode 100644 index 0000000000..326d34232d --- /dev/null +++ b/theme-compiler/tests/resources/automatic/scss/foo/bar.scss @@ -0,0 +1,5 @@ +.bar { + background: url("lorem.png"); + background: url('lorem.png'); + background: url(lorem.png); +}
\ No newline at end of file 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/url-path.scss b/theme-compiler/tests/resources/automatic/scss/url-path.scss new file mode 100644 index 0000000000..0cc954bfb4 --- /dev/null +++ b/theme-compiler/tests/resources/automatic/scss/url-path.scss @@ -0,0 +1 @@ +@import "foo/bar.scss";
\ No newline at end of file diff --git a/uitest/src/com/vaadin/tests/components/TooltipsOnScrollingWindow.html b/uitest/src/com/vaadin/tests/components/TooltipsOnScrollingWindow.html new file mode 100644 index 0000000000..b251cdf03b --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/TooltipsOnScrollingWindow.html @@ -0,0 +1,40 @@ +<?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:8888/" /> +<title>TooltipsOnScrollingWindow</title> +</head> +<body> + <table cellpadding="1" cellspacing="1" border="1"> + <thead> + <tr> + <td rowspan="1" colspan="3">TooltipsOnScrollingWindow</td> + </tr> + </thead> + <tbody> + <tr> + <td>open</td> + <td>/run/com.vaadin.tests.components.TooltipsOnScrollingWindow?restartApplication</td> + <td></td> + </tr> + <tr> + <td>showTooltip</td> + <td>vaadin=runcomvaadintestscomponentsTooltipsOnScrollingWindow::PID_Shoverable-label</td> + <td></td> + </tr> + <tr> + <td>waitForVisible</td> + <td>vaadin=runcomvaadintestscomponentsTooltipsOnScrollingWindow::Root/VTooltip[0]/FlowPanel[0]/domChild[1]</td> + <td></td> + </tr> + <tr> + <td>screenCapture</td> + <td></td> + <td>tooltip-is-positioned-correctly</td> + </tr> + </tbody> + </table> +</body> +</html> diff --git a/uitest/src/com/vaadin/tests/components/TooltipsOnScrollingWindow.java b/uitest/src/com/vaadin/tests/components/TooltipsOnScrollingWindow.java new file mode 100644 index 0000000000..a38f9c274e --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/TooltipsOnScrollingWindow.java @@ -0,0 +1,55 @@ +package com.vaadin.tests.components; + +import com.vaadin.tests.util.TestUtils; +import com.vaadin.ui.CssLayout; +import com.vaadin.ui.Label; + +public class TooltipsOnScrollingWindow extends TestBase { + + @Override + protected void setup() { + + TestUtils + .injectCSS( + getMainWindow(), + ".v-generated-body { overflow: auto; } " + + ".v-app, .v-ui { overflow: visible !important;}" + + ".hoverable-label { position: fixed; bottom: 10px; right: 10px; }" + + ".hidden-label { position: absolute; top: 2000px; left: 2000px;}"); + + getLayout().getParent().setHeight("4000px"); + getLayout().getParent().setWidth("4000px"); + getLayout().setHeight("4000px"); + getLayout().setWidth("4000px"); + + CssLayout layout = new CssLayout(); + layout.setHeight("4000px"); + layout.setWidth("4000px"); + addComponent(layout); + + Label hoverableLabel = new Label("Hover me"); + hoverableLabel.setId("hoverable-label"); + hoverableLabel.setStyleName("hoverable-label"); + hoverableLabel.setWidth("-1px"); + hoverableLabel.setDescription("Tooltip"); + layout.addComponent(hoverableLabel); + + Label hiddenLabel = new Label("Hidden"); + hiddenLabel.setStyleName("hidden-label"); + hiddenLabel.setWidth("-1px"); + layout.addComponent(hiddenLabel); + + getMainWindow().scrollIntoView(hiddenLabel); + } + + @Override + protected String getDescription() { + return "Tooltip is displayed in the wrong place when component is at lower edge of the screen and application with following the css is scrolled vertically."; + } + + @Override + protected Integer getTicketNumber() { + return 9862; + } + +} 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/orderedlayout/OrderedLayoutCases.java b/uitest/src/com/vaadin/tests/components/orderedlayout/OrderedLayoutCases.java index da6946f432..fe1dfe3e6d 100644 --- a/uitest/src/com/vaadin/tests/components/orderedlayout/OrderedLayoutCases.java +++ b/uitest/src/com/vaadin/tests/components/orderedlayout/OrderedLayoutCases.java @@ -321,6 +321,18 @@ public class OrderedLayoutCases extends AbstractTestUI { setChildState(0, 2, 1); // Height: 100% to middle child setChildState(1, 1, 4); + } + })); + + caseBar.addComponent(new Button("Undefined + alignments", + new ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + resetState(); + // Height: 350px to left child + setChildState(0, 1, 2); + // Short caption to left child + setChildState(0, 2, 1); // Alignment: bottom left to right child setChildState(2, 4, 7); } diff --git a/uitest/src/com/vaadin/tests/components/popupview/ClickingWhilePopupOpen.html b/uitest/src/com/vaadin/tests/components/popupview/ClickingWhilePopupOpen.html new file mode 100644 index 0000000000..81676f6599 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/popupview/ClickingWhilePopupOpen.html @@ -0,0 +1,37 @@ +<?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:8068/" /> +<title>ClickingWhilePopupOpen</title> +</head> +<body> +<table cellpadding="1" cellspacing="1" border="1"> +<thead> +<tr><td rowspan="1" colspan="3">ClickingWhilePopupOpen</td></tr> +</thead><tbody> +<tr> + <td>open</td> + <td>/run/ClickingWhilePopupOpen?restartApplication&debug</td> + <td></td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runClickingWhilePopupOpen::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupView[0]</td> + <td>132,7</td> +</tr> +<tr> + <td>mouseClick</td> + <td>vaadin=runClickingWhilePopupOpen::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VPopupView[0]</td> + <td>132,7</td> +</tr> +<tr> + <td>assertTextNotPresent</td> + <td>IllegalStateException: Cannot set a new parent without first clearing the old parent</td> + <td></td> +</tr> + +</tbody></table> +</body> +</html> diff --git a/uitest/src/com/vaadin/tests/components/popupview/ClickingWhilePopupOpen.java b/uitest/src/com/vaadin/tests/components/popupview/ClickingWhilePopupOpen.java new file mode 100644 index 0000000000..239c774180 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/popupview/ClickingWhilePopupOpen.java @@ -0,0 +1,26 @@ +package com.vaadin.tests.components.popupview; + +import com.vaadin.tests.components.TestBase; +import com.vaadin.ui.Label; +import com.vaadin.ui.PopupView; + +public class ClickingWhilePopupOpen extends TestBase { + + @Override + protected void setup() { + Label popup = new Label("Popup"); + popup.setSizeUndefined(); + addComponent(new PopupView("Click here to open the popup", popup)); + } + + @Override + protected String getDescription() { + return "Clicking the popup view when the popup is already open throws a client-side IllegalStateException"; + } + + @Override + protected Integer getTicketNumber() { + return 8786; + } + +} diff --git a/uitest/src/com/vaadin/tests/components/table/ValueAfterClearingContainer.java b/uitest/src/com/vaadin/tests/components/table/ValueAfterClearingContainer.java new file mode 100644 index 0000000000..93e7cafa99 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/table/ValueAfterClearingContainer.java @@ -0,0 +1,121 @@ +package com.vaadin.tests.components.table; + +import com.vaadin.data.Property.ValueChangeEvent; +import com.vaadin.data.Property.ValueChangeListener; +import com.vaadin.tests.components.TestBase; +import com.vaadin.tests.util.Log; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.CheckBox; +import com.vaadin.ui.Notification; +import com.vaadin.ui.Table; + +public class ValueAfterClearingContainer extends TestBase { + + private static final String PROPERTY_ID = "property"; + + private Log log = new Log(5); + private final Table table = new Table(); + + @Override + protected void setup() { + table.setSelectable(true); + table.addContainerProperty(PROPERTY_ID, Integer.class, null); + table.setImmediate(true); + table.addValueChangeListener(new ValueChangeListener() { + + public void valueChange(ValueChangeEvent event) { + log.log("Value changed to " + event.getProperty().getValue()); + } + }); + addComponent(log); + + addComponent(table); + final CheckBox multiselect = new CheckBox("Multiselect"); + multiselect.setImmediate(true); + multiselect.addValueChangeListener(new ValueChangeListener() { + + public void valueChange(ValueChangeEvent event) { + Boolean value = multiselect.getValue(); + table.setMultiSelect(value == null ? false : value); + } + }); + addComponent(multiselect); + addComponent(new Button("Add table items", new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + if (!table.getItemIds().isEmpty()) { + Notification.show("Only possible when the table is empty"); + return; + } else { + for (int i = 0; i < 5; i++) { + table.addItem(new Object[] { Integer.valueOf(i) }, + Integer.valueOf(i)); + } + } + } + })); + + addComponent(new Button("Show value", new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + log.log("Table selection: " + table.getValue()); + } + })); + + addComponent(new Button("Remove items from table", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + table.removeAllItems(); + } + })); + + addComponent(new Button("Remove items from container", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + table.getContainerDataSource().removeAllItems(); + } + })); + addComponent(new Button("Remove items from container and sanitize", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + table.getContainerDataSource().removeAllItems(); + table.sanitizeSelection(); + } + })); + addComponent(new Button("Remove selected item from table", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + Object selection = table.getValue(); + if (selection == null) { + Notification.show("There is no selection"); + return; + } else { + table.removeItem(selection); + } + } + })); + addComponent(new Button("Remove selected item from container", + new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + Object selection = table.getValue(); + if (selection == null) { + Notification.show("There is no selection"); + return; + } else { + table.getContainerDataSource() + .removeItem(selection); + } + } + })); + } + + @Override + protected String getDescription() { + return "Table value should be cleared when the selected item is removed from the container."; + } + + @Override + protected Integer getTicketNumber() { + return Integer.valueOf(9986); + } + +} 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&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&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&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&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> |