Esempio n. 1
0
        private void AddToLeft(IBTabControl tc2)
        {
            if (P1 == null)
            {
                P1 = new IBPanel();
                P1.Children.Add(tc2);
                P1.TC = tc2;
            }
            else
            {
                P1.RemoveFromParent();
            }

            if (P2 == null)
            {
                P2 = new IBPanel();
                P2.Children.Add(TC);
                P2.TC = TC;
            }
            else
            {
                P2.RemoveFromParent();
            }

            ColumnDefinition newColumn1 = new ColumnDefinition()
            {
                Width = new GridLength(200, GridUnitType.Pixel), MinWidth = 50.0
            };
            ColumnDefinition newColumn2 = new ColumnDefinition()
            {
                Width = new GridLength(1, GridUnitType.Star), MinWidth = 50.0
            };

            ColumnDefinitions.Add(newColumn1);
            ColumnDefinitions.Add(newColumn2);

            P1.CurrentPos = Position.left;
            P1.SetColumnRow();

            PS.Height              = double.NaN;
            PS.Margin              = new Thickness(-3, 0, 0, 0);
            PS.VerticalAlignment   = VerticalAlignment.Stretch;
            PS.HorizontalAlignment = HorizontalAlignment.Left;
            PS.SetValue(ColumnProperty, 1);

            P2.CurrentPos = Position.right;
            P2.SetColumnRow();

            Children.Add(P1);
            Children.Add(PS);
            Children.Add(P2);
        }
        private void Border_Drop(object sender, DragEventArgs e)
        {
            IsDropping = false;

            if (e.Data.GetData(typeof(IBTabItem)) == null)
            {
                return;
            }

            IBTabItem ti = e.Data.GetData(typeof(IBTabItem)) as IBTabItem;

            if (ti == null)
            {
                throw new IBLayoutException("ドロップされたパネルを取得できません");
            }

            if (!ti.AllowDropToAnother)
            {
                return;
            }

            IBPanel parentPanel = Parent as IBPanel;

            if (parentPanel == null)
            {
                throw new IBLayoutException("IBPanelSplitter の親が IBPanel でありません");
            }

            IBWorkspace Workspace = parentPanel.GetVisualParent() as IBWorkspace;

            if (Workspace == null)
            {
                throw new IBLayoutException("IBWorkspace を取得できません");
            }

            IBTabControl parent_ti = ti.Parent as IBTabControl;

            if (parent_ti == null)
            {
                throw new IBLayoutException("IBTabItem の親が IBTabControl でありません");
            }

            IBPanel parent_parent_ti = parent_ti.Parent as IBPanel;

            if (parent_parent_ti == null)
            {
                throw new IBLayoutException("IBTabControl の親が IBPanel でありません");
            }

            if (parentPanel == parent_parent_ti && parent_ti.Items.Count == 1)
            {
                return;
            }


            IBTabControl tc2 = new IBTabControl();
            IBPanel      p   = new IBPanel();
            IBPanel      p1  = new IBPanel();

            p1 = Workspace.Content as IBPanel;
            p1.RemoveFromParent();
            p.Children.Add(p1);

            ti.RemoveFromParent();
            tc2.Items.Add(ti);

            if (HorizontalAlignment == HorizontalAlignment.Left)
            {
                p.P2         = p1;
                p.CurrentPos = p1.CurrentPos;
                p.AddIBTabControl(tc2, Position.left);
                Workspace.Content = p;
            }
            else if (HorizontalAlignment == HorizontalAlignment.Right)
            {
                p.P1         = p1;
                p.CurrentPos = p1.CurrentPos;
                p.AddIBTabControl(tc2, Position.right);
                Workspace.Content = p;
            }
            else if (VerticalAlignment == VerticalAlignment.Top)
            {
                p.P2         = p1;
                p.CurrentPos = p1.CurrentPos;
                p.AddIBTabControl(tc2, Position.top);
                Workspace.Content = p;
            }
            else if (VerticalAlignment == VerticalAlignment.Bottom)
            {
                p.P1         = p1;
                p.CurrentPos = p1.CurrentPos;
                p.AddIBTabControl(tc2, Position.bottom);
                Workspace.Content = p;
            }

            if (parent_ti.Items.Count == 0)
            {
                parent_parent_ti.RemoveIBPanel();
            }
        }