package com.itmill.toolkit.demo.reservation;\r
\r
-import java.awt.Point;\r
import java.awt.geom.Point2D;\r
+import java.util.Calendar;\r
import java.util.Date;\r
import java.util.Iterator;\r
+import java.util.LinkedList;\r
import java.util.List;\r
\r
import com.itmill.toolkit.Application;\r
ResourceSelectorPanel resourcePanel;\r
\r
private CalendarField reservedFrom;\r
+ private static final long DEFAULT_GAP_MILLIS = 3600000; // one hour\r
+ private long currentGapMillis = DEFAULT_GAP_MILLIS;\r
private CalendarField reservedTo;\r
\r
private Label resourceName;\r
this, "selectedResourcesChanged");\r
reservationTab.addComponent(resourcePanel);\r
\r
- Panel reservationPanel = new Panel(new OrderedLayout(\r
+ Panel reservationPanel = new Panel("Reservation", new OrderedLayout(\r
OrderedLayout.ORIENTATION_HORIZONTAL));\r
reservationTab.addComponent(reservationPanel);\r
\r
OrderedLayout infoLayout = new OrderedLayout();\r
reservationPanel.addComponent(infoLayout);\r
- resourceName = new Label("Choose resource");\r
- resourceName.setCaption("Reserving resource");\r
+ resourceName = new Label("From the list above");\r
+ resourceName.setCaption("Choose resource");\r
infoLayout.addComponent(resourceName);\r
description = new TextField();\r
- description.setColumns(40);\r
+ description.setColumns(55);\r
description.setRows(5);\r
infoLayout.addComponent(description);\r
reservationButton = new Button("Make reservation", this,\r
statusLabel = new Label();\r
infoLayout.addComponent(statusLabel);\r
\r
- // TODO map\r
map = new GoogleMap();\r
- map.setWidth(290);\r
- map.setHeight(150);\r
- map.setZoomLevel(12);\r
+ map.setWidth(360);\r
+ map.setHeight(270);\r
map.setItemMarkerHtmlPropertyId(SampleDB.Resource.PROPERTY_ID_NAME);\r
map.setItemMarkerXPropertyId(SampleDB.Resource.PROPERTY_ID_LOCATIONX);\r
map.setItemMarkerYPropertyId(SampleDB.Resource.PROPERTY_ID_LOCATIONY);\r
map.setContainerDataSource(db.getResources(null));\r
infoLayout.addComponent(map);\r
\r
- // TODO Use calendar, set following hour\r
- Date now = new Date();\r
+ Calendar from = Calendar.getInstance();\r
reservedFrom = new CalendarField();\r
- reservedFrom.setMinimumDate(now);\r
+ reservedFrom.setMinimumDate(from.getTime());\r
+ reservedFrom.setValue(from.getTime());\r
+ reservedFrom.setImmediate(true);\r
initCalendarFieldPropertyIds(reservedFrom);\r
- reservationPanel.addComponent(reservedFrom);\r
+ reservationPanel.addComponent(reservedFrom); \r
+ \r
+ Calendar to = Calendar.getInstance();\r
+ to.add(Calendar.MILLISECOND, (int)currentGapMillis);\r
reservedTo = new CalendarField();\r
- reservedTo.setMinimumDate(now);\r
+ reservedTo.setMinimumDate(from.getTime());\r
+ reservedTo.setValue(to.getTime());\r
+ reservedTo.setImmediate(true);\r
initCalendarFieldPropertyIds(reservedTo);\r
reservationPanel.addComponent(reservedTo);\r
+ \r
reservedFrom.addListener(new ValueChangeListener() {\r
public void valueChange(ValueChangeEvent event) {\r
Date fd = (Date) reservedFrom.getValue();\r
- Date td = (Date) reservedTo.getValue();\r
if (fd == null) {\r
reservedTo.setValue(null);\r
reservedTo.setEnabled(false);\r
reservedTo.setEnabled(true);\r
}\r
reservedTo.setMinimumDate(fd);\r
- if (td == null || td.before(fd)) {\r
- reservedTo.setValue(fd);\r
- }\r
+ Calendar to = Calendar.getInstance();\r
+ to.setTime(fd);\r
+ to.add(Calendar.MILLISECOND, (int)currentGapMillis);\r
+ reservedTo.setValue(to.getTime());\r
refreshSelectedResources();\r
resetStatus();\r
}\r
});\r
- reservedFrom.setImmediate(true);\r
- reservedFrom.setValue(now);\r
reservedTo.addListener(new ValueChangeListener() {\r
public void valueChange(ValueChangeEvent event) {\r
+ Date from = (Date) reservedFrom.getValue();\r
+ Date to = (Date) reservedTo.getValue();\r
+ currentGapMillis = to.getTime() - from.getTime();\r
+ if (currentGapMillis <= 0 ) {\r
+ Calendar t = Calendar.getInstance();\r
+ t.setTime(from);\r
+ t.add(Calendar.MILLISECOND, (int)DEFAULT_GAP_MILLIS);\r
+ reservedTo.setValue(t.getTime());\r
+ }\r
refreshSelectedResources();\r
resetStatus();\r
}\r
});\r
- reservedTo.setImmediate(true);\r
- reservedTo.setValue(now);\r
\r
OrderedLayout allLayout = new OrderedLayout(\r
OrderedLayout.ORIENTATION_HORIZONTAL);\r
try {\r
resource = getActiveResource();\r
} catch (ResourceNotAvailableException e) {\r
- resourceName.setValue("Not available");\r
+ resourceName.setCaption("Not available");\r
+ resourceName.setValue("Please choose another time period or resource");\r
reservationButton.setEnabled(false);\r
return;\r
}\r
map.clear();\r
if (resource == null) {\r
- resourceName.setValue("Choose resource");\r
+ resourceName.setCaption("Choose resource");\r
+ resourceName.setValue("from the list above");\r
reservationButton.setEnabled(false);\r
map.setContainerDataSource(db.getResources(null));\r
- map.setZoomLevel(12);\r
+ map.setZoomLevel(1);\r
+\r
} else {\r
- String name = (String) resource.getItemProperty(\r
- SampleDB.Resource.PROPERTY_ID_NAME).getValue();\r
- String desc = (String) resource.getItemProperty(\r
- SampleDB.Resource.PROPERTY_ID_DESCRIPTION).getValue();\r
- resourceName.setValue(name);\r
- Double x = (Double) resource.getItemProperty(\r
- SampleDB.Resource.PROPERTY_ID_LOCATIONX).getValue();\r
- Double y = (Double) resource.getItemProperty(\r
- SampleDB.Resource.PROPERTY_ID_LOCATIONY).getValue();\r
- if (x != null && y != null) {\r
- map.addMarker(name + "<br/>" + desc, new Point2D.Double(x\r
- .doubleValue(), y.doubleValue()));\r
- map.setZoomLevel(14);\r
+ LinkedList srs = resourcePanel.getSelectedResources();\r
+ for (Iterator it = srs.iterator(); it.hasNext();) {\r
+ resource = (Item)it.next();\r
+ String name = (String) resource.getItemProperty(\r
+ SampleDB.Resource.PROPERTY_ID_NAME).getValue();\r
+ String desc = (String) resource.getItemProperty(\r
+ SampleDB.Resource.PROPERTY_ID_DESCRIPTION).getValue();\r
+ resourceName.setCaption(name);\r
+ resourceName.setValue(desc);\r
+ Double x = (Double) resource.getItemProperty(\r
+ SampleDB.Resource.PROPERTY_ID_LOCATIONX).getValue();\r
+ Double y = (Double) resource.getItemProperty(\r
+ SampleDB.Resource.PROPERTY_ID_LOCATIONY).getValue();\r
+ if (x != null && y != null) {\r
+ map.addMarker(name + "<br/>" + desc, new Point2D.Double(x\r
+ .doubleValue(), y.doubleValue()));\r
+ \r
+ }\r
+ \r
}\r
-\r
+ map.setZoomLevel((srs.size()==1?16:9));\r
reservationButton.setEnabled(true);\r
}\r
\r
* 22.301753170493f)); map.addMarker("Linja-auto asema", new
* Point.Double(60.457049f,22.267957f));
*/
-
+ /*
Object[][] resources = {
{ "IT Mill Toolkit Manual", "the manual", "Books", new Double(60.452224),new Double(22.299929)},
{ "IT Mill Toolkit for Dummies", "the hardcover version",
{ "Sony", "Old Sony video projector", "AV equipment", new Double(60.449007),new Double(22.295508) },
{ "Sanyo", "Brand new hd-ready video projector", "AV equipment", new Double(60.452224),new Double(22.299929) },
{ "Room 7", "Conference room in the lobby", "Conference rooms", new Double(60.449451),new Double(22.292032) },
- { "Luokkahuone", "Classroom right next to IT Mill",
- "Conference rooms", new Double(60.44888),new Double(22.292032) },
{ "Nintendo Wii", "Teh uber fun", "Entertainment", new Double(60.445408),new Double(22.290831) },
- { "Playstation", "We don't actually have one", "Entertainment", new Double(60.44641962165445),new Double(22.301753170493) } };
-
+ { "Playstation", "We don't actually have one", "Entertainment", new Double(60.44641962165445),new Double(22.301753170493) },
+ { "Luokkahuone", "Classroom right next to IT Mill",
+ "Conference rooms", new Double(60.44888),new Double(22.292032) }
+ };
+ */
+ Object[][] resources = {
+ // Turku
+ { "01 Ford Mondeo", "w/ company logo", "Turku", new Double(60.510857),new Double(22.275424)},
+ { "02 Citroen Jumper", "w/ company logo. 12m3 storage space.", "Turku", new Double(60.452171),new Double(22.2995)},
+ { "03 Saab 93", "Cabriolet<br/>Keys from the rental desk.", "Turku", new Double(60.4507),new Double(22.295551)},
+ { "04 Volvo S60", "Key from the rental desk.", "Turku", new Double(60.434722),new Double(22.224398)},
+ { "05 Smart fourtwo", "Cabrio. Keys from infodesk.", "Turku", new Double(60.508970),new Double(22.264790)},
+ // Helsinki
+ { "06 Smart fourtwo", "Cabrio. Keys from infodesk.", "Helsinki", new Double(60.17175),new Double(24.939029)},
+ { "07 Smart fourtwo", "Cabrio. Keys from infodesk.", "Helsinki", new Double(60.17175),new Double(24.939029)},
+ { "08 Smart fourtwo", "Cabrio. Keys from infodesk.", "Helsinki", new Double(60.166579),new Double(24.953899)},
+ { "09 Volvo S60", "Keys from infodesk.", "Helsinki", new Double(60.317832),new Double(24.967289)},
+ { "10 Saab 93", "Keys from infodesk.", "Helsinki", new Double(60.249193),new Double(25.045921)},
+ // Silicon Valley
+ { "11 Ford Mustang", "Keys from Acme clerk.", "Silicon Valley", new Double(37.615853),new Double(-122.386384)},
+ { "12 Ford Mondeo", "Keys from infodesk.", "Silicon Valley", new Double(37.365028),new Double(-121.922654)},
+ { "13 Ford Mustang", "GT Cal Special. Keys from guard.", "Silicon Valley", new Double(37.403812),new Double(-121.977425)},
+ { "14 Ford Mustang", "GT Cal Special. Keys from guard.", "Silicon Valley", new Double(37.403812),new Double(-121.977425)},
+ { "15 Land Rover", "Keys from infodesk.", "Silicon Valley", new Double(37.365028),new Double(-121.922654)},
+ // Paris
+ { "17 Peugeot 308", "Keys from infodesk.", "Paris", new Double(48.844756),new Double(2.372784)},
+ { "18 Citroën C6", "Keys from rental desk.", "Paris", new Double(49.007253),new Double(2.545025)},
+ { "19 Citroën C6", "Keys from infodesk.", "Paris", new Double(48.729061),new Double(2.368087)},
+ { "20 Peugeot 308", "Keys from ticket sales.", "Paris", new Double(48.880931),new Double(2.356988)},
+ { "21 Peugeot 308", "Keys from ticket sales.", "Paris", new Double(48.876479),new Double(2.358161)},
+ // STHLM
+ { "22 Volvo S60", "Keys from infodesk.", "Stockholm", new Double(59.350414),new Double(18.106574)},
+ { "23 Saab 93", "Keys from infodesk.", "Stockholm", new Double(59.355905),new Double(17.946784)},
+ { "24 Smart fourtwo", "Keys from infodesk.", "Stockholm", new Double(59.315939),new Double(18.095904)},
+ { "25 Smart fourtwo", "Keys from infodesk.", "Stockholm", new Double(59.330716),new Double(18.058702)},
+ // Boston
+ { "26 Ford Mustang", "Keys from infodesk.", "Boston", new Double(42.366588),new Double(-71.020955)},
+ { "27 Smart fourtwo", "Keys from infodesk.", "Boston", new Double(42.365419),new Double(-71.061748)},
+ { "28 Volvo S60", "Keys from Seaport Hotel reception.", "Boston", new Double(42.34811),new Double(-71.041127)},
+ { "29 Smart fourtwo", "Keys from Seaport Hotel reception.", "Boston", new Double(42.348072),new Double(-71.041315)},
+
+ };
+
String q = "INSERT INTO " + Resource.TABLE + "("
+ Resource.PROPERTY_ID_NAME + ","
+ Resource.PROPERTY_ID_DESCRIPTION + ","