private static void ReorderAllPreviews()
        {
            LayoutDocumentPaneGroup paneGroup = (LayoutDocumentPaneGroup)((LayoutPanel)dockManager.Layout.Children.ElementAt(0)).Children[0];

            foreach (LayoutDocumentPane a in paneGroup.Children)
            {
                for (int i = a.Children.Count - 2; i >= 0; i--)
                {
                    var frame = a.Children[i].Content as Frame;
                    if (frame == null)
                    {
                        break;
                    }
                    var prev     = TaskbarManager.Instance.TabbedThumbnail.GetThumbnailPreview(frame);
                    var nextprev =
                        TaskbarManager.Instance.TabbedThumbnail.GetThumbnailPreview(
                            (UIElement)a.Children[i + 1].Content);
                    if (prev == null || nextprev == null)
                    {
                        break;
                    }
                    TabbedThumbnailManager.SetTabOrder(prev,
                                                       TaskbarManager.Instance.TabbedThumbnail.GetThumbnailPreview(
                                                           (UIElement)a.Children[i + 1].Content));
                }
            }

            SetActivePreview((UIElement)dockManager.ActiveContent);
        }
Example #2
0
        // Find LayoutDocumentPane where IS3View can be add.
        public LayoutDocumentPane FindViewHolder()
        {
            if (_prj == null)
            {
                return(null);
            }

            EngineeringMap baseMap = _prj.projDef.EngineeringMaps.FirstOrDefault();

            if (baseMap == null)
            {
                return(null);
            }
            LayoutContent layoutContent = FindLayoutContentByID(baseMap.MapID);

            if (layoutContent == null)
            {
                return(null);
            }

            LayoutDocumentPane docPane = layoutContent.Parent as LayoutDocumentPane;

            if (docPane == null)
            {
                LayoutRoot              root         = layoutContent.Root as LayoutRoot;
                LayoutPanel             panel        = root.Children.First() as LayoutPanel;
                LayoutDocumentPaneGroup docPaneGroup =
                    panel.Children.ElementAt(1) as LayoutDocumentPaneGroup;
                docPane = docPaneGroup.Children.First()
                          as LayoutDocumentPane;
            }
            return(docPane);
        }
Example #3
0
 private void AddLayoutDocument(LayoutDocument layoutDocument)
 {
     LayoutDocumentPaneGroup.Descendents()
     .OfType <LayoutDocumentPane>()
     .First()
     .Children.Add(layoutDocument);
 }
        private static void thumbnail_TabbedThumbnailClosed(object sender, TabbedThumbnailClosedEventArgs e)
        {
            //var layoutDoc = LayoutPane.Children.Where(x => x.Content == e.WindowsControl).SingleOrDefault();
            LayoutDocumentPaneGroup paneGroup = (LayoutDocumentPaneGroup)((LayoutPanel)dockManager.Layout.Children.ElementAt(0)).Children[0];
            LayoutContent           layoutDoc = null;

            foreach (LayoutDocumentPane a in paneGroup.Children)
            {
                layoutDoc = a.Children.Where(x => x.Content == e.WindowsControl).SingleOrDefault();
                if (layoutDoc != null)
                {
                    break;
                }
            }
            if (layoutDoc == null)
            {
                return;
            }
            var controlView = layoutDoc.Content as IControlView;

            if (controlView == null)
            {
                controlView = ((Frame)layoutDoc.Content).Content as IControlView;
            }
            if (controlView != null && controlView.IsModified)
            {
                BAMessageBox.ShowInfo(Strings.Message_MainWindow_ShowPage_ModifiedView);
            }
            layoutDoc.ContentId = "CodeRemoval";
            layoutDoc.Parent.RemoveChild(layoutDoc);
            SetActivePreview((UIElement)dockManager.ActiveContent);
        }
