void DisplayOverlay()
 {
     if ((!_allViewModelsAreReady) || (!_viewIsActivated)) return;
     OverlayShapeMapLayer overlayLayer;
     if (_selectedOverlayDescriptor == null)
     {
         overlayLayer = EnvironmentTabMapLayers.Find<OverlayShapeMapLayer>(LayerType.OverlayFile, "Overlay");
         if (overlayLayer != null) overlayLayer.IsChecked = false;
         return;
     }
     //_dispatcher.InvokeIfRequired(DisplayWorldMap, DispatcherPriority.Normal);
     var overlayFilename = Path.Combine(Globals.AppSettings.ScenarioDataDirectory, _selectedRangeComplexDescriptor.Data.Name, "Areas", Path.GetFileNameWithoutExtension(_selectedOverlayDescriptor.DataFilename) + ".ovr");
     overlayLayer = EnvironmentTabMapLayers.Find<OverlayShapeMapLayer>(LayerType.OverlayFile, "Overlay") ?? new OverlayShapeMapLayer
     {
         Name = "Overlay",
         CanBeRemoved = true,
         CanBeReordered = true,
         CanChangeAreaColor = false,
         CanChangeLineColor = true,
         LineWidth = 1,
         LayerType = LayerType.OverlayFile,
     };
     overlayLayer.Clear();
     var overlay = new OverlayFile(overlayFilename);
     foreach (var shape in overlay.Shapes)
         overlayLayer.Add(shape);
     overlayLayer.Done();
     overlayLayer.IsChecked = true;
     if (EnvironmentTabMapLayers.IndexOf(overlayLayer) == -1) EnvironmentTabMapLayers.Add(overlayLayer);
     MediatorMessage.Send(MediatorMessage.RefreshMap, true);
 }
 public static GeoRect ValidateFile(string overlayFileName, string overlayName, out string errorText)
 {
     errorText = "";
     if (!File.Exists(overlayName))
     {
         errorText += "Specified " + overlayName + " does not exist" + System.Environment.NewLine;
     }
     try
     {
         var myOvr = new OverlayFile(overlayFileName);
         if (myOvr.Shapes.Length != 1 || !myOvr.Shapes[0].IsUsableAsPerimeter)
             errorText += "Specified " + overlayName + " is invalid" + System.Environment.NewLine;
         else return new GeoRect(myOvr.Shapes[0].GeoRect);
     }
     catch (Exception e)
     {
         errorText += "Error loading " + overlayFileName + ": " + e.Message + System.Environment.NewLine;
     }
     return null;
 }
 void ZoomToRangeComplex()
 {
     var opAreaOverlayFilename = Path.Combine(Globals.AppSettings.ScenarioDataDirectory, _selectedRangeComplexDescriptor.Data.Name, "Areas", _selectedRangeComplexDescriptor.Data.OpsLimitFile);
     var opsLimit = new OverlayFile(opAreaOverlayFilename);
     var north = (float)opsLimit.Shapes[0].BoundingBox.Bottom + 3;
     var west = (float)opsLimit.Shapes[0].BoundingBox.Left - 3;
     var south = (float)opsLimit.Shapes[0].BoundingBox.Top - 3;
     var east = (float)opsLimit.Shapes[0].BoundingBox.Right + 3;
     var mapExtent = new RectangleShape(west, north, east, south);
     MediatorMessage.Send(MediatorMessage.SetCurrentExtent, mapExtent);
 }