src/main/java/ru/indvdum/mywork/vaadin/EditTaskDialog.java
author indvdum
Fri, 19 Aug 2011 16:23:26 +0300
changeset 9 6a02cfcc7460
child 11 e576975e68f7
permissions -rw-r--r--
Rework.
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@9
    25
	public EditTaskDialog(MyWorkApplication myApp, EditState state, Task task) throws Exception {
indvdum@9
    26
		super();
indvdum@9
    27
		this.myApp = myApp;
indvdum@9
    28
		this.state = state;
indvdum@9
    29
		switch(state){
indvdum@9
    30
		case CREATE:
indvdum@9
    31
			setCaption("Creating new task");
indvdum@9
    32
			if(task != null)
indvdum@9
    33
				throw new Exception("Illegal argument: task must be null in creating state.");
indvdum@9
    34
			task = new Task();
indvdum@9
    35
			task.setName("");
indvdum@9
    36
			task.setDescription("");
indvdum@9
    37
			this.task = task;
indvdum@9
    38
			break;
indvdum@9
    39
		case EDIT:
indvdum@9
    40
			setCaption("Editing task");
indvdum@9
    41
			if(task == null)
indvdum@9
    42
				throw new Exception("Illegal argument: task must be not null in editing state.");
indvdum@9
    43
			this.task = task;
indvdum@9
    44
			break;
indvdum@9
    45
		}
indvdum@9
    46
		init();
indvdum@9
    47
	}
indvdum@9
    48
	
indvdum@9
    49
	private void init(){
indvdum@9
    50
		setModal(true);
indvdum@9
    51
		setWidth("640px");
indvdum@9
    52
		setHeight("480px");
indvdum@9
    53
		VerticalLayout vl = new VerticalLayout();
indvdum@9
    54
		vl.setSizeFull();
indvdum@9
    55
		vl.setSpacing(true);
indvdum@9
    56
		vl.setMargin(true);
indvdum@9
    57
		setContent(vl);
indvdum@9
    58
		
indvdum@9
    59
		HorizontalLayout hlName = new HorizontalLayout();
indvdum@9
    60
		hlName.setWidth("100%");
indvdum@9
    61
		Label lblName = new Label("Name:");
indvdum@9
    62
		lblName.setWidth("100%");
indvdum@9
    63
		hlName.addComponent(lblName);
indvdum@9
    64
		hlName.setExpandRatio(lblName, 1f);
indvdum@9
    65
		taskName = new TextField();
indvdum@9
    66
		taskName.setWidth("100%");
indvdum@9
    67
		taskName.setValue(task.getName());
indvdum@9
    68
		hlName.addComponent(taskName);
indvdum@9
    69
		hlName.setExpandRatio(taskName, 5f);
indvdum@9
    70
		vl.addComponent(hlName);
indvdum@9
    71
		
indvdum@9
    72
		taskDescription = new RichTextArea("Description");
indvdum@9
    73
		taskDescription.setValue(task.getDescription());
indvdum@9
    74
		taskDescription.setSizeFull();
indvdum@9
    75
		vl.addComponent(taskDescription);
indvdum@9
    76
		vl.setExpandRatio(taskDescription, 1f);
indvdum@9
    77
		
indvdum@9
    78
		HorizontalLayout hlOk = new HorizontalLayout();
indvdum@9
    79
		hlOk.setWidth("100%");
indvdum@9
    80
		Button okButton = new Button();
indvdum@9
    81
		switch(state){
indvdum@9
    82
		case CREATE:
indvdum@9
    83
			okButton.setCaption("Create");
indvdum@9
    84
			break;
indvdum@9
    85
		case EDIT:
indvdum@9
    86
			okButton.setCaption("Save");
indvdum@9
    87
			break;
indvdum@9
    88
		}
indvdum@9
    89
		okButton.addListener((ClickListener)this);
indvdum@9
    90
		hlOk.addComponent(okButton);
indvdum@9
    91
		hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
indvdum@9
    92
		vl.addComponent(hlOk);
indvdum@9
    93
	}
indvdum@9
    94
indvdum@9
    95
	@Override
indvdum@9
    96
	public void buttonClick(ClickEvent event) {
indvdum@9
    97
		task.setName(taskName.getValue().toString());
indvdum@9
    98
		task.setDescription(taskDescription.getValue().toString());
indvdum@9
    99
		try{
indvdum@9
   100
			EM.getTransaction().begin();
indvdum@9
   101
			EM.persist(task);
indvdum@9
   102
			EM.getTransaction().commit();
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
}