protected override void FloatTabExecuted(FloatEventArgs e) { var item = e.DataContext as TabModel; Children.Remove(item); var model = new DockContainerModel { IsRafted = true }; var well = new DocumentWellModel(); well.Children.Add(item); var panel = new DocumentPanelModel(well); model.Content = panel; var wnd = new RaftedWindow(model, panel) { Left = e.VisualBounds.X, Top = e.VisualBounds.Y, Width = e.VisualBounds.Width, Height = e.VisualBounds.Height }; if (ParentContainer != null && ParentContainer.IsRafted && !ParentContainer.AllTabs.Any()) { ParentContainer.Host.TransitionTo(wnd); } else { wnd.Show(); wnd.DragMove(); } }
private void DockExecuted(DockEventArgs e) { //dock can only be center or outer - no splits if (e.TargetDock != DockTarget.Center) { OuterDock(e); return; } var groups = e.SourceContent.OfType <TabWellModelBase>().ToList(); var newGroup = new DocumentWellModel(); foreach (var group in groups) { var allChildren = group.Children.ToList(); foreach (var item in allChildren) { group.Children.Remove(item); item.IsPinned = false; item.IsActive = false; newGroup.Children.Add(item); } } e.SourceWindow.Close(); Children.Add(newGroup); newGroup.IsActive = true; newGroup.SelectedItem = newGroup.Children[0]; }
public void AddItem(TabModel item) { var container = Children.OrderByDescending(c => c.IsActive).FirstOrDefault(); if (container == null) { container = new DocumentWellModel(); Children.Add(container); } container.Children.Insert(0, item); container.SelectedItem = item; container.IsActive = true; }
private void InnerDock(DockEventArgs e) { var index = ParentPanel.Children.IndexOf(this); if (e.TargetDock == DockTarget.SplitRight || e.TargetDock == DockTarget.SplitBottom) { index++; } var orientation = e.TargetDock == DockTarget.SplitLeft || e.TargetDock == DockTarget.SplitRight ? Orientation.Horizontal : Orientation.Vertical; var groups = e.SourceContent.OfType <TabWellModelBase>().ToList(); var newGroup = new DocumentWellModel(); foreach (var group in groups) { var allChildren = group.Children.ToList(); foreach (var item in allChildren) { group.Children.Remove(item); item.IsPinned = false; item.IsActive = false; newGroup.Children.Add(item); } } ParentPanel.Orientation = orientation; ParentPanel.Children.Insert(index, newGroup); foreach (var child in ParentPanel.Children) { child.PanelSize = new GridLength(1, GridUnitType.Star); } e.SourceWindow.Close(); }
public DocumentPanelModel(DocumentWellModel child) : this() { Children.Add(child); }