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
