예제 #1
0
        protected override void FloatTabExecuted(FloatEventArgs e)
        {
            var item = e.DataContext as TabModel;

            Children.Remove(item);

            var group = new ToolWellModel()
            {
                IsWindow = true
            };

            group.Children.Add(item);

            var wnd = new ToolWindow
            {
                Content = group,
                Left    = e.VisualBounds.X,
                Top     = e.VisualBounds.Y,
                Width   = e.VisualBounds.Width,
                Height  = e.VisualBounds.Height
            };

            if (ParentViewModel != null && ParentViewModel.IsRafted && !ParentViewModel.AllTabs.Any())
            {
                ShowOnClose(ParentViewModel.Host, wnd);
            }
            else
            {
                wnd.Show();
                wnd.DragMove();
            }
        }
예제 #2
0
        private void OuterDock(DockEventArgs e)
        {
            var groups   = e.SourceContent.OfType <TabWellModelBase>().ToList();
            var newGroup = new ToolWellModel()
            {
                Dock = (Dock)((int)e.TargetDock - 5)
            };

            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);
                }
            }

            var newSplit = new SplitViewModel();

            newSplit.Orientation = e.TargetDock == DockTarget.DockLeft || e.TargetDock == DockTarget.DockRight
                ? Orientation.Horizontal
                : Orientation.Vertical;

            if (ParentModel == null)
            {
                ParentViewModel.Content = newSplit;
            }
            else
            {
                ParentModel.Replace(Parent, newSplit);
            }

            if (e.TargetDock == DockTarget.DockTop || e.TargetDock == DockTarget.DockLeft)
            {
                newSplit.Item1     = newGroup;
                newSplit.Item2     = Parent;
                newSplit.Item1Size = new GridLength(e.DesiredSize);
            }
            else
            {
                newSplit.Item1     = Parent;
                newSplit.Item2     = newGroup;
                newSplit.Item2Size = new GridLength(e.DesiredSize);
            }

            newGroup.IsActive     = true;
            newGroup.SelectedItem = newGroup.Children.First();

            e.SourceWindow.Close();
        }
예제 #3
0
        protected override void DockExecuted(DockEventArgs e)
        {
            if (e.TargetDock == DockTarget.Center)
            {
                base.DockExecuted(e);
                return;
            }

            var groups   = e.SourceContent.OfType <TabWellModelBase>().ToList();
            var newGroup = new ToolWellModel()
            {
                Dock = Dock
            };

            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);
                }
            }

            var newSplit = new SplitViewModel();

            double remainingSize;

            if (e.TargetDock == DockTarget.SplitLeft || e.TargetDock == DockTarget.SplitRight)
            {
                newSplit.Orientation = Orientation.Horizontal;
                remainingSize        = Width - e.DesiredSize;
            }
            else
            {
                newSplit.Orientation = Orientation.Vertical;
                remainingSize        = Height - e.DesiredSize;
            }

            ParentModel.Replace(this, newSplit);
            if (e.TargetDock == DockTarget.SplitTop || e.TargetDock == DockTarget.SplitLeft)
            {
                newSplit.Item1     = newGroup;
                newSplit.Item2     = this;
                newSplit.Item1Size = new GridLength(e.DesiredSize, GridUnitType.Star);
                newSplit.Item2Size = new GridLength(remainingSize, GridUnitType.Star);
            }
            else
            {
                newSplit.Item1     = this;
                newSplit.Item2     = newGroup;
                newSplit.Item1Size = new GridLength(remainingSize, GridUnitType.Star);
                newSplit.Item2Size = new GridLength(e.DesiredSize, GridUnitType.Star);
            }

            newGroup.IsActive     = true;
            newGroup.SelectedItem = newGroup.Children.First();

            e.SourceWindow.Close();
        }