コード例 #1
0
 private static IEnumerable <DockItem> GetDockItems(DockControl dockControl, Func <DockItem, DockPane, bool> predicate)
 {
     foreach (DockPane pane in dockControl.Panes)
     {
         foreach (DockItem item in GetDockItems(pane))
         {
             if (predicate(item, pane))
             {
                 yield return(item);
             }
         }
     }
 }
コード例 #2
0
            public static void Execute(DockItem dockItem)
            {
                DockControl dockControl = dockItem.DockControl;

                if (dockControl.CanEnterUndo)
                {
                    dockControl.ExecuteCommand(new HideCommand(dockItem));
                }
                else
                {
                    dockItem.DoHide();
                }
            }
コード例 #3
0
            public static void Execute(DockItem dockItem)
            {
                DockControl dockControl = dockItem.DockControl;

                if (dockControl.CanEnterUndo && dockItem.IsHidden)
                {
                    dockControl.ExecuteCommand(new DeselectCommand(dockItem));
                }
                else
                {
                    dockItem.DoDeselect();
                }
            }
コード例 #4
0
            public static void Execute(DockItem dockItem, DockItemShowMethod showMethod)
            {
                DockControl dockControl = dockItem.DockControl;

                if (dockControl.CanEnterUndo)
                {
                    dockControl.ExecuteCommand(new ToggleAutoHideCommand(dockItem, showMethod));
                }
                else
                {
                    dockItem.DoToggleAutoHide(showMethod);
                }
            }
コード例 #5
0
            public static void Execute(DockItem dockItem, bool activate)
            {
                DockControl dockControl = dockItem.DockControl;

                if (dockControl.CanEnterUndo && dockItem.IsHidden)
                {
                    dockControl.ExecuteCommand(new SelectCommand(dockItem, activate));
                }
                else
                {
                    dockItem.DoSelect(activate);
                }
            }
コード例 #6
0
            public static void Execute(DockItem dockItem)
            {
                DockControl dockControl = dockItem.DockControl;

                if (TestUndo(dockItem))
                {
                    dockControl.ExecuteCommand(new CloseCommand(dockItem));
                }
                else
                {
                    dockItem.DoClose();
                }
            }
コード例 #7
0
            public static void Execute(DockItem dockItem, DockPaneNode paneNode, bool isAutoHide, Dock side, SplitterDistance size, bool isSizeForTarget, DockItemShowMethod showMethod)
            {
                DockControl dockControl = paneNode.DockControl;

                Debug.Assert(dockControl != null);
                if (TestUndo(dockItem, dockControl))
                {
                    dockControl.ExecuteCommand(new ShowAsSidePaneCommand(dockItem, paneNode, isAutoHide, side, size, isSizeForTarget, showMethod));
                }
                else // if (dockItem.DockControl == dockControl) Fix for 1.1.3730: this condition will prevent unattached DockItem from showing
                {
                    dockItem.DoShowAsSidePane(paneNode, isAutoHide, side, size, isSizeForTarget, showMethod);
                }
            }
コード例 #8
0
            protected override void ExecuteOverride(DockControl dockControl)
            {
                DockItem dockItem = GetDockItem(dockControl);

                dockItem.DoShowAsFloating(dockControl, _floatingWindowBounds, ShowMethod);
                if (double.IsNaN(_floatingWindowBounds.X))
                {
                    _floatingWindowBounds.X = dockItem.FirstPane.FloatingWindow.Left;
                }
                if (double.IsNaN(_floatingWindowBounds.Y))
                {
                    _floatingWindowBounds.Y = dockItem.FirstPane.FloatingWindow.Top;
                }
            }
コード例 #9
0
            public static void Execute(DockItem dockItem, DockPane pane, int index, DockItemShowMethod showMethod)
            {
                DockControl dockControl = pane.DockControl;

                Debug.Assert(dockControl != null);
                if (TestUndo(dockItem, dockControl))
                {
                    dockControl.ExecuteCommand(new ShowAsTabbedCommand(dockItem, pane, index, showMethod));
                }
                else
                {
                    dockItem.DoShowAsTabbed(pane, index, showMethod);
                }
            }
