Solution of a problem with JPA exceptions.
1 package ru.indvdum.mywork.vaadin;
3 import static ru.indvdum.mywork.MyWork.EM;
4 import ru.indvdum.mywork.openjpa.model.Task;
6 import com.vaadin.ui.Alignment;
7 import com.vaadin.ui.Button;
8 import com.vaadin.ui.HorizontalLayout;
9 import com.vaadin.ui.Label;
10 import com.vaadin.ui.RichTextArea;
11 import com.vaadin.ui.TextField;
12 import com.vaadin.ui.VerticalLayout;
13 import com.vaadin.ui.Window;
14 import com.vaadin.ui.Button.ClickEvent;
15 import com.vaadin.ui.Button.ClickListener;
17 public class EditTaskDialog extends Window implements ClickListener {
19 private MyWorkApplication myApp = null;
20 private EditState state = null;
21 private Task task = null;
22 private TextField taskName = null;
23 private RichTextArea taskDescription = null;
25 public EditTaskDialog(MyWorkApplication myApp, EditState state, Task task) throws Exception {
31 setCaption("Creating new task");
33 throw new Exception("Illegal argument: task must be null in creating state.");
36 task.setDescription("");
40 setCaption("Editing task");
42 throw new Exception("Illegal argument: task must be not null in editing state.");
53 VerticalLayout vl = new VerticalLayout();
59 HorizontalLayout hlName = new HorizontalLayout();
60 hlName.setWidth("100%");
61 Label lblName = new Label("Name:");
62 lblName.setWidth("100%");
63 hlName.addComponent(lblName);
64 hlName.setExpandRatio(lblName, 1f);
65 taskName = new TextField();
66 taskName.setWidth("100%");
67 taskName.setValue(task.getName());
68 hlName.addComponent(taskName);
69 hlName.setExpandRatio(taskName, 5f);
70 vl.addComponent(hlName);
72 taskDescription = new RichTextArea("Description");
73 taskDescription.setValue(task.getDescription());
74 taskDescription.setSizeFull();
75 vl.addComponent(taskDescription);
76 vl.setExpandRatio(taskDescription, 1f);
78 HorizontalLayout hlOk = new HorizontalLayout();
79 hlOk.setWidth("100%");
80 Button okButton = new Button();
83 okButton.setCaption("Create");
86 okButton.setCaption("Save");
89 okButton.addListener((ClickListener)this);
90 hlOk.addComponent(okButton);
91 hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
92 vl.addComponent(hlOk);
96 public void buttonClick(ClickEvent event) {
97 task.setName(taskName.getValue().toString());
98 task.setDescription(taskDescription.getValue().toString());
100 EM.getTransaction().begin();
102 EM.getTransaction().commit();
105 if(EM.getTransaction().isActive())
106 EM.getTransaction().rollback();
108 getParent().removeWindow(this);
109 myApp.getTaskTable().requestRepaint();