public void To(ILinkableViewer fromViewer, GeoDo.RSS.Core.DrawEngine.CoordEnvelope viewport) { foreach (ILinkableViewer v in _viewers) { if (!v.Equals(fromViewer)) { v.To(viewport.Clone()); } } }
public void UpdatePrimaryLinkWindow() { if (_activeViewer is ILinkableViewer) { ILinkableViewer linkViewer = _activeViewer as ILinkableViewer; if (!linkViewer.IsPrimaryLinkWnd && _linkableViewerManager.IsLinking(linkViewer)) { _linkableViewerManager.ChangePrimaryLinkViewer(linkViewer); } } }
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); }); }
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); } }
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(); } } }
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); }
public bool IsLinking(ILinkableViewer viewer) { return(_viewers.Contains(viewer)); }