コード例 #10
0
            private static ShowAction GetShowAsTabbedAction(DockItem item, DockPane pane)
            {
                DockControl        dockControl = item.DockControl;
                int                source      = dockControl.DockItems.IndexOf(item);
                DockItemShowMethod showMethod  = GetShowMethod(item, pane);

                int      index       = pane.Items.IndexOf(item);
                DockItem targetItem  = pane.Items[index == 0 ? 1 : 0];
                int      targetIndex = dockControl.DockItems.IndexOf(targetItem);

                if (index == pane.Items.Count - 1)
                {
                    index = -1;
                }
                return(new ShowAsTabbedAction(source, targetIndex, pane.IsFloating, index, showMethod));
            }
コード例 #11
0
        private void FillDockActions(DockControl dockControl, DockLayout layout)
        {
            lock (this)
            {
                foreach (DockItem item in GetDockItems(dockControl, delegate(DockItem item, DockPane pane) { return(item.SecondPane == pane); }))
                {
                    layout.ShowActions.Add(GetShowAction(item, item.SecondPane));
                }

                foreach (DockItem item in GetDockItems(dockControl, delegate(DockItem item, DockPane pane) { return(item.FirstPane == pane); }))
                {
                    layout.ShowActions.Add(GetShowAction(item, item.FirstPane));
                }

                _itemsCollections.Clear();
                _panes.Clear();
                _splits.Clear();
            }
        }
コード例 #12
0
            public sealed override void UnExecute(DockControl dockControl)
            {
                DockItem item = GetDockItem(dockControl);

                item.DoClose();
                if (DockItemIndex != -1)
                {
                    item.EnsureAttached(dockControl, DockItemIndex);
                }

                if (SecondPaneShowAction != null)
                {
                    SecondPaneShowAction.Run(dockControl);
                }

                if (FirstPaneShowAction != null)
                {
                    FirstPaneShowAction.Run(dockControl);
                }
            }
コード例 #13
0
            protected static bool TestUndo(DockItem dockItem, DockControl dockControl)
            {
                if (!dockControl.CanEnterUndo)
                {
                    return(false);
                }

                if (dockItem.FirstPane != null)
                {
                    return(true);
                }

                if (dockItem.UndoRedoReference == null)
                {
                    dockControl.ClearUndo();
                    return(false);
                }

                return(true);
            }
コード例 #14
0
            private static ShowAction GetShowAsDockTreeRootAction(DockItem item, DockPane pane)
            {
                DockControl        dockControl = item.DockControl;
                int                source      = dockControl.DockItems.IndexOf(item);
                DockItemShowMethod showMethod  = GetShowMethod(item, pane);

                DockTree dockTree = pane.DockTree;

                if (dockTree.IsFloating)
                {
                    FloatingWindow floatingWindow = dockTree.FloatingWindow;
                    Rect           bounds         = new Rect(floatingWindow.Left, floatingWindow.Top, floatingWindow.Width, floatingWindow.Height);
                    return(new ShowAsFloatingAction(source, bounds, showMethod));
                }
                else
                {
                    DockPosition dockPosition = DockPositionHelper.GetDockPosition(pane.DockTreePosition, pane.IsAutoHide);
                    return(new ShowAsDockPositionAction(source, dockPosition, showMethod));
                }
            }
コード例 #15
0
        private static void OnBoundsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            FloatingWindow floatingWindow = (FloatingWindow)d;
            DockControl    dockControl    = floatingWindow.DockControl;

            if (dockControl == null)
            {
                return;
            }

            Rect             oldBounds = floatingWindow.GetBounds(e.Property, (double)e.OldValue);
            Rect             newBounds = floatingWindow.GetBounds(e.Property, (double)e.NewValue);
            UpdateBoundsData oldValue  = new UpdateBoundsData(floatingWindow, oldBounds);
            UpdateBoundsData newValue  = new UpdateBoundsData(floatingWindow, newBounds);

            dockControl.OnValueChanged(oldValue, newValue,
                                       delegate(UpdateBoundsData oldData, UpdateBoundsData newData)
            {
                return(new UpdateBoundsCommand(oldData.FloatingWindow, oldData.Value, newData.Value));
            });
        }
