src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java
author indvdum
Tue, 23 Aug 2011 16:21:44 +0300
changeset 12 93ea5ae33f02
parent 9 6a02cfcc7460
permissions -rw-r--r--
Добавлено редактирование объектов.
indvdum@1
     1
package ru.indvdum.mywork.vaadin;
indvdum@1
     2
indvdum@5
     3
import static ru.indvdum.mywork.MyWork.EM;
indvdum@5
     4
indvdum@5
     5
import java.util.List;
indvdum@5
     6
indvdum@5
     7
import javax.persistence.Query;
indvdum@5
     8
indvdum@5
     9
import ru.indvdum.mywork.openjpa.model.Day;
indvdum@7
    10
import ru.indvdum.mywork.openjpa.model.Task;
indvdum@7
    11
import ru.indvdum.mywork.openjpa.model.Work;
indvdum@2
    12
indvdum@1
    13
import com.vaadin.Application;
indvdum@9
    14
import com.vaadin.addon.jpacontainer.EntityContainer;
indvdum@9
    15
import com.vaadin.addon.jpacontainer.EntityProvider;
indvdum@9
    16
import com.vaadin.addon.jpacontainer.HierarchicalEntityContainer;
indvdum@6
    17
import com.vaadin.addon.jpacontainer.JPAContainer;
indvdum@9
    18
import com.vaadin.addon.jpacontainer.provider.BatchableLocalEntityProvider;
indvdum@9
    19
import com.vaadin.addon.jpacontainer.provider.CachingBatchableLocalEntityProvider;
indvdum@9
    20
import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
indvdum@9
    21
import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
indvdum@6
    22
import com.vaadin.addon.jpacontainer.provider.LocalEntityProvider;
indvdum@7
    23
import com.vaadin.ui.Alignment;
indvdum@7
    24
import com.vaadin.ui.Button;
indvdum@7
    25
import com.vaadin.ui.HorizontalLayout;
indvdum@9
    26
import com.vaadin.ui.MenuBar;
indvdum@7
    27
import com.vaadin.ui.TabSheet;
indvdum@6
    28
import com.vaadin.ui.Table;
indvdum@6
    29
import com.vaadin.ui.VerticalLayout;
indvdum@1
    30
import com.vaadin.ui.Window;
indvdum@7
    31
import com.vaadin.ui.Button.ClickEvent;
indvdum@7
    32
import com.vaadin.ui.Button.ClickListener;
indvdum@9
    33
import com.vaadin.ui.MenuBar.Command;
indvdum@9
    34
import com.vaadin.ui.MenuBar.MenuItem;
indvdum@1
    35
indvdum@1
    36
/**
indvdum@1
    37
 * @author indvdum
indvdum@5
    38
 * 12.08.2011 17:31:53
indvdum@1
    39
 *
indvdum@1
    40
 */
indvdum@1
    41
