using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using OSGeo.MapGuide.Viewer; using OSGeo.MapGuide; namespace SampleExtension { public partial class HelloViewer : MgControlView { private IMapViewer _viewer; public HelloViewer(IMapViewer viewer) { InitializeComponent(); this.Title = "Hello Viewer"; _viewer = viewer; _viewer.PropertyChanged += OnViewerPropertyChanged; _viewer.SelectionChanged += OnViewerSelectionChanged; CheckSelectionState(); CheckBusyState(); CheckActiveTool(); } protected override void SubCleanup() { //When subscribing to events, be a responsible user and //unsubscribe on cleanup _viewer.PropertyChanged -= OnViewerPropertyChanged; _viewer.SelectionChanged -= OnViewerSelectionChanged; } void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "IsBusy") CheckBusyState(); else if (e.PropertyName == "ActiveTool") CheckActiveTool(); } void OnViewerSelectionChanged(object sender, EventArgs e) { CheckSelectionState(); } private void CheckActiveTool() { lblActiveTool.Text = "Active Tool: " + _viewer.ActiveTool.ToString(); } private void CheckBusyState() { lblViewerBusyState.Text = "Viewer " + ((_viewer.IsBusy) ? "is busy" : "is not busy"); } private void CheckSelectionState() { MgSelectionBase selection = _viewer.GetSelection(); MgReadOnlyLayerCollection layers = selection.GetLayers(); if (layers != null) btnClearSelection.Enabled = true; else btnClearSelection.Enabled = false; } private void btnZoomToLocation_Click(object sender, EventArgs e) { _viewer.ZoomToView(-87.732492, 43.743934, 5000, true); } private void btnClearSelection_Click(object sender, EventArgs e) { _viewer.ClearSelection(); } private void btnInitialView_Click(object sender, EventArgs e) { _viewer.InitialMapView(); } private void btnCopyMap_Click(object sender, EventArgs e) { _viewer.CopyMap(); MessageBox.Show("Map image (current view) copied to clipboard"); } } }