using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; #pragma warning disable 1591 namespace OSGeo.MapGuide.Viewer { /// /// Defines a method for handling viewer selections /// /// public delegate void MgLayerSelectionEventHandler(MgSelectionSet selectedFeatures); [DefaultEvent("SelectionMade")] //NOXLATE [ToolboxItem(true)] public class MgLayerSelectionHandler : Component { [Category("MapGuide Viewer")] //NOXLATE [Description("The map layers that this component will listen for selections")] //NOXLATE public string[] Layers { get; set; } private IMapViewer _viewer; [Category("MapGuide Viewer")] //NOXLATE [Description("The map viewer instance")] //NOXLATE public IMapViewer Viewer { get { return _viewer; } set { if (_viewer != null) _viewer.SelectionChanged -= OnViewerSelectionChanged; _viewer = value; if (_viewer != null) _viewer.SelectionChanged += OnViewerSelectionChanged; } } void OnViewerSelectionChanged(object sender, EventArgs e) { if (this.Layers == null || this.Layers.Length == 0) return; var sel = _viewer.GetSelection(); var selLayers = sel.GetLayers(); if (selLayers != null) { var selectionSet = new MgSelectionSet(sel, _viewer.GetProvider()); var layers = new Dictionary(); for (int i = 0; i < selLayers.Count; i++) { var layerItem = selLayers.GetItem(i); layers.Add(layerItem.Name, layerItem); } foreach (var layerName in this.Layers) { if (layers.ContainsKey(layerName)) { var h = this.SelectionMade; if (h != null) { h(selectionSet); } } } } } [Category("MapGuide Viewer")] //NOXLATE [Description("Raised when a selection on any of the specified layers has been made")] //NOXLATE public event MgLayerSelectionEventHandler SelectionMade; } }