Ejemplo n.º 1
0
 public void To(ILinkableViewer fromViewer, GeoDo.RSS.Core.DrawEngine.CoordEnvelope viewport)
 {
     foreach (ILinkableViewer v in _viewers)
     {
         if (!v.Equals(fromViewer))
         {
             v.To(viewport.Clone());
         }
     }
 }
Ejemplo n.º 2
0
 public void UpdatePrimaryLinkWindow()
 {
     if (_activeViewer is ILinkableViewer)
     {
         ILinkableViewer linkViewer = _activeViewer as ILinkableViewer;
         if (!linkViewer.IsPrimaryLinkWnd && _linkableViewerManager.IsLinking(linkViewer))
         {
             _linkableViewerManager.ChangePrimaryLinkViewer(linkViewer);
         }
     }
 }
Ejemplo n.º 3
0
 public void ChangePrimaryLinkViewer(ILinkableViewer viewer)
 {
     if (viewer == null)
     {
         return;
     }
     if (_primaryViewer != null)
     {
         _primaryViewer.IsPrimaryLinkWnd       = false;
         _primaryViewer.OnCoordEnvelopeChanged = null;
     }
     viewer.IsPrimaryLinkWnd        = true;
     _primaryViewer                 = viewer;
     viewer.OnCoordEnvelopeChanged += new EventHandler((sender, arg) =>
     {
         To(viewer, ((viewer as ICanvasHost).Canvas).CurrentEnvelope);
     });
 }
Ejemplo n.º 4
0
        public override void Execute()
        {
            ILinkableViewer[] viewers = GetLinkableViewers();
            if (viewers == null || viewers.Length <= 1)
            {
                return;
            }
            ILinkableViewer pv = viewers[0];

            if (!(pv is ICanvasViewer))
            {
                pv = viewers[1];
            }
            pv.IsPrimaryLinkWnd = true;
            _smartSession.SmartWindowManager.LinkableViewerManager.Layout = GetLayoutStyle();
            foreach (ILinkableViewer v in viewers)
            {
                _smartSession.SmartWindowManager.LinkableViewerManager.Link(v);
            }
            switch (_smartSession.SmartWindowManager.LinkableViewerManager.Layout)
            {
            case enumViewerLayoutStyle.HorizontalLayout:
                for (int i = 1; i < viewers.Length; i++)
                {
                    _smartSession.SmartWindowManager.NewHorizontalGroup(viewers[i] as ISmartViewer);
                }
                break;

            case enumViewerLayoutStyle.VerticalLayout:
                for (int i = 1; i < viewers.Length; i++)
                {
                    _smartSession.SmartWindowManager.NewVerticalGroup(viewers[i] as ISmartViewer);
                }
                break;
            }
            _smartSession.SmartWindowManager.UpdatePrimaryLinkWindow();
            ICanvasViewer primaryViewer = _smartSession.SmartWindowManager.ActiveCanvasViewer as ICanvasViewer;

            if (primaryViewer != null)
            {
                primaryViewer.Canvas.CurrentEnvelope = (primaryViewer as ICanvasViewer).Canvas.CurrentEnvelope;
                primaryViewer.Canvas.Refresh(enumRefreshType.All);
            }
        }
Ejemplo n.º 5
0
 public void Unlink(ILinkableViewer viewer)
 {
     if (viewer != null && _viewers.Contains(viewer))
     {
         if (viewer is ICanvasViewer && (viewer as ICanvasViewer).Canvas != null)
         {
             (viewer as ICanvasViewer).Canvas.IsLinking = false;
         }
         if (viewer.IsPrimaryLinkWnd)
         {
             viewer.OnCoordEnvelopeChanged = null;
             viewer.IsPrimaryLinkWnd       = false;
         }
         _viewers.Remove(viewer);
         if (_viewers.Count == 1)
         {
             _viewers[0].OnCoordEnvelopeChanged = null;
             _viewers.Clear();
         }
     }
 }
Ejemplo n.º 6
0
 public bool Link(ILinkableViewer viewer)
 {
     if (viewer != null && !_viewers.Contains(viewer))
     {
         if (viewer.IsPrimaryLinkWnd)
         {
             viewer.OnCoordEnvelopeChanged += new EventHandler((sender, arg) =>
             {
                 To(viewer, ((viewer as ICanvasHost).Canvas).CurrentEnvelope.Clone());
             });
             _primaryViewer = viewer;
         }
         if (viewer is ICanvasViewer)
         {
             (viewer as ICanvasViewer).Canvas.IsLinking = true;
         }
         _viewers.Add(viewer);
         return(true);
     }
     return(false);
 }
Ejemplo n.º 7
0
 public bool IsLinking(ILinkableViewer viewer)
 {
     return(_viewers.Contains(viewer));
 }