package org.tltv.gantt.demo; import org.tltv.gantt.Gantt; import org.tltv.gantt.client.shared.Step; import com.vaadin.v7.data.util.BeanItemContainer; import com.vaadin.ui.HorizontalLayout; import com.vaadin.v7.ui.Table; import com.vaadin.ui.UI; public class TableGanttLayout extends HorizontalLayout implements GanttListener { Gantt gantt; Table ganttTable; public TableGanttLayout(Gantt gantt) { this.gantt = gantt; setSizeFull(); setMargin(false); setSpacing(false); UI.getCurrent().getPage().getStyles().add(".v-table-table tr td.v-table-cell-content { height: 36px; }"); UI.getCurrent().getPage().getStyles() .add(".v-table-table tr:first-child td.v-table-cell-content { height: 37px; }"); ganttTable = createTableForGantt(); addComponent(ganttTable); addComponent(gantt); } private Table createTableForGantt() { BeanItemContainer<Step> container = new BeanItemContainer<Step>(Step.class); Table table = new Table(null, container); table.setSortEnabled(false); table.setBuffered(false); table.setSizeFull(); container.addAll(gantt.getSteps()); table.setVisibleColumns("caption"); gantt.setVerticalScrollDelegateTarget(table); table.setColumnWidth(null, 500); return table; } @SuppressWarnings("unchecked") @Override public void stepModified(Step step) { if (!ganttTable.containsId(step)) { ((BeanItemContainer<Step>) ganttTable.getContainerDataSource()).addBean(step); } else { ganttTable.refreshRowCache(); } } @Override public void stepDeleted(Step step) { ganttTable.removeItem(step); } @Override public void stepMoved(Step step, int newStepIndex, int oldStepIndex) { if (oldStepIndex < newStepIndex) { newStepIndex--; } ganttTable.removeItem(step); ((BeanItemContainer<Step>) ganttTable.getContainerDataSource()).addItemAt(newStepIndex, step); } }