コード例 #16
0
            private static bool TestUndo(DockItem dockItem)
            {
                DockControl dockControl = dockItem.DockControl;

                if (!dockControl.CanEnterUndo)
                {
                    return(false);
                }

                if (dockItem.FirstPane == null)
                {
                    return(false);
                }

                if (dockItem.UndoRedoReference == null)
                {
                    dockControl.ClearUndo();
                    return(false);
                }

                return(true);
            }
コード例 #17
0
        public static DockPaneNodeStruct FromDockPaneNode(DockPaneNode paneNode)
        {
            DockControl dockControl = paneNode.DockControl;

            Debug.Assert(dockControl != null);

            int          ancestorSplitLevel = 0;
            DockPaneNode node;

            for (node = paneNode; node is DockPaneSplit; node = (node as DockPaneSplit).Child1)
            {
                ancestorSplitLevel++;
            }
            DockPane pane = node as DockPane;

            Debug.Assert(pane != null);

            DockItem item       = pane.Items[0];
            int      itemIndex  = dockControl.DockItems.IndexOf(item);
            bool     isFloating = paneNode.IsFloating;

            return(new DockPaneNodeStruct(itemIndex, isFloating, ancestorSplitLevel));
        }
コード例 #18
0
        internal static void Load(DockControl dockControl, DockLayout layout, Func <object, DockItem> loadDockItemCallback)
        {
            Debug.Assert(dockControl.DockItems.Count == 0);

            dockControl.DockTreeZOrder       = layout.DockTreeZOrder;
            dockControl.LeftDockTreeWidth    = layout.LeftDockTreeWidth;
            dockControl.RightDockTreeWidth   = layout.RightDockTreeWidth;
            dockControl.TopDockTreeHeight    = layout.TopDockTreeHeight;
            dockControl.BottomDockTreeHeight = layout.BottomDockTreeHeight;
            DockItemCollection items = dockControl.DockItems;

            foreach (DockItemReference itemRef in layout.DockItems)
            {
                DockItem item = loadDockItemCallback == null ? (DockItem)itemRef.Target : loadDockItemCallback(itemRef.Target);
                item.AutoHideSize = itemRef.AutoHideSize;
                items.AddInternal(item);
            }

            foreach (ShowAction action in layout.ShowActions)
            {
                action.Run(dockControl);
            }
        }
コード例 #19
0
        internal static DockLayout Save(DockControl dockControl)
        {
            DockLayout layout = new DockLayout();

            layout.DockTreeZOrder       = dockControl.DockTreeZOrder;
            layout.LeftDockTreeWidth    = dockControl.LeftDockTreeWidth;
            layout.RightDockTreeWidth   = dockControl.RightDockTreeWidth;
            layout.TopDockTreeHeight    = dockControl.TopDockTreeHeight;
            layout.BottomDockTreeHeight = dockControl.BottomDockTreeHeight;
            layout.DockItems.Clear();
            layout.ShowActions.Clear();

            foreach (DockItem item in dockControl.DockItems)
            {
                DockItemReference itemRef = new DockItemReference();
                itemRef.AutoHideSize = item.AutoHideSize;
                itemRef.Target       = item.Save();
                layout.DockItems.Add(itemRef);
            }

            Default.FillDockActions(dockControl, layout);

            return(layout);
        }
コード例 #20
0
 protected override void ExecuteOverride(DockControl dockControl)
 {
     GetDockItem(dockControl).DoShowAsSidePane(GetTargetPaneNode(dockControl), _isAutoHide, _side, _size, _isSizeForTarget, ShowMethod);
 }
コード例 #21
0
 private DockPaneNode GetTargetPaneNode(DockControl dockControl)
 {
     return(_paneNodeStruct.ToDockPaneNode(dockControl));
 }
