public TextSearchResult GetTextSearchResult(TextSearchProperties searchProperties) { var textSearchResult = new TextSearchResult(); if (searchProperties.SearchAllTabs) { while (_searchState.TabPageSearchCount <= _searchState.TabCount) { textSearchResult = GetTextSearchResultInActiveState(searchProperties); if (textSearchResult.SearchTextFound) { textSearchResult.TabIndex = _searchState.TabIndex; break; } if (_searchState.TabIndex == _searchState.InitialTabIndex) { break; } _searchState.TabPageSearchCount++; } } else { textSearchResult = GetTextSearchResultInActiveState(searchProperties); } return(textSearchResult); }
private TextSearchResult GetTextSearchResultInActiveState(TextSearchProperties searchProperties) { var textSearchResult = new TextSearchResult(); TabPageData tabPageData = _tabPageDataCollection.TabPageDictionary[_searchState.TabIndex]; int matchPos; if (string.IsNullOrEmpty(tabPageData.TabPageText)) { SetNextTabIndex(searchProperties.SearchDirection); return(textSearchResult); } if (searchProperties.SearchDirection == TextSearchEvents.SearchDirection.Down) { if (_searchState.StartPosDown >= tabPageData.TabPageText.Length) { _searchState.StartPosDown = tabPageData.TabPageText.Length - 1; } else if (_searchState.StartPosDown < 0) { _searchState.StartPosDown = 0; } matchPos = tabPageData.TabPageText.IndexOf(searchProperties.SearchText, _searchState.StartPosDown, searchProperties.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase); } else { if (_searchState.StartPosUp < 0 || _searchState.StartPosUp > tabPageData.TabPageText.Length) { _searchState.StartPosUp = tabPageData.TabPageText.Length; } matchPos = tabPageData.TabPageText.LastIndexOf(searchProperties.SearchText, _searchState.StartPosUp, searchProperties.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase); } if (matchPos >= 0) { _searchState.StartPosDown = matchPos + searchProperties.SearchText.Length; _searchState.StartPosUp = matchPos - searchProperties.SearchText.Length; if (_searchState.StartPosUp < 0) { _searchState.StartPosUp = 0; } textSearchResult.StartPos = matchPos; textSearchResult.Length = searchProperties.SearchText.Length; _searchState.MatchesFound++; textSearchResult.SearchTextFound = true; } else { _searchState.StartPosDown = 0; _searchState.StartPosUp = -1; SetNextTabIndex(searchProperties.SearchDirection); textSearchResult.SearchTextFound = false; } return(textSearchResult); }