protected virtual void RaiseLoadCompleted(XslFOViewerEventArgs eventArgs) { eventArgs.ErrorEvents = new List <XslFOViewerEventArgs>(); eventArgs.ErrorEvents.AddRange(_errorEventList); LoadCompleted.Raise(this, eventArgs); }
protected virtual void RaiseViewerError(XslFOViewerEventArgs eventArgs) { _loadTimer.Stop(); LogItem("Load Stopped due to Error [{0}s].", _loadTimer.Elapsed.TotalSeconds); LogItem("Error: {0}", eventArgs.Message); //Track the Error Events so we can also pass them along at LoadCompleted //for consumers that don't want to trap every event thrown! _errorEventList.Add(eventArgs); //Finally update the Tracking Flag _loadingInProgress = false; //Now raise the Error for all listeners ViewerError.Raise(this, eventArgs); }
private void AbstractControl_LoadError(object sender, XslFOViewerEventArgs e) { //Force UI update of the current LoadStatus SetLoadingState(this.LoadStatus); }
//Private helper mehod to manage events for Loading private void TriggerLoadFile(XslFORenderFileOutput renderedOutput) { try { if (this.LoadStatus == XslFOViewerControlState.Unavailable) { //Process ERROR / UNAVAILABLE State //Raise Error because the Viewer Control is not fully initialized. var eventArg = new XslFOViewerEventArgs("Viewer Error [{0}s]: Pdf Viewer Control not initialized [Status={1}].".FormatArgs(_loadTimer.Elapsed.TotalSeconds, this.LoadStatus.ToString())); LogItem(eventArg.Message); RaiseViewerError(eventArg); //RaiseLoadCompleted(eventArg); //Short Circuit if our current Load Status is UNAVAILALBE because we cannot be initialized, // and therefore should not run anything. return; } else { //Process NORMALLY //Update our reference to the rendered output this.RenderedOutput = renderedOutput; //Process the new rendered output if (renderedOutput != null) { FileInfo pdfBinaryFileInfo = renderedOutput.PdfFileInfo; pdfBinaryFileInfo.Refresh(); if (pdfBinaryFileInfo != null && pdfBinaryFileInfo.Exists) { //Call the Abstract Method (implemented by Inheritec Controls) to load the File! LoadFile(pdfBinaryFileInfo); //ONLY update to Load Completed if the LoadFile abstract method executed successfully! this.LoadStatus = XslFOViewerControlState.LoadCompleted; } else { throw new ArgumentNullException("Pdf Binary file is null or does not exist; a valid file must be specified [{0}].".FormatArgs(pdfBinaryFileInfo.FullName)); } var eventArg = new XslFOViewerEventArgs("Load Completed [{0}s].\nPdf File Loaded: [{1}]".FormatArgs(_loadTimer.Elapsed.TotalSeconds, pdfBinaryFileInfo.FullName), renderedOutput); LogItem(eventArg.Message); RaiseLoadCompleted(eventArg); } else { this.LoadStatus = XslFOViewerControlState.Unloaded; MessageBox.Show(this.ParentForm, "Rendered Output is null or empty!"); } } } catch (Exception exc) { this.LoadStatus = XslFOViewerControlState.Unloaded; RaiseViewerError(new XslFOViewerEventArgs("Error occurred Loading the Rendered Output Pdf File; {0}; Pdf Output File Path [{1}]".FormatArgs(exc.GetMessages(), renderedOutput.PdfFileInfo.FullName), renderedOutput.XslFODocument.ToString())); } finally { _loadTimer.Stop(); //Finally update the Tracking Flag _loadingInProgress = false; } }
protected virtual void RaiseLoadStarting(XslFOViewerEventArgs eventArgs) { LoadStarting.Raise(this, eventArgs); }