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 -}