diff --git a/Controls.DocumentViewer/DocumentViewer.Designer.vb b/Controls.DocumentViewer/DocumentViewer.Designer.vb index 96f8fb05..9e3aebd2 100644 --- a/Controls.DocumentViewer/DocumentViewer.Designer.vb +++ b/Controls.DocumentViewer/DocumentViewer.Designer.vb @@ -42,6 +42,7 @@ Partial Class DocumentViewer Me.buttonPrevPage = New DevExpress.XtraBars.BarButtonItem() Me.txtCurrentPage = New DevExpress.XtraBars.BarEditItem() Me.RepositoryItemTextEdit2 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit() + Me.labelPageCount = New DevExpress.XtraBars.BarStaticItem() Me.buttonNextPage = New DevExpress.XtraBars.BarButtonItem() Me.buttonLastPage = New DevExpress.XtraBars.BarButtonItem() Me.buttonSettings = New DevExpress.XtraBars.BarButtonItem() @@ -55,7 +56,6 @@ Partial Class DocumentViewer Me.RepositoryItemComboBox1 = New DevExpress.XtraEditors.Repository.RepositoryItemComboBox() Me.SpreadsheetControl1 = New DevExpress.XtraSpreadsheet.SpreadsheetControl() Me.PrintDocument1 = New System.Drawing.Printing.PrintDocument() - Me.labelPageCount = New DevExpress.XtraBars.BarStaticItem() CType(Me.BarManager1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -282,6 +282,12 @@ Partial Class DocumentViewer Me.RepositoryItemTextEdit2.EditFormat.FormatType = DevExpress.Utils.FormatType.Numeric Me.RepositoryItemTextEdit2.Name = "RepositoryItemTextEdit2" ' + 'labelPageCount + ' + Me.labelPageCount.Caption = "/ 0" + Me.labelPageCount.Id = 24 + Me.labelPageCount.Name = "labelPageCount" + ' 'buttonNextPage ' Me.buttonNextPage.Caption = "Vor" @@ -376,12 +382,6 @@ Partial Class DocumentViewer Me.SpreadsheetControl1.Text = "SpreadsheetControl1" Me.SpreadsheetControl1.Visible = False ' - 'labelPageCount - ' - Me.labelPageCount.Caption = "BarStaticItem2" - Me.labelPageCount.Id = 24 - Me.labelPageCount.Name = "labelPageCount" - ' 'DocumentViewer ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) diff --git a/Controls.DocumentViewer/DocumentViewer.vb b/Controls.DocumentViewer/DocumentViewer.vb index b6687cf6..e1917602 100644 --- a/Controls.DocumentViewer/DocumentViewer.vb +++ b/Controls.DocumentViewer/DocumentViewer.vb @@ -8,6 +8,7 @@ Imports GdPicture14 Imports DevExpress Imports DevExpress.Office.Utils Imports System.IO +Imports DevExpress.XtraRichEdit.Commands Public Class DocumentViewer Private Enum ZoomMode @@ -21,6 +22,13 @@ Public Class DocumentViewer ZoomFitHeight End Enum + Private Enum ViewerMode + GDPicture + RichText + Excel + End Enum + + Private _ViewerMode As ViewerMode Private _currentSearchOccurence As Integer = 0 Private _toggleGamma As Boolean = True Private _licenseKey As String = String.Empty @@ -41,6 +49,7 @@ Public Class DocumentViewer UpdateMainUi() End Sub + Public Property FileLoaded As Boolean = False ''' @@ -76,16 +85,18 @@ Public Class DocumentViewer Exit Sub End If + If FilePath Is Nothing OrElse FilePath.Trim().Length = 0 Then + _logger.Warn("FilePath was not provided. File not loaded.") + Exit Sub + End If + _logger.Info("Loading File {0}", FilePath) - Dim oFileLoaded = DoLoadFile(FilePath) + FileLoaded = DoLoadFile(FilePath) _FilePath = FilePath _Fileinfo = New FileInfo(FilePath) - If oFileLoaded = True Then - FileLoaded = True - End If - + SetViewerMode(_Fileinfo.Extension) UpdateMainUi() End Sub @@ -101,12 +112,9 @@ Public Class DocumentViewer _logger.Info("Loading File [{0}]", FileName) - Dim ofileloaded = DoLoadFile(Stream, oExtension) - - If oFileLoaded = True Then - FileLoaded = True - End If + FileLoaded = DoLoadFile(Stream, oExtension) + SetViewerMode(oExtension) UpdateMainUi() End Sub @@ -125,20 +133,32 @@ Public Class DocumentViewer Next _TempFiles.Clear() End Sub + + Private Sub SetViewerMode(Extension As String) + Select Case Extension.ToUpper + Case ".MSG" + _ViewerMode = ViewerMode.RichText + Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT" + _ViewerMode = ViewerMode.RichText + Case ".XLSX", ".XLS", "CSV" + _ViewerMode = ViewerMode.Excel + Case Else + _ViewerMode = ViewerMode.GDPicture + End Select + End Sub + + Private Sub FreeFile() Try If Len(_FilePath) OrElse _Fileinfo Is Nothing Then Exit Sub End If Dim oExtension As String = _Fileinfo.Extension.ToUpper - Select Case oExtension.ToUpper - Case ".MSG" + Select Case _ViewerMode + Case ViewerMode.RichText RichEditControl1.CreateNewDocument() - Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT" - RichEditControl1.CreateNewDocument() - - Case ".XLSX", ".XLS", "CSV" + Case ViewerMode.Excel SpreadsheetControl1.CreateNewDocument() Case Else @@ -151,7 +171,7 @@ Public Class DocumentViewer End Sub Private Function DoLoadFile(FilePath As String) As Boolean Try - Dim oFileInfo = New IO.FileInfo(FilePath) + Dim oFileInfo = New FileInfo(FilePath) Dim oExtension As String = oFileInfo.Extension.ToUpper RichEditControl1.Visible = False @@ -160,7 +180,7 @@ Public Class DocumentViewer SpreadsheetControl1.Visible = False SpreadsheetControl1.Dock = DockStyle.None - ToolbarDocumentViewer.Visible = False + 'ToolbarDocumentViewer.Visible = False Select Case oExtension.ToUpper Case ".MSG" @@ -194,7 +214,7 @@ Public Class DocumentViewer SpreadsheetControl1.Dock = DockStyle.Fill Case Else - ToolbarDocumentViewer.Visible = True + 'ToolbarDocumentViewer.Visible = True GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter @@ -219,7 +239,7 @@ Public Class DocumentViewer SpreadsheetControl1.Visible = False SpreadsheetControl1.Dock = DockStyle.None - ToolbarDocumentViewer.Visible = False + ' ToolbarDocumentViewer.Visible = False Select Case Extension.ToUpper Case ".MSG" @@ -241,6 +261,7 @@ Public Class DocumentViewer Case ".EML", ".DOC", ".DOCX", ".ODT", ".RTF", ".TXT" RichEditControl1.LoadDocument(Stream, GetDocumentFormat(Extension)) + RichEditControl1.ActiveViewType = XtraRichEdit.RichEditViewType.PrintLayout RichEditControl1.Visible = True RichEditControl1.Dock = DockStyle.Fill @@ -254,7 +275,7 @@ Public Class DocumentViewer SpreadsheetControl1.Dock = DockStyle.Fill Case Else - ToolbarDocumentViewer.Visible = True + 'ToolbarDocumentViewer.Visible = True GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter @@ -348,6 +369,61 @@ Public Class DocumentViewer Private Sub UpdateMainUi() + Select Case _ViewerMode + Case ViewerMode.GDPicture + buttonPrint.Enabled = True + buttonFitWidth.Enabled = True + buttonFitPage.Enabled = True + buttonZoomIn.Enabled = True + buttonZoomOut.Enabled = True + buttonRotateLeft.Enabled = True + buttonRotateRight.Enabled = True + buttonFlipX.Enabled = True + buttonFlipY.Enabled = True + buttonFirstPage.Enabled = True + buttonPrevPage.Enabled = True + buttonNextPage.Enabled = True + buttonLastPage.Enabled = True + buttonSettings.Enabled = True + txtCurrentPage.Enabled = True + + Case ViewerMode.RichText + buttonFitPage.Enabled = True + buttonZoomIn.Enabled = True + buttonZoomOut.Enabled = True + buttonFitWidth.Enabled = True + buttonNextPage.Enabled = True + buttonPrevPage.Enabled = True + + buttonPrint.Enabled = False + buttonRotateLeft.Enabled = False + buttonRotateRight.Enabled = False + buttonFlipX.Enabled = False + buttonFlipY.Enabled = False + buttonFirstPage.Enabled = False + buttonLastPage.Enabled = False + buttonSettings.Enabled = False + txtCurrentPage.Enabled = False + + Case ViewerMode.Excel + buttonPrint.Enabled = False + buttonFitWidth.Enabled = False + buttonFitPage.Enabled = False + buttonZoomIn.Enabled = False + buttonZoomOut.Enabled = False + buttonRotateLeft.Enabled = False + buttonRotateRight.Enabled = False + buttonFlipX.Enabled = False + buttonFlipY.Enabled = False + buttonFirstPage.Enabled = False + buttonPrevPage.Enabled = False + buttonNextPage.Enabled = False + buttonLastPage.Enabled = False + buttonSettings.Enabled = False + txtCurrentPage.Enabled = False + + End Select + End Sub Private Sub btnFirstPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonFirstPage.ItemClick @@ -355,11 +431,21 @@ Public Class DocumentViewer End Sub Private Sub btnPreviousPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonPrevPage.ItemClick - GdViewer.DisplayPreviousPage() + If _ViewerMode = ViewerMode.GDPicture Then + GdViewer.DisplayPreviousPage() + ElseIf _ViewerMode = ViewerMode.RichText Then + Dim oCmd As New PreviousPageCommand(RichEditControl1) + oCmd.Execute() + End If End Sub Private Sub btnNextPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonNextPage.ItemClick - GdViewer.DisplayNextPage() + If _ViewerMode = ViewerMode.GDPicture Then + GdViewer.DisplayNextPage() + ElseIf _ViewerMode = ViewerMode.RichText Then + Dim oCmd As New NextPageCommand(RichEditControl1) + oCmd.Execute() + End If End Sub Private Sub btnLastPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonLastPage.ItemClick @@ -387,15 +473,25 @@ Public Class DocumentViewer End If End Sub - Private Sub btnZoomOut_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonZoomOut.ItemClick - GdViewer.ZoomOUT() + Private Sub btnZoomOut_Click(sender As Object, e As EventArgs) Handles buttonZoomOut.ItemClick + If _ViewerMode = ViewerMode.GDPicture Then + GdViewer.ZoomOUT() + ElseIf _ViewerMode = ViewerMode.RichText Then + Dim oCmd As New ZoomOutCommand(RichEditControl1) + oCmd.Execute() + End If End Sub - Private Sub btnZoomIn_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonZoomIn.ItemClick - GdViewer.ZoomIN() + Private Sub btnZoomIn_Click(sender As Object, e As EventArgs) Handles buttonZoomIn.ItemClick + If _ViewerMode = ViewerMode.GDPicture Then + GdViewer.ZoomIN() + ElseIf _ViewerMode = ViewerMode.RichText Then + Dim oCmd As New ZoomInCommand(RichEditControl1) + oCmd.Execute() + End If End Sub - Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonPrint.ItemClick + Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles buttonPrint.ItemClick If GdViewer.PageCount = 0 Then Return End If @@ -403,19 +499,19 @@ Public Class DocumentViewer GdViewer.PrintDialog() End Sub - Private Sub btnRotateLeft_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonRotateLeft.ItemClick + Private Sub btnRotateLeft_Click(sender As Object, e As EventArgs) Handles buttonRotateLeft.ItemClick GdViewer.Rotate(RotateFlipType.Rotate270FlipNone) End Sub - Private Sub btnRotateRight_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonRotateRight.ItemClick + Private Sub btnRotateRight_Click(sender As Object, e As EventArgs) Handles buttonRotateRight.ItemClick GdViewer.Rotate(RotateFlipType.Rotate90FlipNone) End Sub - Private Sub btnFlipX_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonFlipX.ItemClick + Private Sub btnFlipX_Click(sender As Object, e As EventArgs) Handles buttonFlipX.ItemClick GdViewer.Rotate(RotateFlipType.RotateNoneFlipX) End Sub - Private Sub btnFlipY_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonFlipY.ItemClick + Private Sub btnFlipY_Click(sender As Object, e As EventArgs) Handles buttonFlipY.ItemClick GdViewer.Rotate(RotateFlipType.RotateNoneFlipY) End Sub @@ -469,11 +565,21 @@ Public Class DocumentViewer End Sub Private Sub btnFitWidth_Click(ByVal sender As Object, ByVal e As EventArgs) Handles buttonFitWidth.ItemClick - GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer + If _ViewerMode = ViewerMode.GDPicture Then + GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer + ElseIf _ViewerMode = ViewerMode.RichText Then + Dim oCmd As New FitWidthCommand(RichEditControl1) + oCmd.Execute() + End If End Sub Private Sub btnFitPage_Click(ByVal sender As Object, ByVal e As EventArgs) Handles buttonFitPage.ItemClick - GdViewer.ZoomMode = ViewerZoomMode.ZoomModeFitToViewer + If _ViewerMode = ViewerMode.GDPicture Then + GdViewer.ZoomMode = ViewerZoomMode.ZoomModeFitToViewer + ElseIf _ViewerMode = ViewerMode.RichText Then + Dim oCmd As New FitToPageCommand(RichEditControl1) + oCmd.Execute() + End If End Sub Private Sub RichEditControl1_SizeChanged(sender As Object, e As EventArgs) Handles RichEditControl1.SizeChanged diff --git a/GUIs.Test.DocumentViewerTest/Form1.Designer.vb b/GUIs.Test.DocumentViewerTest/Form1.Designer.vb index b1a5abd3..c70fd751 100644 --- a/GUIs.Test.DocumentViewerTest/Form1.Designer.vb +++ b/GUIs.Test.DocumentViewerTest/Form1.Designer.vb @@ -52,7 +52,7 @@ Partial Class Form1 ' 'Button2 ' - Me.Button2.Location = New System.Drawing.Point(12, 38) + Me.Button2.Location = New System.Drawing.Point(12, 67) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size(637, 23) Me.Button2.TabIndex = 2 @@ -61,7 +61,7 @@ Partial Class Form1 ' 'Button3 ' - Me.Button3.Location = New System.Drawing.Point(12, 67) + Me.Button3.Location = New System.Drawing.Point(12, 96) Me.Button3.Name = "Button3" Me.Button3.Size = New System.Drawing.Size(637, 23) Me.Button3.TabIndex = 2 @@ -70,7 +70,7 @@ Partial Class Form1 ' 'Button4 ' - Me.Button4.Location = New System.Drawing.Point(12, 96) + Me.Button4.Location = New System.Drawing.Point(12, 125) Me.Button4.Name = "Button4" Me.Button4.Size = New System.Drawing.Size(637, 23) Me.Button4.TabIndex = 3