Example #5
0
        private bool FindParentLayoutDocumentPane(ILayoutDocumentPane documentPane, out LayoutDocumentPaneGroup containerPaneGroup, out LayoutPanel containerPanel)
        {
            containerPaneGroup = null;
            containerPanel     = null;
            if (documentPane.Parent is LayoutPanel)
            {
                containerPaneGroup = null;
                containerPanel     = documentPane.Parent as LayoutPanel;
                return(true);
            }
            if (!(documentPane.Parent is LayoutDocumentPaneGroup))
            {
                return(false);
            }
            LayoutDocumentPaneGroup parent = documentPane.Parent as LayoutDocumentPaneGroup;

            do
            {
                if (parent.Parent is LayoutPanel)
                {
                    break;
                }
                parent = parent.Parent as LayoutDocumentPaneGroup;
            }while (parent != null);
            if (parent == null)
            {
                return(false);
            }
            containerPaneGroup = parent;
            containerPanel     = parent.Parent as LayoutPanel;
            return(true);
        }
        private void ExecuteNewVerticalTabGroupCommand(object parameter)
        {
            var layoutElement       = LayoutElement;
            var parentDocumentGroup = layoutElement.FindParent <LayoutDocumentPaneGroup>();
            var parentDocumentPane  = layoutElement.Parent as LayoutDocumentPane;

            if (parentDocumentGroup == null)
            {
                if (parentDocumentPane != null)
                {
                    var grandParent = parentDocumentPane.Parent;
                    parentDocumentGroup = new LayoutDocumentPaneGroup()
                    {
                        Orientation = Orientation.Horizontal
                    };
                    grandParent.ReplaceChild(parentDocumentPane, parentDocumentGroup);
                }
                parentDocumentGroup?.Children.Add(parentDocumentPane);
            }
            if (parentDocumentGroup != null)
            {
                parentDocumentGroup.Orientation = Orientation.Horizontal;
                int indexOfParentPane = parentDocumentGroup.IndexOfChild(parentDocumentPane);
                parentDocumentGroup.InsertChildAt(indexOfParentPane + 1, new LayoutDocumentPane(layoutElement));
            }
            layoutElement.IsActive = true;
            layoutElement.Root.CollectGarbage();
        }
Example #7
0
 public static void DockHorizontal(LayoutContent layoutContent, ILayoutElement paneRelativeTo, GridLength dockHeight, bool dockBefore = false)
 {
     if (paneRelativeTo is ILayoutDocumentPane parentDocumentPane)
     {
         var parentDocumentGroup = paneRelativeTo.FindParent <LayoutDocumentPaneGroup>();
         if (parentDocumentGroup == null)
         {
             var grandParent = parentDocumentPane.Parent as ILayoutContainer;
             parentDocumentGroup = new LayoutDocumentPaneGroup()
             {
                 Orientation = System.Windows.Controls.Orientation.Vertical
             };
             grandParent.ReplaceChild(paneRelativeTo, parentDocumentGroup);
             parentDocumentGroup.Children.Add(parentDocumentPane);
         }
         parentDocumentGroup.Orientation = System.Windows.Controls.Orientation.Vertical;
         int indexOfParentPane  = parentDocumentGroup.IndexOfChild(parentDocumentPane);
         var layoutDocumentPane = new LayoutDocumentPane(layoutContent)
         {
             DockHeight = dockHeight
         };
         parentDocumentGroup.InsertChildAt(dockBefore ? indexOfParentPane : indexOfParentPane + 1, layoutDocumentPane);
         layoutContent.IsActive = true;
         layoutContent.Root.CollectGarbage();
         Application.Current.MainWindow.Dispatcher.Invoke(() => {
             layoutDocumentPane.DockHeight = dockHeight;
         }, System.Windows.Threading.DispatcherPriority.Loaded);
     }
 }
Example #8
0
        internal override LayoutElement Convert(UiManager uiManager)
        {
            var lr = new LayoutDocumentPaneGroup
            {
                DockWidth   = new GridLength(Width.Value, Width.Unit),
                DockHeight  = new GridLength(Height.Value, Height.Unit),
                Orientation = Orientation
            };

            foreach (var x in Children)
            {
                if (x is LayoutInfo)
                {
                    lr.Children.Add((ILayoutDocumentPane)((LayoutInfo)x).Convert(uiManager));
                }
                else if (x is PaneInfo)
                {
                    lr.Children.Add((ILayoutDocumentPane)((PaneInfo)x).Convert(uiManager));
                }
                else
                {
                    throw new Exception();
                }
            }
            return(lr);
        }
        public void AfterInsertDocument(LayoutRoot layout,
                                        LayoutDocument anchorableShown)
        {
            if (anchorableShown.Content is BrowserViewModel)
            {
                var parentDocumentGroup = anchorableShown.FindParent <LayoutDocumentPaneGroup>();
                var parentDocumentPane  = anchorableShown.Parent as LayoutDocumentPane;

                if (parentDocumentGroup == null)
                {
                    var grandParent = parentDocumentPane.Parent;
                    parentDocumentGroup = new LayoutDocumentPaneGroup
                    {
                        Orientation = Orientation.Horizontal
                    };
                    grandParent.ReplaceChild(parentDocumentPane, parentDocumentGroup);
                    parentDocumentGroup.Children.Add(parentDocumentPane);
                }
                parentDocumentGroup.Orientation = Orientation.Horizontal;
                var indexOfParentPane = parentDocumentGroup.IndexOfChild(parentDocumentPane);
                parentDocumentGroup.InsertChildAt(indexOfParentPane + 1,
                                                  new LayoutDocumentPane(anchorableShown));
                anchorableShown.IsActive = true;
                //anchorableShown.Root.CollectGarbage();
            }
        }
