Beispiel #1
0
        public void Float(object parameter)
        {
            IBMenuItem from = parameter as IBMenuItem;

            if (from == null)
            {
                throw new IBDisableCommandException("コマンドターゲットが不正、または取得できません");
            }
            ContextMenu cm = from.Parent as ContextMenu;

            if (cm == null)
            {
                throw new IBDisableCommandException("コマンドターゲットが不正、または取得できません");
            }
            IBTabItem trg = cm.PlacementTarget as IBTabItem;

            if (trg == null)
            {
                throw new IBDisableCommandException("コマンドターゲットが不正、または取得できません");
            }

            IBTabControl tc = trg.Parent as IBTabControl;

            if (tc == null)
            {
                throw new IBDisableCommandException("コマンドターゲットが不正、または取得できません");
            }
            IBPanel panel = tc.Parent as IBPanel;

            if (panel == null)
            {
                throw new IBDisableCommandException("コマンドターゲットが不正、または取得できません");
            }

            IBWindow ibw = new IBWindow();

            ibw.InputBindings.AddRange(Application.Current.MainWindow.InputBindings);
            ibw.SetIBTabItem(trg);
            ibw.Show();

            if (tc.Items.Count == 0)
            {
                panel.RemoveIBPanel();
            }
        }
        private void MaskRect_Drop(object sender, DragEventArgs e)
        {
            EndDrag();

            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("IBTabControl の親が IBPanel でありません");
            }

            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 (currentDropPos == Position.newWindow)
            {
                IBWindow ibw = new IBWindow();
                ibw.SetIBTabItem(ti);
                ibw.Show();
            }
            else
            {
                if (parentPanel == parent_parent_ti && parent_ti.Items.Count == 1)
                {
                    return;
                }

                if (currentDropPos == Position.center)
                {
                    ti.RemoveFromParent();
                    Items.Add(ti);
                    ti.IsSelected = true;
                }
                else
                {
                    IBTabControl tc2 = new IBTabControl();

                    ti.RemoveFromParent();
                    tc2.Items.Add(ti);
                    parentPanel.AddIBTabControl(tc2, currentDropPos);
                }
            }

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