public class MyWorkApplication extends Application {
indvdum@9
    42
	
indvdum@9
    43
	private MyWorkApplication thisObject = this;
indvdum@9
    44
	private Table dayTable = null;
indvdum@9
    45
	private Table taskTable = null;
indvdum@9
    46
	private Table workTable = null;
indvdum@9
    47
	
indvdum@9
    48
	private Command newDayCommand = new Command() {
indvdum@9
    49
        public void menuSelected(MenuItem selectedItem) {
indvdum@9
    50
        	EditDayDialog dialog = null;
indvdum@9
    51
			try {
indvdum@12
    52
				dialog = new EditDayDialog(thisObject, null);
indvdum@9
    53
			} catch (Exception e) {
indvdum@9
    54
				e.printStackTrace();
indvdum@9
    55
			}
indvdum@9
    56
            getMainWindow().addWindow(dialog);
indvdum@9
    57
        }
indvdum@9
    58
    };
indvdum@9
    59
    private Command newTaskCommand = new Command() {
indvdum@9
    60
    	public void menuSelected(MenuItem selectedItem) {
indvdum@9
    61
    		EditTaskDialog dialog = null;
indvdum@9
    62
    		try {
indvdum@12
    63
    			dialog = new EditTaskDialog(thisObject, null);
indvdum@9
    64
    		} catch (Exception e) {
indvdum@9
    65
    			e.printStackTrace();
indvdum@9
    66
    		}
indvdum@9
    67
    		getMainWindow().addWindow(dialog);
indvdum@9
    68
    	}
indvdum@9
    69
    };
indvdum@9
    70
    private Command newWorkCommand = new Command() {
indvdum@9
    71
    	public void menuSelected(MenuItem selectedItem) {
indvdum@9
    72
    		EditWorkDialog dialog = null;
indvdum@9
    73
    		try {
indvdum@12
    74
    			dialog = new EditWorkDialog(thisObject, null);
indvdum@12
    75
    		} catch (Exception e) {
indvdum@12
    76
    			e.printStackTrace();
indvdum@12
    77
    		}
indvdum@12
    78
    		getMainWindow().addWindow(dialog);
indvdum@12
    79
    	}
indvdum@12
    80
    };
indvdum@12
    81
    private Command editDayCommand = new Command() {
indvdum@12
    82
    	public void menuSelected(MenuItem selectedItem) {
indvdum@12
    83
    		EditDayDialog dialog = null;
indvdum@12
    84
    		Day day = EM.find(Day.class, dayTable.getValue());
indvdum@12
    85
    		if(day == null)
indvdum@12
    86
    			return;
indvdum@12
    87
    		try {
indvdum@12
    88
    			dialog = new EditDayDialog(thisObject, day);
indvdum@12
    89
    		} catch (Exception e) {
indvdum@12
    90
    			e.printStackTrace();
indvdum@12
    91
    		}
indvdum@12
    92
    		getMainWindow().addWindow(dialog);
indvdum@12
    93
    	}
indvdum@12
    94
    };
indvdum@12
    95
    private Command editTaskCommand = new Command() {
indvdum@12
    96
    	public void menuSelected(MenuItem selectedItem) {
indvdum@12
    97
    		EditTaskDialog dialog = null;
indvdum@12
    98
    		Task task = EM.find(Task.class, taskTable.getValue());
indvdum@12
    99
    		if(task == null)
indvdum@12
   100
    			return;
indvdum@12
   101
    		try {
indvdum@12
   102
    			dialog = new EditTaskDialog(thisObject, task);
indvdum@12
   103
    		} catch (Exception e) {
indvdum@12
   104
    			e.printStackTrace();
indvdum@12
   105
    		}
indvdum@12
   106
    		getMainWindow().addWindow(dialog);
indvdum@12
   107
    	}
indvdum@12
   108
    };
indvdum@12
   109
    private Command editWorkCommand = new Command() {
indvdum@12
   110
    	public void menuSelected(MenuItem selectedItem) {
indvdum@12
   111
    		EditWorkDialog dialog = null;
indvdum@12
   112
    		Work work = EM.find(Work.class, workTable.getValue());
indvdum@12
   113
    		if(work == null)
indvdum@12
   114
    			return;
indvdum@12
   115
    		try {
indvdum@12
   116
    			dialog = new EditWorkDialog(thisObject, work);
indvdum@9
   117
    		} catch (Exception e) {
indvdum@9
   118
    			e.printStackTrace();
indvdum@9
   119
    		}
indvdum@9
   120
    		getMainWindow().addWindow(dialog);
indvdum@9
   121
    	}
indvdum@9
   122
    };
indvdum@1
   123
indvdum@1
   124
	@Override
indvdum@1
   125
	public void init() {
indvdum@1
   126
		Window window = new Window();
indvdum@1
   127
		setMainWindow(window);
indvdum@6
   128
		
indvdum@7
   129
		TabSheet tabSheet = new TabSheet();
indvdum@7
   130
		tabSheet.setSizeFull();
indvdum@7
   131
		window.setContent(tabSheet);
indvdum@7
   132
		
indvdum@7
   133
		VerticalLayout vlMain = new VerticalLayout();
indvdum@8
   134
		vlMain.setSizeFull();
indvdum@7
   135
		vlMain.setMargin(true);
indvdum@7
   136
		vlMain.setSpacing(true);
indvdum@7
   137
		tabSheet.addTab(vlMain, "Main page", null);
indvdum@7
   138
		
indvdum@12
   139
		MenuBar menuBar = new MenuBar();
indvdum@12
   140
		MenuItem file = menuBar.addItem("File", null);
indvdum@9
   141
		MenuItem newItem = file.addItem("New", null);
indvdum@9
   142
		newItem.addItem("Day...", newDayCommand);
indvdum@9
   143
        newItem.addItem("Task...", newTaskCommand);
indvdum@9
   144
        newItem.addItem("Work...", newWorkCommand);
indvdum@12
   145
        MenuItem edit = menuBar.addItem("Edit", null);
indvdum@12
   146
        edit.addItem("Day...", editDayCommand);
indvdum@12
   147
        edit.addItem("Task...", editTaskCommand);
indvdum@12
   148
        edit.addItem("Work...", editWorkCommand);
indvdum@12
   149
        vlMain.addComponent(menuBar);
indvdum@9
   150
		
indvdum@9
   151
		LocalEntityProvider dayProvider = new CachingLocalEntityProvider(Day.class);
indvdum@7
   152
		dayProvider.setEntityManager(EM);
indvdum@7
   153
		JPAContainer<Day> dayContainer = new JPAContainer(Day.class);
indvdum@7
   154
		dayContainer.setEntityProvider(dayProvider);
indvdum@7
   155
		
indvdum@9
   156
		dayTable = new Table();
indvdum@7
   157
		dayTable.setSelectable(true);
indvdum@7
   158
		dayTable.setEditable(false);
indvdum@7
   159
		dayTable.setImmediate(true);
indvdum@7
   160
		dayTable.setSizeFull();
indvdum@7
   161
		dayTable.setContainerDataSource(dayContainer);
indvdum@8
   162
		dayTable.setVisibleColumns(new String[]{
indvdum@12
   163
				"formattedDay",
indvdum@12
   164
				"startWork",
indvdum@12
   165
				"endWork",
indvdum@12
   166
				"hours",
indvdum@12
   167
		});
indvdum@12
   168
		dayTable.setSortContainerPropertyId("day");
indvdum@12
   169
		dayTable.setColumnHeaders(new String[]{
indvdum@8
   170
				"day",
indvdum@8
   171
				"startWork",
indvdum@8
   172
				"endWork",
indvdum@8
   173
				"hours",
indvdum@8
   174
		});
indvdum@7
   175
		vlMain.addComponent(dayTable);
indvdum@7
   176
		vlMain.setExpandRatio(dayTable, 1f);
indvdum@7
   177
		
indvdum@9
   178
		LocalEntityProvider taskProvider = new CachingLocalEntityProvider(Task.class);
indvdum@7
   179
		taskProvider.setEntityManager(EM);
indvdum@7
   180
		JPAContainer<Task> taskContainer = new JPAContainer(Task.class);
indvdum@7
   181
		taskContainer.setEntityProvider(taskProvider);
indvdum@7
   182
		
indvdum@9
   183
		taskTable = new Table();
indvdum@7
   184
		taskTable.setSelectable(true);
indvdum@7
   185
		taskTable.setEditable(false);
indvdum@7
   186
		taskTable.setImmediate(true);
indvdum@7
   187
		taskTable.setSizeFull();
indvdum@7
   188
		taskTable.setContainerDataSource(taskContainer);
indvdum@8
   189
		taskTable.setVisibleColumns(new String[]{
indvdum@8
   190
				"name",
indvdum@8
   191
				"description",
indvdum@8
   192
		});
indvdum@8
   193
		taskTable.setColumnWidth("description", 300);
indvdum@7
   194
		vlMain.addComponent(taskTable);
indvdum@7
   195
		vlMain.setExpandRatio(taskTable, 1f);
indvdum@8
   196
		
indvdum@9
   197
		LocalEntityProvider workProvider = new CachingLocalEntityProvider(Work.class);
indvdum@8
   198
		workProvider.setEntityManager(EM);
indvdum@8
   199
		JPAContainer<Task> workContainer = new JPAContainer(Work.class);
indvdum@8
   200
		workContainer.setEntityProvider(workProvider);
indvdum@8
   201
		
indvdum@9
   202
		workTable = new Table();
indvdum@12
   203
		workTable.setSelectable(false);
indvdum@8
   204
		workTable.setEditable(false);
indvdum@8
   205
		workTable.setImmediate(true);
indvdum@8
   206
		workTable.setSizeFull();
indvdum@8
   207
		workTable.setContainerDataSource(workContainer);
indvdum@8
   208
		workTable.setVisibleColumns(new String[]{
indvdum@9
   209
				"day",
indvdum@9
   210
				"task",
indvdum@8
   211
				"hours",
indvdum@8
   212
				"result",
indvdum@8
   213
		});
indvdum@8
   214
		workTable.setColumnWidth("result", 200);
indvdum@12
   215
		workTable.setSortContainerPropertyId("day");
indvdum@8
   216
		vlMain.addComponent(workTable);
indvdum@8
   217
		vlMain.setExpandRatio(workTable, 1f);
indvdum@1
   218
	}
indvdum@9
   219
indvdum@9
   220
	public Table getDayTable() {
indvdum@9
   221
		return dayTable;
indvdum@9
   222
	}
indvdum@9
   223
indvdum@9
   224
	public Table getTaskTable() {
indvdum@9
   225
		return taskTable;
indvdum@9
   226
	}
indvdum@9
   227
indvdum@9
   228
	public Table getWorkTable() {
indvdum@9
   229
		return workTable;
indvdum@9
   230
	}
indvdum@1
   231
}