Browse Source

Use headerCaption as default hidingToggleCaption (#18028)

Change-Id: Ifaf288da98d6d1d1c02760784b832cb5b5d93c07
tags/7.5.0.rc1
Teppo Kurki 9 years ago
parent
commit
d5860be5b6

+ 2
- 0
client/src/com/vaadin/client/connectors/GridConnector.java View File

@@ -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);

+ 2
- 2
client/src/com/vaadin/client/widgets/Grid.java View File

@@ -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

+ 19
- 15
server/src/com/vaadin/ui/Grid.java View File

@@ -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}
*/

+ 16
- 0
server/tests/src/com/vaadin/tests/server/component/grid/GridColumns.java View File

@@ -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());
}
}

+ 3
- 0
shared/src/com/vaadin/shared/ui/grid/GridColumnState.java View File

@@ -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;
}

+ 12
- 0
uitest/src/com/vaadin/tests/components/grid/basicfeatures/GridBasicFeatures.java View File

@@ -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",

+ 28
- 0
uitest/src/com/vaadin/tests/components/grid/basicfeatures/server/GridColumnVisibilityTest.java View File

@@ -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");

Loading…
Cancel
Save