Fixes vaadin/framework8-issues#588tags/8.0.0.beta2
@@ -13,13 +13,13 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.v7.tests.components.grid; | |||
package com.vaadin.tests.components.grid; | |||
import com.vaadin.annotations.Widgetset; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractReindeerTestUI; | |||
import com.vaadin.tests.widgetset.TestingWidgetSet; | |||
import com.vaadin.tests.widgetset.client.v7.grid.GridCellFocusOnResetSizeWidget; | |||
import com.vaadin.tests.widgetset.client.grid.GridCellFocusOnResetSizeWidget; | |||
import com.vaadin.tests.widgetset.server.TestWidgetComponent; | |||
@Widgetset(TestingWidgetSet.NAME) |
@@ -13,36 +13,53 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.v7.tests.components.grid; | |||
package com.vaadin.tests.components.grid; | |||
import java.io.Serializable; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
import com.vaadin.data.Binder; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractReindeerTestUI; | |||
import com.vaadin.v7.data.util.BeanItemContainer; | |||
import com.vaadin.v7.ui.Grid; | |||
import com.vaadin.ui.CheckBox; | |||
import com.vaadin.ui.Grid; | |||
import com.vaadin.ui.Grid.Column; | |||
import com.vaadin.ui.TextField; | |||
public class GridCheckBoxDisplay extends AbstractReindeerTestUI { | |||
private static final long serialVersionUID = -5575892909354637168L; | |||
private BeanItemContainer<Todo> todoContainer = new BeanItemContainer<>( | |||
Todo.class); | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
todoContainer.addBean(new Todo("Done task", true)); | |||
todoContainer.addBean(new Todo("Not done", false)); | |||
List<Todo> items = Arrays.asList(new Todo("Done task", true), | |||
new Todo("Not done", false)); | |||
Grid grid = new Grid(todoContainer); | |||
Grid<Todo> grid = new Grid<>(); | |||
grid.setSizeFull(); | |||
grid.setColumnOrder("done", "task"); | |||
grid.getColumn("done").setWidth(75); | |||
grid.getColumn("task").setExpandRatio(1); | |||
TextField taskField = new TextField(); | |||
CheckBox doneField = new CheckBox(); | |||
Binder<Todo> binder = new Binder<>(); | |||
binder.bind(taskField, Todo::getTask, Todo::setTask); | |||
binder.bind(doneField, Todo::isDone, Todo::setDone); | |||
grid.getEditor().setBinder(binder); | |||
grid.getEditor().setEnabled(true); | |||
Column<Todo, String> column = grid | |||
.addColumn(todo -> String.valueOf(todo.isDone())); | |||
column.setWidth(75); | |||
column.setEditorComponent(doneField); | |||
grid.addColumn(Todo::getTask).setExpandRatio(1) | |||
.setEditorComponent(taskField); | |||
grid.setSelectionMode(Grid.SelectionMode.SINGLE); | |||
grid.setEditorEnabled(true); | |||
grid.setItems(items); | |||
getLayout().addComponent(grid); | |||
getLayout().setExpandRatio(grid, 1); |
@@ -13,13 +13,13 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.v7.tests.components.grid; | |||
package com.vaadin.tests.components.grid; | |||
import com.vaadin.annotations.Widgetset; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractReindeerTestUI; | |||
import com.vaadin.tests.widgetset.TestingWidgetSet; | |||
import com.vaadin.tests.widgetset.client.v7.grid.GridDataChangeHandlerWidget; | |||
import com.vaadin.tests.widgetset.client.grid.GridDataChangeHandlerWidget; | |||
import com.vaadin.tests.widgetset.server.TestWidgetComponent; | |||
@Widgetset(TestingWidgetSet.NAME) |
@@ -13,7 +13,7 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.tests.widgetset.client.v7.grid; | |||
package com.vaadin.tests.widgetset.client.grid; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
@@ -23,10 +23,10 @@ import com.google.gwt.event.dom.client.ClickHandler; | |||
import com.google.gwt.user.client.ui.Button; | |||
import com.vaadin.client.data.DataChangeHandler; | |||
import com.vaadin.client.data.DataSource; | |||
import com.vaadin.client.renderers.HtmlRenderer; | |||
import com.vaadin.client.widget.grid.selection.SelectionModel; | |||
import com.vaadin.client.widgets.Grid; | |||
import com.vaadin.shared.Registration; | |||
import com.vaadin.v7.client.renderers.HtmlRenderer; | |||
import com.vaadin.v7.client.widgets.Grid; | |||
import com.vaadin.v7.client.widgets.Grid.SelectionMode; | |||
public class GridCellFocusOnResetSizeWidget | |||
extends PureGWTTestApplication<Grid<String[]>> { | |||
@@ -90,7 +90,8 @@ public class GridCellFocusOnResetSizeWidget | |||
private class Col extends Grid.Column<String, String[]> { | |||
public Col(String header) { | |||
super(header, new HtmlRenderer()); | |||
super(header); | |||
setRenderer(new HtmlRenderer()); | |||
} | |||
@Override | |||
@@ -103,7 +104,7 @@ public class GridCellFocusOnResetSizeWidget | |||
public GridCellFocusOnResetSizeWidget() { | |||
super(new Grid<String[]>()); | |||
grid = getTestedWidget(); | |||
grid.setSelectionMode(SelectionMode.NONE); | |||
grid.setSelectionModel(new SelectionModel.NoSelectionModel<>()); | |||
grid.setWidth("300px"); | |||
grid.addColumn(new Col("Foo")); | |||
final MyDataSource dataSource = new MyDataSource(); |
@@ -13,7 +13,7 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.tests.widgetset.client.v7.grid; | |||
package com.vaadin.tests.widgetset.client.grid; | |||
import java.util.Arrays; | |||
import java.util.List; | |||
@@ -24,9 +24,8 @@ import com.google.gwt.user.client.Timer; | |||
import com.google.gwt.user.client.ui.Composite; | |||
import com.google.gwt.user.client.ui.SimplePanel; | |||
import com.vaadin.client.data.AbstractRemoteDataSource; | |||
import com.vaadin.v7.client.widget.grid.datasources.ListDataSource; | |||
import com.vaadin.v7.client.widgets.Grid; | |||
import com.vaadin.v7.client.widgets.Grid.Column; | |||
import com.vaadin.client.widget.grid.datasources.ListDataSource; | |||
import com.vaadin.client.widgets.Grid; | |||
public class GridDataChangeHandlerWidget extends Composite { | |||
@@ -95,7 +94,7 @@ public class GridDataChangeHandlerWidget extends Composite { | |||
panel.setWidget(grid); | |||
grid.setDataSource(new RemoteDelayedDataSource( | |||
Arrays.asList("A", "B", "C", "D", "E"))); | |||
grid.addColumn(new Column<String, String>("letter") { | |||
grid.addColumn(new Grid.Column<String, String>("letter") { | |||
@Override | |||
public String getValue(String row) { | |||
return row; |
@@ -0,0 +1,309 @@ | |||
/* | |||
* 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.tests.widgetset.client.grid; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
import com.google.gwt.core.client.Scheduler.ScheduledCommand; | |||
import com.google.gwt.dom.client.Style.Unit; | |||
import com.google.gwt.user.client.Element; | |||
import com.google.gwt.user.client.ui.DockLayoutPanel; | |||
import com.google.gwt.user.client.ui.LayoutPanel; | |||
import com.google.gwt.user.client.ui.MenuBar; | |||
import com.google.gwt.user.client.ui.Panel; | |||
import com.vaadin.client.ui.SubPartAware; | |||
/** | |||
* Pure GWT Test Application base for testing features of a single widget; | |||
* provides a menu system and convenience method for adding items to it. | |||
* | |||
* @since | |||
* @author Vaadin Ltd | |||
*/ | |||
public abstract class PureGWTTestApplication<T> extends DockLayoutPanel | |||
implements SubPartAware { | |||
/** | |||
* Class describing a menu item with an associated action | |||
*/ | |||
public static class Command { | |||
private final String title; | |||
private final ScheduledCommand command; | |||
/** | |||
* Creates a Command object, which is used as an action entry in the | |||
* Menu | |||
* | |||
* @param t | |||
* a title string | |||
* @param cmd | |||
* a scheduled command that is executed when this item is | |||
* selected | |||
*/ | |||
public Command(String t, ScheduledCommand cmd) { | |||
title = t; | |||
command = cmd; | |||
} | |||
/** | |||
* Returns the title of this command item | |||
* | |||
* @return a title string | |||
*/ | |||
public final String getTitle() { | |||
return title; | |||
} | |||
/** | |||
* Returns the actual scheduled command of this command item | |||
* | |||
* @return a scheduled command | |||
*/ | |||
public final ScheduledCommand getCommand() { | |||
return command; | |||
} | |||
} | |||
/** | |||
* A menu object, providing a complete system for building a hierarchical | |||
* menu bar system. | |||
*/ | |||
public static class Menu { | |||
private final String title; | |||
private final MenuBar menubar; | |||
private final List<Menu> children; | |||
private final List<Command> items; | |||
/** | |||
* Create base-level menu, without a title. This is the root menu bar, | |||
* which can be attached to a client application window. All other Menus | |||
* should be added as child menus to this Menu, in order to maintain a | |||
* nice hierarchy. | |||
*/ | |||
private Menu() { | |||
title = ""; | |||
menubar = new MenuBar(); | |||
menubar.getElement().setId("menu"); | |||
children = new ArrayList<>(); | |||
items = new ArrayList<>(); | |||
} | |||
/** | |||
* Create a sub-menu, with a title. | |||
* | |||
* @param title | |||
*/ | |||
public Menu(String title) { | |||
this.title = title; | |||
menubar = new MenuBar(true); | |||
children = new ArrayList<>(); | |||
items = new ArrayList<>(); | |||
} | |||
/** | |||
* Return the GWT {@link MenuBar} object that provides the widget for | |||
* this Menu | |||
* | |||
* @return a menubar object | |||
*/ | |||
public MenuBar getMenuBar() { | |||
return menubar; | |||
} | |||
/** | |||
* Returns the title of this menu entry | |||
* | |||
* @return a title string | |||
*/ | |||
public String getTitle() { | |||
return title; | |||
} | |||
/** | |||
* Adds a child menu entry to this menu. The title for this entry is | |||
* taken from the Menu object argument. | |||
* | |||
* @param m | |||
* another Menu object | |||
*/ | |||
public void addChildMenu(Menu m) { | |||
menubar.addItem(m.title, m.menubar); | |||
children.add(m); | |||
} | |||
/** | |||
* Tests for the existence of a child menu by title at this level of the | |||
* menu hierarchy | |||
* | |||
* @param title | |||
* a title string | |||
* @return true, if this menu has a direct child menu with the specified | |||
* title, otherwise false | |||
*/ | |||
public boolean hasChildMenu(String title) { | |||
return getChildMenu(title) != null; | |||
} | |||
/** | |||
* Gets a reference to a child menu with a certain title, that is a | |||
* direct child of this menu level. | |||
* | |||
* @param title | |||
* a title string | |||
* @return a Menu object with the specified title string, or null, if | |||
* this menu doesn't have a direct child with the specified | |||
* title. | |||
*/ | |||
public Menu getChildMenu(String title) { | |||
for (Menu m : children) { | |||
if (m.title.equals(title)) { | |||
return m; | |||
} | |||
} | |||
return null; | |||
} | |||
/** | |||
* Adds a command item to the menu. When the entry is clicked, the | |||
* command is executed. | |||
* | |||
* @param cmd | |||
* a command object. | |||
*/ | |||
public void addCommand(Command cmd) { | |||
menubar.addItem(cmd.title, cmd.command); | |||
items.add(cmd); | |||
} | |||
/** | |||
* Tests for the existence of a {@link Command} that is the direct child | |||
* of this level of menu. | |||
* | |||
* @param title | |||
* the command's title | |||
* @return true, if this menu level includes a command item with the | |||
* specified title. Otherwise false. | |||
*/ | |||
public boolean hasCommand(String title) { | |||
return getCommand(title) != null; | |||
} | |||
/** | |||
* Gets a reference to a {@link Command} item that is the direct child | |||
* of this level of menu. | |||
* | |||
* @param title | |||
* the command's title | |||
* @return a command, if found in this menu level, otherwise null. | |||
*/ | |||
public Command getCommand(String title) { | |||
for (Command c : items) { | |||
if (c.title.equals(title)) { | |||
return c; | |||
} | |||
} | |||
return null; | |||
} | |||
} | |||
/** | |||
* Base level menu object, provides visible menu bar | |||
*/ | |||
private final Menu menu; | |||
private final T testedWidget; | |||
/** | |||
* This constructor creates the basic menu bar and adds it to the top of the | |||
* parent {@link DockLayoutPanel} | |||
*/ | |||
protected PureGWTTestApplication(T widget) { | |||
super(Unit.PX); | |||
Panel menuPanel = new LayoutPanel(); | |||
menu = new Menu(); | |||
menuPanel.add(menu.getMenuBar()); | |||
addNorth(menuPanel, 25); | |||
testedWidget = widget; | |||
} | |||
/** | |||
* Connect an item to the menu structure | |||
* | |||
* @param cmd | |||
* a scheduled command; see google's docs | |||
* @param menupath | |||
* path to the item | |||
*/ | |||
public void addMenuCommand(String title, ScheduledCommand cmd, | |||
String... menupath) { | |||
Menu m = createMenuPath(menupath); | |||
m.addCommand(new Command(title, cmd)); | |||
} | |||
/** | |||
* Create a menu path, if one doesn't already exist, and return the last | |||
* menu in the series. | |||
* | |||
* @param path | |||
* a varargs list or array of strings describing a menu path, | |||
* e.g. "File", "Recent", "User Files", which would result in the | |||
* File menu having a submenu called "Recent" which would have a | |||
* submenu called "User Files". | |||
* @return the last Menu object specified by the path | |||
*/ | |||
private Menu createMenuPath(String... path) { | |||
Menu m = menu; | |||
for (String p : path) { | |||
Menu sub = m.getChildMenu(p); | |||
if (sub == null) { | |||
sub = new Menu(p); | |||
m.addChildMenu(sub); | |||
} | |||
m = sub; | |||
} | |||
return m; | |||
} | |||
@Override | |||
public Element getSubPartElement(String subPart) { | |||
if (testedWidget instanceof SubPartAware) { | |||
return ((SubPartAware) testedWidget).getSubPartElement(subPart); | |||
} | |||
return null; | |||
} | |||
@Override | |||
public String getSubPartName(Element subElement) { | |||
if (testedWidget instanceof SubPartAware) { | |||
return ((SubPartAware) testedWidget).getSubPartName(subElement); | |||
} | |||
return null; | |||
} | |||
/** | |||
* Gets the tested widget. | |||
* | |||
* @return tested widget | |||
*/ | |||
public T getTestedWidget() { | |||
return testedWidget; | |||
} | |||
} |
@@ -13,7 +13,7 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.v7.tests.components.grid; | |||
package com.vaadin.tests.components.grid; | |||
import static org.junit.Assert.assertTrue; | |||
@@ -13,7 +13,7 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.v7.tests.components.grid; | |||
package com.vaadin.tests.components.grid; | |||
import org.junit.Assert; | |||
import org.junit.Test; |
@@ -13,7 +13,7 @@ | |||
* License for the specific language governing permissions and limitations under | |||
* the License. | |||
*/ | |||
package com.vaadin.v7.tests.components.grid; | |||
package com.vaadin.tests.components.grid; | |||
import static org.junit.Assert.assertFalse; | |||
@@ -25,15 +25,19 @@ import org.junit.Test; | |||
import com.vaadin.testbench.By; | |||
import com.vaadin.testbench.customelements.GridElement; | |||
import com.vaadin.testbench.elements.NotificationElement; | |||
import com.vaadin.testbench.elementsbase.ServerClass; | |||
import com.vaadin.testbench.parallel.TestCategory; | |||
import com.vaadin.tests.tb3.MultiBrowserTest; | |||
import com.vaadin.v7.tests.components.grid.GridCellFocusOnResetSizeTest.MyGridElement; | |||
@TestCategory("grid") | |||
public class GridDefaultTextRendererTest extends MultiBrowserTest { | |||
private GridElement grid; | |||
@ServerClass("com.vaadin.tests.widgetset.server.TestWidgetComponent") | |||
public static class MyGridElement extends GridElement { | |||
} | |||
@Before | |||
public void init() { | |||
setDebug(true); |