src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java
changeset 16 2d6a668325f9
parent 15 739f329b9e1e
     1.1 --- a/src/main/java/ru/indvdum/mywork/vaadin/EditWorkDialog.java	Wed Nov 23 17:25:20 2011 +0300
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,234 +0,0 @@
     1.4 -package ru.indvdum.mywork.vaadin;
     1.5 -
     1.6 -import static ru.indvdum.mywork.MyWork.EM;
     1.7 -
     1.8 -import java.util.Calendar;
     1.9 -import java.util.List;
    1.10 -
    1.11 -import javax.persistence.Query;
    1.12 -
    1.13 -import ru.indvdum.mywork.openjpa.model.Day;
    1.14 -import ru.indvdum.mywork.openjpa.model.Task;
    1.15 -import ru.indvdum.mywork.openjpa.model.Work;
    1.16 -
    1.17 -import com.vaadin.data.Property.ValueChangeEvent;
    1.18 -import com.vaadin.data.Property.ValueChangeListener;
    1.19 -import com.vaadin.ui.Alignment;
    1.20 -import com.vaadin.ui.Button;
    1.21 -import com.vaadin.ui.ComboBox;
    1.22 -import com.vaadin.ui.HorizontalLayout;
    1.23 -import com.vaadin.ui.Label;
    1.24 -import com.vaadin.ui.RichTextArea;
    1.25 -import com.vaadin.ui.TextField;
    1.26 -import com.vaadin.ui.VerticalLayout;
    1.27 -import com.vaadin.ui.Window;
    1.28 -import com.vaadin.ui.AbstractSelect.Filtering;
    1.29 -import com.vaadin.ui.Button.ClickEvent;
    1.30 -import com.vaadin.ui.Button.ClickListener;
    1.31 -
    1.32 -/**
    1.33 - * @author indvdum
    1.34 - * 23.08.2011 19:11:56
    1.35 - *
    1.36 - */
    1.37 -public class EditWorkDialog extends Window implements ClickListener {
    1.38 -	
    1.39 -	private MyWorkApplication myApp = null;
    1.40 -	private EditState state = null;
    1.41 -	private Work work = null;
    1.42 -	private ComboBox workDay = null;
    1.43 -	private ComboBox workTask = null;
    1.44 -	private TextField workHours = null;
    1.45 -	private RichTextArea workResult = null;
    1.46 -
    1.47 -	public EditWorkDialog(MyWorkApplication myApp, Work work) throws Exception {
    1.48 -		super();
    1.49 -		this.myApp = myApp;
    1.50 -		if(work == null)
    1.51 -			state = EditState.CREATE;
    1.52 -		else
    1.53 -			state = EditState.EDIT;
    1.54 -		switch(state){
    1.55 -		case CREATE:
    1.56 -			setCaption("Creating new work");
    1.57 -			work = new Work();
    1.58 -			work.setHours(0f);
    1.59 -			work.setResult("");
    1.60 -			this.work = work;
    1.61 -			break;
    1.62 -		case EDIT:
    1.63 -			setCaption("Editing work");
    1.64 -			this.work = work;
    1.65 -			break;
    1.66 -		}
    1.67 -		init();
    1.68 -	}
    1.69 -	
    1.70 -	private void init(){
    1.71 -		setModal(true);
    1.72 -		setWidth("640px");
    1.73 -		setHeight("480px");
    1.74 -		VerticalLayout vl = new VerticalLayout();
    1.75 -		vl.setSizeFull();
    1.76 -		vl.setSpacing(true);
    1.77 -		vl.setMargin(true);
    1.78 -		setContent(vl);
    1.79 -		
    1.80 -		HorizontalLayout hlDay = new HorizontalLayout();
    1.81 -		hlDay.setWidth("100%");
    1.82 -		Label lblDay = new Label("Day:");
    1.83 -		lblDay.setWidth("100%");
    1.84 -		hlDay.addComponent(lblDay);
    1.85 -		hlDay.setExpandRatio(lblDay, 1f);
    1.86 -		workDay = new ComboBox();
    1.87 -		workDay.setWidth("100%");
    1.88 -		workDay.setImmediate(true);
    1.89 -		workDay.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
    1.90 -		updateDays("select d from " + Day.class.getName() + " d order by d.day");
    1.91 -		workDay.addListener(new ValueChangeListener(){
    1.92 -
    1.93 -			@Override
    1.94 -			public void valueChange(ValueChangeEvent event) {
    1.95 -				Day day = (Day)event.getProperty().getValue();
    1.96 -				if(day == null)
    1.97 -					updateTasks("select t from " + Task.class.getName() + " t order by t.id desc");
    1.98 -				else
    1.99 -					updateTasks("select t from " + Task.class.getName() + " t where t.id not in (select w.task.id from " + Work.class.getName() + " w where w.day.id = " + day.getId() + ") order by t.id desc");
   1.100 -			}
   1.101 -			
   1.102 -		});
   1.103 -		hlDay.addComponent(workDay);
   1.104 -		hlDay.setExpandRatio(workDay, 5f);
   1.105 -		vl.addComponent(hlDay);
   1.106 -		
   1.107 -		HorizontalLayout hlTask = new HorizontalLayout();
   1.108 -		hlTask.setWidth("100%");
   1.109 -		Label lblStart = new Label("Task:");
   1.110 -		lblStart.setWidth("100%");
   1.111 -		hlTask.addComponent(lblStart);
   1.112 -		hlTask.setExpandRatio(lblStart, 1f);
   1.113 -		workTask = new ComboBox();
   1.114 -		workTask.setWidth("100%");
   1.115 -		workTask.setImmediate(true);
   1.116 -		workTask.setFilteringMode(Filtering.FILTERINGMODE_CONTAINS);
   1.117 -		Day day = (Day)workDay.getValue();
   1.118 -		if(day == null)
   1.119 -			updateTasks("select t from " + Task.class.getName() + " t order by t.id desc");
   1.120 -		else
   1.121 -			updateTasks("select t from " + Task.class.getName() + " t where t.id not in (select w.task.id from " + Work.class.getName() + " w where w.day.id = " + day.getId() + ") order by t.id desc");
   1.122 -		workTask.addListener(new ValueChangeListener(){
   1.123 -
   1.124 -			@Override
   1.125 -			public void valueChange(ValueChangeEvent event) {
   1.126 -				Task task = (Task)event.getProperty().getValue();
   1.127 -				if(task == null)
   1.128 -					updateDays("select d from " + Day.class.getName() + " d order by d.day");
   1.129 -				else
   1.130 -					updateDays("select d from " + Day.class.getName() + " d where d.id not in (select w.day.id from " + Work.class.getName() + " w where w.task.id = " + task.getId() + ") order by d.day");
   1.131 -			}
   1.132 -			
   1.133 -		});
   1.134 -		hlTask.addComponent(workTask);
   1.135 -		hlTask.setExpandRatio(workTask, 5f);
   1.136 -		vl.addComponent(hlTask);
   1.137 -		
   1.138 -		HorizontalLayout hlHours = new HorizontalLayout();
   1.139 -		hlHours.setWidth("100%");
   1.140 -		Label lblHours = new Label("Hours:");
   1.141 -		lblHours.setWidth("100%");
   1.142 -		hlHours.addComponent(lblHours);
   1.143 -		hlHours.setExpandRatio(lblHours, 1f);
   1.144 -		workHours = new TextField();
   1.145 -		workHours.setWidth("100%");
   1.146 -		workHours.setValue(work.getHours());
   1.147 -		workHours.setImmediate(true);
   1.148 -		hlHours.addComponent(workHours);
   1.149 -		hlHours.setExpandRatio(workHours, 5f);
   1.150 -		vl.addComponent(hlHours);
   1.151 -		
   1.152 -		workResult = new RichTextArea("Result");
   1.153 -		workResult.setValue(work.getResult());
   1.154 -		workResult.setSizeFull();
   1.155 -		vl.addComponent(workResult);
   1.156 -		vl.setExpandRatio(workResult, 5f);
   1.157 -		
   1.158 -		HorizontalLayout hlOk = new HorizontalLayout();
   1.159 -		hlOk.setWidth("100%");
   1.160 -		Button okButton = new Button();
   1.161 -		switch(state){
   1.162 -		case CREATE:
   1.163 -			okButton.setCaption("Create");
   1.164 -			break;
   1.165 -		case EDIT:
   1.166 -			okButton.setCaption("Save");
   1.167 -			break;
   1.168 -		}
   1.169 -		okButton.addListener((ClickListener)this);
   1.170 -		hlOk.addComponent(okButton);
   1.171 -		hlOk.setComponentAlignment(okButton, Alignment.MIDDLE_RIGHT);
   1.172 -		vl.addComponent(hlOk);
   1.173 -	}
   1.174 -	
   1.175 -	private void updateDays(String jpql){
   1.176 -		if(workTask != null && workTask.getValue() != null && workDay != null && workDay.getValue() != null)
   1.177 -			return;
   1.178 -		workDay.removeAllItems();
   1.179 -		Query query = EM.createQuery(jpql);
   1.180 -		List list = query.getResultList();
   1.181 -		for(Day day: (List<Day>)list){
   1.182 -			workDay.addItem(day);
   1.183 -			Calendar currCal = Calendar.getInstance();
   1.184 -			currCal.set(Calendar.HOUR_OF_DAY, 0);
   1.185 -			currCal.set(Calendar.MINUTE, 0);
   1.186 -			currCal.set(Calendar.SECOND, 0);
   1.187 -			currCal.set(Calendar.MILLISECOND, 0);
   1.188 -			if(day.getDay().equals(currCal.getTime()))
   1.189 -				workDay.select(day);
   1.190 -		}
   1.191 -	}
   1.192 -	
   1.193 -	private void updateTasks(String jpql){
   1.194 -		if(workTask != null && workTask.getValue() != null && workDay != null && workDay.getValue() != null)
   1.195 -			return;
   1.196 -		workTask.removeAllItems();
   1.197 -		Query query = EM.createQuery(jpql);
   1.198 -		List list = query.getResultList();
   1.199 -		for(Task task: (List<Task>)list)
   1.200 -			workTask.addItem(task);
   1.201 -	}
   1.202 -
   1.203 -	@Override
   1.204 -	public void buttonClick(ClickEvent event) {
   1.205 -		Object dayObj = workDay.getValue();
   1.206 -		Object taskObj = workTask.getValue();
   1.207 -		Object hoursObj = workHours.getValue();
   1.208 -		String result = workResult.getValue().toString();
   1.209 -		if (
   1.210 -				!(dayObj instanceof Day) 
   1.211 -				|| !(taskObj instanceof Task) 
   1.212 -				|| !(hoursObj.toString().matches("^[0-9]+[\\.]{0,1}[0-9]*"))
   1.213 -				) {
   1.214 -			getWindow().showNotification("Invalid information entered");
   1.215 -		} else {
   1.216 -			Day day = (Day)dayObj;
   1.217 -			Task task = (Task)taskObj;
   1.218 -			Float hours = Float.parseFloat(hoursObj.toString());
   1.219 -			work.setDay(day);
   1.220 -			work.setTask(task);
   1.221 -			work.setHours(hours);
   1.222 -			work.setResult(result);
   1.223 -			try{
   1.224 -				EM.getTransaction().begin();
   1.225 -				EM.persist(work);
   1.226 -				EM.getTransaction().commit();
   1.227 -				EM.clear();
   1.228 -			} finally {
   1.229 -				if(EM.getTransaction().isActive())
   1.230 -					EM.getTransaction().rollback();
   1.231 -			}
   1.232 -			getParent().removeWindow(this);
   1.233 -			myApp.getWorkTable().requestRepaint();
   1.234 -		}
   1.235 -	}
   1.236 -
   1.237 -}