tweak map demo so token not required

Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/7dd59490
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/7dd59490
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/7dd59490

Branch: refs/heads/develop
Commit: 7dd59490f9f5dd7ea8cb3363aa28d3e551900647
Parents: d76d60e
Author: Alex Harui <aha...@apache.org>
Authored: Fri May 16 13:56:01 2014 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Fri May 16 13:56:01 2014 -0700

----------------------------------------------------------------------
 examples/DesktopMap/src/MyInitialView.mxml      |  2 +-
 frameworks/as/projects/FlexJSUI/defaults.css    |  5 ++
 .../src/org/apache/flex/maps/google/Map.as      | 18 ++---
 .../apache/flex/maps/google/beads/MapView.as    | 45 +++++-------
 .../src/org/apache/flex/maps/google/Map.js      | 32 +++++----
 .../apache/flex/maps/google/beads/MapView.js    | 73 ++++++++++++++++++++
 6 files changed, 123 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7dd59490/examples/DesktopMap/src/MyInitialView.mxml
----------------------------------------------------------------------
diff --git a/examples/DesktopMap/src/MyInitialView.mxml 
b/examples/DesktopMap/src/MyInitialView.mxml
index ede8f81..4cdfa10 100644
--- a/examples/DesktopMap/src/MyInitialView.mxml
+++ b/examples/DesktopMap/src/MyInitialView.mxml
@@ -97,6 +97,6 @@ limitations under the License.
                                                        
dataProvider="{MyModel(applicationModel).cities}" />
        </basic:Container>
 
-       <basic:Map id="map" x="150" y="25" width="300" height="300" 
token="--put your Google API dev token here--" />
+       <basic:Map id="map" x="150" y="25" width="300" height="300" />
 
 </basic:ViewBase>

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7dd59490/frameworks/as/projects/FlexJSUI/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/defaults.css 
b/frameworks/as/projects/FlexJSUI/defaults.css
index a36c6c5..d084258 100644
--- a/frameworks/as/projects/FlexJSUI/defaults.css
+++ b/frameworks/as/projects/FlexJSUI/defaults.css
@@ -99,6 +99,11 @@ List
     IItemRenderer: 
ClassReference("org.apache.flex.html.supportClasses.StringItemRenderer");
 }
 
+Map
+{
+    IBeadView: ClassReference("org.apache.flex.maps.google.beads.MapView");
+}
+
 SimpleList
 {
     IBeadModel: 
ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel");

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7dd59490/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/Map.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/Map.as 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/Map.as
index 1ada5f7..44ca927 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/Map.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/Map.as
@@ -64,13 +64,13 @@ package org.apache.flex.maps.google
                public function set token(value:String):void
                {
                        _token = value; 
-                       
-                       var viewBead:MapView = getBeadByType(IBeadView) as 
MapView;
-                       if (viewBead == null) {
-                               viewBead = new MapView();
-                               viewBead.token = value;
-                               addBead(viewBead);
-                       }
+               }
+               /**
+                * @private
+                */
+               public function get token():String
+               {
+                       return _token; 
                }
                
                /**
@@ -85,10 +85,6 @@ package org.apache.flex.maps.google
                public function loadMap( centerLat:Number, centerLong:Number, 
zoom:Number ) : void
                {
                        var viewBead:MapView = getBeadByType(IBeadView) as 
MapView;
-                       if (viewBead == null) {
-                               viewBead = new MapView();
-                               addBead(viewBead);
-                       }
                        if (viewBead) {
                                viewBead.mapit(centerLat, centerLong, zoom);
                        }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7dd59490/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/beads/MapView.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/beads/MapView.as
 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/beads/MapView.as
index 05e5f49..e7d6eb6 100644
--- 
a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/beads/MapView.as
+++ 
b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/maps/google/beads/MapView.as
@@ -26,6 +26,7 @@ package org.apache.flex.maps.google.beads
        import org.apache.flex.core.IStrand;
        import org.apache.flex.core.UIBase;
        import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.maps.google.Map;
        
        /**
         *  The MapView bead class displays a Google Map using HTMLLoader.
@@ -76,35 +77,19 @@ package org.apache.flex.maps.google.beads
                                                
                        (_strand as UIBase).addChild(_loader);
                        
-                       if (page) {
-                               _loader.loadString(page);
-                               IEventDispatcher(_strand).dispatchEvent(new 
Event("ready"));
-                       }
-               }
-               
-               private var _token:String;
-               
-               /**
-                *  Sets the API token and modifies the pageTemplate so that a 
proper
-                *  HTML DOM can be constructed to house the Google Map.
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set token(value:String):void
-               {
-                       _token = value;
+                       var token:String = Map(_strand).token;
+                       if (token)
+                               page = pageTemplateStart + "&key=" + token + 
pageTemplateEnd;
+                       else
+                               page = pageTemplateStart + pageTemplateEnd;
                        
-                       page = 
pageTemplate.replace("{Your-Google-Token-Here}",_token);
-                       
-                       if (_loader) {
+                       if (page) {
                                _loader.loadString(page);
+                               _loader.addEventListener(Event.COMPLETE, 
completeHandler);
                                IEventDispatcher(_strand).dispatchEvent(new 
Event("ready"));
                        }
                }
-               
+                               
                private var page:String;
                
                /**
@@ -136,7 +121,7 @@ package org.apache.flex.maps.google.beads
                 * This page definition is used with HTMLLoader to bring in the 
Google Maps
                 * API (a Google APP token is required).
                 */
-               private static var pageTemplate:String = '<!DOCTYPE html>'+
+               private static var pageTemplateStart:String = '<!DOCTYPE html>'+
                        '<html>'+
                        '  <head>'+
                        '    <meta name="viewport" content="initial-scale=1.0, 
user-scalable=no" />'+
@@ -146,7 +131,9 @@ package org.apache.flex.maps.google.beads
                        '      #map-canvas { height: 100% }'+
                        '    </style>'+
                        '    <script type="text/javascript"'+
-                       '      
src="https://maps.googleapis.com/maps/api/js?key={Your-Google-Token-Here}&sensor=false";>'+
+                       '      
src="https://maps.googleapis.com/maps/api/js?v=3.exp';
+               
+               private static var pageTemplateEnd:String = '&sensor=false">'+
                        '    </script>'+
                        '    <script type="text/javascript">'+
                        '      function mapit(lat, lng, zoomLevel) {'+
@@ -167,5 +154,11 @@ package org.apache.flex.maps.google.beads
                        '    <div id="map-canvas"/>'+
                        '  </body>'+
                        '</html>';
+               
+               private function completeHandler(event:Event):void
+               {
+                       trace("htmlLoader complete");
+               }
        }
