Module: nagvis
Branch: master
Commit: 3508ea41b0c20292ee3cf54407388d27a5a2c9ba
URL:    
http://nagvis.git.sourceforge.net/git/gitweb.cgi?p=nagvis/nagvis/commit/?id=3508ea41b0c20292ee3cf54407388d27a5a2c9ba

Author: Roman Kyrylych <[email protected]>
Date:   Tue Aug 18 16:47:15 2009 +0300

gmap: Implemented link line change according to status

Signed-off-by: Roman Kyrylych <[email protected]>

---

 uifx/src/modules/gmap/view/controls/LinkLine.as |   81 ++++++++++++++++++++++-
 1 files changed, 80 insertions(+), 1 deletions(-)

diff --git a/uifx/src/modules/gmap/view/controls/LinkLine.as 
b/uifx/src/modules/gmap/view/controls/LinkLine.as
index da062a2..6bd318f 100644
--- a/uifx/src/modules/gmap/view/controls/LinkLine.as
+++ b/uifx/src/modules/gmap/view/controls/LinkLine.as
@@ -23,16 +23,95 @@ package modules.gmap.view.controls
 {
        import com.google.maps.LatLng;
        import com.google.maps.overlays.Polyline;
+       import com.google.maps.overlays.PolylineOptions;
+       import com.google.maps.styles.StrokeStyle;
+
+       import flash.events.MouseEvent;
 
        import modules.gmap.domain.Link;
+       import modules.gmap.events.LinkEvent;
+
+       import mx.graphics.Stroke;
 
        public class LinkLine extends Polyline
        {
+               private var _lastTimeClicked : Number = 0;
+               private var _link : Link;
+
                public function LinkLine(link : Link)
                {
                        var point1 : LatLng = 
LatLng.fromUrlValue(link.location1.point);
                        var point2 : LatLng = 
LatLng.fromUrlValue(link.location2.point);
-                       super([point1, point2]);
+
+                       var options : PolylineOptions = new PolylineOptions({
+                               strokeStyle: new StrokeStyle({
+                                       color: chooseColor(link.state),
+                                       thickness: 4,
+                                       alpha: 1
+                               })
+                       });
+                       options.strokeStyle.color = chooseColor(link.state);
+
+                       super([point1, point2], options);
+
+                       this.addEventListener(MouseEvent.CLICK, this.onClick); 
+
+                       _link = link;
+                       _link.addEventListener('change', this.onChange);
+               }
+
+               /***
+                * Handles click & double click events
+                * because of the bug in Google Maps API
+                * 
http://code.google.com/p/gmaps-api-issues/issues/detail?id=394
+                ***/
+               protected function onClick(event : *):void
+               {
+                       var date : Date = new Date;
+
+                       if (date.time - _lastTimeClicked < 350)
+                       {
+                               dispatchEvent(
+                                       new LinkEvent(LinkEvent.ACTIVATE, 
_link, true)
+                               );
+                               return;
+                       }
+
+                       _lastTimeClicked = date.time;
+                       dispatchEvent(
+                               new LinkEvent(LinkEvent.SELECTED, _link, true)
+                       );
+               }
+
+               private static function chooseColor(state : Number) : int
+               {
+                       switch (state)
+                       {
+                               case Link.STATE_OK:
+                                       return 0x33FF33;
+
+                               case Link.STATE_WARNING:
+                                       return 0xFFFF33;
+
+                               case Link.STATE_ERROR:
+                                       return 0xFF3333;
+
+                               case Link.STATE_UNKNOWN:
+                               default:
+                                       return 0xCCCCCC;
+                       }
+               }
+
+               protected function onChange(event : *) : void
+               {
+                       var options : PolylineOptions = this.getOptions();
+                       options.strokeStyle.color = chooseColor(link.state);
+                       this.setOptions(options);
+               }
+
+               public function get link() : Link
+               {
+                       return _link;
                }
        }
 }


------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Nagvis-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nagvis-checkins

Reply via email to