author | indvdum |
Tue, 23 Aug 2011 16:21:44 +0300 | |
changeset 12 | 93ea5ae33f02 |
parent 11 | e576975e68f7 |
child 14 | 1d1d4c94d251 |
permissions | -rw-r--r-- |
indvdum@9 | 1 |
package ru.indvdum.mywork.vaadin; |
indvdum@9 | 2 |
|
indvdum@9 | 3 |
import static ru.indvdum.mywork.MyWork.EM; |
indvdum@9 | 4 |
import ru.indvdum.mywork.openjpa.model.Task; |
indvdum@9 | 5 |
|
indvdum@9 | 6 |
import com.vaadin.ui.Alignment; |
indvdum@9 | 7 |
import com.vaadin.ui.Button; |
indvdum@9 | 8 |
import com.vaadin.ui.HorizontalLayout; |
indvdum@9 | 9 |
import com.vaadin.ui.Label; |
indvdum@9 | 10 |
import com.vaadin.ui.RichTextArea; |
indvdum@9 | 11 |
import com.vaadin.ui.TextField; |
indvdum@9 | 12 |
import com.vaadin.ui.VerticalLayout; |
indvdum@9 | 13 |
import com.vaadin.ui.Window; |
indvdum@9 | 14 |
import com.vaadin.ui.Button.ClickEvent; |
indvdum@9 | 15 |
import com.vaadin.ui.Button.ClickListener; |
indvdum@9 | 16 |
|
indvdum@9 | 17 |
public class EditTaskDialog extends Window implements ClickListener { |
indvdum@9 | 18 |
|
indvdum@9 | 19 |
private MyWorkApplication myApp = null; |
indvdum@9 | 20 |
private EditState state = null; |
indvdum@9 | 21 |
private Task task = null; |
indvdum@9 | 22 |
private TextField taskName = null; |
indvdum@9 | 23 |
private RichTextArea taskDescription = null; |
indvdum@9 | 24 |
|
indvdum@12 | 25 |
public EditTaskDialog(MyWorkApplication myApp, Task task) throws Exception { |
indvdum@9 | 26 |
super(); |
indvdum@9 | 27 |
this.myApp = myApp; |
indvdum@12 | 28 |
if(task == null) |
indvdum@12 | 29 |
state = EditState.CREATE; |
indvdum@12 | 30 |
else |
indvdum@12 | 31 |
state = EditState.EDIT; |
indvdum@9 | 32 |
switch(state){ |
indvdum@9 | 33 |
case CREATE: |
indvdum@9 | 34 |
setCaption("Creating new task"); |
indvdum@9 | 35 |
task = new Task(); |
indvdum@9 | 36 |
task.setName(""); |
indvdum@9 | 37 |
task.setDescription(""); |
indvdum@9 | 38 |
this.task = task; |
indvdum@9 | 39 |
break; |
indvdum@9 | 40 |
case EDIT: |
indvdum@9 | 41 |
setCaption("Editing task"); |
indvdum@9 | 42 |
this.task = task; |
indvdum@9 | 43 |
break; |
indvdum@9 | 44 |
} |
indvdum@9 | 45 |
init(); |
indvdum@9 | 46 |
} |
indvdum@9 | 47 |
|
indvdum@9 | 48 |
private void init(){ |
indvdum@9 | 49 |
setModal(true); |
indvdum@9 | 50 |
setWidth("640px"); |
indvdum@9 | 51 |
setHeight("480px"); |
indvdum@9 | 52 |
VerticalLayout vl = new VerticalLayout(); |
indvdum@9 | 53 |
vl.setSizeFull(); |
indvdum@9 | 54 |
vl.setSpacing(true); |
indvdum@9 | 55 |
vl.setMargin(true); |
indvdum@9 | 56 |
setContent(vl); |
indvdum@9 | 57 |
|
indvdum@9 | 58 |
HorizontalLayout hlName = new HorizontalLayout(); |
indvdum@9 | 59 |
hlName.setWidth("100%"); |
indvdum@9 | 60 |
Label lblName = new Label("Name:"); |
indvdum@9 | 61 |
lblName.setWidth("100%"); |
indvdum@9 | 62 |
hlName.addComponent(lblName); |
indvdum@9 | 63 |
hlName.setExpandRatio(lblName, 1f); |
indvdum@9 | 64 |
taskName = new TextField(); |
indvdum@9 | 65 |
taskName.setWidth("100%"); |
indvdum@9 | 66 |
taskName.setValue(task.getName()); |
indvdum@9 | 67 |
hlName.addComponent(taskName); |
indvdum@9 | 68 |
hlName.setExpandRatio(taskName, 5f); |
indvdum@9 | 69 |
vl.addComponent(hlName); |
indvdum@9 | 70 |
|
indvdum@9 | 71 |
taskDescription = new RichTextArea("Description"); |
indvdum@9 | 72 |
taskDescription.setValue(task.getDescription()); |
indvdum@9 | 73 |
taskDescription.setSizeFull(); |
indvdum@9 | 74 |
vl.addComponent(taskDescription); |
indvdum@9 | 75 |
vl.setExpandRatio(taskDescription, 1f); |
indvdum@9 | 76 |
|
indvdum@9 | 77 |
HorizontalLayout hlOk = new HorizontalLayout(); |
indvdum@9 | 78 |
hlOk.setWidth("100%"); |
indvdum@9 | 79 |
Button okButton = new Button(); |
indvdum@9 | 80 |
switch(state){ |
indvdum@9 | 81 |
case CREATE: |
indvdum@9 | 82 |
okButton.setCaption("Create"); |
indvdum@9 | 83 |
break; |
indvdum@9 | 84 |
case EDIT: |
indvdum@9 | 85 |
okButton.setCaption("Save"); |
indvdum@9 | 86 |
break; |
indvdum@9 | 87 |
} |
indvdum@9 | 88 |
okButton.addListener((ClickListener)this); |
indvdum@9 | 89 |
hlOk.addComponent(okButton); |
indvdum@9 | 90 |
hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT); |
indvdum@9 | 91 |
vl.addComponent(hlOk); |
indvdum@9 | 92 |
} |
indvdum@9 | 93 |
|
indvdum@9 | 94 |
@Override |
indvdum@9 | 95 |
public void buttonClick(ClickEvent event) { |
indvdum@9 | 96 |
task.setName(taskName.getValue().toString()); |
indvdum@9 | 97 |
task.setDescription(taskDescription.getValue().toString()); |
indvdum@9 | 98 |
try{ |
indvdum@9 | 99 |
EM.getTransaction().begin(); |
indvdum@9 | 100 |
EM.persist(task); |
indvdum@9 | 101 |
EM.getTransaction().commit(); |
indvdum@11 | 102 |
EM.clear(); |
indvdum@9 | 103 |
} finally { |
indvdum@9 | 104 |
if(EM.getTransaction().isActive()) |
indvdum@9 | 105 |
EM.getTransaction().rollback(); |
indvdum@9 | 106 |
} |
indvdum@9 | 107 |
getParent().removeWindow(this); |
indvdum@9 | 108 |
myApp.getTaskTable().requestRepaint(); |
indvdum@9 | 109 |
} |
indvdum@9 | 110 |
|
indvdum@9 | 111 |
} |