/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.vaadin.v7.tests.components.grid; import java.io.Serializable; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.HorizontalLayout; import com.vaadin.v7.data.util.BeanItemContainer; import com.vaadin.v7.ui.Grid; import com.vaadin.v7.ui.Grid.HeaderRow; import com.vaadin.v7.ui.Grid.SelectionMode; import com.vaadin.v7.ui.Grid.SelectionModel; import com.vaadin.v7.ui.renderers.NumberRenderer; public class GridHeaderFormatChange extends AbstractReindeerTestUI { private static final long serialVersionUID = -2787771187365766027L; private HeaderRow row; public class Person implements Serializable { private static final long serialVersionUID = -7995927620756317000L; String firstName; String lastName; String streetAddress; Integer zipCode; String city; public Person(String firstName, String lastName, String streetAddress, Integer zipCode, String city) { this.firstName = firstName; this.lastName = lastName; this.streetAddress = streetAddress; this.zipCode = zipCode; this.city = city; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getStreetAddress() { return streetAddress; } public void setStreetAddress(String streetAddress) { this.streetAddress = streetAddress; } public Integer getZipCode() { return zipCode; } public void setZipCode(Integer zipCode) { this.zipCode = zipCode; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } } @Override protected void setup(VaadinRequest request) { BeanItemContainer<Person> datasource = new BeanItemContainer<>( Person.class); final Grid grid; datasource.addItem(new Person("Rudolph", "Reindeer", "Ruukinkatu 2-4", 20540, "Turku")); grid = new Grid(datasource); grid.setWidth("600px"); grid.getColumn("zipCode").setRenderer(new NumberRenderer()); grid.setColumnOrder("firstName", "lastName", "streetAddress", "zipCode", "city"); grid.setSelectionMode(SelectionMode.SINGLE); addComponent(grid); Button showHide = new Button("Hide firstName", new Button.ClickListener() { private static final long serialVersionUID = 8107530972693788705L; @Override public void buttonClick(ClickEvent event) { if (grid.getColumn("firstName") != null) { grid.removeColumn("firstName"); event.getButton().setCaption("Show firstName"); } else { grid.addColumn("firstName"); grid.setColumnOrder("firstName", "lastName", "streetAddress", "zipCode", "city"); event.getButton().setCaption("Hide firstName"); } } }); showHide.setId("show_hide"); Button selectionMode = new Button("Set multiselect", new Button.ClickListener() { private static final long serialVersionUID = 8107530972693788705L; @Override public void buttonClick(ClickEvent event) { if (grid.getSelectionModel() instanceof SelectionModel.Single) { grid.setSelectionMode(SelectionMode.MULTI); } else { grid.setSelectionMode(SelectionMode.SINGLE); } } }); selectionMode.setId("selection_mode"); Button join = new Button("Add Join header column", new Button.ClickListener() { private static final long serialVersionUID = -5330801275551280623L; @Override public void buttonClick(ClickEvent event) { if (row == null) { row = grid.prependHeaderRow(); if (grid.getColumn("firstName") != null) { row.join("firstName", "lastName") .setText("Full Name"); } row.join("streetAddress", "zipCode", "city") .setText("Address"); } else { grid.removeHeaderRow(row); row = null; } } }); join.setId("join"); addComponent(new HorizontalLayout(showHide, selectionMode, join)); } @Override protected String getTestDescription() { return "Grid for testing header re-rendering."; } @Override protected Integer getTicketNumber() { return 17131; } }