1.1 --- a/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Feb 08 15:33:48 2011 +0300
1.2 +++ b/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Feb 08 15:34:34 2011 +0300
1.3 @@ -3,16 +3,29 @@
1.4 import java.sql.SQLException;
1.5
1.6 import com.vaadin.Application;
1.7 +import com.vaadin.addon.sqlcontainer.ColumnProperty;
1.8 +import com.vaadin.addon.sqlcontainer.RowId;
1.9 +import com.vaadin.addon.sqlcontainer.RowItem;
1.10 import com.vaadin.addon.sqlcontainer.SQLContainer;
1.11 import com.vaadin.addon.sqlcontainer.connection.JDBCConnectionPool;
1.12 import com.vaadin.addon.sqlcontainer.connection.SimpleJDBCConnectionPool;
1.13 import com.vaadin.addon.sqlcontainer.query.FreeformQuery;
1.14 import com.vaadin.addon.sqlcontainer.query.TableQuery;
1.15 import com.vaadin.addon.sqlcontainer.query.generator.OracleGenerator;
1.16 +import com.vaadin.data.Container;
1.17 +import com.vaadin.event.ItemClickEvent;
1.18 +import com.vaadin.event.ItemClickEvent.ItemClickListener;
1.19 +import com.vaadin.ui.Alignment;
1.20 +import com.vaadin.ui.Button;
1.21 +import com.vaadin.ui.Component;
1.22 +import com.vaadin.ui.DefaultFieldFactory;
1.23 +import com.vaadin.ui.Field;
1.24 import com.vaadin.ui.TabSheet;
1.25 import com.vaadin.ui.Table;
1.26 import com.vaadin.ui.VerticalLayout;
1.27 import com.vaadin.ui.Window;
1.28 +import com.vaadin.ui.Button.ClickEvent;
1.29 +import com.vaadin.ui.Button.ClickListener;
1.30
1.31 /**
1.32 * @author indvdum
1.33 @@ -21,6 +34,7 @@
1.34 public class MyWorkApplication extends Application {
1.35
1.36 private static JDBCConnectionPool connectionPool = null;
1.37 + private RowId taskSelectedRowId = null;
1.38 static{
1.39 try {
1.40 connectionPool = new SimpleJDBCConnectionPool(
1.41 @@ -71,11 +85,59 @@
1.42 tWorkAll.setSizeFull();
1.43 vlWorkAll.addComponent(tWorkAll);
1.44
1.45 - Table tTasks = new Table("Tasks", new SQLContainer(new TableQuery("tasks", connectionPool, new OracleGenerator())));
1.46 + final Table tTasks = new Table("Tasks", new SQLContainer(new TableQuery("tasks", connectionPool, new OracleGenerator())));
1.47 tTasks.setSelectable(true);
1.48 tTasks.setImmediate(true);
1.49 tTasks.setSizeFull();
1.50 vlTasks.addComponent(tTasks);
1.51 + final Button taskSave = new Button("Save");
1.52 + taskSave.addListener(new ClickListener(){
1.53 +
1.54 + @Override
1.55 + public void buttonClick(ClickEvent event) {
1.56 + try {
1.57 + ((SQLContainer)tTasks.getContainerDataSource()).commit();
1.58 + tTasks.commit();
1.59 + } catch (UnsupportedOperationException e) {
1.60 + e.printStackTrace();
1.61 + } catch (SQLException e) {
1.62 + e.printStackTrace();
1.63 + };
1.64 + tTasks.setEditable(false);
1.65 + taskSave.setVisible(false);
1.66 + }
1.67 +
1.68 + });
1.69 + vlTasks.addComponent(taskSave);
1.70 + vlTasks.setComponentAlignment(taskSave, Alignment.MIDDLE_RIGHT);
1.71 + taskSave.setVisible(false);
1.72 + tTasks.addListener(new ItemClickListener(){
1.73 +
1.74 + @Override
1.75 + public void itemClick(ItemClickEvent event) {
1.76 + if(event.isDoubleClick() && event.getItem() instanceof RowItem){
1.77 + tTasks.setEditable(!tTasks.isEditable());
1.78 + RowItem item = (RowItem) event.getItem();
1.79 + if(item.getItemProperty("ID") instanceof ColumnProperty)
1.80 + ((ColumnProperty)item.getItemProperty("ID")).setVersionColumn(true);
1.81 + taskSelectedRowId = item.getId();
1.82 + tTasks.setEditable(true);
1.83 + taskSave.setVisible(true);
1.84 + }
1.85 + }
1.86 +
1.87 + });
1.88 + tTasks.setTableFieldFactory(new DefaultFieldFactory(){
1.89 +
1.90 + @Override
1.91 + public Field createField(Container container, Object itemId,
1.92 + Object propertyId, Component uiContext) {
1.93 + if(itemId == taskSelectedRowId)
1.94 + return super.createField(container, itemId, propertyId, uiContext);
1.95 + return null;
1.96 + }
1.97 +
1.98 + });
1.99
1.100 Table tDays = new Table("Days", new SQLContainer(new TableQuery("days", connectionPool, new OracleGenerator())));
1.101 tDays.setSelectable(true);