+ сохранение данных Task
authorindvdum
Tue, 08 Feb 2011 15:34:34 +0300
changeset 4a7d6344442c6
parent 3 384e62b9c6e7
child 5 14e23102379e
+ сохранение данных Task
src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java
     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);