public void AddTool(TabModel item, TabOwnerModelBase target, Dock dock) { if (item == null) { throw new ArgumentNullException(nameof(item)); } var group = new ToolWellModel() { Width = item.Width, Height = item.Height, Dock = dock }; group.Children.Add(item); var container = new SplitPanelModel(dock, group); if (target == null) { target = Content; Content = container; } else if (target.ParentBranch != null) { target.ParentBranch.Replace(target, container); } else { System.Diagnostics.Debugger.Break(); throw new InvalidOperationException(); } container.Add(target); }
public bool Remove(TabOwnerModelBase item) { if (Item1 == item) { Item1 = null; return(true); } else if (Item2 == item) { Item2 = null; return(true); } return(false); }
public bool Add(TabOwnerModelBase item) { if (Item1 == null) { Item1 = item; return(true); } else if (Item2 == null) { Item2 = item; return(true); } return(false); }
public SplitPanelModel(Dock dock, TabWellModelBase content) : this() { Orientation = dock == Dock.Left || dock == Dock.Right ? Orientation.Horizontal : Orientation.Vertical; if (dock == Dock.Left || dock == Dock.Top) { Item1 = content; Item1.PanelSize = new GridLength(dock == Dock.Left ? content.Width : content.Height); Item2 = null; } else { Item1 = null; Item2 = content; Item2.PanelSize = new GridLength(dock == Dock.Right ? content.Width : content.Height); } }
public bool Replace(TabOwnerModelBase prev, TabOwnerModelBase next) { if (Item1 == prev) { var sizeTemp = Item1.PanelSize; Item1 = next; Item1.PanelSize = sizeTemp; return(true); } else if (Item2 == prev) { var sizeTemp = Item2.PanelSize; Item2 = next; Item2.PanelSize = sizeTemp; return(true); } return(false); }
private void OnItemChanged(TabOwnerModelBase prev, TabOwnerModelBase next) { prev?.SetParent(null); next?.SetParent(this); if (next == null) { var remaining = Item1 ?? Item2; if (remaining == null) { return; } Item1 = Item2 = null; if (ParentBranch != null) { ParentBranch.Replace(this, remaining); } else if (ParentContainer != null) { ParentContainer.Content = remaining; } } }
internal void SetParent(TabOwnerModelBase parent) => Parent = parent;
protected virtual void OnParentChanged(TabOwnerModelBase prev, TabOwnerModelBase next) { }
private void OnContentChanged(TabOwnerModelBase prev, TabOwnerModelBase next) { prev?.SetParent(null); next?.SetParent(this); }