blob: f9712d54fc5987efcd2a62b919b997d9cbabf6b8 [file] [log] [blame]
/**
*
* 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;
}
}