예제 #1
0
        public override void GotoLineExecuted(object sender)
        {
            FilterTabViewModel filterTab = (FilterTabViewModel)CurrentTab();
            LogTabViewModel    logTab    = (LogTabViewModel)_LogViewModel.CurrentTab();

            if (filterTab != null && logTab != null)
            {
                int filterIndex = -1;
                int logIndex    = ((Selector)logTab.Viewer).SelectedIndex;

                if (logIndex <= logTab.ContentList.Count)
                {
                    filterIndex = logTab.ContentList[logIndex].FilterIndex;
                }
                else
                {
                    SetStatus("filter:gotoLine:error in index:" + filterIndex.ToString());
                    return;
                }

                if (filterIndex >= 0)
                {
                    SetStatus("filter:gotoLine:" + filterIndex.ToString());
                    ((Selector)filterTab.Viewer).SelectedIndex = filterIndex;

                    DataGrid       dataGrid       = (DataGrid)CurrentTab().Viewer;
                    FilterFileItem filterFileItem = CurrentFile().ContentItems.FirstOrDefault(x => x.Index == filterIndex);

                    dataGrid.ScrollIntoView(filterFileItem);
                    dataGrid.SelectedItem  = filterFileItem;
                    dataGrid.SelectedIndex = dataGrid.Items.IndexOf(filterFileItem);
                    dataGrid.UpdateLayout();

                    DataGridRow            row       = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(dataGrid.SelectedIndex);
                    DataGridCellsPresenter presenter = FindVisualChild <DataGridCellsPresenter>(row);

                    if (presenter != null)
                    {
                        DataGridCell cell = presenter.ItemContainerGenerator.ContainerFromIndex(0) as DataGridCell;

                        if (cell != null)
                        {
                            cell.Focus();
                        }
                    }
                }
                else if (filterIndex == -1)
                {
                    // quick filter
                    if (QuickFindCombo != null)
                    {
                        Keyboard.Focus(QuickFindCombo);
                    }
                }
            }
        }
예제 #2
0
        public override void AddTabItem(IFile <FilterFileItem> filterFile)
        {
            if (!TabItems.Any(x => String.Compare((string)x.Tag, filterFile.Tag, true) == 0))
            {
                SetStatus("adding tab:" + filterFile.Tag);
                FilterTabViewModel tabItem = new FilterTabViewModel()
                {
                    Name        = filterFile.FileName,
                    ContentList = ((FilterFile)filterFile).ContentItems,
                    Tag         = filterFile.Tag,
                    Header      = filterFile.FileName,
                    Modified    = false,
                    IsNew       = filterFile.IsNew
                };

                // tabItem.ContentList.CollectionChanged += ContentList_CollectionChanged;
                tabItem.PropertyChanged += tabItem_PropertyChanged;
                TabItems.Add(tabItem);

                SelectedIndex = TabItems.Count - 1;
            }
        }