protected void Navigate(long navigationContextID, MatchNavigationMode mode, RegExpBase regExp, int totalDocsCount, List <double> documentsBlock, int position) { RegExpMatchResult result = null; if (navigationContextID != _navigationContextID || _lastRegExpression != regExp.BuiltExpression) { CleanupNavigationContext(); _navigationContextID = navigationContextID; _navigationStartPosition = position; _lastRegExpression = regExp.BuiltExpression; } switch (mode) { case MatchNavigationMode.Refresh: SendErrorResponse("Invalid navigation mode"); return; case MatchNavigationMode.NextDocument: result = Navigate_Document(regExp, totalDocsCount, documentsBlock, position, position, true); break; case MatchNavigationMode.PrevDocument: result = Navigate_Document(regExp, totalDocsCount, documentsBlock, position, position, false); break; case MatchNavigationMode.NextMatch: result = Navigate_Match(regExp, totalDocsCount, documentsBlock, position, position, true); break; case MatchNavigationMode.PrevMatch: result = Navigate_Match(regExp, totalDocsCount, documentsBlock, position, position, false); break; case MatchNavigationMode.NextUniqueMatch: result = Navigate_UniqueMatch(regExp, totalDocsCount, documentsBlock, position, position, true); break; case MatchNavigationMode.PrevUniqueMatch: result = Navigate_UniqueMatch(regExp, totalDocsCount, documentsBlock, position, position, false); break; } SendResponse(new IpcResponse { ResponseType = IpcResponseType.Success, MatchResult = result }); }
protected void InvokeNavigate(MatchNavigationMode mode) { try { if (_isDirty) { } var formProgress = new FormGenericProgress("Navigating...", DoNavigate, mode, true) { CancellationEnabled = true }; formProgress.ShowDialog(); } catch (Exception ex) { MainForm.ShowExceptionMessage(ex); } }
public RegExpMatchResult Navigate(long navigationContextID, RegExpBase regExp, MatchNavigationMode mode, int totalDocumentsCount, double[] documentsBlock, int position) { lock (myLock) { try { OpenPipe(); SendRequest(new IpcRequest { RequestType = IpcRequestType.Navigate, NavigationContextID = navigationContextID, NavigationMode = mode, DocumentsBlock = documentsBlock, TotalDocumentsCount = totalDocumentsCount, Position = position, RegExp = regExp }); var response = GetResponse(); /////////////////////////////////////////////////////////////////////////////// if (response.ResponseType == IpcResponseType.Success) { return(response.MatchResult); } throw new Exception(response.ErrorMessage, response.Exception); } finally { ClosePipe(); } } }