diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/src/com/vaadin/client/ui/grid/Escalator.java | 97 | ||||
-rw-r--r-- | client/src/com/vaadin/client/ui/grid/Grid.java | 9 | ||||
-rw-r--r-- | client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java | 26 |
3 files changed, 115 insertions, 17 deletions
diff --git a/client/src/com/vaadin/client/ui/grid/Escalator.java b/client/src/com/vaadin/client/ui/grid/Escalator.java index 6ecb07ca06..5686342f86 100644 --- a/client/src/com/vaadin/client/ui/grid/Escalator.java +++ b/client/src/com/vaadin/client/ui/grid/Escalator.java @@ -39,6 +39,7 @@ import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.UIObject; import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.event.shared.HandlerRegistration; import com.vaadin.client.Profiler; @@ -50,6 +51,7 @@ import com.vaadin.client.ui.grid.PositionFunction.TranslatePosition; import com.vaadin.client.ui.grid.PositionFunction.WebkitTranslate3DPosition; import com.vaadin.client.ui.grid.ScrollbarBundle.HorizontalScrollbarBundle; import com.vaadin.client.ui.grid.ScrollbarBundle.VerticalScrollbarBundle; +import com.vaadin.shared.util.SharedUtil; /*- @@ -895,8 +897,6 @@ public class Escalator extends Widget { } } - static final String CLASS_NAME = "v-escalator"; - private abstract class AbstractRowContainer implements RowContainer { private EscalatorUpdater updater = EscalatorUpdater.NULL; @@ -911,6 +911,12 @@ public class Escalator extends Widget { /** The height of the combined rows in the DOM. */ protected double height = -1; + /** + * The primary style name of the escalator. Most commonly provided by + * Escalator as "v-escalator". + */ + private String primaryStyleName = null; + public AbstractRowContainer(final Element rowContainerElement) { root = rowContainerElement; } @@ -1087,7 +1093,7 @@ public class Escalator extends Widget { final int rowHeight = ROW_HEIGHT_PX; final Element tr = DOM.createTR(); addedRows.add(tr); - tr.addClassName(CLASS_NAME + "-row"); + tr.addClassName(getStylePrimaryName() + "-row"); referenceRow = insertAfterReferenceAndUpdateIt(root, tr, referenceRow); @@ -1209,7 +1215,7 @@ public class Escalator extends Widget { final Element cellElem = DOM.createElement(getCellElementTagName()); cellElem.getStyle().setHeight(height, Unit.PX); cellElem.getStyle().setWidth(width, Unit.PX); - cellElem.addClassName(CLASS_NAME + "-cell"); + cellElem.addClassName(getStylePrimaryName() + "-cell"); return cellElem; } @@ -1461,6 +1467,47 @@ public class Escalator extends Widget { row = row.getNextSiblingElement(); } } + + /** + * The primary style name for the container. + * + * @param primaryStyleName + * the style name to use as prefix for all row and cell style + * names. + */ + protected void setStylePrimaryName(String primaryStyleName) { + String oldStyle = getStylePrimaryName(); + if (SharedUtil.equals(oldStyle, primaryStyleName)) { + return; + } + + this.primaryStyleName = primaryStyleName; + + // Update already rendered rows and cells + Node row = root.getFirstChild(); + while (row != null) { + Element rowElement = row.cast(); + UIObject.setStylePrimaryName(rowElement, primaryStyleName + + "-row"); + Node cell = row.getFirstChild(); + while (cell != null) { + Element cellElement = cell.cast(); + UIObject.setStylePrimaryName(cellElement, primaryStyleName + + "-cell"); + cell = cell.getNextSibling(); + } + row = row.getNextSibling(); + } + } + + /** + * Returns the primary style name of the container. + * + * @return The primary style name or <code>null</code> if not set. + */ + protected String getStylePrimaryName() { + return primaryStyleName; + } } private abstract class AbstractStaticRowContainer extends @@ -1525,6 +1572,12 @@ public class Escalator extends Widget { protected String getCellElementTagName() { return "th"; } + + @Override + public void setStylePrimaryName(String primaryStyleName) { + super.setStylePrimaryName(primaryStyleName); + UIObject.setStylePrimaryName(root, primaryStyleName + "-header"); + } } private class FooterRowContainer extends AbstractStaticRowContainer { @@ -1533,6 +1586,12 @@ public class Escalator extends Widget { } @Override + public void setStylePrimaryName(String primaryStyleName) { + super.setStylePrimaryName(primaryStyleName); + UIObject.setStylePrimaryName(root, primaryStyleName + "-footer"); + } + + @Override protected String getCellElementTagName() { return "td"; } @@ -1564,6 +1623,12 @@ public class Escalator extends Widget { super(bodyElement); } + @Override + public void setStylePrimaryName(String primaryStyleName) { + super.setStylePrimaryName(primaryStyleName); + UIObject.setStylePrimaryName(root, primaryStyleName + "-body"); + } + public void updateEscalatorRowsOnScroll() { if (visualRowOrder.isEmpty()) { return; @@ -2952,7 +3017,6 @@ public class Escalator extends Widget { final Element root = DOM.createDiv(); setElement(root); - setStyleName(CLASS_NAME); root.appendChild(verticalScrollbar.getElement()); root.appendChild(horizontalScrollbar.getElement()); @@ -2961,21 +3025,18 @@ public class Escalator extends Widget { .setScrollbarThickness(Util.getNativeScrollbarSize()); tableWrapper = DOM.createDiv(); - tableWrapper.setClassName(CLASS_NAME + "-tablewrapper"); + root.appendChild(tableWrapper); final Element table = DOM.createTable(); tableWrapper.appendChild(table); - headElem.setClassName(CLASS_NAME + "-header"); table.appendChild(headElem); - - bodyElem.setClassName(CLASS_NAME + "-body"); table.appendChild(bodyElem); - - footElem.setClassName(CLASS_NAME + "-footer"); table.appendChild(footElem); + setStylePrimaryName("v-escalator"); + /* * Size calculations work only after the Escalator has been attached to * the DOM. It doesn't matter if the table is populated or not by this @@ -3479,4 +3540,18 @@ public class Escalator extends Widget { recalculateElementSizes(); } } + + @Override + public void setStylePrimaryName(String style) { + super.setStylePrimaryName(style); + + verticalScrollbar.setStylePrimaryName(style); + horizontalScrollbar.setStylePrimaryName(style); + + UIObject.setStylePrimaryName(tableWrapper, style + "-tablewrapper"); + + header.setStylePrimaryName(style); + body.setStylePrimaryName(style); + footer.setStylePrimaryName(style); + } } diff --git a/client/src/com/vaadin/client/ui/grid/Grid.java b/client/src/com/vaadin/client/ui/grid/Grid.java index 8f0a2e06bf..a78601181a 100644 --- a/client/src/com/vaadin/client/ui/grid/Grid.java +++ b/client/src/com/vaadin/client/ui/grid/Grid.java @@ -476,6 +476,8 @@ public class Grid<T> extends Composite { public Grid() { initWidget(escalator); + setStylePrimaryName("v-grid"); + escalator.getHeader().setEscalatorUpdater(createHeaderUpdater()); escalator.getBody().setEscalatorUpdater(createBodyUpdater()); escalator.getFooter().setEscalatorUpdater(createFooterUpdater()); @@ -498,6 +500,13 @@ public class Grid<T> extends Composite { } + @Override + public void setStylePrimaryName(String style) { + super.setStylePrimaryName(style); + escalator.setStylePrimaryName(style); + + } + /** * Creates the header updater that updates the escalator header rows from * the column and column group rows. diff --git a/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java b/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java index 82c2c56117..f0e966176c 100644 --- a/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java +++ b/client/src/com/vaadin/client/ui/grid/ScrollbarBundle.java @@ -31,7 +31,6 @@ import com.google.gwt.user.client.Element; * @see HorizontalScrollbarBundle */ abstract class ScrollbarBundle { - private static final String CLASS_NAME = Escalator.CLASS_NAME + "-scroller"; /** * The pixel size for OSX's invisible scrollbars. @@ -50,8 +49,11 @@ abstract class ScrollbarBundle { * @see VerticalScrollbarBundle#getElement() */ final static class VerticalScrollbarBundle extends ScrollbarBundle { - public VerticalScrollbarBundle() { - root.addClassName(CLASS_NAME + "-vertical"); + + @Override + public void setStylePrimaryName(String primaryStyleName) { + super.setStylePrimaryName(primaryStyleName); + root.addClassName(primaryStyleName + "-scroller-vertical"); } @Override @@ -111,8 +113,11 @@ abstract class ScrollbarBundle { * @see HorizontalScrollbarBundle#getElement() */ final static class HorizontalScrollbarBundle extends ScrollbarBundle { - protected HorizontalScrollbarBundle() { - root.addClassName(CLASS_NAME + "-horizontal"); + + @Override + public void setStylePrimaryName(String primaryStyleName) { + super.setStylePrimaryName(primaryStyleName); + root.addClassName(primaryStyleName + "-scroller-horizontal"); } @Override @@ -172,7 +177,16 @@ abstract class ScrollbarBundle { private ScrollbarBundle() { root.appendChild(scrollSizeElement); - root.setClassName(CLASS_NAME); + } + + /** + * Sets the primary style name + * + * @param primaryStyleName + * The primary style name to use + */ + public void setStylePrimaryName(String primaryStyleName) { + root.setClassName(primaryStyleName + "-scroller"); } /** |