src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java
changeset 16 2d6a668325f9
parent 15 739f329b9e1e
     1.1 --- a/src/main/java/ru/indvdum/mywork/vaadin/EditDayDialog.java	Wed Nov 23 17:25:20 2011 +0300
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,243 +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.sql.Time;
     1.9 -import java.text.SimpleDateFormat;
    1.10 -import java.util.Calendar;
    1.11 -import java.util.Date;
    1.12 -
    1.13 -import ru.indvdum.mywork.openjpa.model.Day;
    1.14 -
    1.15 -import com.vaadin.data.Property.ValueChangeEvent;
    1.16 -import com.vaadin.data.Property.ValueChangeListener;
    1.17 -import com.vaadin.ui.Alignment;
    1.18 -import com.vaadin.ui.Button;
    1.19 -import com.vaadin.ui.HorizontalLayout;
    1.20 -import com.vaadin.ui.Label;
    1.21 -import com.vaadin.ui.PopupDateField;
    1.22 -import com.vaadin.ui.TextField;
    1.23 -import com.vaadin.ui.VerticalLayout;
    1.24 -import com.vaadin.ui.Window;
    1.25 -import com.vaadin.ui.Button.ClickEvent;
    1.26 -import com.vaadin.ui.Button.ClickListener;
    1.27 -
    1.28 -/**
    1.29 - * @author indvdum
    1.30 - * 23.08.2011 19:11:35
    1.31 - *
    1.32 - */
    1.33 -public class EditDayDialog extends Window implements ValueChangeListener, ClickListener {
    1.34 -	
    1.35 -	private MyWorkApplication myApp = null;
    1.36 -	private EditState state = null;
    1.37 -	private Day day = null;
    1.38 -	private PopupDateField dayStartTime = null;
    1.39 -	private PopupDateField dayEndTime = null;
    1.40 -	private PopupDateField dayDate = null;
    1.41 -	private TextField dayHours = null;
    1.42 -
    1.43 -	public EditDayDialog(MyWorkApplication myApp, Day day) throws Exception {
    1.44 -		super();
    1.45 -		this.myApp = myApp;
    1.46 -		if(day == null)
    1.47 -			state = EditState.CREATE;
    1.48 -		else
    1.49 -			state = EditState.EDIT;
    1.50 -		switch(state){
    1.51 -		case CREATE:
    1.52 -			setCaption("Creating new day");
    1.53 -			day = new Day();
    1.54 -			Calendar calDay = Calendar.getInstance();
    1.55 -			calDay.set(Calendar.HOUR_OF_DAY, 0);
    1.56 -			calDay.set(Calendar.MINUTE, 0);
    1.57 -			calDay.set(Calendar.SECOND, 0);
    1.58 -			calDay.set(Calendar.MILLISECOND, 0);
    1.59 -			day.setDay(calDay.getTime());
    1.60 -			Calendar calStart = Calendar.getInstance();
    1.61 -			calStart.set(Calendar.HOUR_OF_DAY, 9);
    1.62 -			calStart.set(Calendar.MINUTE, 0);
    1.63 -			calStart.set(Calendar.SECOND, 0);
    1.64 -			calStart.set(Calendar.MILLISECOND, 0);
    1.65 -			day.setStartWork(new Time(calStart.getTime().getTime()));
    1.66 -			Calendar calEnd = Calendar.getInstance();
    1.67 -			calEnd.set(Calendar.HOUR_OF_DAY, 18);
    1.68 -			calEnd.set(Calendar.MINUTE, 0);
    1.69 -			calEnd.set(Calendar.SECOND, 0);
    1.70 -			calEnd.set(Calendar.MILLISECOND, 0);
    1.71 -			day.setEndWork(new Time(calEnd.getTime().getTime()));
    1.72 -			day.setHours(8f);
    1.73 -			this.day = day;
    1.74 -			break;
    1.75 -		case EDIT:
    1.76 -			setCaption("Editing day");
    1.77 -			this.day = day;
    1.78 -			break;
    1.79 -		}
    1.80 -		init();
    1.81 -	}
    1.82 -	
    1.83 -	private void init(){
    1.84 -		setModal(true);
    1.85 -		setWidth("480px");
    1.86 -		setHeight("300px");
    1.87 -		VerticalLayout vl = new VerticalLayout();
    1.88 -		vl.setSizeFull();
    1.89 -		vl.setSpacing(true);
    1.90 -		vl.setMargin(true);
    1.91 -		setContent(vl);
    1.92 -		
    1.93 -		HorizontalLayout hlDay = new HorizontalLayout();
    1.94 -		hlDay.setWidth("100%");
    1.95 -		Label lblDay = new Label("Day:");
    1.96 -		lblDay.setWidth("100%");
    1.97 -		hlDay.addComponent(lblDay);
    1.98 -		hlDay.setExpandRatio(lblDay, 1f);
    1.99 -		dayDate = new PopupDateField();
   1.100 -		dayDate.setWidth("100%");
   1.101 -		dayDate.setInputPrompt("Enter date");
   1.102 -		dayDate.setResolution(PopupDateField.RESOLUTION_DAY);
   1.103 -		dayDate.setImmediate(true);
   1.104 -		dayDate.setValue(day.getDay());
   1.105 -		dayDate.addListener(this);
   1.106 -		dayDate.setDateFormat("dd.MM.yyyy");
   1.107 -		hlDay.addComponent(dayDate);
   1.108 -		hlDay.setExpandRatio(dayDate, 5f);
   1.109 -		vl.addComponent(hlDay);
   1.110 -		
   1.111 -		HorizontalLayout hlStart = new HorizontalLayout();
   1.112 -		hlStart.setWidth("100%");
   1.113 -		Label lblStart = new Label("Start time:");
   1.114 -		lblStart.setWidth("100%");
   1.115 -		hlStart.addComponent(lblStart);
   1.116 -		hlStart.setExpandRatio(lblStart, 1f);
   1.117 -		dayStartTime = new PopupDateField();
   1.118 -		dayStartTime.setWidth("100%");
   1.119 -		dayStartTime.setInputPrompt("Enter time");
   1.120 -		dayStartTime.setResolution(PopupDateField.RESOLUTION_MIN);
   1.121 -		dayStartTime.setImmediate(true);
   1.122 -		dayStartTime.setValue(day.getStartWork());
   1.123 -		dayStartTime.setDateFormat("HH:mm");
   1.124 -		hlStart.addComponent(dayStartTime);
   1.125 -		hlStart.setExpandRatio(dayStartTime, 5f);
   1.126 -		vl.addComponent(hlStart);
   1.127 -		
   1.128 -		HorizontalLayout hlEnd = new HorizontalLayout();
   1.129 -		hlEnd.setWidth("100%");
   1.130 -		Label lblEnd = new Label("End time:");
   1.131 -		lblEnd.setWidth("100%");
   1.132 -		hlEnd.addComponent(lblEnd);
   1.133 -		hlEnd.setExpandRatio(lblEnd, 1f);
   1.134 -		dayEndTime = new PopupDateField();
   1.135 -		dayEndTime.setWidth("100%");
   1.136 -		dayEndTime.setInputPrompt("Enter time");
   1.137 -		dayEndTime.setResolution(PopupDateField.RESOLUTION_MIN);
   1.138 -		dayEndTime.setImmediate(true);
   1.139 -		dayEndTime.setValue(day.getEndWork());
   1.140 -		dayEndTime.setDateFormat("HH:mm");
   1.141 -		hlEnd.addComponent(dayEndTime);
   1.142 -		hlEnd.setExpandRatio(dayEndTime, 5f);
   1.143 -		vl.addComponent(hlEnd);
   1.144 -		
   1.145 -		HorizontalLayout hlHours = new HorizontalLayout();
   1.146 -		hlHours.setWidth("100%");
   1.147 -		Label lblHours = new Label("Work hours count:");
   1.148 -		lblHours.setWidth("100%");
   1.149 -		hlHours.addComponent(lblHours);
   1.150 -		hlHours.setExpandRatio(lblHours, 1f);
   1.151 -		dayHours = new TextField();
   1.152 -		dayHours.setWidth("100%");
   1.153 -		dayHours.setValue(day.getHours());
   1.154 -		dayHours.setImmediate(true);
   1.155 -		hlHours.addComponent(dayHours);
   1.156 -		hlHours.setExpandRatio(dayHours, 5f);
   1.157 -		vl.addComponent(hlHours);
   1.158 -		
   1.159 -		HorizontalLayout hlOk = new HorizontalLayout();
   1.160 -		hlOk.setSizeFull();
   1.161 -		Button okButton = new Button();
   1.162 -		switch(state){
   1.163 -		case CREATE:
   1.164 -			okButton.setCaption("Create");
   1.165 -			break;
   1.166 -		case EDIT:
   1.167 -			okButton.setCaption("Save");
   1.168 -			break;
   1.169 -		}
   1.170 -		okButton.addListener((ClickListener)this);
   1.171 -		hlOk.addComponent(okButton);
   1.172 -		hlOk.setComponentAlignment(okButton, Alignment.BOTTOM_RIGHT);
   1.173 -		vl.addComponent(hlOk);
   1.174 -		vl.setExpandRatio(hlOk, 1f);
   1.175 -	}
   1.176 -
   1.177 -	@Override
   1.178 -	public void valueChange(ValueChangeEvent event) {
   1.179 -		Object value = event.getProperty().getValue();
   1.180 -		Object startValue = dayStartTime.getValue();
   1.181 -		Object endValue = dayEndTime.getValue();
   1.182 -		if (value == null || !(value instanceof Date) || !(startValue instanceof Date) || !(endValue instanceof Date)) {
   1.183 -			getWindow().showNotification("Invalid date entered");
   1.184 -		} else {
   1.185 -			Date date = (Date)value;
   1.186 -			Date start = (Date)startValue;
   1.187 -			Date end = (Date)endValue;
   1.188 -			Calendar calStart = Calendar.getInstance();
   1.189 -			calStart.setTime(start);
   1.190 -			Calendar calEnd = Calendar.getInstance();
   1.191 -			calEnd.setTime(end);
   1.192 -			Calendar cal = Calendar.getInstance();
   1.193 -			cal.setTime(date);
   1.194 -			calStart.set(Calendar.YEAR, cal.get(Calendar.YEAR));
   1.195 -			calStart.set(Calendar.MONTH, cal.get(Calendar.MONTH));
   1.196 -			calStart.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
   1.197 -			calStart.set(Calendar.SECOND, cal.get(Calendar.SECOND));
   1.198 -			calStart.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
   1.199 -			calEnd.set(Calendar.YEAR, cal.get(Calendar.YEAR));
   1.200 -			calEnd.set(Calendar.MONTH, cal.get(Calendar.MONTH));
   1.201 -			calEnd.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
   1.202 -			calEnd.set(Calendar.SECOND, cal.get(Calendar.SECOND));
   1.203 -			calEnd.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
   1.204 -			dayStartTime.setValue(calStart.getTime());
   1.205 -			dayEndTime.setValue(calEnd.getTime());
   1.206 -		}
   1.207 -	}
   1.208 -
   1.209 -	@Override
   1.210 -	public void buttonClick(ClickEvent event) {
   1.211 -		Object value = dayDate.getValue();
   1.212 -		Object startValue = dayStartTime.getValue();
   1.213 -		Object endValue = dayEndTime.getValue();
   1.214 -		Object hoursValue = dayHours.getValue();
   1.215 -		if (
   1.216 -				value == null 
   1.217 -				|| !(value instanceof Date) 
   1.218 -				|| !(startValue instanceof Date) 
   1.219 -				|| !(endValue instanceof Date)
   1.220 -				|| !(hoursValue.toString().matches("^[0-9]+[\\.]{0,1}[0-9]*"))
   1.221 -				) {
   1.222 -			getWindow().showNotification("Invalid information entered");
   1.223 -		} else {
   1.224 -			Date date = (Date)value;
   1.225 -			Date start = (Date)startValue;
   1.226 -			Date end = (Date)endValue;
   1.227 -			Float hours = Float.parseFloat(hoursValue.toString());
   1.228 -			day.setDay(date);
   1.229 -			day.setStartWork(new Time(start.getTime()));
   1.230 -			day.setEndWork(new Time(end.getTime()));
   1.231 -			day.setHours(hours);
   1.232 -			try{
   1.233 -				EM.getTransaction().begin();
   1.234 -				EM.persist(day);
   1.235 -				EM.getTransaction().commit();
   1.236 -				EM.clear();
   1.237 -			} finally {
   1.238 -				if(EM.getTransaction().isActive())
   1.239 -					EM.getTransaction().rollback();
   1.240 -			}
   1.241 -			getParent().removeWindow(this);
   1.242 -			myApp.getDayTable().requestRepaint();
   1.243 -		}
   1.244 -	}
   1.245 -
   1.246 -}