Example #10
0
        /// <summary>
        /// Find LayoutDocumentPane with <paramref name="frame"/> inside
        /// </summary>
        private static LayoutDocumentPane FindLayoutDocumentPane(Frame frame)
        {
            LayoutDocumentPaneGroup paneGroup =
                (LayoutDocumentPaneGroup)((LayoutPanel)dockManager.Layout.Children.ElementAt(0)).Children[0];

            return((from LayoutDocumentPane a in paneGroup.Children let layDoc = a.Children.Where(x => x.Content == frame).SingleOrDefault() where layDoc != null select a).FirstOrDefault());
        }
Example #11
0
        private static void thumbnail_TabbedThumbnailActivated(object sender, TabbedThumbnailEventArgs e)
        {
            Frame content = e.WindowsControl as Frame;

            if (content != null)
            {
                //var currentIndex = LayoutPane.Children.IndexOf();
                int currentIndex;
                LayoutDocumentPaneGroup paneGroup = (LayoutDocumentPaneGroup)((LayoutPanel)dockManager.Layout.Children.ElementAt(0)).Children[0];
                foreach (LayoutDocumentPane a in paneGroup.Children)
                {
                    var layDoc = a.Children.Where(x => x.Content == content).SingleOrDefault();
                    if (layDoc != null)
                    {
                        currentIndex              = a.Children.IndexOf(layDoc);
                        a.SelectedContentIndex    = currentIndex;
                        dockManager.ActiveContent = content;
                        if (ParentWindow.WindowState == WindowState.Minimized)
                        {
                            ParentWindow.WindowState = WindowState.Maximized;
                        }
                        if (!ParentWindow.IsActive)
                        {
                            ParentWindow.Activate();
                        }
                        break;
                    }
                }
            }
        }
Example #12
0
        protected override void OnExecute(object parameter)
        {
            var layoutElement = DockingManager.Instance?.Layout.ActiveContent;

            if (layoutElement == null)
            {
                return;
            }
            var parentDocumentGroup = layoutElement.FindParent <LayoutDocumentPaneGroup>();
            var parentDocumentPane  = layoutElement.Parent as LayoutDocumentPane;

            if (parentDocumentGroup == null)
            {
                if (parentDocumentPane != null)
                {
                    var grandParent = parentDocumentPane.Parent;
                    parentDocumentGroup = new LayoutDocumentPaneGroup {
                        Orientation = Orientation.Horizontal
                    };
                    grandParent.ReplaceChild(parentDocumentPane, parentDocumentGroup);
                }
                parentDocumentGroup?.Children.Add(parentDocumentPane);
            }
            if (parentDocumentGroup != null)
            {
                parentDocumentGroup.Orientation = Orientation.Horizontal;
                var indexOfParentPane = parentDocumentGroup.IndexOfChild(parentDocumentPane);
                parentDocumentGroup.InsertChildAt(indexOfParentPane + 1, new LayoutDocumentPane(layoutElement));
            }
            layoutElement.IsActive = true;
            layoutElement.Root.CollectGarbage();
        }
Example #13
0
 private void __restore_documents_docking_layout(IReadOnlyList <ToolLayout> dockingLayouts, LayoutDocumentPaneGroup root)
 {
     foreach (var layout in dockingLayouts)
     {
         if (layout.Type == TOOL_LAYOUT_TYPE_T.PANEL)
         {
             var layoutpanel          = layout as LayoutPanel <LayoutDocument>;
             LayoutDocumentPane panel = __restore_documents_docking_layout(layoutpanel.Documents);
             panel.DockHeight = new GridLength(layoutpanel.Height, GridUnitType.Star);
             panel.DockWidth  = new GridLength(layoutpanel.Width, GridUnitType.Star);
             root.Children.Add(panel);
         }
         else
         {
             var layoutgroup = layout as LayoutGroup;
             var group       = new LayoutDocumentPaneGroup()
             {
                 Orientation = layoutgroup.Orientation == TOOL_LAYOUT_ORIENTATION_T.HORIZONTAL ? Orientation.Horizontal : Orientation.Vertical
             };
             group.DockHeight = new GridLength(layoutgroup.Height, GridUnitType.Star);
             group.DockWidth  = new GridLength(layoutgroup.Width, GridUnitType.Star);
             __restore_documents_docking_layout(layoutgroup.SubLayout, group);
             root.Children.Add(group);
         }
     }
 }
Example #14
0
        private void AddDocument(LayoutDocumentPaneGroup pane, LayoutDocument content, int childIndex)
        {
            var panel = (pane.ChildrenCount > childIndex)
                                ? pane.Children[childIndex] as LayoutDocumentPane
                                : AddLayoutItem(pane, () => new LayoutDocumentPane()) as LayoutDocumentPane;

            panel.Children.Add(content);
        }
