Comments.
1 package ru.indvdum.mywork.vaadin;
3 import static ru.indvdum.mywork.MyWork.EM;
6 import java.text.SimpleDateFormat;
7 import java.util.Calendar;
10 import ru.indvdum.mywork.openjpa.model.Day;
12 import com.vaadin.data.Property.ValueChangeEvent;
13 import com.vaadin.data.Property.ValueChangeListener;
14 import com.vaadin.ui.Alignment;
15 import com.vaadin.ui.Button;
16 import com.vaadin.ui.HorizontalLayout;
17 import com.vaadin.ui.Label;
18 import com.vaadin.ui.PopupDateField;
19 import com.vaadin.ui.TextField;
20 import com.vaadin.ui.VerticalLayout;
21 import com.vaadin.ui.Window;
22 import com.vaadin.ui.Button.ClickEvent;
23 import com.vaadin.ui.Button.ClickListener;
30 public class EditDayDialog extends Window implements ValueChangeListener, ClickListener {
32 private MyWorkApplication myApp = null;
33 private EditState state = null;
34 private Day day = null;
35 private PopupDateField dayStartTime = null;
36 private PopupDateField dayEndTime = null;
37 private PopupDateField dayDate = null;
38 private TextField dayHours = null;
40 public EditDayDialog(MyWorkApplication myApp, Day day) throws Exception {
44 state = EditState.CREATE;
46 state = EditState.EDIT;
49 setCaption("Creating new day");
51 Calendar calDay = Calendar.getInstance();
52 calDay.set(Calendar.HOUR_OF_DAY, 0);
53 calDay.set(Calendar.MINUTE, 0);
54 calDay.set(Calendar.SECOND, 0);
55 calDay.set(Calendar.MILLISECOND, 0);
56 day.setDay(calDay.getTime());
57 Calendar calStart = Calendar.getInstance();
58 calStart.set(Calendar.HOUR_OF_DAY, 9);
59 calStart.set(Calendar.MINUTE, 0);
60 calStart.set(Calendar.SECOND, 0);
61 calStart.set(Calendar.MILLISECOND, 0);
62 day.setStartWork(new Time(calStart.getTime().getTime()));
63 Calendar calEnd = Calendar.getInstance();
64 calEnd.set(Calendar.HOUR_OF_DAY, 18);
65 calEnd.set(Calendar.MINUTE, 0);
66 calEnd.set(Calendar.SECOND, 0);
67 calEnd.set(Calendar.MILLISECOND, 0);
68 day.setEndWork(new Time(calEnd.getTime().getTime()));
73 setCaption("Editing day");
84 VerticalLayout vl = new VerticalLayout();
90 HorizontalLayout hlDay = new HorizontalLayout();
91 hlDay.setWidth("100%");
92 Label lblDay = new Label("Day:");
93 lblDay.setWidth("100%");
94 hlDay.addComponent(lblDay);
95 hlDay.setExpandRatio(lblDay, 1f);
96 dayDate = new PopupDateField();
97 dayDate.setWidth("100%");
98 dayDate.setInputPrompt("Enter date");
99 dayDate.setResolution(PopupDateField.RESOLUTION_DAY);
100 dayDate.setImmediate(true);
101 dayDate.setValue(day.getDay());
102 dayDate.addListener(this);
103 dayDate.setDateFormat("dd.MM.yyyy");
104 hlDay.addComponent(dayDate);
105 hlDay.setExpandRatio(dayDate, 5f);
106 vl.addComponent(hlDay);
108 HorizontalLayout hlStart = new HorizontalLayout();
109 hlStart.setWidth("100%");
110 Label lblStart = new Label("Start time:");
111 lblStart.setWidth("100%");
112 hlStart.addComponent(lblStart);
113 hlStart.setExpandRatio(lblStart, 1f);
114 dayStartTime = new PopupDateField();
115 dayStartTime.setWidth("100%");
116 dayStartTime.setInputPrompt("Enter time");
117 dayStartTime.setResolution(PopupDateField.RESOLUTION_MIN);
118 dayStartTime.setImmediate(true);
119 dayStartTime.setValue(day.getStartWork());
120 dayStartTime.setDateFormat("HH:mm");
121 hlStart.addComponent(dayStartTime);
122 hlStart.setExpandRatio(dayStartTime, 5f);
123 vl.addComponent(hlStart);
125 HorizontalLayout hlEnd = new HorizontalLayout();
126 hlEnd.setWidth("100%");
127 Label lblEnd = new Label("End time:");
128 lblEnd.setWidth("100%");
129 hlEnd.addComponent(lblEnd);
130 hlEnd.setExpandRatio(lblEnd, 1f);
131 dayEndTime = new PopupDateField();
132 dayEndTime.setWidth("100%");
133 dayEndTime.setInputPrompt("Enter time");
134 dayEndTime.setResolution(PopupDateField.RESOLUTION_MIN);
135 dayEndTime.setImmediate(true);
136 dayEndTime.setValue(day.getEndWork());
137 dayEndTime.setDateFormat("HH:mm");
138 hlEnd.addComponent(dayEndTime);
139 hlEnd.setExpandRatio(dayEndTime, 5f);
140 vl.addComponent(hlEnd);
142 HorizontalLayout hlHours = new HorizontalLayout();
143 hlHours.setWidth("100%");
144 Label lblHours = new Label("Work hours count:");
145 lblHours.setWidth("100%");
146 hlHours.addComponent(lblHours);
147 hlHours.setExpandRatio(lblHours, 1f);
148 dayHours = new TextField();
149 dayHours.setWidth("100%");
150 dayHours.setValue(day.getHours());
151 dayHours.setImmediate(true);
152 hlHours.addComponent(dayHours);
153 hlHours.setExpandRatio(dayHours, 5f);
154 vl.addComponent(hlHours);
156 HorizontalLayout hlOk = new HorizontalLayout();
158 Button okButton = new Button();
161 okButton.setCaption("Create");
164 okButton.setCaption("Save");
167 okButton.addListener((ClickListener)this);
168 hlOk.addComponent(okButton);
169 hlOk.setComponentAlignment(okButton, Alignment.BOTTOM_RIGHT);
170 vl.addComponent(hlOk);
171 vl.setExpandRatio(hlOk, 1f);
175 public void valueChange(ValueChangeEvent event) {
176 Object value = event.getProperty().getValue();
177 Object startValue = dayStartTime.getValue();
178 Object endValue = dayEndTime.getValue();
179 if (value == null || !(value instanceof Date) || !(startValue instanceof Date) || !(endValue instanceof Date)) {
180 getWindow().showNotification("Invalid date entered");
182 Date date = (Date)value;
183 Date start = (Date)startValue;
184 Date end = (Date)endValue;
185 Calendar calStart = Calendar.getInstance();
186 calStart.setTime(start);
187 Calendar calEnd = Calendar.getInstance();
189 Calendar cal = Calendar.getInstance();
191 calStart.set(Calendar.YEAR, cal.get(Calendar.YEAR));
192 calStart.set(Calendar.MONTH, cal.get(Calendar.MONTH));
193 calStart.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
194 calStart.set(Calendar.SECOND, cal.get(Calendar.SECOND));
195 calStart.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
196 calEnd.set(Calendar.YEAR, cal.get(Calendar.YEAR));
197 calEnd.set(Calendar.MONTH, cal.get(Calendar.MONTH));
198 calEnd.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
199 calEnd.set(Calendar.SECOND, cal.get(Calendar.SECOND));
200 calEnd.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
201 dayStartTime.setValue(calStart.getTime());
202 dayEndTime.setValue(calEnd.getTime());
207 public void buttonClick(ClickEvent event) {
208 Object value = dayDate.getValue();
209 Object startValue = dayStartTime.getValue();
210 Object endValue = dayEndTime.getValue();
211 Object hoursValue = dayHours.getValue();
214 || !(value instanceof Date)
215 || !(startValue instanceof Date)
216 || !(endValue instanceof Date)
217 || !(hoursValue.toString().matches("^[0-9]+[\\.]{0,1}[0-9]*"))
219 getWindow().showNotification("Invalid information entered");
221 Date date = (Date)value;
222 Date start = (Date)startValue;
223 Date end = (Date)endValue;
224 Float hours = Float.parseFloat(hoursValue.toString());
226 day.setStartWork(new Time(start.getTime()));
227 day.setEndWork(new Time(end.getTime()));
230 EM.getTransaction().begin();
232 EM.getTransaction().commit();
235 if(EM.getTransaction().isActive())
236 EM.getTransaction().rollback();
238 getParent().removeWindow(this);
239 myApp.getDayTable().requestRepaint();