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