Example #1
0
        public void CloseClick(UCTabItemWithClose item)
        {
            if (m_Parent.Items.Count <= 0)
            {
                return;
            }
            if (item.itemType != TAB_ITEM.CONTENT)
            {
                return;
            }

            m_Parent.Items.Remove(item);
            int index = allTabls.IndexOf(item);

            if (index >= 0)
            {
                allTabls.RemoveAt(index);
                if (index < leftIndex)
                {
                    leftIndex--;
                }
                if (index < rightIndex)
                {
                    rightIndex--;
                }
            }
            AjustTabSelect();
            RebuildItems();
        }
Example #2
0
 public void OnSelect(UCTabItemWithClose item)
 {
     for (int i = 0; i < allTabls.Count; ++i)
     {
         if (item.data != null && item.data.SameItem(allTabls[i].data))
         {
             tabSelectIndex = i;
             return;
         }
     }
 }
Example #3
0
        public static UCTabItemWithClose NewItem(ExcelDataItem content, TAB_ITEM itemType = TAB_ITEM.CONTENT)
        {
            UCTabItemWithClose item = new UCTabItemWithClose(itemType);

            item.data = content;
            if (content != null)
            {
                item.Header  = content.header;
                item.ToolTip = content.header;
            }
            item.FontSize = MainConfig.Instance.tableFontSize;
            DataGrid data = new DataGrid();

            //让DataUnit不会自动生成列
            data.AutoGenerateColumns = false;
            //不能主动添加行
            data.CanUserAddRows = false;
            //不能排序
            data.CanUserSortColumns = false;
            //单元格选中
            data.SelectionUnit = DataGridSelectionUnit.Cell;
            //单元格单选
            data.SelectionMode = DataGridSelectionMode.Single;
            //单元格选中后更新右键菜单
            data.SelectedCellsChanged += (object sender, SelectedCellsChangedEventArgs e) =>
            {
                OnRightClick(data, sender, e);
            };
            data.ContextMenu = new ContextMenu();
            foreach (var it in TabItemControl.NewGridConfig())
            {
                data.Columns.Add(it);
            }
            data.MaxWidth = TabItemControl.TABLE_MAX_WIDTH;
            if (content != null)
            {
                data.ItemsSource = new ObservableCollection <DataUnit>(item.DataList);
            }
            Grid grid = new Grid();

            grid.Children.Add(data);
            item.Content = grid;

            if (itemType != TAB_ITEM.CONTENT)
            {
                item.Width = MainConfig.Instance.tableArrowItemWidth;
            }
            else
            {
                item.Width = MainConfig.Instance.tableItemWidth;
            }
            return(item);
        }
Example #4
0
 public void AddItem(UCTabItemWithClose item)
 {
     for (int i = 0; i < allTabls.Count; ++i)
     {
         if (item.data != null && item.data.SameItem(allTabls[i].data))
         {
             tabSelectIndex = i;
             RebuildItems();
             return;
         }
     }
     m_Parent.Items.Insert(m_Parent.Items.Count - SWITCH_COUNT, item);
     allTabls.Insert(rightIndex, item);
     rightIndex++;
     tabSelectIndex = rightIndex - 1;
     RebuildItems();
 }
Example #5
0
        private static void OnRightClick(DataGrid grid, object sender, SelectedCellsChangedEventArgs e)
        {
            var data = ((DataUnit)(grid.SelectedCells[0].Item));

            if (data == null)
            {
                return;
            }
            var index = ((BDataGridTextColumn)grid.SelectedCells[0].Column).index;

            grid.ContextMenu.Items.Clear();
            {//复制
                var menuItem = new MenuItem();
                menuItem.Header = "复制到剪贴板";
                menuItem.Click += (object newSender, RoutedEventArgs newE) =>
                {
                    Clipboard.SetText(data.dataInfo[index]);
                };
                grid.ContextMenu.Items.Add(menuItem);
            }
            if (index != VIEW_DATA.VALUE.ToInt())
            {
                return;
            }

            var retList = SearchManager.Instance.RawSearch(data.dataInfo[index]);

            foreach (var it in retList)
            {
                var tempIt   = it;
                var menuItem = new MenuItem();
                menuItem.Header = tempIt.header;
                menuItem.Click += (object newSender, RoutedEventArgs newE) =>
                {
                    MainWindow.tabCtrl.AddItem(UCTabItemWithClose.NewItem(tempIt));
                };
                grid.ContextMenu.Items.Add(menuItem);
            }
        }
