/// <summary>Class constructor from <see cref="LayoutAnchorSide"/> model.</summary>
 internal LayoutAnchorSideControl(LayoutAnchorSide model)
 {
     _model = model ?? throw new ArgumentNullException(nameof(model));
     CreateChildrenViews();
     _model.Children.CollectionChanged += (s, e) => OnModelChildrenCollectionChanged(e);
     UpdateSide();
 }
Exemple #2
0
        public static LayoutAnchorGroup AddGroup(this LayoutAnchorSide side)
        {
            var group = new LayoutAnchorGroup();

            side.AddChild(group);
            return(group);
        }
Exemple #3
0
 public LayoutRoot()
 { 
     RightSide = new LayoutAnchorSide();
     LeftSide = new LayoutAnchorSide();
     TopSide = new LayoutAnchorSide();
     BottomSide = new LayoutAnchorSide();
     RootPanel = new LayoutPanel(new LayoutDocumentPane());
 }
Exemple #4
0
        private void AddProperty(LayoutAnchorSide side, LayoutAnchorable content)
        {
            var group = (side.ChildrenCount > 0)
                    ? side.Children[0]
                    : AddLayoutItem(side, () => new LayoutAnchorGroup());

            group.Children.Add(content);
        }
Exemple #5
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);
        }
Exemple #6
0
        public bool BeforeInsertAnchorable(LayoutRoot layout, LayoutAnchorable anchorableToShow, ILayoutContainer destinationContainer)
        {
            //AD wants to add the anchorable into destinationContainer
            //just for test provide a new anchorablepane
            //if the pane is floating let the manager go ahead



            LayoutAnchorablePane destPane = destinationContainer as LayoutAnchorablePane;

            if (destinationContainer != null &&
                destinationContainer.FindParent <LayoutFloatingWindow>() != null)
            {
                return(false);
            }

            //var toolsPane = layout.Descendents().OfType<LayoutAnchorablePane>().FirstOrDefault(d => d.Name == "ToolsPane");

            Type toolType = anchorableToShow.Content.GetType();

            var docData = _dockViewmodel.Data.DocumentTypeData.FirstOrDefault(a => a.DocType == _dockViewmodel.Data.ActiveDocument.GetType());

            var pos = docData.DicToolDockPosition[toolType];

            LayoutAnchorSide side = GetAnchorSide(pos, layout);


            if (side.Children.Count == 0)
            {
                var group = new LayoutAnchorGroup();



                group.Children.Add(anchorableToShow);


                side.Children.Add(group);
                SetToolPaneProperties(anchorableToShow);

                return(true);
            }
            else
            {
                side.Children[0].Children.Add(anchorableToShow);

                SetToolPaneProperties(anchorableToShow);
                return(true);
            }



            return(false);

            //return true;
        }
Exemple #7
0
 internal LayoutAnchorSideControl(LayoutAnchorSide model)
 {
     if (model == null)
     {
         throw new ArgumentNullException("model");
     }
     this._model = model;
     this.CreateChildrenViews();
     this._model.Children.CollectionChanged += new NotifyCollectionChangedEventHandler((object s, NotifyCollectionChangedEventArgs e) => this.OnModelChildrenCollectionChanged(e));
     this.UpdateSide();
 }
Exemple #8
0
        public static LayoutAnchorGroup FirstOrAdd(this LayoutAnchorSide side)
        {
            var group = side.Children.FirstOrDefault <LayoutAnchorGroup>();

            if (group is null)
            {
                group = new LayoutAnchorGroup();
                side.AddChild(group);
            }
            return(group);
        }
Exemple #9
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);
        }
        internal LayoutAnchorSideControl(LayoutAnchorSide model)
        {
            if (model == null)
                throw new ArgumentNullException("model");

            _model = model;

            CreateChildrenViews();

            _model.Children.CollectionChanged += (s, e) => OnModelChildrenCollectionChanged(e);

            UpdateSide();
        }