+       
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7dd59490/frameworks/js/FlexJS/src/org/apache/flex/maps/google/Map.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/maps/google/Map.js 
b/frameworks/js/FlexJS/src/org/apache/flex/maps/google/Map.js
index b10d1a2..9ac51b6 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/maps/google/Map.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/maps/google/Map.js
@@ -34,6 +34,18 @@ goog.inherits(org.apache.flex.maps.google.Map,
 
 
 /**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.maps.google.Map.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'Map',
+           qName: 'org.apache.flex.maps.google.Map' }],
+    interfaces: [] };
+
+
+/**
  * @override
  * @protected
  * @return {Object} The actual element to be parented.
@@ -42,6 +54,7 @@ org.apache.flex.maps.google.Map.prototype.createElement =
     function() {
 
   this.element = document.createElement('div');
+  this.set_className('Map');
 
   this.positioner = this.element;
   this.element.flexjs_wrapper = this;
@@ -55,15 +68,7 @@ org.apache.flex.maps.google.Map.prototype.createElement =
  * @param {String} value Google API dev token.
  */
 org.apache.flex.maps.google.Map.prototype.set_token = function(value) {
-  var script = document.createElement('script');
-  script.type = 'text/javascript';
-  script.src = 'https://maps.googleapis.com/maps/api/js?key=' + value + 
'&sensor=false' +
-              '&callback=mapInit';
-  window.mapView = this;
-  window.mapInit = function() {
-      this.mapView.finishInitalization();
-    };
-  document.body.appendChild(script);
+  this.token = value;
 };
 
 
@@ -84,10 +89,9 @@ 
org.apache.flex.maps.google.Map.prototype.finishInitalization = function() {
 org.apache.flex.maps.google.Map.prototype.loadMap =
     function(centerLat, centerLong, zoom) {
   if (this.initialized) {
-    var mapOptions = {
-      center: new google.maps.LatLng(centerLat, centerLong),
-      zoom: zoom
-    };
-    this.map = new google.maps.Map(this.element, mapOptions);
+    var mapOptions = {};
+    mapOptions['center'] = new window['google']['maps']['LatLng'](centerLat, 
centerLong);
+    mapOptions['zoom'] = zoom;
+    this.map = new window['google']['maps']['Map'](this.element, mapOptions);
   }
 };

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/7dd59490/frameworks/js/FlexJS/src/org/apache/flex/maps/google/beads/MapView.js
----------------------------------------------------------------------
diff --git 
a/frameworks/js/FlexJS/src/org/apache/flex/maps/google/beads/MapView.js 
b/frameworks/js/FlexJS/src/org/apache/flex/maps/google/beads/MapView.js
new file mode 100644
index 0000000..1adc969
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/maps/google/beads/MapView.js
@@ -0,0 +1,73 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/* MapView isn't really the view, but is a bead used to trigger
+   the loading of the map JS files */
+
+goog.provide('org.apache.flex.maps.google.beads.MapView');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.maps.google.beads.MapView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.maps.google.beads.MapView.prototype.
+FLEXJS_CLASS_INFO =
+{ names: [{ name: 'MapView',
+           qName: 'org.apache.flex.maps.google.beads.MapView' }],
+    interfaces: [org.apache.flex.core.IBeadView] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.maps.google.beads.MapView.prototype.set_strand =
+function(value) {
+
+  this.strand_ = value;
+
+  var token = this.strand_.token;
+  var src = 'https://maps.googleapis.com/maps/api/js?v=3.exp';
+  if (token)
+    src += '&key=' + token;
+  src += '&sensor=false&callback=mapInit';
+
+  var script = document.createElement('script');
+  script.type = 'text/javascript';
+  script.src = src;
+
+  window.mapView = this;
+  window['mapInit'] = function() {
+      this.mapView.finishInitalization();
+    };
+  document.body.appendChild(script);
+};
+
+
+/**
+ */
+org.apache.flex.maps.google.beads.MapView.prototype.finishInitalization = 
function() {
+  this.strand_.initialized = true;
+  this.strand_.dispatchEvent('ready');
+};
+

Reply via email to