summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/com/vaadin/client/connectors/GridConnector.java2
-rw-r--r--client/src/com/vaadin/client/widgets/Grid.java4
-rw-r--r--server/src/com/vaadin/ui/Grid.java34
-rw-r--r--server/tests/src/com/vaadin/tests/server/component/grid/GridColumns.java16
-rw-r--r--shared/src/com/vaadin/shared/ui/grid/GridColumnState.java3
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java12
-rw-r--r--uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnVisibilityTest.java28
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");