private IEnumerable <DockPane> GetPinnedDockPanes(WindowsManager windowsManager, Dock dock) { DockPanel dockPanel; switch (dock) { case Dock.Top: dockPanel = windowsManager.TopPinnedWindows; break; case Dock.Bottom: dockPanel = windowsManager.BottomPinnedWindows; break; case Dock.Left: dockPanel = windowsManager.LeftPinnedWindows; break; default: dockPanel = windowsManager.RightPinnedWindows; break; } return((from FrameworkElement element in dockPanel.Children select element).OfType <DockPane>().OrderBy(Panel.GetZIndex)); }
/// <summary> /// Writes the windows manager. /// </summary> /// <param name="windowsManager">The windows manager.</param> protected override void WriteWindowsManager(WindowsManager windowsManager) { XmlElement xmlElement = _document.CreateElement("WindowsManager"); _document.AppendChild(xmlElement); _elementStack.Push(xmlElement); }
/// <summary> /// Gets the dock panel from headers. /// </summary> /// <param name="windowsManager">The windows manager.</param> /// <param name="headerDock">The header dock.</param> /// <returns></returns> private IEnumerable <DockPane> GetDockPanelFromHeaders(WindowsManager windowsManager, Dock headerDock) { StackPanel headerHost; switch (headerDock) { case Dock.Top: headerHost = windowsManager.TopWindowHeaders; break; case Dock.Bottom: headerHost = windowsManager.BottomWindowHeaders; break; case Dock.Left: headerHost = windowsManager.LeftWindowHeaders; break; default: headerHost = windowsManager.RightWindowHeaders; break; } return((from FrameworkElement element in headerHost.Children select element.DataContext).OfType <DockPane>().OrderBy(Panel.GetZIndex)); }
/// <summary> /// Transfers the windows manager contents after desealization has finished /// </summary> /// <param name="windowsManager">The windows manager.</param> private void TransferWindowsManagerContents(WindowsManager windowsManager) { windowsManager.Clear(); // Transfer auto hide and pinned windows for all dock points); foreach (Dock dockPosition in DockPositions) { DockedWindows dockedWindows = _dockedWindows[dockPosition]; foreach (DockPane pinnedPane in dockedWindows.PinnedPanes) { windowsManager.AddPinnedWindow(pinnedPane, dockPosition); } foreach (DockPane autoHidePane in dockedWindows.AutoHidePanes) { windowsManager.AddAutoHideWindow(autoHidePane, dockPosition); } } // Transfer floating windows foreach (DockPane floatingPane in _floatingWindows) { windowsManager.AddFloatingWindow(floatingPane); } // Transfer document content switch (_rootContainer.State) { case DocumentContainerState.Empty: break; case DocumentContainerState.ContainsDocuments: List <object> documents = new List <object>(_rootContainer.Documents); _rootContainer.Clear(); foreach (object document in documents) { if (document is DocumentContent) { DocumentContent documentContent = (document as DocumentContent); documentContent.DetachDockPane(); windowsManager.DocumentContainer.AddDocument(documentContent.DockPane); } } break; case DocumentContainerState.SplitHorizontally: TransferDocumentGrid(windowsManager, true); break; case DocumentContainerState.SplitVertically: TransferDocumentGrid(windowsManager, false); break; default: throw new ArgumentOutOfRangeException(); } }
/// <summary> /// Serializes the specified windows manager to the stream /// </summary> /// <remarks>Caller must be responsible for closing the stream</remarks> /// <param name="stream">Stream to serialize contents of windows manager to</param> /// <param name="windowsManager">Windows manager to serialize</param> /// <exception cref="ArgumentNullException">stream or windowsManager are null</exception> /// <exception cref="InvalidOperationException">stream is not writable</exception> public void Serialize(Stream stream, WindowsManager windowsManager) { Validate.NotNull(stream, "stream"); Validate.NotNull(windowsManager, "windowsManager"); Validate.Assert<InvalidOperationException>(stream.CanWrite); InitializeStream(stream); NavigateWindowsManager(windowsManager); }
/// <summary> /// Serializes the specified windows manager to the stream /// </summary> /// <remarks>Caller must be responsible for closing the stream</remarks> /// <param name="stream">Stream to serialize contents of windows manager to</param> /// <param name="windowsManager">Windows manager to serialize</param> /// <exception cref="ArgumentNullException">stream or windowsManager are null</exception> /// <exception cref="InvalidOperationException">stream is not writable</exception> public void Serialize(Stream stream, WindowsManager windowsManager) { Validate.NotNull(stream, "stream"); Validate.NotNull(windowsManager, "windowsManager"); Validate.Assert <InvalidOperationException>(stream.CanWrite); InitializeStream(stream); NavigateWindowsManager(windowsManager); }
private void WritePinnedPanes(WindowsManager windowsManager) { InitializePinnedPanes(); Dock[] docks = new[] { Dock.Left, Dock.Top, Dock.Right, Dock.Bottom }; foreach (Dock dock in docks) { WritePinnedPanes(GetPinnedDockPanes(windowsManager, dock), dock); } FinalizePinnedPanes(); }
/// <summary> /// Transfers the document grid from _rootContainer to the main document container of specified windows manager /// </summary> /// <param name="windowsManager">The windows manager whose document content is the target of transferred child contents from _rootContainer</param> /// <param name="isHorizontal">if set to <c>true</c> indicates horizontal orientation otherwise vertical orientation</param> private void TransferDocumentGrid(WindowsManager windowsManager, bool isHorizontal) { Grid contentGrid = _rootContainer.Content as Grid; Validate.Assert <ArgumentNullException>(contentGrid != null); _rootContainer.Clear(); List <DocumentContainer> documentContainers = new List <DocumentContainer>(contentGrid.Children.OfType <DocumentContainer>()); contentGrid.Children.Clear(); windowsManager.DocumentContainer.AddDocumentContainers(documentContainers, isHorizontal); }
/// <summary> /// Called when tab item is dragged /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="System.Windows.Input.MouseButtonEventArgs"/> instance containing the event data.</param> private void OnTabItemMouseMove(object sender, RoutedEventArgs args) { if ((Mouse.LeftButton != MouseButtonState.Pressed) || (!DragStarted)) { return; } // Check for minimum distance in order to start drag Vector distance = Mouse.GetPosition(this) - DragStartPoint; if ((Math.Abs(distance.X) < SystemParameters.MinimumHorizontalDragDistance) && (Math.Abs(distance.Y) < SystemParameters.MinimumVerticalDragDistance)) { return; } DragStarted = false; WindowsManager windowsManager = this.GetLogicalParent <WindowsManager>(); TabItem currentItem = (args.OriginalSource as FrameworkElement).GetVisualParent <TabItem>(); if (currentItem == null) { return; } currentItem.Header = null; currentItem.Content = null; DocumentContent dockPaneContent = currentItem.DataContext as DocumentContent; Documents.Remove(dockPaneContent); dockPaneContent.DetachDockPane(); windowsManager.DocumentContainer.MergeEmptyDocumentContainers(); Point currentMousePoint = Mouse.GetPosition(windowsManager); DockPane pane = dockPaneContent.DockPane; Canvas.SetLeft(pane, currentMousePoint.X - pane.ActualWidth / 2); Canvas.SetTop(pane, currentMousePoint.Y); windowsManager.AddFloatingWindow(pane); }
/// <summary> /// Navigates the windows manager and serializes content /// </summary> /// <param name="windowsManager">The windows manager.</param> private void NavigateWindowsManager(WindowsManager windowsManager) { // Write windows manager itself WriteWindowsManager(windowsManager); // Write header panes WriteHeaderPanes(windowsManager); // Write pinned panes WritePinnedPanes(windowsManager); // Write floating panes WriteFloatingPanes(windowsManager); // Write document container WriteDocumentContainers(windowsManager.DocumentContainer); FinalizeSerialization(); }
/// <summary> /// Removes the document. /// </summary> /// <param name="documentContent">DocumentContent to remove</param> private void RemoveDocument(DocumentContent documentContent) { if (documentContent == null) { return; } Documents.Remove(documentContent); if (Documents.Count == 0) { State = DocumentContainerState.Empty; WindowsManager parentWindowsManager = this.GetVisualParent <WindowsManager>(); if (parentWindowsManager != null) { ReduceChild(parentWindowsManager.DocumentContainer); } } }
/// <summary> /// Deserializes the specified windows manager from the stream. /// </summary> /// <param name="stream">The stream.</param> /// <param name="windowsManager">The windows manager.</param> /// <exception cref="ArgumentNullException">stream or windowsManager are null</exception> /// <exception cref="InvalidOperationException">stream is not readable</exception> public void Deserialize(Stream stream, WindowsManager windowsManager) { Validate.NotNull(stream, "stream"); Validate.NotNull(windowsManager, "windowsManager"); Validate.Assert <InvalidOperationException>(stream.CanRead); _dockedWindows = new Dictionary <Dock, DockedWindows>(); _floatingWindows = new List <DockPane>(); _rootContainer = null; DockPositions.ForEach(dock => _dockedWindows[dock] = new DockedWindows()); // Initialize stream InitializeStream(stream); // Navigate windows manager NavigateWindowsManager(); // Finalize deserialization FinalizeDeserialization(); // Transfer contents to windows manager TransferWindowsManagerContents(windowsManager); }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: #line 34 "..\..\..\MainWindow.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Click); #line default #line hidden return; case 2: #line 35 "..\..\..\MainWindow.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Save); #line default #line hidden return; case 3: #line 36 "..\..\..\MainWindow.xaml" ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.Button_Load); #line default #line hidden return; case 4: this.WindowsManager = ((MixModes.Synergy.VisualFramework.Windows.WindowsManager)(target)); return; } this._contentLoaded = true; }
private IEnumerable<DockPane> GetPinnedDockPanes(WindowsManager windowsManager, Dock dock) { DockPanel dockPanel; switch (dock) { case Dock.Top: dockPanel = windowsManager.TopPinnedWindows; break; case Dock.Bottom: dockPanel = windowsManager.BottomPinnedWindows; break; case Dock.Left: dockPanel = windowsManager.LeftPinnedWindows; break; default: dockPanel = windowsManager.RightPinnedWindows; break; } return (from FrameworkElement element in dockPanel.Children select element).OfType<DockPane>().OrderBy(Panel.GetZIndex); }
private void WriteFloatingPanes(WindowsManager windowsManager) { IEnumerable <DockPane> floatingPanes = (from FrameworkElement element in windowsManager.FloatingPanel.Children select element).OfType <DockPane>(); WriteFloatingPanes(floatingPanes); }
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.UserControl = ((MixModes.Synergy.VisualFramework.Windows.WindowsManager)(target)); return; case 2: this.LayoutRoot = ((System.Windows.Controls.Grid)(target)); return; case 3: this.TopWindowHeaders = ((System.Windows.Controls.StackPanel)(target)); return; case 4: this.LeftWindowHeaders = ((System.Windows.Controls.StackPanel)(target)); return; case 5: this.RightWindowHeaders = ((System.Windows.Controls.StackPanel)(target)); return; case 6: this.BottomWindowHeaders = ((System.Windows.Controls.StackPanel)(target)); return; case 7: this.LeftPinnedWindows = ((System.Windows.Controls.DockPanel)(target)); return; case 8: this.RightPinnedWindows = ((System.Windows.Controls.DockPanel)(target)); return; case 9: this.TopPinnedWindows = ((System.Windows.Controls.DockPanel)(target)); return; case 10: this.BottomPinnedWindows = ((System.Windows.Controls.DockPanel)(target)); return; case 11: this.DocumentContainer = ((MixModes.Synergy.VisualFramework.Windows.DocumentContainer)(target)); return; case 12: this.DockingIllustrationPanel = ((System.Windows.Controls.DockPanel)(target)); return; case 13: this.PopupArea = ((System.Windows.Controls.DockPanel)(target)); return; case 14: this.FloatingPanel = ((System.Windows.Controls.Canvas)(target)); return; case 15: this.DockingPanel = ((System.Windows.Controls.DockPanel)(target)); return; } this._contentLoaded = true; }
/// <summary> /// Writes the windows manager. /// </summary> /// <param name="windowsManager">The windows manager.</param> protected abstract void WriteWindowsManager(WindowsManager windowsManager);
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.MainAppWindow = ((GAP.MainWindow)(target)); return; case 2: this.grid_Main = ((System.Windows.Controls.Grid)(target)); return; case 3: this.MainMenu = ((System.Windows.Controls.Menu)(target)); return; case 4: this.File_Save = ((System.Windows.Controls.MenuItem)(target)); return; case 5: this.File_Save_As = ((System.Windows.Controls.MenuItem)(target)); return; case 6: this.Data_Import_Data = ((System.Windows.Controls.MenuItem)(target)); return; case 7: this.Data_Export_Data = ((System.Windows.Controls.MenuItem)(target)); return; case 8: this.Data_Create_Dataset = ((System.Windows.Controls.MenuItem)(target)); return; case 9: this.mnuFullScreen = ((System.Windows.Controls.MenuItem)(target)); #line 195 "..\..\MainWindow.xaml" this.mnuFullScreen.Click += new System.Windows.RoutedEventHandler(this.mnuFullScreen_Click); #line default #line hidden return; case 10: this.WindowsManager = ((MixModes.Synergy.VisualFramework.Windows.WindowsManager)(target)); return; case 11: this.StatusBar1 = ((System.Windows.Controls.Primitives.StatusBar)(target)); return; case 12: this.TextBlockUndoRedoMessage = ((System.Windows.Controls.TextBlock)(target)); return; case 13: this.ProgressRing = ((MahApps.Metro.Controls.ProgressRing)(target)); return; } this._contentLoaded = true; }
private void WriteFloatingPanes(WindowsManager windowsManager) { IEnumerable<DockPane> floatingPanes = (from FrameworkElement element in windowsManager.FloatingPanel.Children select element).OfType<DockPane>(); WriteFloatingPanes(floatingPanes); }
/// <summary> /// Gets the dock panel from headers. /// </summary> /// <param name="windowsManager">The windows manager.</param> /// <param name="headerDock">The header dock.</param> /// <returns></returns> private IEnumerable<DockPane> GetDockPanelFromHeaders(WindowsManager windowsManager, Dock headerDock) { StackPanel headerHost; switch (headerDock) { case Dock.Top: headerHost = windowsManager.TopWindowHeaders; break; case Dock.Bottom: headerHost = windowsManager.BottomWindowHeaders; break; case Dock.Left: headerHost = windowsManager.LeftWindowHeaders; break; default: headerHost = windowsManager.RightWindowHeaders; break; } return (from FrameworkElement element in headerHost.Children select element.DataContext).OfType<DockPane>().OrderBy(Panel.GetZIndex); }