/ftr-gwt-demo/src/main/java/eu/future/earth/gwt/client/OverviewPanelDemo.java

http://ftr-gwt-library.googlecode.com/ · Java · 234 lines · 184 code · 32 blank · 18 comment · 11 complexity · ee319efb5aebce474074e94f3bcf0e80 MD5 · raw file

  1. /*
  2. * Copyright 2007 Future Earth, info@future-earth.eu
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package eu.future.earth.gwt.client;
  17. import java.util.ArrayList;
  18. import java.util.Calendar;
  19. import java.util.GregorianCalendar;
  20. import java.util.List;
  21. import com.google.gwt.core.client.Scheduler;
  22. import com.google.gwt.core.client.Scheduler.ScheduledCommand;
  23. import com.google.gwt.dom.client.Style.Unit;
  24. import com.google.gwt.event.dom.client.ClickEvent;
  25. import com.google.gwt.event.dom.client.ClickHandler;
  26. import com.google.gwt.i18n.client.DateTimeFormat;
  27. import com.google.gwt.user.client.ui.DockLayoutPanel;
  28. import com.google.gwt.user.client.ui.Grid;
  29. import com.google.gwt.user.client.ui.Label;
  30. import com.google.gwt.user.client.ui.ResizeComposite;
  31. import eu.future.earth.gwt.client.date.DateEvent;
  32. import eu.future.earth.gwt.client.date.DateEventListener;
  33. import eu.future.earth.gwt.client.date.DefaultEventData;
  34. import eu.future.earth.gwt.client.date.DefaultStringPanelRenderer;
  35. import eu.future.earth.gwt.client.date.MultiView;
  36. import eu.future.earth.gwt.client.date.PanelType;
  37. import eu.future.earth.gwt.client.date.picker.DatePickerMonthNavigator;
  38. import eu.future.earth.gwt.client.date.picker.DateSelectEvent;
  39. import eu.future.earth.gwt.client.date.picker.DateSelectListener;
  40. import eu.future.earth.gwt.client.hordate.DemoHandler;
  41. public class OverviewPanelDemo extends ResizeComposite implements
  42. DateEventListener<DefaultEventData>, ClickHandler, DateSelectListener {
  43. private Label feedback = new Label(" ");
  44. private DefaultStringPanelRenderer contr = new DefaultStringPanelRenderer();
  45. private MultiView<DefaultEventData> multiPanel = new MultiView<DefaultEventData>(
  46. contr);
  47. private DatePickerMonthNavigator navigator = new DatePickerMonthNavigator(
  48. new NoMondaysDatePickerRenderer());
  49. public OverviewPanelDemo() {
  50. super();
  51. DockLayoutPanel panel = new DockLayoutPanel(Unit.PX);
  52. initWidget(panel);
  53. Grid topLeft = new Grid(1, 1);
  54. topLeft.setWidth("100%");
  55. topLeft.setWidget(0, 0, navigator);
  56. panel.addNorth(feedback, 30);
  57. panel.addWest(topLeft, 200);
  58. panel.add(multiPanel);
  59. multiPanel.addDateEventHandler(this);
  60. navigator.addDateSelectEventHandler(this);
  61. // setGrid.addClickListener(this);
  62. multiPanel.scrollToHour(9);
  63. }
  64. private boolean run = true;
  65. public static List<DefaultEventData> createPlanningSamples(DemoHandler contr) {
  66. DateTimeFormat format = DateTimeFormat.getFormat("HH:mm");
  67. long id = System.currentTimeMillis();
  68. List<DefaultEventData> data = new ArrayList<DefaultEventData>();
  69. {
  70. DefaultEventData example = new DefaultEventData(id++);
  71. example.setData("example for Nettie");
  72. Calendar helper = new GregorianCalendar();
  73. helper.setTime(format.parse("10:30"));
  74. example.setStartTime(helper.getTime());
  75. helper.add(Calendar.MINUTE, 10);
  76. example.setEndTime(helper.getTime());
  77. data.add(example);
  78. contr.addEvent(example);
  79. }
  80. {
  81. DefaultEventData example = new DefaultEventData(id++);
  82. example.setData("example whole for Nettie");
  83. example.setWholeDay(true);
  84. Calendar helper = new GregorianCalendar();
  85. helper.setTime(format.parse("10:30"));
  86. example.setStartTime(helper.getTime());
  87. data.add(example);
  88. contr.addEvent(example);
  89. }
  90. {
  91. DefaultEventData example = new DefaultEventData(id++);
  92. example.setData("example for Nettie");
  93. Calendar helper = new GregorianCalendar();
  94. // helper.setTime(format.parse("10:30"));
  95. example.setStartTime(helper.getTime());
  96. helper.add(Calendar.MINUTE, 60);
  97. example.setEndTime(helper.getTime());
  98. data.add(example);
  99. contr.addEvent(example);
  100. }
  101. {
  102. DefaultEventData example = new DefaultEventData(id++);
  103. example.setData("example for Nettie 22");
  104. Calendar helper = new GregorianCalendar();
  105. helper.setTime(format.parse("12:30"));
  106. example.setStartTime(helper.getTime());
  107. helper.add(Calendar.MINUTE, 60);
  108. example.setEndTime(helper.getTime());
  109. data.add(example);
  110. contr.addEvent(example);
  111. }
  112. {
  113. DefaultEventData example = new DefaultEventData(id++);
  114. example.setData("Multi day event");
  115. Calendar helper = new GregorianCalendar();
  116. helper.setTime(format.parse("22:30"));
  117. helper.add(Calendar.DATE, 1);
  118. example.setStartTime(helper.getTime());
  119. helper.add(Calendar.HOUR, 4);
  120. example.setEndTime(helper.getTime());
  121. data.add(example);
  122. contr.addEvent(example);
  123. }
  124. return data;
  125. }
  126. public void handleDateEvent(DateEvent<DefaultEventData> newEvent) {
  127. switch (newEvent.getCommand()) {
  128. case ADD: {
  129. final DefaultEventData data = (DefaultEventData) newEvent.getData();
  130. feedback.setText("Added event on " + data.getStartTime() + " - "
  131. + data.getEndTime());
  132. break;
  133. }
  134. case SELECT_DAY: {
  135. if (newEvent.getSource() == navigator) {
  136. multiPanel.setDate(newEvent.getDate());
  137. }
  138. break;
  139. }
  140. case SELECT_MONTH: {
  141. if (newEvent.getSource() == navigator) {
  142. multiPanel.setType(PanelType.MONTH);
  143. multiPanel.setDate(newEvent.getDate());
  144. }
  145. break;
  146. }
  147. case UPDATE: {
  148. final DefaultEventData data = (DefaultEventData) newEvent.getData();
  149. feedback.setText("Updated event on " + data.getStartTime() + " - "
  150. + data.getEndTime());
  151. break;
  152. }
  153. case REMOVE: {
  154. final DefaultEventData data = (DefaultEventData) newEvent.getData();
  155. feedback.setText("Removed event on " + data.getStartTime() + " - "
  156. + data.getEndTime());
  157. break;
  158. }
  159. case DRAG_DROP: {
  160. final DefaultEventData data = (DefaultEventData) newEvent.getData();
  161. feedback.setText("Removed event on " + data.getStartTime() + " - "
  162. + data.getEndTime());
  163. break;
  164. }
  165. }
  166. }
  167. public void onClick(ClickEvent event) {
  168. // TODO Auto-generated method stub
  169. }
  170. @Override
  171. protected void onAttach() {
  172. super.onAttach();
  173. if(run){
  174. run = false;
  175. Scheduler.get().scheduleDeferred(new ScheduledCommand() {
  176. @Override
  177. public void execute() {
  178. List<DefaultEventData> data = createPlanningSamples(contr);
  179. multiPanel.setEventsByList(data);
  180. }
  181. });
  182. }
  183. }
  184. @Override
  185. public void handleDateSelectEvent(DateSelectEvent newEvent) {
  186. switch (newEvent.getCommand()) {
  187. case SELECT_DAY: {
  188. if (newEvent.getSource() == navigator) {
  189. multiPanel.setDate(newEvent.getDate());
  190. }
  191. break;
  192. }
  193. case SELECT_NEW_MONTH: {
  194. if (newEvent.getSource() == navigator) {
  195. multiPanel.setType(PanelType.MONTH);
  196. multiPanel.setDate(newEvent.getDate());
  197. }
  198. break;
  199. }
  200. }
  201. }
  202. }