# HG changeset patch # User indvdum # Date 1314105704 -10800 # Node ID 93ea5ae33f02d095a8f30fa0f20e9de4535bb022 # Parent e576975e68f7130cdae5671bb1a9fefed1c5e030 Добавлено редактирование объектов. diff -r e576975e68f7 -r 93ea5ae33f02 src/main/java/ru/indvdum/mywork/openjpa/model/Day.java --- a/src/main/java/ru/indvdum/mywork/openjpa/model/Day.java Tue Aug 23 14:48:38 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/Day.java Tue Aug 23 16:21:44 2011 +0300 @@ -80,6 +80,10 @@ public Date getDay() { return day; } + + public String getFormattedDay() { + return toString(); + } public void setDay(Date day) { this.day = day; diff -r e576975e68f7 -r 93ea5ae33f02 src/main/java/ru/indvdum/mywork/openjpa/model/Task.java --- a/src/main/java/ru/indvdum/mywork/openjpa/model/Task.java Tue Aug 23 14:48:38 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/openjpa/model/Task.java Tue Aug 23 16:21:44 2011 +0300 @@ -67,7 +67,7 @@ } public String getName() { - return name; + return name != null ? name : ""; } public void setName(String name) { @@ -75,7 +75,7 @@ } public String getDescription() { - return description; + return description != null ? description : ""; } public void setDescription(String description) { diff -r e576975e68f7 -r 93ea5ae33f02 src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java --- a/src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java Tue Aug 23 14:48:38 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java Tue Aug 23 16:21:44 2011 +0300 @@ -32,15 +32,16 @@ private PopupDateField dayDate = null; private TextField dayHours = null; - public EditDayDialog(MyWorkApplication myApp, EditState state, Day day) throws Exception { + public EditDayDialog(MyWorkApplication myApp, Day day) throws Exception { super(); this.myApp = myApp; - this.state = state; + if(day == null) + state = EditState.CREATE; + else + state = EditState.EDIT; switch(state){ case CREATE: setCaption("Creating new day"); - if(day != null) - throw new Exception("Illegal argument: day must be null in creating state."); day = new Day(); Calendar calDay = Calendar.getInstance(); calDay.set(Calendar.HOUR_OF_DAY, 0); @@ -65,8 +66,6 @@ break; case EDIT: setCaption("Editing day"); - if(day == null) - throw new Exception("Illegal argument: day must be not null in editing state."); this.day = day; break; } diff -r e576975e68f7 -r 93ea5ae33f02 src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java --- a/src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java Tue Aug 23 14:48:38 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java Tue Aug 23 16:21:44 2011 +0300 @@ -22,15 +22,16 @@ private TextField taskName = null; private RichTextArea taskDescription = null; - public EditTaskDialog(MyWorkApplication myApp, EditState state, Task task) throws Exception { + public EditTaskDialog(MyWorkApplication myApp, Task task) throws Exception { super(); this.myApp = myApp; - this.state = state; + if(task == null) + state = EditState.CREATE; + else + state = EditState.EDIT; switch(state){ case CREATE: setCaption("Creating new task"); - if(task != null) - throw new Exception("Illegal argument: task must be null in creating state."); task = new Task(); task.setName(""); task.setDescription(""); @@ -38,8 +39,6 @@ break; case EDIT: setCaption("Editing task"); - if(task == null) - throw new Exception("Illegal argument: task must be not null in editing state."); this.task = task; break; } diff -r e576975e68f7 -r 93ea5ae33f02 src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java --- a/src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java Tue Aug 23 14:48:38 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java Tue Aug 23 16:21:44 2011 +0300 @@ -36,15 +36,16 @@ private TextField workHours = null; private RichTextArea workResult = null; - public EditWorkDialog(MyWorkApplication myApp, EditState state, Work work) throws Exception { + public EditWorkDialog(MyWorkApplication myApp, Work work) throws Exception { super(); this.myApp = myApp; - this.state = state; + if(work == null) + state = EditState.CREATE; + else + state = EditState.EDIT; switch(state){ case CREATE: setCaption("Creating new work"); - if(work != null) - throw new Exception("Illegal argument: work must be null in creating state."); work = new Work(); work.setHours(0f); work.setResult(""); @@ -52,8 +53,6 @@ break; case EDIT: setCaption("Editing work"); - if(work == null) - throw new Exception("Illegal argument: work must be not null in editing state."); this.work = work; break; } diff -r e576975e68f7 -r 93ea5ae33f02 src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java --- a/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Aug 23 14:48:38 2011 +0300 +++ b/src/main/java/ru/indvdum/mywork/vaadin/MyWorkApplication.java Tue Aug 23 16:21:44 2011 +0300 @@ -49,7 +49,7 @@ public void menuSelected(MenuItem selectedItem) { EditDayDialog dialog = null; try { - dialog = new EditDayDialog(thisObject, EditState.CREATE, null); + dialog = new EditDayDialog(thisObject, null); } catch (Exception e) { e.printStackTrace(); } @@ -60,7 +60,7 @@ public void menuSelected(MenuItem selectedItem) { EditTaskDialog dialog = null; try { - dialog = new EditTaskDialog(thisObject, EditState.CREATE, null); + dialog = new EditTaskDialog(thisObject, null); } catch (Exception e) { e.printStackTrace(); } @@ -71,7 +71,49 @@ public void menuSelected(MenuItem selectedItem) { EditWorkDialog dialog = null; try { - dialog = new EditWorkDialog(thisObject, EditState.CREATE, null); + dialog = new EditWorkDialog(thisObject, null); + } catch (Exception e) { + e.printStackTrace(); + } + getMainWindow().addWindow(dialog); + } + }; + private Command editDayCommand = new Command() { + public void menuSelected(MenuItem selectedItem) { + EditDayDialog dialog = null; + Day day = EM.find(Day.class, dayTable.getValue()); + if(day == null) + return; + try { + dialog = new EditDayDialog(thisObject, day); + } catch (Exception e) { + e.printStackTrace(); + } + getMainWindow().addWindow(dialog); + } + }; + private Command editTaskCommand = new Command() { + public void menuSelected(MenuItem selectedItem) { + EditTaskDialog dialog = null; + Task task = EM.find(Task.class, taskTable.getValue()); + if(task == null) + return; + try { + dialog = new EditTaskDialog(thisObject, task); + } catch (Exception e) { + e.printStackTrace(); + } + getMainWindow().addWindow(dialog); + } + }; + private Command editWorkCommand = new Command() { + public void menuSelected(MenuItem selectedItem) { + EditWorkDialog dialog = null; + Work work = EM.find(Work.class, workTable.getValue()); + if(work == null) + return; + try { + dialog = new EditWorkDialog(thisObject, work); } catch (Exception e) { e.printStackTrace(); } @@ -94,13 +136,17 @@ vlMain.setSpacing(true); tabSheet.addTab(vlMain, "Main page", null); - MenuBar menubar = new MenuBar(); - MenuItem file = menubar.addItem("File", null); + MenuBar menuBar = new MenuBar(); + MenuItem file = menuBar.addItem("File", null); MenuItem newItem = file.addItem("New", null); newItem.addItem("Day...", newDayCommand); newItem.addItem("Task...", newTaskCommand); newItem.addItem("Work...", newWorkCommand); - vlMain.addComponent(menubar); + MenuItem edit = menuBar.addItem("Edit", null); + edit.addItem("Day...", editDayCommand); + edit.addItem("Task...", editTaskCommand); + edit.addItem("Work...", editWorkCommand); + vlMain.addComponent(menuBar); LocalEntityProvider dayProvider = new CachingLocalEntityProvider(Day.class); dayProvider.setEntityManager(EM); @@ -114,6 +160,13 @@ dayTable.setSizeFull(); dayTable.setContainerDataSource(dayContainer); dayTable.setVisibleColumns(new String[]{ + "formattedDay", + "startWork", + "endWork", + "hours", + }); + dayTable.setSortContainerPropertyId("day"); + dayTable.setColumnHeaders(new String[]{ "day", "startWork", "endWork", @@ -147,7 +200,7 @@ workContainer.setEntityProvider(workProvider); workTable = new Table(); - workTable.setSelectable(true); + workTable.setSelectable(false); workTable.setEditable(false); workTable.setImmediate(true); workTable.setSizeFull(); @@ -159,6 +212,7 @@ "result", }); workTable.setColumnWidth("result", 200); + workTable.setSortContainerPropertyId("day"); vlMain.addComponent(workTable); vlMain.setExpandRatio(workTable, 1f); } diff -r e576975e68f7 -r 93ea5ae33f02 src/main/resources/META-INF/persistence.xml --- a/src/main/resources/META-INF/persistence.xml Tue Aug 23 14:48:38 2011 +0300 +++ b/src/main/resources/META-INF/persistence.xml Tue Aug 23 16:21:44 2011 +0300 @@ -16,7 +16,6 @@ -