]> source.dussan.org Git - vaadin-framework.git/commitdiff
Map integration; really using db data.
authorMarc Englund <marc.englund@itmill.com>
Fri, 21 Sep 2007 12:43:35 +0000 (12:43 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 21 Sep 2007 12:43:35 +0000 (12:43 +0000)
svn changeset:2367/svn branch:trunk

src/com/itmill/toolkit/demo/reservation/GoogleMap.java
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 68402a4ed678fdef6095e70a35d13692861d80a9..0869cf5b640ced3147965e11460f2a78b7f9decd 100644 (file)
@@ -20,7 +20,7 @@ public class GoogleMap extends AbstractComponent implements Sizeable,
     private int width = 400;\r
     private int height = 300;\r
     private int zoomLevel = 15;\r
-    private Point2D.Float mapCenter;\r
+    private Point2D.Double mapCenter;\r
 \r
     private Container dataSource;\r
     private Object itemMarkerHtmlPropertyId = new Object();\r
@@ -48,15 +48,15 @@ public class GoogleMap extends AbstractComponent implements Sizeable,
                Object itemId = it.next();\r
                Item item = this.dataSource.getItem(itemId);\r
                Property p = item.getItemProperty(getItemMarkerXPropertyId());\r
-               Float x = (Float) (p != null ? p.getValue() : null);\r
+               Double x = (Double) (p != null ? p.getValue() : null);\r
                p = item.getItemProperty(getItemMarkerYPropertyId());\r
-               Float y = (Float) (p != null ? p.getValue() : null);\r
+               Double y = (Double) (p != null ? p.getValue() : null);\r
                if (x == null || y == null) {\r
                    continue;\r
                }\r
                target.startTag(TAG_MARKER);\r
-               target.addAttribute("x", x.floatValue());\r
-               target.addAttribute("y", y.floatValue());\r
+               target.addAttribute("x", x.doubleValue());\r
+               target.addAttribute("y", y.doubleValue());\r
                p = item.getItemProperty(getItemMarkerHtmlPropertyId());\r
                String h = (String) (p != null ? p.getValue() : null);\r
                target.addAttribute("html", h);\r
@@ -111,11 +111,11 @@ public class GoogleMap extends AbstractComponent implements Sizeable,
        throw new UnsupportedOperationException();\r
     }\r
 \r
-    public void setMapCenter(Point2D.Float center) {\r
+    public void setMapCenter(Point2D.Double center) {\r
        this.mapCenter = center;\r
     }\r
     \r
-    public Point2D.Float getMapCenter() {\r
+    public Point2D.Double getMapCenter() {\r
        return this.mapCenter;\r
     }\r
     \r
@@ -163,7 +163,7 @@ public class GoogleMap extends AbstractComponent implements Sizeable,
 \r
     // Marker add\r
 \r
-    public Object addMarker(String html, Point2D.Float location) {\r
+    public Object addMarker(String html, Point2D.Double location) {\r
        if (location == null) {\r
            throw new IllegalArgumentException("Location must be non-null");\r
        }\r
@@ -176,9 +176,9 @@ public class GoogleMap extends AbstractComponent implements Sizeable,
        }\r
        Item marker = this.dataSource.getItem(markerId);\r
        Property p = marker.getItemProperty(getItemMarkerXPropertyId());\r
-       p.setValue(new Float(location.x));\r
+       p.setValue(new Double(location.x));\r
        p = marker.getItemProperty(getItemMarkerYPropertyId());\r
-       p.setValue(new Float(location.y));\r
+       p.setValue(new Double(location.y));\r
        p = marker.getItemProperty(getItemMarkerHtmlPropertyId());\r
        p.setValue(html);\r
 \r
@@ -208,8 +208,12 @@ public class GoogleMap extends AbstractComponent implements Sizeable,
        this.dataSource.addContainerProperty(this.itemMarkerHtmlPropertyId,\r
                String.class, null);\r
        this.dataSource.addContainerProperty(this.itemMarkerXPropertyId,\r
-               Float.class, new Float(0));\r
+               Double.class, new Double(0));\r
        this.dataSource.addContainerProperty(this.itemMarkerYPropertyId,\r
-               Float.class, new Float(0));\r
+               Double.class, new Double(0));\r
+    }\r
+    \r
+    public void clear() {\r
+       setContainerDataSource(null);\r
     }\r
 }
