123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package com.vaadin.tests.components.table;
-
- import java.text.DateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.Locale;
-
- import com.vaadin.server.VaadinRequest;
- import com.vaadin.tests.components.AbstractReindeerTestUI;
- import com.vaadin.ui.Component;
- import com.vaadin.v7.data.Container;
- import com.vaadin.v7.event.ItemClickEvent;
- import com.vaadin.v7.ui.DefaultFieldFactory;
- import com.vaadin.v7.ui.Field;
- import com.vaadin.v7.ui.Table;
- import com.vaadin.v7.ui.TableFieldFactory;
-
- public class EditableModeChange extends AbstractReindeerTestUI {
-
- private ItemClickEvent selectionEvent;
-
- private final String[] names = { "Teemu", "Teppo", "Seppo", "Matti",
- "Pekka" };
-
- @SuppressWarnings("unchecked")
- @Override
- public void setup(VaadinRequest request) {
-
- final Table items = new Table("Items - double-click to edit");
- items.setSelectable(true);
- items.addContainerProperty("name", String.class, "");
- items.addContainerProperty("birthday", Date.class, "");
-
- final TableFieldFactory fieldFactory = new ItemFieldFactory();
- items.setTableFieldFactory(fieldFactory);
-
- Calendar cal = Calendar.getInstance();
- cal.set(2010, 7, 12, 12, 7, 54);
-
- for (String name : names) {
- items.addItem(name);
- items.getItem(name).getItemProperty("name").setValue(name);
- items.getItem(name).getItemProperty("birthday")
- .setValue(new FormattedDate(cal.getTime().getTime()));
- }
-
- items.addItemClickListener(event -> {
- if (event.isDoubleClick()) {
- selectionEvent = event;
- items.setEditable(true);
- } else if (items.isEditable()) {
- items.setEditable(false);
- }
- });
-
- addComponent(items);
- }
-
- private class FormattedDate extends Date {
-
- private DateFormat formatter = DateFormat.getDateTimeInstance(
- DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale("en", "US"));
-
- public FormattedDate(long time) {
- super(time);
- }
-
- @Override
- public String toString() {
- return formatter.format(this);
- }
- }
-
- private class ItemFieldFactory extends DefaultFieldFactory {
- @Override
- public Field<?> createField(Container container, Object itemId,
- Object propertyId, Component uiContext) {
- if (selectionEvent != null) {
- if ((selectionEvent.getItemId().equals(itemId))
- && (selectionEvent.getPropertyId()
- .equals(propertyId))) {
- return super.createField(container, itemId, propertyId,
- uiContext);
- }
- }
- return null;
- }
- }
-
- @Override
- protected String getTestDescription() {
- return "Double click a cell to edit, then click on another row to select it (editmode is set to false). The clicked row should now be selected without any flickering.";
- }
-
- @Override
- protected Integer getTicketNumber() {
- return 5427;
- }
- }
|