Example #15
0
        /// <summary>
        /// 初始化主要内容的容器控件
        /// </summary>
        private void initMianContentControl()
        {
            mianContentControl                 = new DockingManager();
            mianContentControl.BorderBrush     = Utility.Windows.ResourceHelper.FindResource(@"AccentColorBrush") as System.Windows.Media.Brush;
            mianContentControl.Theme           = new Xceed.Wpf.AvalonDock.Themes.MetroTheme();
            mianContentControl.DocumentClosed += MianContentControl_DocumentClosed;
            var          v            = Utility.Windows.ResourceHelper.FindResource(@"DockDocumentHeaderTemplate");
            DataTemplate dataTemplate = v as DataTemplate;

            mianContentControl.DocumentHeaderTemplate = dataTemplate;
            LayoutRoot layoutRoot = new LayoutRoot();

            mianContentControl.Layout = layoutRoot;

            LayoutAnchorSide layoutAnchorSide = new LayoutAnchorSide();

            layoutRoot.LeftSide = layoutAnchorSide;
            LayoutAnchorGroup layoutAnchorGroup = new LayoutAnchorGroup();

            layoutAnchorSide.Children.Add(layoutAnchorGroup);
            LayoutAnchorable layoutAnchorable = new LayoutAnchorable();

            layoutAnchorable.Title      = Utility.Windows.ResourceHelper.FindResource(@"NavigationMenu").ToString();
            layoutAnchorable.IconSource = Utility.Windows.BitmapImageHelper.GetBitmapImage("Images/Folder_32.png", 16, 16);

            layoutAnchorable.CanAutoHide      = true;
            layoutAnchorable.CanClose         = false;
            layoutAnchorable.CanFloat         = false;
            layoutAnchorable.CanHide          = false;
            layoutAnchorable.IsMaximized      = false;
            layoutAnchorable.AutoHideMinWidth = (double)Utility.Windows.ResourceHelper.FindResource(@"LeftTreeAutoHideMinWidth");

            layoutAnchorGroup.Children.Add(layoutAnchorable);
            layoutAnchorable.ToggleAutoHide();
            //TreeView treeView = new TreeView();
            //layoutAnchorable.Content = new ContentControl ()(Prism.Regions.RegionManager.SetRegionName ("");
            //Prism.Regions.RegionManager.GetRegionName(layoutAnchorable, "TreeMenuModule");
            //treeView.ItemsSource = this.MenuItems;
            //layoutAnchorable.Content =
            //Style style = new Style(); ;
            //style.TargetType = typeof(TreeViewItem);
            //style.BasedOn = Utility.Windows.ResourceHelper.FindResource(@"MetroTreeViewItem") as Style;
            //treeView.ItemContainerStyle = style;
            var treeMenuContent = new ContentControl();

            layoutAnchorable.Content = treeMenuContent;

            Prism.Regions.RegionManager.SetRegionName(treeMenuContent, "TreeMenuRegion");
            //Prism.Regions.RegionManager.SetRegionName(layoutAnchorable, "TreeMenuModule");
            //var regionManager = containerProvider.Resolve<IRegionManager>();
            //regionManager.RegisterViewWithRegion("ShellContentRegion", typeof(ShellView));

            LayoutDocumentPaneGroup layoutDocumentPaneGroup = new LayoutDocumentPaneGroup();

            layoutRoot.RootPanel.Orientation = Orientation.Horizontal;
            layoutRoot.RootPanel.Children[1] = layoutDocumentPaneGroup;
            layoutDocumentPaneGroup.InsertChildAt(0, layoutDocumentPane);
        }
Example #16
0
        private void ExecuteMoveToPreviousTabGroupCommand(object parameter)
        {
            LayoutContent           layoutElement           = this.LayoutElement;
            LayoutDocumentPaneGroup layoutDocumentPaneGroup = layoutElement.FindParent <LayoutDocumentPaneGroup>();
            int num = layoutDocumentPaneGroup.IndexOfChild(layoutElement.Parent as LayoutDocumentPane);

            (layoutDocumentPaneGroup.Children[num - 1] as LayoutDocumentPane).InsertChildAt(0, layoutElement);
            layoutElement.IsActive = true;
            layoutElement.Root.CollectGarbage();
        }
Example #17
0
        private static void RefreshAllPreviews()
        {
            LayoutDocumentPaneGroup paneGroup = (LayoutDocumentPaneGroup)((LayoutPanel)dockManager.Layout.Children.ElementAt(0)).Children[0];

            foreach (LayoutDocumentPane a in paneGroup.Children)
            {
                foreach (var frame in a.Children.Select(tab => tab.Content))
                {
                    RefreshPreview((Frame)frame);
                }
            }
        }
