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();
            }
        }
示例#2
0
        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];
        }
示例#3
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();
        }
示例#5
0
 public DocumentPanelModel(DocumentWellModel child) : this()
 {
     Children.Add(child);
 }