internal DockPaneSplit(DockPaneNode child1, DockPaneNode child2, Orientation orientation, bool isSplitterTopLeft, SplitterDistance splitterDistance) { Child1 = child1; Child2 = child2; Orientation = orientation; IsSplitterTopLeft = isSplitterTopLeft; SplitterDistance = splitterDistance; }
private static void SetAutoHideSize(DockItem dockItem, SplitterDistance value) { dockItem.AutoHideSize = value; if (DockPositionHelper.IsAutoHide(dockItem.DockPosition) && !dockItem.IsSelected) { dockItem.Show(DockItemShowMethod.Select); } }
public bool Merge(DockControl dockControl, ResizeDockTreeData newValue) { if (newValue.Dock != Dock) { return(false); } _newValue = newValue.Value; return(true); }
internal ShowAsSidePaneAction(int source, int target, bool isFloating, int ancestorLevel, bool isAutoHide, Dock side, SplitterDistance size, bool isSizeForTarget, DockItemShowMethod showMethod) : base(source, target, isFloating, showMethod) { _ancestorLevel = ancestorLevel; _isAutoHide = isAutoHide; _side = side; _size = size; _isSizeForTarget = isSizeForTarget; }
private ShowAsSidePaneCommand(DockItem dockItem, DockPaneNode paneNode, bool isAutoHide, Dock side, SplitterDistance size, bool isSizeForTarget, DockItemShowMethod showMethod) : base(dockItem, showMethod) { TargetPaneNode = paneNode; _isAutoHide = isAutoHide; _side = side; _size = size; _isSizeForTarget = isSizeForTarget; }
internal NestedDockEntry(DockPane sourcePane, DockItem targetItem, int ancestorSplitLevel, Dock dock, SplitterDistance splitterDistance, bool swapChildren) { Debug.Assert(targetItem != null); _sourcePane = sourcePane; _targetItem = targetItem; _ancestorSplitLevel = ancestorSplitLevel; _dock = dock; _splitterDistance = splitterDistance; _swapChildren = swapChildren; }
public bool Merge(DockControl dockControl, UpdateAutoHideSizeData value) { if (GetDockItem(dockControl) != value.DockItem) { return(false); } _newValue = value.Value; return(true); }
public bool Reset(DockControl dockControl, ResizeDockTreeData oldValue, ResizeDockTreeData newValue) { Debug.Assert(oldValue.Dock == newValue.Dock); if (oldValue.Dock != Dock) { return(false); } _oldValue = oldValue.Value; _newValue = newValue.Value; return(true); }
private static ShowAction GetShowAsSidePaneAction(DockItem item, DockPane pane) { DockPaneSplit split = pane.Parent; Debug.Assert(split != null); DockPaneNode targetPaneNode = split.Child1 == pane ? split.Child2 : split.Child1; Debug.Assert(targetPaneNode != null); DockPaneNodeStruct targetPaneNodeStruct = DockPaneNodeStruct.FromDockPaneNode(targetPaneNode); bool swapChildren = split.Child1 == targetPaneNode; Dock side; if (split.Orientation == Orientation.Horizontal) { if (split.IsSplitterTopLeft) { side = Dock.Left; } else { side = Dock.Right; } } else { if (split.IsSplitterTopLeft) { side = Dock.Top; } else { side = Dock.Bottom; } } SplitterDistance splitterDistance = split.SplitterDistance; int source = pane.DockControl.DockItems.IndexOf(item); int targetIndex = targetPaneNodeStruct.ItemIndex; bool isFloating = targetPaneNodeStruct.IsFloating; int ancestorLevel = targetPaneNodeStruct.AncestorLevel; bool isAutoHide = pane.IsAutoHide; DockItemShowMethod showMethod = GetShowMethod(item, pane); return(new ShowAsSidePaneAction(source, targetIndex, isFloating, ancestorLevel, isAutoHide, side, splitterDistance, swapChildren, showMethod)); }
private ShowAsSidePaneAction GetShowAsSidePaneAction(DockItem sourceItem, DockPane sourcePane, DockPane targetPane, int ancestorSplitLevel, DockPaneSplit split, DockItemShowMethod showMethod) { Debug.Assert(sourceItem != null); Debug.Assert(targetPane != null); Dock side; if (split.Orientation == Orientation.Horizontal) { if (split.IsSplitterTopLeft) { side = Dock.Left; } else { side = Dock.Right; } } else { if (split.IsSplitterTopLeft) { side = Dock.Top; } else { side = Dock.Bottom; } } SplitterDistance splitterDistance = split.SplitterDistance; DockPaneSplit child1Split = split.Child1 as DockPaneSplit; bool swapChildren = split.Child1 == targetPane || (child1Split != null && child1Split.IsParentOf(targetPane)); int source = GetIndex(sourceItem); DockItem targetItem = GetItems(targetPane)[0]; Debug.Assert(targetPane.Items.Contains(targetItem)); int targetIndex = GetIndex(targetItem); bool isAutoHide = sourcePane.IsAutoHide; return(new ShowAsSidePaneAction(source, targetIndex, targetPane.IsFloating, ancestorSplitLevel, isAutoHide, side, splitterDistance, swapChildren, showMethod)); }
private void SetSplitterDistance(Dock dock, SplitterDistance value) { if (dock == Dock.Left) { DockControl.LeftDockTreeWidth = value; } else if (dock == Dock.Right) { DockControl.RightDockTreeWidth = value; } else if (dock == Dock.Top) { DockControl.TopDockTreeHeight = value; } else { Debug.Assert(dock == Dock.Bottom); DockControl.BottomDockTreeHeight = value; } }
internal void UpdateSplitterDistance() { if (_flagUpdateSplitterDistance) { return; } _flagUpdateSplitterDistance = true; try { Dock position = Position; SplitterDistance distance = GetSplitterDistance(position); SplitterDistance distanceToSet; if (distance.IsAutoStar) { distanceToSet = SplitterDistance.AutoPixel; } else if (distance.IsStar) { double proportion = distance.Value / (distance.Value + 1); if (Orientation == Orientation.Horizontal) { distanceToSet = new SplitterDistance(DockTreeClient.ClientSize.Width * proportion, SplitterUnitType.Pixel); } else { distanceToSet = new SplitterDistance(DockTreeClient.ClientSize.Height * proportion, SplitterUnitType.Pixel); } } else { distanceToSet = distance; } SplitterDistance = distanceToSet; } finally { _flagUpdateSplitterDistance = false; } }
private void OnSplitterDistanceChanged(SplitterDistance newValue) { if (_flagUpdateSplitterDistance || DockControl == null) { return; } _flagUpdateSplitterDistance = true; try { Dock position = Position; SplitterDistance oldValue = GetSplitterDistance(position); SplitterDistance valueToSet; if (oldValue.IsAutoStar || oldValue.IsStar) { if (newValue.IsAuto) { valueToSet = SplitterDistance.AutoStar; } else { Size clientSize = DockTreeClient.ClientSize; double totalLength = Position == Dock.Left || Position == Dock.Right ? clientSize.Width : clientSize.Height; double starValue = Math.Max(newValue.Value / (totalLength - newValue.Value), 0); valueToSet = new SplitterDistance(starValue, SplitterUnitType.Star); } } else { valueToSet = newValue; } SetSplitterDistance(position, valueToSet); } finally { _flagUpdateSplitterDistance = false; } }
private static NestedDockEntry GetNestedDockEntry(DockPane sourcePane, DockPane targetPane, int ancestorSplitLevel, DockPaneSplit split) { Debug.Assert(sourcePane != null); Debug.Assert(targetPane != null); Debug.Assert(targetPane.SelectedItem != null); Dock dock; if (split.Orientation == Orientation.Horizontal) { if (split.IsSplitterTopLeft) { dock = Dock.Left; } else { dock = Dock.Right; } } else { if (split.IsSplitterTopLeft) { dock = Dock.Top; } else { dock = Dock.Bottom; } } SplitterDistance splitterDistance = split.SplitterDistance; DockPaneSplit child1Split = split.Child1 as DockPaneSplit; bool swapChildren = split.Child1 == targetPane || (child1Split != null && child1Split.IsParentOf(targetPane)); return(new NestedDockEntry(sourcePane, targetPane.SelectedItem, ancestorSplitLevel, dock, splitterDistance, swapChildren)); }
protected ResizeDockTreeCommandBase(SplitterDistance oldValue, SplitterDistance newValue) { _oldValue = oldValue; _newValue = newValue; }
public ResizeRightDockTreeCommand(SplitterDistance oldValue, SplitterDistance newValue) : base(oldValue, newValue) { }
public void BeginDrag(SplitContainer splitContainer, MouseEventArgs e) { _splitContainer = splitContainer; _originalSplitterDistance = _splitContainer.SplitterDistance; _offsetX = _offsetY = 0; Debug.Assert(splitContainer.Splitter != null); DragDetect((UIElement)VisualTreeHelper.GetChild(splitContainer.Splitter, 0), e); }
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); } }
public ShowAsSidePaneEventArgs(DockItem dockItem, DockPaneNode paneNode, bool isAutoHide, Dock side, SplitterDistance size, bool isSizeForTarget, DockItemShowMethod showMethod) : base(dockItem, paneNode.DockControl, showMethod) { ShowAsSidePaneAction showAction = StrongTypeShowAction; DockPaneNodeStruct paneNodeStruct = DockPaneNodeStruct.FromDockPaneNode(paneNode); showAction.Target = paneNodeStruct.ItemIndex; showAction.IsFloating = paneNodeStruct.IsFloating; showAction.AncestorLevel = paneNodeStruct.AncestorLevel; showAction.IsAutoHide = isAutoHide; showAction.Side = side; showAction.Size = size; showAction.IsSizeForTarget = isSizeForTarget; }
public UpdateAutoHideSizeData(DockItem dockItem, SplitterDistance value) { DockItem = dockItem; Value = value; }
internal static string ToString(SplitterDistance distance, CultureInfo cultureInfo) { if (distance.IsAutoPixel) return "Auto"; else if (distance.IsAutoStar) return "Auto*"; else if (distance.UnitType == SplitterUnitType.Star) { if (DoubleUtil.IsOne(distance.Value)) return "*"; else return (Convert.ToString(distance.Value, cultureInfo) + "*"); } else return Convert.ToString(distance.Value, cultureInfo); }
private void InitializeSplitterDistance() { double?splitterDistance = SettingServices.GetMultiTablePageControlSplitterDistance(); SplitterDistance = new SplitterDistance(splitterDistance.HasValue ? splitterDistance.Value : 0, SplitterUnitType.Star); }
private void InitializeSplitterDistance() { double?splitterDistance = SettingServices.GetTreeViewWellSplitterDistance(); SplitterDistance = new SplitterDistance(splitterDistance.HasValue ? splitterDistance.Value : 0, SplitterUnitType.Star); }
internal DockPane AddItem(DockItem item, DockPaneNode targetPaneNode, bool isAutoHide, Dock side, SplitterDistance size, bool isSizeForTarget) { Debug.Assert(targetPaneNode.DockTree == this); DockPane pane = DockControl.PaneManager.CreatePane(item, isAutoHide); AddDirtyNode(pane); AddDirtyNode(targetPaneNode); DockPaneSplit parent = targetPaneNode.Parent; DockPaneNode child1 = side == Dock.Left || side == Dock.Top ? pane : targetPaneNode; DockPaneNode child2 = side == Dock.Left || side == Dock.Top ? targetPaneNode : pane; Orientation orientation = side == Dock.Left || side == Dock.Right ? Orientation.Horizontal : Orientation.Vertical; bool isSplitterTopLeft = isSizeForTarget ? child1 == targetPaneNode : child2 == targetPaneNode; targetPaneNode.ClearParent(); DockPaneSplit newSplit; newSplit = new DockPaneSplit(child1, child2, orientation, isSplitterTopLeft, size); AddDirtyNode(newSplit); if (parent != null) { AddDirtyNode(parent); parent.SetSibling(parent.GetSibling(targetPaneNode), newSplit); } else { SetRootNode(newSplit, false); } AddPaneToCollection(pane); Debug.Assert(newSplit.Child1 != null); Debug.Assert(newSplit.Child1.Parent == newSplit); Debug.Assert(newSplit.Child2 != null); Debug.Assert(newSplit.Child2.Parent == newSplit); return(pane); }
private static bool ValidateSplitterDistance(object value) { SplitterDistance distance = (SplitterDistance)value; return(!distance.IsStar && !distance.IsAutoStar); }
public ResizeDockTreeData(Dock dock, SplitterDistance value) { Dock = dock; Value = value; }
public UpdateAutoHideSizeCommand(DockItem dockItem, SplitterDistance oldValue, SplitterDistance newValue) { Initialize(dockItem, oldValue, newValue); }
private void Initialize(DockItem dockItem, SplitterDistance oldValue, SplitterDistance newValue) { _dockItemIndex = dockItem.DockControl.DockItems.IndexOf(dockItem); _oldValue = oldValue; _newValue = newValue; }
private void MoveSplitter(SplitterDistance value) { SplitterDistance = value; UpdateLayout(); }