using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; #pragma warning disable 1591 namespace OSGeo.MapGuide.Viewer { /// /// A generic component for measuring /// [ToolboxItem(true)] public class MgMeasureComponent : MgViewerComponent { public MgMeasureComponent() { this.Icon = Properties.Resources.measure; this.Label = this.ToolTipText = Strings.TitleMeasure; this.MeasureMode = MeasureMode.Line; this.PreferredUnits = MeasurementUnit.Meters; } protected override MgControlView CreateControlView() { switch (_measureMode) { case MeasureMode.Line: return new MgLineMeasureControlImpl(this.Viewer, this.PreferredUnits); default: throw new NotImplementedException(); } } [Category("MapGuide Component Properties")] //NOXLATE [Description("The default units to measure in")] //NOXLATE [DefaultValue(MeasurementUnit.Meters)] [MgComponentProperty] public MeasurementUnit PreferredUnits { get; set; } private MeasureMode _measureMode; [Category("MapGuide Component Properties")] //NOXLATE [DefaultValue(MeasureMode.Line)] [Browsable(true)] [Description("The mode of measurement")] //NOXLATE [MgComponentProperty] public MeasureMode MeasureMode { get { return _measureMode; } set { if (value == MeasureMode.Area) throw new NotImplementedException(Strings.ErrorNotImplemented); _measureMode = value; } } } /// /// Defines the valid types of measurements that can be done by the component /// public enum MeasureMode { /// /// Measure distance by tracing 1 or more line segments /// Line, /// /// Measure area by tracing a polygon /// Area } }