--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_4;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.SelectionMode;
+import com.vaadin.ui.UI;
+
+@Theme("valo")
+public class ConfiguringColumnWidths extends UI {
+
+ @Override
+ protected void init(VaadinRequest request) {
+ Grid grid = new Grid(GridExampleHelper.createContainer());
+ grid.setSelectionMode(SelectionMode.NONE);
+ grid.setColumnOrder("name", "amount", "count");
+
+ setupCase(grid, 3);
+
+ setContent(grid);
+ }
+
+ private void setupCase1(Grid grid) {
+ grid.getColumn("name").setExpandRatio(1);
+ }
+
+ private void setupCase2(Grid grid) {
+ grid.getColumn("name").setExpandRatio(1);
+ grid.getColumn("amount").setWidth(100);
+ grid.getColumn("count").setWidth(100);
+ }
+
+ private void setupCase3(Grid grid) {
+ grid.setWidth("400px");
+ grid.getColumn("name").setExpandRatio(1);
+ grid.getColumn("amount").setWidth(100);
+ grid.getColumn("count").setWidth(100);
+ }
+
+ private void setupCase4(Grid grid) {
+ grid.setWidth("400px");
+ grid.getColumn("name").setMinimumWidth(250);
+ grid.getColumn("amount").setWidth(100);
+ grid.getColumn("count").setWidth(100);
+ }
+
+ private void setupCase5(Grid grid) {
+ grid.setWidth("400px");
+ grid.setFrozenColumnCount(1);
+ grid.getColumn("name").setMinimumWidth(250);
+ grid.getColumn("amount").setWidth(100);
+ grid.getColumn("count").setWidth(100);
+ }
+
+ private void setupCase6(Grid grid) {
+ grid.setWidth("700px");
+ grid.setFrozenColumnCount(1);
+ grid.getColumn("name").setMinimumWidth(250);
+ grid.getColumn("amount").setWidth(100);
+ grid.getColumn("count").setWidth(100);
+ }
+
+ private void setupCase(Grid grid, int number) {
+ if (number == 0) {
+ return;
+ }
+ try {
+ getClass().getDeclaredMethod("setupCase" + number, Grid.class)
+ .invoke(this, grid);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_4;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.FooterCell;
+import com.vaadin.ui.Grid.HeaderCell;
+import com.vaadin.ui.Grid.HeaderRow;
+import com.vaadin.ui.UI;
+
+@Theme("valo")
+public class ConfiguringGridHeadersAndFooters extends UI {
+ @Override
+ protected void init(VaadinRequest request) {
+ Grid grid = new Grid(GridExampleHelper.createContainer());
+ grid.setColumnOrder("name", "amount", "count");
+
+ grid.getDefaultHeaderRow().getCell("amount")
+ .setHtml("The <u>amount</u>");
+ grid.getDefaultHeaderRow().getCell("count")
+ .setComponent(new Button("Button caption"));
+
+ grid.getColumn("name").setHeaderCaption("Bean name");
+
+ HeaderRow extraHeader = grid.prependHeaderRow();
+ HeaderCell joinedCell = extraHeader.join("amount", "count");
+ joinedCell.setText("Joined cell");
+
+ FooterCell footer = grid.appendFooterRow().join("name", "amount",
+ "count");
+ footer.setText("Right aligned footer");
+
+ getPage().getStyles().add(".footer-right { text-align: right }");
+ footer.setStyleName("footer-right");
+
+ setContent(grid);
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_4;
+
+import java.text.NumberFormat;
+import java.util.Locale;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.data.util.converter.Converter;
+import com.vaadin.data.util.converter.StringToIntegerConverter;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.CellReference;
+import com.vaadin.ui.Grid.CellStyleGenerator;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.renderers.HtmlRenderer;
+import com.vaadin.ui.renderers.NumberRenderer;
+
+@Theme("valo")
+public class FormattingDataInGrid extends UI {
+
+ @Override
+ protected void init(VaadinRequest request) {
+ Grid grid = new Grid(GridExampleHelper.createContainer());
+
+ setContent(grid);
+
+ grid.setCellStyleGenerator(new CellStyleGenerator() {
+ @Override
+ public String getStyle(CellReference cellReference) {
+ if ("amount".equals(cellReference.getPropertyId())) {
+ Double value = (Double) cellReference.getValue();
+ if (value.doubleValue() == Math.round(value.doubleValue())) {
+ return "integer";
+ }
+ }
+ return null;
+ }
+ });
+
+ getPage().getStyles().add(".integer { color: blue; }");
+
+ NumberFormat poundformat = NumberFormat.getCurrencyInstance(Locale.UK);
+ NumberRenderer poundRenderer = new NumberRenderer(poundformat);
+ grid.getColumn("amount").setRenderer(poundRenderer);
+
+ grid.getColumn("count").setConverter(new StringToIntegerConverter() {
+ @Override
+ public String convertToPresentation(Integer value,
+ Class<? extends String> targetType, Locale locale)
+ throws Converter.ConversionException {
+ String stringRepresentation = super.convertToPresentation(
+ value, targetType, locale);
+ if (value.intValue() % 2 == 0) {
+ return "<strong>" + stringRepresentation + "</strong>";
+ } else {
+ return "<em>" + stringRepresentation + "</em>";
+ }
+ }
+ });
+
+ grid.getColumn("count").setRenderer(new HtmlRenderer());
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_4;
+
+public class GridExampleBean {
+ private String name;
+ private int count;
+ private double amount;
+
+ public GridExampleBean() {
+
+ }
+
+ public GridExampleBean(String name, int count, double amount) {
+ this.name = name;
+ this.count = count;
+ this.amount = amount;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public double getAmount() {
+ return amount;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public void setAmount(double amount) {
+ this.amount = amount;
+ }
+}
\ No newline at end of file
--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_4;
+
+import com.vaadin.data.util.BeanItemContainer;
+
+public class GridExampleHelper {
+ public static BeanItemContainer<GridExampleBean> createContainer() {
+ BeanItemContainer<GridExampleBean> container = new BeanItemContainer<GridExampleBean>(
+ GridExampleBean.class);
+ for (int i = 0; i < 1000; i++) {
+ container.addItem(new GridExampleBean("Bean " + i, i * i, i / 10d));
+ }
+ return container;
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_4;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.ui.grid.HeightMode;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.UI;
+
+@Theme("valo")
+public class ShowingInlineDataInGrid extends UI {
+
+ @Override
+ protected void init(VaadinRequest request) {
+ final Grid grid = new Grid();
+
+ grid.addColumn("Name").setSortable(true);
+ grid.addColumn("Score", Integer.class);
+
+ grid.addRow("Alice", 15);
+ grid.addRow("Bob", -7);
+ grid.addRow("Carol", 8);
+ grid.addRow("Dan", 0);
+ grid.addRow("Eve", 20);
+
+ grid.select(2);
+
+ grid.setHeightByRows(grid.getContainerDataSource().size());
+ grid.setHeightMode(HeightMode.ROW);
+
+ setContent(grid);
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_4;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.UI;
+
+public class UsingGridWithAContainer extends UI {
+ @Override
+ protected void init(VaadinRequest request) {
+ Grid grid = new Grid();
+ grid.setContainerDataSource(GridExampleHelper.createContainer());
+
+ grid.getColumn("name").setHeaderCaption("Bean name");
+ grid.removeColumn("count");
+ grid.setColumnOrder("name", "amount");
+
+ setContent(grid);
+ }
+}
--- /dev/null
+/*
+ * Copyright 2000-2014 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.tests.minitutorials.v7_5;
+
+import com.vaadin.event.ItemClickEvent;
+import com.vaadin.event.ItemClickEvent.ItemClickListener;
+import com.vaadin.server.ExternalResource;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.minitutorials.v7_4.GridExampleBean;
+import com.vaadin.tests.minitutorials.v7_4.GridExampleHelper;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.DetailsGenerator;
+import com.vaadin.ui.Grid.RowReference;
+import com.vaadin.ui.Image;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+
+public class ShowingExtraDataForRows extends UI {
+ @Override
+ protected void init(VaadinRequest request) {
+ final Grid grid = new Grid();
+ grid.setContainerDataSource(GridExampleHelper.createContainer());
+
+ grid.setDetailsGenerator(new DetailsGenerator() {
+ @Override
+ public Component getDetails(RowReference rowReference) {
+ // Find the bean to generate details for
+ final GridExampleBean bean = (GridExampleBean) rowReference
+ .getItemId();
+
+ // A basic label with bean data
+ Label label = new Label("Extra data for " + bean.getName());
+
+ // An image with extra details about the bean
+ Image image = new Image();
+ image.setWidth("300px");
+ image.setHeight("150px");
+ image.setSource(new ExternalResource(
+ "http://dummyimage.com/300x150/000/fff&text="
+ + bean.getCount()));
+
+ // A button just for the sake of the example
+ Button button = new Button("Click me",
+ new Button.ClickListener() {
+ @Override
+ public void buttonClick(ClickEvent event) {
+ Notification.show("Button clicked for "
+ + bean.getName());
+ }
+ });
+
+ // Wrap up all the parts into a vertical layout
+ VerticalLayout layout = new VerticalLayout(label, image, button);
+ layout.setSpacing(true);
+ layout.setMargin(true);
+ return layout;
+ }
+ });
+
+ grid.addItemClickListener(new ItemClickListener() {
+ @Override
+ public void itemClick(ItemClickEvent event) {
+ if (event.isDoubleClick()) {
+ Object itemId = event.getItemId();
+ grid.setDetailsVisible(itemId,
+ !grid.isDetailsVisible(itemId));
+ }
+ }
+ });
+
+ setContent(grid);
+ }
+}