]> source.dussan.org Git - vaadin-framework.git/commitdiff
New data, ui & date handling updates
authorMarc Englund <marc.englund@itmill.com>
Fri, 5 Oct 2007 08:19:01 +0000 (08:19 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 5 Oct 2007 08:19:01 +0000 (08:19 +0000)
svn changeset:2442/svn branch:trunk

src/com/itmill/toolkit/demo/reservation/ReservationApplication.java
src/com/itmill/toolkit/demo/reservation/SampleDB.java
src/com/itmill/toolkit/demo/reservation/gwt/client/ui/IGoogleMap.java

index 4c36e82bf066cd9de1e8b93ae39ee541d43f511f..1476c4b668ae28735c0a50f988780f4a54171460 100644 (file)
@@ -1,9 +1,10 @@
 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
@@ -29,6 +30,8 @@ public class ReservationApplication extends Application {
     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
@@ -65,17 +68,17 @@ public class ReservationApplication extends Application {
                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
@@ -84,31 +87,35 @@ public class ReservationApplication extends Application {
        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
@@ -118,23 +125,29 @@ public class ReservationApplication extends Application {
                    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
@@ -207,32 +220,41 @@ public class ReservationApplication extends Application {
        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
index 7e0507db4630f12054e4ab2bc8f549c1f0a60289..ea8a752a7a6a37938a737bda0c20ca7a975f4d11 100644 (file)
@@ -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<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 + ","
index 621b81242b3f3074321faea11733cb2afa9d34b3..87ed826338dbbbbc0eb33daf3e0c07c8801c0d1f 100644 (file)
@@ -36,7 +36,7 @@ public class IGoogleMap extends GMap2Widget implements Paintable {
 \r
                for (Iterator m = u.getChildIterator(); m.hasNext();) {\r
                    UIDL umarker = (UIDL) m.next();\r
-                   String html = umarker.getStringAttribute("html");\r
+                   String html = "<span>"+umarker.getStringAttribute("html")+"</span>";\r
                    double x = umarker.getDoubleAttribute("x");\r
                    double y = umarker.getDoubleAttribute("y");\r
                    pos = new GLatLng(x, y);\r