Example #18
0
        /// <summary>
        /// 初始化主要内容的容器控件
        /// </summary>
        private void initMianContentControl()
        {
            mianContentControl                 = new DockingManager();
            mianContentControl.BorderBrush     = Utility.Windows.ResourceHelper.FindResource(@"AccentColorBrush") as System.Windows.Media.Brush;
            mianContentControl.Theme           = new Xceed.Wpf.AvalonDock.Themes.MetroTheme();
            mianContentControl.DocumentClosed += MianContentControl_DocumentClosed;
            var          v            = Utility.Windows.ResourceHelper.FindResource(@"DockDocumentHeaderTemplate");
            DataTemplate dataTemplate = v as DataTemplate;

            mianContentControl.DocumentHeaderTemplate = dataTemplate;
            mianContentControl.Background             = Utility.Windows.ResourceHelper.FindResource(@"DesktopBackground") as System.Windows.Media.ImageBrush;

            LayoutRoot layoutRoot = new LayoutRoot();

            mianContentControl.Layout = layoutRoot;

            LayoutAnchorSide layoutAnchorSide = new LayoutAnchorSide();

            layoutRoot.LeftSide = layoutAnchorSide;
            LayoutAnchorGroup layoutAnchorGroup = new LayoutAnchorGroup();

            layoutAnchorSide.Children.Add(layoutAnchorGroup);
            LayoutAnchorable layoutAnchorable = new LayoutAnchorable();

            layoutAnchorable.Title      = Utility.Windows.ResourceHelper.FindResource(@"NavigationMenu").ToString();
            layoutAnchorable.IconSource = Utility.Windows.ResourceHelper.FindResource(@"Folder_32x32") as System.Windows.Media.ImageSource;

            layoutAnchorable.CanAutoHide      = true;
            layoutAnchorable.CanClose         = false;
            layoutAnchorable.CanFloat         = false;
            layoutAnchorable.CanHide          = false;
            layoutAnchorable.IsMaximized      = false;
            layoutAnchorable.AutoHideMinWidth = (double)Utility.Windows.ResourceHelper.FindResource(@"LeftTreeAutoHideMinWidth");

            layoutAnchorGroup.Children.Add(layoutAnchorable);
            layoutAnchorable.ToggleAutoHide();
            TreeView treeView = new TreeView();

            layoutAnchorable.Content = treeView;
            treeView.ItemsSource     = this.MenuItems;

            Style style = new Style();;

            style.TargetType            = typeof(TreeViewItem);
            style.BasedOn               = Utility.Windows.ResourceHelper.FindResource(@"MetroTreeViewItem") as Style;
            treeView.ItemContainerStyle = style;
            LayoutDocumentPaneGroup layoutDocumentPaneGroup = new LayoutDocumentPaneGroup();

            layoutRoot.RootPanel.Orientation = Orientation.Horizontal;
            layoutRoot.RootPanel.Children[1] = layoutDocumentPaneGroup;
            layoutDocumentPaneGroup.InsertChildAt(0, layoutDocumentPane);
        }
Example #19
0
        private void GetDocumentGroups(LayoutPanel amlPanel, out LayoutDocumentPaneGroup topPanel,
                                       out LayoutDocumentPaneGroup bottomPanel)
        {
            topPanel = (amlPanel.ChildrenCount > 0)
                ? amlPanel.Children[0] as LayoutDocumentPaneGroup
                : null;
            topPanel ??= AddLayoutItem(amlPanel, () => new LayoutDocumentPaneGroup()) as LayoutDocumentPaneGroup;

            bottomPanel = (amlPanel.ChildrenCount > 1)
                ? amlPanel.Children[1] as LayoutDocumentPaneGroup
                : null;
            bottomPanel ??= AddLayoutItem(amlPanel, () => new LayoutDocumentPaneGroup()) as LayoutDocumentPaneGroup;
        }
Example #20
0
        private LayoutDocumentPaneGroup GetFillLayoutDocumentPaneGroup()
        {
            LayoutDocumentPaneGroup layoutDocumentPaneGroup = new LayoutDocumentPaneGroup();
            LayoutDocument          layoutDocument          = new LayoutDocument()
            {
                Title    = "地图",
                Content  = AppManager.Map,
                CanClose = false
            };
            LayoutDocumentPane layoutDocumentPane = new LayoutDocumentPane();

            layoutDocumentPane.Children.Add(layoutDocument);
            layoutDocumentPaneGroup.Children.Add(layoutDocumentPane);
            return(layoutDocumentPaneGroup);
        }
Example #21
0
        private bool CanExecuteMoveToPreviousTabGroupCommand(object parameter)
        {
            if (this.LayoutElement == null)
            {
                return(false);
            }
            LayoutDocumentPaneGroup layoutDocumentPaneGroup = this.LayoutElement.FindParent <LayoutDocumentPaneGroup>();
            LayoutDocumentPane      parent = this.LayoutElement.Parent as LayoutDocumentPane;

            if (layoutDocumentPaneGroup == null || parent == null || layoutDocumentPaneGroup.ChildrenCount <= 1 || layoutDocumentPaneGroup.IndexOfChild(parent) <= 0)
            {
                return(false);
            }
            return(layoutDocumentPaneGroup.Children[layoutDocumentPaneGroup.IndexOfChild(parent) - 1] is LayoutDocumentPane);
        }
