From: Marc Englund Date: Fri, 5 Oct 2007 08:19:01 +0000 (+0000) Subject: New data, ui & date handling updates X-Git-Tag: 6.7.0.beta1~5904 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7ffaab32416e09c84281dbfeba1a628d5e935410;p=vaadin-framework.git New data, ui & date handling updates svn changeset:2442/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java b/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java index 4c36e82bf0..1476c4b668 100644 --- a/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java +++ b/src/com/itmill/toolkit/demo/reservation/ReservationApplication.java @@ -1,9 +1,10 @@ package com.itmill.toolkit.demo.reservation; -import java.awt.Point; import java.awt.geom.Point2D; +import java.util.Calendar; import java.util.Date; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import com.itmill.toolkit.Application; @@ -29,6 +30,8 @@ public class ReservationApplication extends Application { ResourceSelectorPanel resourcePanel; private CalendarField reservedFrom; + private static final long DEFAULT_GAP_MILLIS = 3600000; // one hour + private long currentGapMillis = DEFAULT_GAP_MILLIS; private CalendarField reservedTo; private Label resourceName; @@ -65,17 +68,17 @@ public class ReservationApplication extends Application { this, "selectedResourcesChanged"); reservationTab.addComponent(resourcePanel); - Panel reservationPanel = new Panel(new OrderedLayout( + Panel reservationPanel = new Panel("Reservation", new OrderedLayout( OrderedLayout.ORIENTATION_HORIZONTAL)); reservationTab.addComponent(reservationPanel); OrderedLayout infoLayout = new OrderedLayout(); reservationPanel.addComponent(infoLayout); - resourceName = new Label("Choose resource"); - resourceName.setCaption("Reserving resource"); + resourceName = new Label("From the list above"); + resourceName.setCaption("Choose resource"); infoLayout.addComponent(resourceName); description = new TextField(); - description.setColumns(40); + description.setColumns(55); description.setRows(5); infoLayout.addComponent(description); reservationButton = new Button("Make reservation", this, @@ -84,31 +87,35 @@ public class ReservationApplication extends Application { statusLabel = new Label(); infoLayout.addComponent(statusLabel); - // TODO map map = new GoogleMap(); - map.setWidth(290); - map.setHeight(150); - map.setZoomLevel(12); + map.setWidth(360); + map.setHeight(270); map.setItemMarkerHtmlPropertyId(SampleDB.Resource.PROPERTY_ID_NAME); map.setItemMarkerXPropertyId(SampleDB.Resource.PROPERTY_ID_LOCATIONX); map.setItemMarkerYPropertyId(SampleDB.Resource.PROPERTY_ID_LOCATIONY); map.setContainerDataSource(db.getResources(null)); infoLayout.addComponent(map); - // TODO Use calendar, set following hour - Date now = new Date(); + Calendar from = Calendar.getInstance(); reservedFrom = new CalendarField(); - reservedFrom.setMinimumDate(now); + reservedFrom.setMinimumDate(from.getTime()); + reservedFrom.setValue(from.getTime()); + reservedFrom.setImmediate(true); initCalendarFieldPropertyIds(reservedFrom); - reservationPanel.addComponent(reservedFrom); + reservationPanel.addComponent(reservedFrom); + + Calendar to = Calendar.getInstance(); + to.add(Calendar.MILLISECOND, (int)currentGapMillis); reservedTo = new CalendarField(); - reservedTo.setMinimumDate(now); + reservedTo.setMinimumDate(from.getTime()); + reservedTo.setValue(to.getTime()); + reservedTo.setImmediate(true); initCalendarFieldPropertyIds(reservedTo); reservationPanel.addComponent(reservedTo); + reservedFrom.addListener(new ValueChangeListener() { public void valueChange(ValueChangeEvent event) { Date fd = (Date) reservedFrom.getValue(); - Date td = (Date) reservedTo.getValue(); if (fd == null) { reservedTo.setValue(null); reservedTo.setEnabled(false); @@ -118,23 +125,29 @@ public class ReservationApplication extends Application { reservedTo.setEnabled(true); } reservedTo.setMinimumDate(fd); - if (td == null || td.before(fd)) { - reservedTo.setValue(fd); - } + Calendar to = Calendar.getInstance(); + to.setTime(fd); + to.add(Calendar.MILLISECOND, (int)currentGapMillis); + reservedTo.setValue(to.getTime()); refreshSelectedResources(); resetStatus(); } }); - reservedFrom.setImmediate(true); - reservedFrom.setValue(now); reservedTo.addListener(new ValueChangeListener() { public void valueChange(ValueChangeEvent event) { + Date from = (Date) reservedFrom.getValue(); + Date to = (Date) reservedTo.getValue(); + currentGapMillis = to.getTime() - from.getTime(); + if (currentGapMillis <= 0 ) { + Calendar t = Calendar.getInstance(); + t.setTime(from); + t.add(Calendar.MILLISECOND, (int)DEFAULT_GAP_MILLIS); + reservedTo.setValue(t.getTime()); + } refreshSelectedResources(); resetStatus(); } }); - reservedTo.setImmediate(true); - reservedTo.setValue(now); OrderedLayout allLayout = new OrderedLayout( OrderedLayout.ORIENTATION_HORIZONTAL); @@ -207,32 +220,41 @@ public class ReservationApplication extends Application { try { resource = getActiveResource(); } catch (ResourceNotAvailableException e) { - resourceName.setValue("Not available"); + resourceName.setCaption("Not available"); + resourceName.setValue("Please choose another time period or resource"); reservationButton.setEnabled(false); return; } map.clear(); if (resource == null) { - resourceName.setValue("Choose resource"); + resourceName.setCaption("Choose resource"); + resourceName.setValue("from the list above"); reservationButton.setEnabled(false); map.setContainerDataSource(db.getResources(null)); - map.setZoomLevel(12); + map.setZoomLevel(1); + } else { - String name = (String) resource.getItemProperty( - SampleDB.Resource.PROPERTY_ID_NAME).getValue(); - String desc = (String) resource.getItemProperty( - SampleDB.Resource.PROPERTY_ID_DESCRIPTION).getValue(); - resourceName.setValue(name); - Double x = (Double) resource.getItemProperty( - SampleDB.Resource.PROPERTY_ID_LOCATIONX).getValue(); - Double y = (Double) resource.getItemProperty( - SampleDB.Resource.PROPERTY_ID_LOCATIONY).getValue(); - if (x != null && y != null) { - map.addMarker(name + "
" + desc, new Point2D.Double(x - .doubleValue(), y.doubleValue())); - map.setZoomLevel(14); + LinkedList srs = resourcePanel.getSelectedResources(); + for (Iterator it = srs.iterator(); it.hasNext();) { + resource = (Item)it.next(); + String name = (String) resource.getItemProperty( + SampleDB.Resource.PROPERTY_ID_NAME).getValue(); + String desc = (String) resource.getItemProperty( + SampleDB.Resource.PROPERTY_ID_DESCRIPTION).getValue(); + resourceName.setCaption(name); + resourceName.setValue(desc); + Double x = (Double) resource.getItemProperty( + SampleDB.Resource.PROPERTY_ID_LOCATIONX).getValue(); + Double y = (Double) resource.getItemProperty( + SampleDB.Resource.PROPERTY_ID_LOCATIONY).getValue(); + if (x != null && y != null) { + map.addMarker(name + "
" + desc, new Point2D.Double(x + .doubleValue(), y.doubleValue())); + + } + } - + map.setZoomLevel((srs.size()==1?16:9)); reservationButton.setEnabled(true); } diff --git a/src/com/itmill/toolkit/demo/reservation/SampleDB.java b/src/com/itmill/toolkit/demo/reservation/SampleDB.java index 7e0507db46..ea8a752a7a 100644 --- a/src/com/itmill/toolkit/demo/reservation/SampleDB.java +++ b/src/com/itmill/toolkit/demo/reservation/SampleDB.java @@ -384,7 +384,7 @@ public class SampleDB { * 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", @@ -392,11 +392,50 @@ public class SampleDB { { "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
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 + "," diff --git a/src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java b/src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java index 621b81242b..87ed826338 100644 --- a/src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java +++ b/src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java @@ -36,7 +36,7 @@ public class IGoogleMap extends GMap2Widget implements Paintable { for (Iterator m = u.getChildIterator(); m.hasNext();) { UIDL umarker = (UIDL) m.next(); - String html = umarker.getStringAttribute("html"); + String html = ""+umarker.getStringAttribute("html")+""; double x = umarker.getDoubleAttribute("x"); double y = umarker.getDoubleAttribute("y"); pos = new GLatLng(x, y);