Example #1
0
        internal bool DropTab(TearableTabItem tabItemSource)
        {
            bool retVal = false;

            try
            {
                TearableTabControl tabControlTarget = this;

                if (tabControlTarget != null)
                {
                    TearableTabControl tabControlSource = tabItemSource.Parent as TearableTabControl;
                    if (tabControlTarget != tabControlSource && !tabControlTarget.IsChildOf(tabItemSource))
                    {
                        if (null != tabControlSource && tabControlSource.Items.Contains(tabItemSource))
                        {
                            tabControlSource.Items.Remove(tabItemSource);
                            // Should this be disposed if no items remain???
                        }
                        tabControlTarget.Items.Insert(tabControlTarget.Items.Count, tabItemSource);
                        tabItemSource.IsSelected = true;
                        retVal = true;
                    }
                    else
                    {
                        Log.LogWriter.Instance.WriteToLog(Log.LogMsgType.Error, "Cannot add tab to internal tab control");
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return(retVal);
        }
Example #2
0
        private void TabItem_Drop(object sender, DragEventArgs e)
        {
            try
            {
                TearableTabItem tabItemTarget = e.Source as TearableTabItem;
                TearableTabItem tabItemSource = e.Data.GetData(typeof(TearableTabItem)) as TearableTabItem;

                if (null != SharedData)
                {
                    SharedData.AllowTabDrag = false;
                }

                if (tabItemTarget != null && tabItemSource != null)
                {
                    tiHoverTimer?.Stop();
                    tiHoverTimer = null;
                    if (!tabItemTarget.Equals(tabItemSource))
                    {
                        TearableTabControl tabControlSource = tabItemSource.Parent as TearableTabControl;
                        String             source           = tabControlSource.Name;
                        TearableTabControl tabControlTarget = tabItemTarget.Parent as TearableTabControl;
                        String             target           = tabControlTarget.Name;
                        if (tabControlSource.Equals(tabControlTarget))
                        {
                            int sourceIndex = tabControlTarget.Items.IndexOf(tabItemSource);
                            int targetIndex = tabControlTarget.Items.IndexOf(tabItemTarget);

                            tabControlTarget.Items.Remove(tabItemSource);
                            tabControlTarget.Items.Insert(targetIndex, tabItemSource);

                            //tabControlTarget.Items.Remove(tabItemTarget);
                            //tabControlTarget.Items.Insert(sourceIndex, tabItemTarget);
                        }
                        else
                        {
                            int targetIndex = Math.Min(tabControlTarget.Items.Count, tabControlTarget.Items.IndexOf(tabItemTarget));
                            int one         = tabControlTarget.Items.IndexOf(tabItemTarget);

                            tabControlSource.Items.Remove(tabItemSource);
                            tabControlTarget.Items.Insert(targetIndex, tabItemSource);
                        }
                        tabItemSource.IsSelected = true;
                    }
                    e.Handled = true;
                }
            }
            catch (Exception ex)
            {
            }
        }
Example #3
0
        public override void OnApplyTemplate()
        {
            Button button = this.GetTemplateChild("PART_Close") as Button;

            if (null != button)
            {
                button.Click += (s, e) =>
                {
                    if (button.IsMouseOver)
                    {
                        TearableTabControl parent = this.Parent as TearableTabControl;
                        if (null != parent)
                        {
                            parent.Items.Remove(this);
                        }
                        this.Dispose();
                    }
                };
            }
        }
 public bool AddControl(DropLocation location, TearableTabControl ttControl, TearableTabItem newTabItem, ref Grid droppedItemParent)
 {
     return(true);
 }