Example #22
0
        private bool CanExecuteNewVerticalTabGroupCommand(object parameter)
        {
            if (this.LayoutElement == null)
            {
                return(false);
            }
            LayoutDocumentPaneGroup layoutDocumentPaneGroup = this.LayoutElement.FindParent <LayoutDocumentPaneGroup>();
            LayoutDocumentPane      parent = this.LayoutElement.Parent as LayoutDocumentPane;

            if (layoutDocumentPaneGroup != null && layoutDocumentPaneGroup.ChildrenCount != 1 && !layoutDocumentPaneGroup.Root.Manager.AllowMixedOrientation && layoutDocumentPaneGroup.Orientation != Orientation.Horizontal || parent == null)
            {
                return(false);
            }
            return(parent.ChildrenCount > 1);
        }
Example #23
0
        protected override void Drop(LayoutDocumentFloatingWindow floatingWindow)
        {
            ILayoutDocumentPane targetModel = _targetPane.Model as ILayoutDocumentPane;

            switch (Type)
            {
            case DropTargetType.DocumentPaneDockBottom:
            {
                var newLayoutDocumentPane = new LayoutDocumentPane(floatingWindow.RootDocument);
                if (targetModel != null)
                {
                    if (!(targetModel.Parent is LayoutDocumentPaneGroup parentModel))
                    {
                        var parentContainer = targetModel.Parent;
                        var newParentModel  = new LayoutDocumentPaneGroup
                        {
                            Orientation = System.Windows.Controls.Orientation.Vertical
                        };
                        parentContainer.ReplaceChild(targetModel, newParentModel);
                        newParentModel.Children.Add(targetModel as LayoutDocumentPane);
                        newParentModel.Children.Add(newLayoutDocumentPane);
                    }
                    else
                    {
                        var manager = parentModel.Root.Manager;
                        if (!manager.AllowMixedOrientation ||
                            parentModel.Orientation == System.Windows.Controls.Orientation.Vertical)
                        {
                            parentModel.Orientation = System.Windows.Controls.Orientation.Vertical;
                            int targetPaneIndex = parentModel.IndexOfChild(targetModel);
                            parentModel.Children.Insert(targetPaneIndex + 1, newLayoutDocumentPane);
                        }
                        else
                        {
                            LayoutDocumentPaneGroup newChildGroup = new LayoutDocumentPaneGroup
                            {
                                Orientation = System.Windows.Controls.Orientation.Vertical
                            };
                            parentModel.ReplaceChild(targetModel, newChildGroup);
                            newChildGroup.Children.Add(targetModel);
                            newChildGroup.Children.Add(newLayoutDocumentPane);
                        }
                    }
                }
            }
            break;
Example #24
0
        private ToolLayout __save_documents_docking_layout(LayoutDocumentPaneGroup root)
        {
            LayoutGroup r = new LayoutGroup();

            r.SubLayout   = new List <ToolLayout>();
            r.Orientation = root.Orientation == Orientation.Horizontal ? TOOL_LAYOUT_ORIENTATION_T.HORIZONTAL : TOOL_LAYOUT_ORIENTATION_T.VERTICAL;
            r.Height      = root.DockHeight.Value;
            r.Width       = root.DockWidth.Value;
            foreach (var sub in root.Children)
            {
                if (sub is LayoutDocumentPaneGroup)
                {
                    r.SubLayout.Add(__save_documents_docking_layout(sub as LayoutDocumentPaneGroup));
                }
                else
                {
                    r.SubLayout.Add(__save_documents_docking_layout(sub as LayoutDocumentPane));
                }
            }
            return(r);
        }
Example #25
0
        public LayoutDocumentPane FindFirstLayoutDocumentPane(LayoutDocumentPaneGroup layoutDocumentPaneGroup)
        {
            foreach (ILayoutDocumentPane layoutDocumentPaneInterface in layoutDocumentPaneGroup.Children)
            {
                if (layoutDocumentPaneInterface is LayoutDocumentPane)
                {
                    return(layoutDocumentPaneInterface as LayoutDocumentPane);
                }

                if (layoutDocumentPaneInterface is LayoutDocumentPaneGroup)
                {
                    var layoutDocumentPane = FindFirstLayoutDocumentPane(layoutDocumentPaneInterface as LayoutDocumentPaneGroup);

                    if (layoutDocumentPane != null)
                    {
                        return(layoutDocumentPane);
                    }
                }
            }

            return(null);
        }
Example #26
0
        private bool FindParentLayoutDocumentPane(ILayoutDocumentPane documentPane,
                                                  out LayoutDocumentPaneGroup containerPaneGroup, out LayoutPanel containerPanel)
        {
            containerPaneGroup = null;
            containerPanel     = null;

            var panel = documentPane.Parent as LayoutPanel;

            if (panel != null)
            {
                containerPanel = panel;
                return(true);
            }
            if (!(documentPane.Parent is LayoutDocumentPaneGroup))
            {
                return(false);
            }
            var currentDocumentPaneGroup = (LayoutDocumentPaneGroup)documentPane.Parent;

            while (!(currentDocumentPaneGroup.Parent is LayoutPanel))
            {
                currentDocumentPaneGroup = currentDocumentPaneGroup.Parent as LayoutDocumentPaneGroup;

                if (currentDocumentPaneGroup == null)
                {
                    break;
                }
            }

            if (currentDocumentPaneGroup == null)
            {
                return(false);
            }

            containerPaneGroup = currentDocumentPaneGroup;
            containerPanel     = (LayoutPanel)currentDocumentPaneGroup.Parent;
            return(true);
        }
Example #27
0
 private bool __docking_layout_comparison(LayoutDocumentPaneGroup root, ToolLayout layout)
 {
     if (layout.Type == TOOL_LAYOUT_TYPE_T.GROUP)
     {
         var layoutgroup = layout as LayoutGroup;
         var orientation = layoutgroup.Orientation == TOOL_LAYOUT_ORIENTATION_T.HORIZONTAL ? Orientation.Horizontal : Orientation.Vertical;
         if (orientation == root.Orientation && root.Children.Count == layoutgroup.SubLayout.Count &&
             root.DockHeight.Value == layoutgroup.Height && root.DockWidth.Value == layoutgroup.Width)
         {
             for (int i = 0; i < layoutgroup.SubLayout.Count; ++i)
             {
                 if (root.Children[i] is LayoutDocumentPaneGroup && layoutgroup.SubLayout[i].Type == TOOL_LAYOUT_TYPE_T.GROUP)
                 {
                     if (__docking_layout_comparison(root.Children[i] as LayoutDocumentPaneGroup, layoutgroup.SubLayout[i]) == false)
                     {
                         return(false);
                     }
                 }
                 if (root.Children[i] is LayoutDocumentPane && layoutgroup.SubLayout[i].Type == TOOL_LAYOUT_TYPE_T.PANEL)
                 {
                     if (__docking_layout_comparison(root.Children[i] as LayoutDocumentPane, layoutgroup.SubLayout[i] as LayoutPanel <LayoutDocument>) == false)
                     {
                         return(false);
                     }
                 }
             }
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
        private bool FindParentLayoutDocumentPane(ILayoutDocumentPane documentPane,
                                                  out LayoutDocumentPaneGroup containerPaneGroup, out LayoutPanel containerPanel)
        {
            containerPaneGroup = null;
            containerPanel     = null;

            if (documentPane.Parent is LayoutPanel)
            {
                containerPaneGroup = null;
                containerPanel     = documentPane.Parent as LayoutPanel;
                return(true);
            }

            if (documentPane.Parent is LayoutDocumentPaneGroup)
            {
                var currentDocumentPaneGroup = documentPane.Parent as LayoutDocumentPaneGroup;
                while (!(currentDocumentPaneGroup.Parent is LayoutPanel))
                {
                    currentDocumentPaneGroup = currentDocumentPaneGroup.Parent as LayoutDocumentPaneGroup;

                    if (currentDocumentPaneGroup is null)
                    {
                        break;
                    }
                }

                if (currentDocumentPaneGroup is null)
                {
                    return(false);
                }

                containerPaneGroup = currentDocumentPaneGroup;
                containerPanel     = currentDocumentPaneGroup.Parent as LayoutPanel;
                return(true);
            }

            return(false);
        }
Example #29
0
        private void ExecuteNewVerticalTabGroupCommand(object parameter)
        {
            LayoutContent           layoutElement           = this.LayoutElement;
            LayoutDocumentPaneGroup layoutDocumentPaneGroup = layoutElement.FindParent <LayoutDocumentPaneGroup>();
            LayoutDocumentPane      parent = layoutElement.Parent as LayoutDocumentPane;

            if (layoutDocumentPaneGroup == null)
            {
                ILayoutContainer layoutContainer = parent.Parent;
                layoutDocumentPaneGroup = new LayoutDocumentPaneGroup()
                {
                    Orientation = Orientation.Horizontal
                };
                layoutContainer.ReplaceChild(parent, layoutDocumentPaneGroup);
                layoutDocumentPaneGroup.Children.Add(parent);
            }
            layoutDocumentPaneGroup.Orientation = Orientation.Horizontal;
            int num = layoutDocumentPaneGroup.IndexOfChild(parent);

            layoutDocumentPaneGroup.InsertChildAt(num + 1, new LayoutDocumentPane(layoutElement));
            layoutElement.IsActive = true;
            layoutElement.Root.CollectGarbage();
        }
Example #30
0
        private void ExecuteNewVerticalTabGroupCommand(object parameter)
        {
            var layoutElement       = LayoutElement;
            var parentDocumentGroup = layoutElement.FindParent <LayoutDocumentPaneGroup>();
            var parentDocumentPane  = layoutElement.Parent as LayoutDocumentPane;

            if (parentDocumentGroup == null)
            {
                var grandParent = parentDocumentPane.Parent as ILayoutContainer;
                parentDocumentGroup = new LayoutDocumentPaneGroup()
                {
                    Orientation = System.Windows.Controls.Orientation.Horizontal
                };
                grandParent.ReplaceChild(parentDocumentPane, parentDocumentGroup);
                parentDocumentGroup.Children.Add(parentDocumentPane);
            }
            parentDocumentGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
            int indexOfParentPane = parentDocumentGroup.IndexOfChild(parentDocumentPane);

            parentDocumentGroup.InsertChildAt(indexOfParentPane + 1, new LayoutDocumentPane(layoutElement));
            layoutElement.IsActive = true;
            layoutElement.Root.CollectGarbage();
            layoutElement.Root.Manager.OnLayoutConfigurationChanged();
        }
        private void ExecuteNewVerticalTabGroupCommand(object parameter)
        {
            var layoutElement = LayoutElement;
            var parentDocumentGroup = layoutElement.FindParent<LayoutDocumentPaneGroup>();
            var parentDocumentPane = layoutElement.Parent as LayoutDocumentPane;

            if (parentDocumentGroup == null) {
                var grandParent = parentDocumentPane.Parent as ILayoutContainer;
                parentDocumentGroup = new LayoutDocumentPaneGroup() { Orientation = System.Windows.Controls.Orientation.Horizontal };
                grandParent.ReplaceChild(parentDocumentPane, parentDocumentGroup);
                parentDocumentGroup.Children.Add(parentDocumentPane);
            }
            parentDocumentGroup.Orientation = System.Windows.Controls.Orientation.Horizontal;
            int indexOfParentPane = parentDocumentGroup.IndexOfChild(parentDocumentPane);
            parentDocumentGroup.InsertChildAt(indexOfParentPane + 1, new LayoutDocumentPane(layoutElement));
            layoutElement.IsActive = true;
            layoutElement.Root.CollectGarbage();
        }
Example #32
0
 internal override LayoutElement Convert(UiManager uiManager)
 {
     var lr = new LayoutDocumentPaneGroup
     {
         DockWidth = new GridLength(Width.Value, Width.Unit),
         DockHeight = new GridLength(Height.Value, Height.Unit),
         Orientation = Orientation
     };
     foreach (var x in Children)
     {
         if (x is LayoutInfo)
             lr.Children.Add((ILayoutDocumentPane)((LayoutInfo)x).Convert(uiManager));
         else if (x is PaneInfo)
             lr.Children.Add((ILayoutDocumentPane)((PaneInfo)x).Convert(uiManager));
         else
             throw new Exception();
         
     }
     return lr;
 }
 public void AddPageInDocumentPane(string title)
 {
     if(m_openedDocuments.ContainsKey(title))
     {
         LayoutDocument tmpdoc = m_openedDocuments[title];
         tmpdoc.IsSelected = true;
         return;
     }
     LayoutDocumentPaneGroup m_LayoutDocumentPaneGroup=null;
     foreach (ILayoutElement pane in m_layoutpane.Children)
     {
         if (pane is LayoutDocumentPaneGroup)
         {
             m_LayoutDocumentPaneGroup =(LayoutDocumentPaneGroup) pane;
             break;
         }
     }
     if (m_LayoutDocumentPaneGroup == null)
     {
         m_LayoutDocumentPaneGroup = new LayoutDocumentPaneGroup();
         m_layoutpane.Children.Add(m_anchorablepanegroup);
     }
     LayoutDocumentPane layoutpane = null;
     if (m_LayoutDocumentPaneGroup.Children.Count == 0)
     {
         layoutpane = new LayoutDocumentPane();
         m_LayoutDocumentPaneGroup.Children.Add(layoutpane);
     }
     else
     {
         layoutpane = (LayoutDocumentPane)m_LayoutDocumentPaneGroup.Children[0];
     }
     LayoutDocument document = new LayoutDocument() { Content = new TextBox() { AcceptsReturn = true, HorizontalScrollBarVisibility = ScrollBarVisibility.Auto, VerticalScrollBarVisibility = ScrollBarVisibility.Auto}, Title = title };
     document.Closed += document_Closed;
     layoutpane.Children.Add(document);
     m_openedDocuments.Add(title,document);
     document.IsSelected = true;
 }