diff options
7 files changed, 82 insertions, 17 deletions
diff --git a/client/src/com/vaadin/client/connectors/GridConnector.java b/client/src/com/vaadin/client/connectors/GridConnector.java index d3fa678c3e..f2246b1e5f 100644 --- a/client/src/com/vaadin/client/connectors/GridConnector.java +++ b/client/src/com/vaadin/client/connectors/GridConnector.java @@ -1198,6 +1198,8 @@ public class GridConnector extends AbstractHasComponentsConnector implements column.setSortable(state.sortable); + column.setHeaderCaption(state.headerCaption); + column.setHidden(state.hidden); column.setHidable(state.hidable); column.setHidingToggleCaption(state.hidingToggleCaption); diff --git a/client/src/com/vaadin/client/widgets/Grid.java b/client/src/com/vaadin/client/widgets/Grid.java index 9393ffb48c..fa74b16317 100644 --- a/client/src/com/vaadin/client/widgets/Grid.java +++ b/client/src/com/vaadin/client/widgets/Grid.java @@ -4390,8 +4390,8 @@ public class Grid<T> extends ResizeComposite implements * for this column in the grid's sidebar when the column is * {@link #isHidable() hidable}. * <p> - * Defaults to <code>null</code>, when will use whatever is set with - * {@link #setHeaderCaption(String)}. + * The default value is <code>null</code>. In this case the header + * caption is used, see {@link #setHeaderCaption(String)}. * * @since 7.5.0 * @param hidingToggleCaption diff --git a/server/src/com/vaadin/ui/Grid.java b/server/src/com/vaadin/ui/Grid.java index c061a81b73..96884d7fd5 100644 --- a/server/src/com/vaadin/ui/Grid.java +++ b/server/src/com/vaadin/ui/Grid.java @@ -2441,9 +2441,10 @@ public class Grid extends AbstractComponent implements SelectionNotifier, private Converter<?, Object> converter; /** - * A check for allowing the {@link #Column(Grid, GridColumnState, Object) - * constructor} to call {@link #setConverter(Converter)} with a - * <code>null</code>, even if model and renderer aren't compatible. + * A check for allowing the + * {@link #Column(Grid, GridColumnState, Object) constructor} to call + * {@link #setConverter(Converter)} with a <code>null</code>, even if + * model and renderer aren't compatible. */ private boolean isFirstConverterAssignment = true; @@ -2503,7 +2504,9 @@ public class Grid extends AbstractComponent implements SelectionNotifier, } /** - * Sets the caption of the header. + * Sets the caption of the header. This caption is also used as the + * hiding toggle caption, unless it is explicitly set via + * {@link #setHidingToggleCaption(String)}. * * @param caption * the text to show in the caption @@ -2515,6 +2518,9 @@ public class Grid extends AbstractComponent implements SelectionNotifier, public Column setHeaderCaption(String caption) throws IllegalStateException { checkColumnIsAttached(); + + state.headerCaption = caption; + HeaderRow row = grid.getHeader().getDefaultRow(); if (row != null) { row.getCell(grid.getPropertyIdByColumnId(state.id)).setText( @@ -2542,11 +2548,11 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * toggle for this column in the grid's sidebar when the column is * {@link #isHidable() hidable}. * <p> - * By default, before triggering this setter, a user friendly version of - * the column's {@link #getPropertyId() property id} is used. + * The default value is <code>null</code>, and in that case the column's + * {@link #getHeaderCaption() header caption} is used. * <p> - * <em>NOTE:</em> setting this to <code>null</code> or empty string - * might cause the hiding toggle to not render correctly. + * <em>NOTE:</em> setting this to empty string might cause the hiding + * toggle to not render correctly. * * @since 7.5.0 * @param hidingToggleCaption @@ -3207,9 +3213,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, DesignAttributeHandler.writeAttribute("hidden", attributes, isHidden(), def.hidden, boolean.class); DesignAttributeHandler.writeAttribute("hiding-toggle-caption", - attributes, getHidingToggleCaption(), - SharedUtil.propertyIdToHumanFriendly(getPropertyId()), - String.class); + attributes, getHidingToggleCaption(), null, String.class); DesignAttributeHandler.writeAttribute("property-id", attributes, getPropertyId(), null, Object.class); } @@ -3288,7 +3292,8 @@ public class Grid extends AbstractComponent implements SelectionNotifier, private final String nullRepresentation; - protected AbstractRenderer(Class<T> presentationType, String nullRepresentation) { + protected AbstractRenderer(Class<T> presentationType, + String nullRepresentation) { this.presentationType = presentationType; this.nullRepresentation = nullRepresentation; } @@ -3333,6 +3338,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, /** * Null representation for the renderer + * * @return a textual representation of {@code null} */ protected String getNullRepresentation() { @@ -4303,7 +4309,6 @@ public class Grid extends AbstractComponent implements SelectionNotifier, String humanFriendlyPropertyId = SharedUtil .propertyIdToHumanFriendly(String.valueOf(datasourcePropertyId)); column.setHeaderCaption(humanFriendlyPropertyId); - column.setHidingToggleCaption(humanFriendlyPropertyId); if (datasource instanceof Sortable && ((Sortable) datasource).getSortableContainerPropertyIds() @@ -4513,8 +4518,7 @@ public class Grid extends AbstractComponent implements SelectionNotifier, * @throws IllegalArgumentException * if {@code rows} is zero or less * @throws IllegalArgumentException - * if {@code rows} is {@link Double#isInfinite(double) - * infinite} + * if {@code rows} is {@link Double#isInfinite(double) infinite} * @throws IllegalArgumentException * if {@code rows} is {@link Double#isNaN(double) NaN} */ diff --git a/server/tests/src/com/vaadin/tests/server/component/grid/GridColumns.java b/server/tests/src/com/vaadin/tests/server/component/grid/GridColumns.java index 35553bb406..2b960d26a0 100644 --- a/server/tests/src/com/vaadin/tests/server/component/grid/GridColumns.java +++ b/server/tests/src/com/vaadin/tests/server/component/grid/GridColumns.java @@ -338,4 +338,20 @@ public class GridColumns { public void testAddingColumnsWithSetColumnsNonDefaultContainer() { grid.setColumns("column1", "column2", "column50"); } + + @Test + public void testDefaultColumnHidingToggleCaption() { + Column firstColumn = grid.getColumns().get(0); + firstColumn.setHeaderCaption("headerCaption"); + assertEquals(null, firstColumn.getHidingToggleCaption()); + } + + @Test + public void testOverriddenColumnHidingToggleCaption() { + Column firstColumn = grid.getColumns().get(0); + firstColumn.setHidingToggleCaption("hidingToggleCaption"); + firstColumn.setHeaderCaption("headerCaption"); + assertEquals("hidingToggleCaption", + firstColumn.getHidingToggleCaption()); + } } diff --git a/shared/src/com/vaadin/shared/ui/grid/GridColumnState.java b/shared/src/com/vaadin/shared/ui/grid/GridColumnState.java index 5aa9ea9b65..547a4a84ca 100644 --- a/shared/src/com/vaadin/shared/ui/grid/GridColumnState.java +++ b/shared/src/com/vaadin/shared/ui/grid/GridColumnState.java @@ -85,4 +85,7 @@ public class GridColumnState implements Serializable { /** The caption for the column hiding toggle. */ public String hidingToggleCaption; + + /** Column header caption */ + public String headerCaption; } diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java index ecf3d53385..ef51cdf446 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java @@ -908,6 +908,18 @@ public class GridBasicFeatures extends AbstractComponentTest<Grid> { } }, null, c); + createClickAction("Change header caption", getColumnProperty(c), + new Command<Grid, String>() { + int count = 0; + + @Override + public void execute(Grid grid, String value, Object data) { + final String columnProperty = getColumnProperty((Integer) data); + grid.getColumn(columnProperty).setHeaderCaption( + columnProperty + " header " + count++); + } + }, null, c); + createCategory("Column " + c + " Width", getColumnProperty(c)); createClickAction("Auto", "Column " + c + " Width", diff --git a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnVisibilityTest.java b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnVisibilityTest.java index d01e689b72..e2d7468d08 100644 --- a/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnVisibilityTest.java +++ b/uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnVisibilityTest.java @@ -195,6 +195,34 @@ public class GridColumnVisibilityTest extends GridBasicFeaturesTest { assertEquals("Column 1", getColumnHidingToggle(1).getText()); } + @Test + public void testColumnHidingToggleCaption_settingColumnHeaderCaption_toggleCaptionIsEqual() { + toggleColumnHidable(1); + + selectMenuPath("Component", "Columns", "Column 1", + "Change header caption"); + + getSidebarOpenButton().click(); + assertEquals("column 1 header 0", getGridElement().getHeaderCell(0, 1) + .getText().toLowerCase()); + assertEquals("Column 1 header 0", getColumnHidingToggle(1).getText()); + } + + @Test + public void testColumnHidingToggleCaption_explicitlySet_toggleCaptionIsNotOverridden() { + toggleColumnHidable(1); + + selectMenuPath("Component", "Columns", "Column 1", + "Change hiding toggle caption"); + selectMenuPath("Component", "Columns", "Column 1", + "Change header caption"); + + getSidebarOpenButton().click(); + assertEquals("column 1 header 0", getGridElement().getHeaderCell(0, 1) + .getText().toLowerCase()); + assertEquals("Column 1 caption 0", getColumnHidingToggle(1).getText()); + } + private void toggleColumnHidingToggleCaptionChange(int index) { selectMenuPath("Component", "Columns", "Column " + index, "Change hiding toggle caption"); |