\ No newline at end of file
index 42ebd7d74c5290fd4b541e08f537e818984f5824..4c36e82bf066cd9de1e8b93ae39ee541d43f511f 100644 (file)
@@ -1,6 +1,7 @@
 package com.itmill.toolkit.demo.reservation;\r
 \r
 import java.awt.Point;\r
+import java.awt.geom.Point2D;\r
 import java.util.Date;\r
 import java.util.Iterator;\r
 import java.util.List;\r
@@ -38,6 +39,8 @@ public class ReservationApplication extends Application {
     private Table allTable;\r
     private CalendarField allCalendar;\r
 \r
+    private GoogleMap map;\r
+\r
     public void init() {\r
        db = new SampleDB(true);\r
        db.generateResources();\r
@@ -80,18 +83,18 @@ public class ReservationApplication extends Application {
        infoLayout.addComponent(reservationButton);\r
        statusLabel = new Label();\r
        infoLayout.addComponent(statusLabel);\r
-       \r
+\r
        // TODO map\r
-       GoogleMap map = new GoogleMap();\r
+       map = new GoogleMap();\r
        map.setWidth(290);\r
        map.setHeight(150);\r
-       map.setZoomLevel(2);\r
-       //map.setMapCenter(new Point.Float(60.453380f, 22.301850f));\r
+       map.setZoomLevel(12);\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
-       map.addMarker("IT Mill", new Point.Float(60.453380f, 22.301850f));\r
-       map.addMarker("Romson a.k.a Rodskar", new Point.Float(63.509433f,22.276711f));\r
-       \r
+\r
        // TODO Use calendar, set following hour\r
        Date now = new Date();\r
        reservedFrom = new CalendarField();\r
@@ -133,7 +136,8 @@ public class ReservationApplication extends Application {
        reservedTo.setImmediate(true);\r
        reservedTo.setValue(now);\r
 \r
-       OrderedLayout allLayout = new OrderedLayout(OrderedLayout.ORIENTATION_HORIZONTAL);\r
+       OrderedLayout allLayout = new OrderedLayout(\r
+               OrderedLayout.ORIENTATION_HORIZONTAL);\r
        allCalendar = new CalendarField();\r
        initCalendarFieldPropertyIds(allCalendar);\r
        allLayout.addComponent(allCalendar);\r
@@ -195,7 +199,7 @@ public class ReservationApplication extends Application {
        Container allReservations = db.getReservations(null);\r
        allTable.setContainerDataSource(allReservations);\r
        allCalendar.setContainerDataSource(allReservations);\r
-       \r
+\r
     }\r
 \r
     private void refreshSelectedResources() {\r
@@ -207,12 +211,28 @@ public class ReservationApplication extends Application {
            reservationButton.setEnabled(false);\r
            return;\r
        }\r
+       map.clear();\r
        if (resource == null) {\r
            resourceName.setValue("Choose resource");\r
            reservationButton.setEnabled(false);\r
+           map.setContainerDataSource(db.getResources(null));\r
+           map.setZoomLevel(12);\r
        } else {\r
-           resourceName.setValue((String) resource.getItemProperty(\r
-                   SampleDB.Resource.PROPERTY_ID_NAME).getValue());\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
+           }\r
+\r
            reservationButton.setEnabled(true);\r
        }\r
 \r
@@ -222,8 +242,7 @@ public class ReservationApplication extends Application {
        cal\r
                .setItemStartPropertyId(SampleDB.Reservation.PROPERTY_ID_RESERVED_FROM);\r
        cal.setItemEndPropertyId(SampleDB.Reservation.PROPERTY_ID_RESERVED_TO);\r
-       cal\r
-               .setItemTitlePropertyId(SampleDB.Resource.PROPERTY_ID_NAME);\r
+       cal.setItemTitlePropertyId(SampleDB.Resource.PROPERTY_ID_NAME);\r
        cal\r
                .setItemDescriptionPropertyId(SampleDB.Reservation.PROPERTY_ID_DESCRIPTION);\r
     }\r
index bc1f5b04e97e1e89dda5329b478efe6dc9d8e40e..7e0507db4630f12054e4ab2bc8f549c1f0a60289 100644 (file)
@@ -372,28 +372,47 @@ public class SampleDB {
     }
 
     public void generateResources() {
-       String[][] resources = {
-               { "IT Mill Toolkit Manual", "the manual", "Books" },
+       /*
+        * map.addMarker("Old Mill", new Point.Double(60.452224f,22.299929f));
+        * map.addMarker("ICT", new Point.Double(60.449007f,22.295508f));
+        * map.addMarker("DataCity", new Point.Double(60.448329f,22.295165f));
+        * map.addMarker("BioCity", new Point.Double(60.449451f,22.293105f));
+        * map.addMarker("PharmaCity", new Point.Double(60.44888f,22.292032f));
+        * map.addMarker("Intelligate", new Point.Double(60.450403f,22.29495f));
+        * map.addMarker("Paviljonki", new Point.Double(60.445408f,22.290831f));
+        * map.addMarker("Trivium", new Point.Double(60.44641962165445f,
+        * 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",
-                       "Books" },
-               { "Sony", "Old Sony video projector", "AV equipment" },
-               { "Sanyo", "Brand new hd-ready video projector", "AV equipment" },
-               { "Room 7", "Converence room in the lobby", "Conference rooms" },
+                       "Books", new Double(60.452224),new Double(22.299929) },
+               { "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" },
-               { "Nintendo Wii", "Teh uber fun", "Entertainment" },
-               { "Playstation", "We don't actually have one", "Entertainment" } };
+                       "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) } };
 
        String q = "INSERT INTO " + Resource.TABLE + "("
                + Resource.PROPERTY_ID_NAME + ","
                + Resource.PROPERTY_ID_DESCRIPTION + ","
-               + Resource.PROPERTY_ID_CATEGORY + ")" + " VALUES (?,?,?)";
+               + Resource.PROPERTY_ID_CATEGORY + ","
+               + Resource.PROPERTY_ID_LOCATIONX + ","
+               + Resource.PROPERTY_ID_LOCATIONY
+               + ")" + " VALUES (?,?,?,?,?)";
        try {
            PreparedStatement stmt = connection.prepareStatement(q);
            for (int i = 0; i < resources.length; i++) {
-               stmt.setString(1, resources[i][0]);
-               stmt.setString(2, resources[i][1]);
-               stmt.setString(3, resources[i][2]);
+               int j=0;
+               stmt.setString(j+1, (String)resources[i][j++]);
+               stmt.setString(j+1, (String)resources[i][j++]);
+               stmt.setString(j+1, (String)resources[i][j++]);
+               stmt.setDouble(j+1, ((Double)resources[i][j++]).doubleValue());
+               stmt.setDouble(j+1, ((Double)resources[i][j++]).doubleValue());
                stmt.execute();
            }
        } catch (SQLException e) {
index e7d60911749f23da8706dd7beaed30fbf5016c3a..621b81242b3f3074321faea11733cb2afa9d34b3 100644 (file)
@@ -28,6 +28,7 @@ public class IGoogleMap extends GMap2Widget implements Paintable {
     }\r
 \r
     public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {\r
+       map.clearOverlays();\r
        GLatLng pos = null;\r
        for (Iterator it = uidl.getChildIterator(); it.hasNext();) {\r
            UIDL u = (UIDL) it.next();\r
@@ -36,8 +37,8 @@ public class IGoogleMap extends GMap2Widget implements Paintable {
                for (Iterator m = u.getChildIterator(); m.hasNext();) {\r
                    UIDL umarker = (UIDL) m.next();\r
                    String html = umarker.getStringAttribute("html");\r
-                   float x = umarker.getFloatAttribute("x");\r
-                   float y = umarker.getFloatAttribute("y");\r
+                   double x = umarker.getDoubleAttribute("x");\r
+                   double y = umarker.getDoubleAttribute("y");\r
                    pos = new GLatLng(x, y);\r
                    GMarker marker = new GMarker(pos);\r
                    map.addOverlay(marker);\r
@@ -57,8 +58,8 @@ public class IGoogleMap extends GMap2Widget implements Paintable {
            map.setZoom(uidl.getIntAttribute("zoom"));\r
        }\r
        if (uidl.hasAttribute("centerX") && uidl.hasAttribute("centerY")) {\r
-           GLatLng center = new GLatLng(uidl.getFloatAttribute("centerX"),\r
-                   uidl.getFloatAttribute("centerY"));\r
+           GLatLng center = new GLatLng(uidl.getDoubleAttribute("centerX"),\r
+                   uidl.getDoubleAttribute("centerY"));\r
            map.setCenter(center);\r
        } else if (pos!=null) {\r
            // use last marker position\r