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);
        }
Beispiel #13
0
        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);
Beispiel #18
0
 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 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();
        }
 private void WriteFloatingPanes(WindowsManager windowsManager)
 {
     IEnumerable<DockPane> floatingPanes = (from FrameworkElement element in windowsManager.FloatingPanel.Children select element).OfType<DockPane>();
     WriteFloatingPanes(floatingPanes);
 }
        /// <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>
 /// Writes the windows manager.
 /// </summary>
 /// <param name="windowsManager">The windows manager.</param>
 protected abstract void WriteWindowsManager(WindowsManager windowsManager);
        /// <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);
        }