Example #6
0
        public void OnMuluItemSelected(object sender, RoutedEventArgs e)
        {
            var tree = (BTreeView)(sender);

            AddItem(UCTabItemWithClose.NewItem(tree.data));
        }
Example #7
0
        public void RebuildItems()
        {
            if (m_Parent.Items.Count <= 0 || allTabls.Count <= 0 || leftIndex < 0)
            {
                return;
            }

            var tabMaxWidth = win.TabContent.ActualWidth;

            if (tabMaxWidth <= 10)
            {
                return;
            }
            var criticalCount = (int)((tabMaxWidth - MainConfig.Instance.tableItemExtraWidth) / MainConfig.Instance.tableItemWidth);

            if (allTabls.Count > criticalCount)
            {
                if (SWITCH_COUNT <= 0)
                {
                    m_Parent.Items.Add(UCTabItemWithClose.NewItem(null, TAB_ITEM.LEFT_ARROW));
                    m_Parent.Items.Add(UCTabItemWithClose.NewItem(null, TAB_ITEM.RIGHT_ARROW));
                    SWITCH_COUNT = 2;
                }
            }
            else
            {
                if (SWITCH_COUNT > 0)
                {
                    m_Parent.Items.RemoveAt(m_Parent.Items.Count - 1);
                    m_Parent.Items.RemoveAt(m_Parent.Items.Count - 1);
                    SWITCH_COUNT = 0;
                }
            }

            criticalCount = (int)(tabMaxWidth - MainConfig.Instance.tableArrowItemWidth * SWITCH_COUNT - MainConfig.Instance.tableItemExtraWidth) / MainConfig.Instance.tableItemWidth;
            if (criticalCount <= 0)
            {
                criticalCount = 1;
            }

            var curTabIndex = tabSelectIndex;

            if (curTabIndex < 0)
            {
                curTabIndex = 0;
            }
            if (curTabIndex < leftIndex)
            {
                for (int i = leftIndex - 1; i >= curTabIndex; i--)
                {
                    m_Parent.Items.Insert(0, allTabls[i]);
                }
                leftIndex = curTabIndex;
            }
            if (curTabIndex >= rightIndex)
            {
                for (int i = rightIndex; i <= curTabIndex; ++i)
                {
                    m_Parent.Items.Insert(m_Parent.Items.Count - SWITCH_COUNT, allTabls[i]);
                }
                rightIndex = curTabIndex + 1;
            }

            if (m_Parent.Items.Count - SWITCH_COUNT > criticalCount)
            {
                var removeCount = m_Parent.Items.Count - criticalCount - SWITCH_COUNT;

                var leftAdd  = Math.Min(removeCount, curTabIndex - leftIndex);
                var rightDec = removeCount - leftAdd;
                for (int i = 0; i < leftAdd; ++i)
                {
                    m_Parent.Items.RemoveAt(0);
                }
                for (int i = 0; i < rightDec; ++i)
                {
                    m_Parent.Items.RemoveAt(m_Parent.Items.Count - SWITCH_COUNT - 1);
                }
                leftIndex  += leftAdd;
                rightIndex -= rightDec;
            }
            else
            {
                var maxRemoveCount = criticalCount + SWITCH_COUNT - m_Parent.Items.Count;
                var leftDec        = Math.Min(maxRemoveCount, leftIndex);
                var rightAdd       = Math.Min(maxRemoveCount - leftDec, allTabls.Count - rightIndex);
                for (int i = leftIndex - 1; i >= leftIndex - leftDec; --i)
                {
                    m_Parent.Items.Insert(0, allTabls[i]);
                }
                for (int i = rightIndex; i < rightIndex + rightAdd; ++i)
                {
                    m_Parent.Items.Insert(m_Parent.Items.Count - SWITCH_COUNT, allTabls[i]);
                }
                leftIndex  -= leftDec;
                rightIndex += rightAdd;
            }
            tabSelectIndex = curTabIndex;
            AjustTabSelect();
        }