Exemple #11
0
        internal LayoutAnchorSideControl(LayoutAnchorSide model)
        {
            if (model is null)
            {
                throw new ArgumentNullException("model");
            }


            _model = model;

            CreateChildrenViews();

            _model.Children.CollectionChanged += (s, e) => OnModelChildrenCollectionChanged(e);

            UpdateSide();
        }
Exemple #12
0
        /// <summary>
        ///		Obtiene el grupo de ventanas del panel de la posición especificada
        /// </summary>
        private LayoutAnchorGroup GetGroupPane(LayoutRoot layoutRoot, SystemControllerEnums.DockPosition position)
        {
            LayoutAnchorSide layoutSide = GetAnchorSide(layoutRoot, position);

            // Crea el panel si no existía
            if (layoutSide == null)
            {
                layoutSide = new LayoutAnchorSide();
            }
            // Añade un grupo si no existía
            if (layoutSide.Children == null || layoutSide.Children.Count == 0)
            {
                layoutSide.Children.Add(new LayoutAnchorGroup());
            }
            // Devuelve el primer grupo
            return(layoutSide.Children[0]);
        }
Exemple #13
0
        private static LayoutAnchorGroup FindAnchorableGroup(LayoutRoot layout,
                                                             PaneLocation location)
        {
            try
            {
                LayoutAnchorSide panelGroupParent = null;

                switch (location)
                {
                case PaneLocation.Left:
                    panelGroupParent = layout.LeftSide;
                    break;

                case PaneLocation.Right:
                    panelGroupParent = layout.RightSide;
                    break;

                case PaneLocation.Bottom:
                    panelGroupParent = layout.BottomSide;
                    break;

                default:
                    throw new ArgumentOutOfRangeException("location:" + location);
                }

                if (panelGroupParent.Children.Count == 0)
                {
                    var layoutAnchorGroup = new LayoutAnchorGroup();

                    panelGroupParent.Children.Add(layoutAnchorGroup);

                    return(layoutAnchorGroup);
                }
                else
                {
                    return(panelGroupParent.Children[0]);
                }
            }
            catch (Exception exp)
            {
                logger.Error(exp);
            }

            return(null);
        }
Exemple #14
0
 public void ReplaceChild(ILayoutElement oldElement, ILayoutElement newElement)
 {
     if (oldElement == RootPanel)
         RootPanel = (LayoutPanel)newElement;
     else if (_floatingWindows != null && _floatingWindows.Contains(oldElement))
     {
         int index = _floatingWindows.IndexOf(oldElement as LayoutFloatingWindow);
         _floatingWindows.Remove(oldElement as LayoutFloatingWindow);
         _floatingWindows.Insert(index, newElement as LayoutFloatingWindow);
     }
     else if (_hiddenAnchorables != null && _hiddenAnchorables.Contains(oldElement))
     {
         int index = _hiddenAnchorables.IndexOf(oldElement as LayoutAnchorable);
         _hiddenAnchorables.Remove(oldElement as LayoutAnchorable);
         _hiddenAnchorables.Insert(index, newElement as LayoutAnchorable);
     }
     else if (oldElement == TopSide)
         TopSide = (LayoutAnchorSide)newElement;
     else if (oldElement == RightSide)
         RightSide = (LayoutAnchorSide)newElement;
     else if (oldElement == BottomSide)
         BottomSide = (LayoutAnchorSide)newElement;
     else if (oldElement == LeftSide)
         LeftSide = (LayoutAnchorSide)newElement;
 }
Exemple #15
0
 public void RemoveChild(ILayoutElement element)
 {
     if (element == RootPanel)
         RootPanel = null;
     else if (_floatingWindows != null && _floatingWindows.Contains(element))
         _floatingWindows.Remove(element as LayoutFloatingWindow);
     else if (_hiddenAnchorables != null && _hiddenAnchorables.Contains(element))
         _hiddenAnchorables.Remove(element as LayoutAnchorable);
     else if (element == TopSide)
         TopSide = null;
     else if (element == RightSide)
         RightSide = null;
     else if (element == BottomSide)
         BottomSide = null;
     else if (element == LeftSide)
         LeftSide = null;
 }