| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Florian Pirchner <florian.pirchner@gmail.com> - Initial implementation |
| */ |
| package org.eclipse.osbp.vaadin.addons.kanban.sample; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import javax.servlet.annotation.WebServlet; |
| |
| import org.eclipse.osbp.vaadin.addons.kanban.KanbanBoard; |
| import org.eclipse.osbp.vaadin.addons.kanban.KanbanCard; |
| |
| import com.vaadin.annotations.Theme; |
| import com.vaadin.annotations.VaadinServletConfiguration; |
| import com.vaadin.data.util.BeanItemContainer; |
| import com.vaadin.server.VaadinRequest; |
| import com.vaadin.server.VaadinServlet; |
| import com.vaadin.ui.Label; |
| import com.vaadin.ui.UI; |
| import com.vaadin.ui.VerticalLayout; |
| |
| @SuppressWarnings("serial") |
| @Theme("valo") |
| public class KanbanBoardUI extends UI { |
| |
| @WebServlet(value = "/*", asyncSupported = true) |
| @VaadinServletConfiguration(productionMode = false, ui = KanbanBoardUI.class, widgetset = "org.eclipse.osbp.vaadin.addons.kanban.KanbanWidgetset") |
| public static class Servlet extends VaadinServlet { |
| } |
| |
| private VerticalLayout content; |
| private KanbanBoard board; |
| |
| @Override |
| protected void init(VaadinRequest request) { |
| |
| board = new KanbanBoard(); |
| setContent(board); |
| |
| board.setDoubleClickListener(this::refreshDto); |
| |
| List<SampleEnum> allowedStates = new ArrayList<>(); |
| allowedStates.add(SampleEnum.ENTERED); |
| allowedStates.add(SampleEnum.RELEASED); |
| allowedStates.add(SampleEnum.SHIPPED); |
| allowedStates.add(SampleEnum.INVOICED); |
| board.initialize(allowedStates.toArray(new SampleEnum[allowedStates.size()]), new KanbanBoard.DropAdapter() { |
| @Override |
| public boolean dropAllowed(Enum<?> sourceState, Enum<?> targetState, Object itemId) { |
| // if (sourceState == SampleEnum.INVOICED || targetState == |
| // SampleEnum.ENTERED) { |
| // return false; |
| // } |
| return true; |
| } |
| |
| @Override |
| public boolean drop(Enum<?> sourceState, Enum<?> targetState, Object itemId) { |
| return targetState != SampleEnum.RELEASED; |
| } |
| }, new KanbanBoard.KanbanCardAdapter() { |
| |
| @Override |
| public KanbanCard createCard(Object itemId) { |
| Bean bean = (Bean) itemId; |
| KanbanCard card = new KanbanCard(bean.getId(), bean.getState(), bean); |
| card.setContent(new Label(bean.getFirstName() + " " + bean.getLastName())); |
| return card; |
| } |
| }, null); |
| |
| BeanItemContainer<Bean> container = new BeanItemContainer<>(Bean.class); |
| for (int i = 0; i < 70; i++) { |
| container.addBean(new Bean(Integer.toString(i), getState(i), "Flo" + i, "Test" + i)); |
| } |
| |
| board.setContainerDatasource(container); |
| } |
| |
| private void refreshDto(KanbanCard card) { |
| Bean newBean = new Bean(card.getCardId(), (SampleEnum) card.getCardState(), "Double", "Clicked"); |
| board.refresh(newBean); |
| } |
| |
| private SampleEnum getState(int i) { |
| if (i % 4 == 0) { |
| return SampleEnum.ENTERED; |
| } |
| if (i % 3 == 0) { |
| return SampleEnum.RELEASED; |
| } |
| if (i % 2 == 0) { |
| return SampleEnum.INVOICED; |
| } |
| return SampleEnum.SHIPPED; |
| } |
| |
| } |