コード例 #22
0
 public override void UnExecute(DockControl dockControl)
 {
     GetDockItem(dockControl).Show(_showMethod);
 }
コード例 #23
0
 public override void Execute(DockControl dockControl)
 {
     GetDockItem(dockControl).Hide();
 }
コード例 #24
0
ファイル: MainPage.g.i.cs プロジェクト: grautvornix/Bite
        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
        {
            switch (connectionId)
            {
            case 1:
                this.mainPage = ((Baer.BiteGui.MainPage)(target));
                return;

            case 2:

            #line 11 "..\..\..\MainPage.xaml"
                ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.NewDocument);

            #line default
            #line hidden
                return;

            case 3:

            #line 12 "..\..\..\MainPage.xaml"
                ((System.Windows.Input.CommandBinding)(target)).CanExecute += new System.Windows.Input.CanExecuteRoutedEventHandler(this.CanExecuteCloseActiveDocument);

            #line default
            #line hidden

            #line 12 "..\..\..\MainPage.xaml"
                ((System.Windows.Input.CommandBinding)(target)).Executed += new System.Windows.Input.ExecutedRoutedEventHandler(this.CloseActiveDocument);

            #line default
            #line hidden
                return;

            case 4:
                this.dockControl = ((DevZest.Windows.Docking.DockControl)(target));

            #line 31 "..\..\..\MainPage.xaml"
                this.dockControl.FocusedItemChanged += new System.EventHandler <System.EventArgs>(this.OnFocusedItemChanged);

            #line default
            #line hidden

            #line 32 "..\..\..\MainPage.xaml"
                this.dockControl.ActiveItemChanged += new System.EventHandler <System.EventArgs>(this.OnActiveItemChanged);

            #line default
            #line hidden

            #line 33 "..\..\..\MainPage.xaml"
                this.dockControl.ActiveDocumentChanged += new System.EventHandler <System.EventArgs>(this.OnActiveDocumentChanged);

            #line default
            #line hidden

            #line 34 "..\..\..\MainPage.xaml"
                this.dockControl.DockItemStateChanging += new System.EventHandler <DevZest.Windows.Docking.DockItemStateEventArgs>(this.OnDockItemStateChanging);

            #line default
            #line hidden

            #line 35 "..\..\..\MainPage.xaml"
                this.dockControl.DockItemStateChanged += new System.EventHandler <DevZest.Windows.Docking.DockItemStateEventArgs>(this.OnDockItemStateChanged);

            #line default
            #line hidden
                return;

            case 5:
                this.output = ((Baer.BiteGui.Output)(target));
                return;

            case 6:
                this.savedLayout = ((Baer.BiteGui.SavedLayout)(target));
                return;

            case 7:
                this.propertiesWindow = ((Baer.BiteGui.PropertiesWindow)(target));
                return;
            }
            this._contentLoaded = true;
        }
コード例 #25
0
 public void UnExecute(DockControl dockControl)
 {
     SetAutoHideSize(GetDockItem(dockControl), _oldValue);
 }
コード例 #26
0
 public bool ShouldRemove(DockControl dockControl, UpdateAutoHideSizeData value)
 {
     return(value.DockItem == GetDockItem(dockControl) && _oldValue == value.Value);
 }
コード例 #27
0
 public bool Reset(DockControl dockControl, UpdateAutoHideSizeData oldValue, UpdateAutoHideSizeData newValue)
 {
     Initialize(oldValue.DockItem, oldValue.Value, newValue.Value);
     return(true);
 }
コード例 #28
0
 private DockItem GetDockItem(DockControl dockControl)
 {
     return(dockControl.DockItems[_dockItemIndex]);
 }
コード例 #29
0
 internal override bool GetIsAutoHide(DockControl dockControl)
 {
     return(GetTargetPane(dockControl).IsAutoHide);
 }
コード例 #30
0
 public void UnExecute(DockControl dockControl)
 {
     dockControl.DockTreeZOrder = _oldValue;
 }