197 lines
6.7 KiB
VB.net
197 lines
6.7 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.Text
|
|
Imports DevExpress.Utils.Svg
|
|
Imports DevExpress.XtraBars
|
|
Imports DigitalData.Modules.Logging
|
|
Imports GdPicture14
|
|
Imports GdPicture14.Annotations
|
|
|
|
Partial Public Class frmFieldEditor
|
|
Private LogConfig As LogConfig
|
|
Private Logger As Logger
|
|
|
|
Private GDViewer As GdViewer
|
|
Private Manager As AnnotationManager
|
|
Private Controller As FieldEditorController
|
|
|
|
Public Property Document As EnvelopeDocument = Nothing
|
|
Public Property GDPictureKey As String = ""
|
|
Public Property Receivers As List(Of EnvelopeReceiver)
|
|
Public Property SelectedReceiver As EnvelopeReceiver = Nothing
|
|
Public Property State As State
|
|
|
|
Public Sub New()
|
|
InitializeComponent()
|
|
End Sub
|
|
|
|
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
|
|
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, Application.StartupPath, CompanyName:="Digital Data", ProductName:="EnvelopeGenerator")
|
|
Logger = LogConfig.GetLogger()
|
|
|
|
If Document Is Nothing Then
|
|
Throw New ArgumentNullException("Document")
|
|
End If
|
|
|
|
If State Is Nothing Then
|
|
Throw New ArgumentNullException("State")
|
|
End If
|
|
|
|
If GDPictureKey = "" Then
|
|
Throw New ArgumentNullException("GDPictureKey")
|
|
End If
|
|
|
|
DocumentViewer1.Init(LogConfig, GDPictureKey)
|
|
DocumentViewer1.LoadFile(Document.Filepath)
|
|
|
|
If DocumentViewer1.PdfViewer IsNot Nothing Then
|
|
GDViewer = DocumentViewer1.PdfViewer
|
|
Manager = GDViewer.GetAnnotationManager()
|
|
Manager.InitFromGdViewer(GDViewer)
|
|
End If
|
|
|
|
SetReceiver(Receivers.First())
|
|
Dim oItems = Receivers.Select(AddressOf CreateBarItem).ToArray()
|
|
PopupMenu1.AddItems(oItems)
|
|
|
|
Controller = New FieldEditorController(State, Document)
|
|
|
|
If Controller.LoadElements() = False Then
|
|
MsgBox("Elemente konnten nicht geladen werden!", MsgBoxStyle.Critical, Text)
|
|
Else
|
|
|
|
For Each oElement In Controller.Elements
|
|
LoadAnnotation(oElement)
|
|
Next
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Function CreateBarItem(pReceiver As EnvelopeReceiver) As BarItem
|
|
Dim oItem = New BarButtonItem(BarManager1, pReceiver.Name)
|
|
AddHandler oItem.ItemClick, AddressOf BarItem_Click
|
|
oItem.Tag = pReceiver
|
|
Return oItem
|
|
End Function
|
|
|
|
Private Sub BarItem_Click(sender As Object, e As ItemClickEventArgs)
|
|
Dim oReceiver As EnvelopeReceiver = e.Item.Tag
|
|
SetReceiver(oReceiver)
|
|
End Sub
|
|
|
|
Private Sub SetReceiver(pReceiver As EnvelopeReceiver)
|
|
txtReceiver.Caption = pReceiver.Name
|
|
SelectedReceiver = pReceiver
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
|
|
If GDViewer IsNot Nothing Then
|
|
|
|
AddHandler GDViewer.BeforeAnnotationAddedByUser, AddressOf Viewer_BeforeAnnotationAddedByUser
|
|
AddHandler GDViewer.AnnotationAddedByUser, AddressOf Viewer_AnnotationAddedByUser
|
|
|
|
GDViewer.AddStickyNoteAnnotationInteractive("SIGNATUR", Color.Black, "Arial", FontStyle.Regular, 10, 1, 0)
|
|
|
|
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub Viewer_AnnotationAddedByUser(AnnotationIdx As Integer)
|
|
Dim oAnnotation = GDViewer.GetAnnotationFromIdx(AnnotationIdx)
|
|
Dim oPage = GDViewer.CurrentPage
|
|
Dim oTag = $"{oPage}|{AnnotationIdx}"
|
|
|
|
If TypeOf oAnnotation Is AnnotationStickyNote Then
|
|
Dim oStickyNote As AnnotationStickyNote = oAnnotation
|
|
oStickyNote.Width = 1
|
|
oStickyNote.Height = 1
|
|
oStickyNote.Tag = oTag
|
|
|
|
ApplyAnnotationStyle(oAnnotation)
|
|
End If
|
|
|
|
oAnnotation.CanRotate = False
|
|
oAnnotation.CanEdit = False
|
|
oAnnotation.CanResize = False
|
|
End Sub
|
|
|
|
|
|
Private Sub Viewer_BeforeAnnotationAddedByUser(AnnotationIdx As Integer)
|
|
'NOOP
|
|
End Sub
|
|
|
|
Private Sub btnSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSave.ItemClick
|
|
Dim oPageCount = GDViewer.PageCount
|
|
Dim oCurrentPage = GDViewer.CurrentPage
|
|
|
|
'TODO: Save Annotations in Background
|
|
|
|
For index = 1 To oPageCount
|
|
GDViewer.DisplayPage(index)
|
|
Dim oAnnotationCount = GDViewer.GetAnnotationCount()
|
|
|
|
For index1 = 0 To oAnnotationCount - 1
|
|
Dim oAnnotation As Annotation = GDViewer.GetAnnotationFromIdx(index1)
|
|
If TypeOf oAnnotation Is AnnotationStickyNote Then
|
|
Dim oStickyNote As AnnotationStickyNote = oAnnotation
|
|
Controller.AddOrUpdateElement(oStickyNote, SelectedReceiver.Id)
|
|
End If
|
|
Next
|
|
Next
|
|
|
|
If Not Controller.SaveElements() Then
|
|
MsgBox("Element konnten nicht gespeichert werden!", MsgBoxStyle.Critical, Text)
|
|
End If
|
|
|
|
GDViewer.DisplayPage(oCurrentPage)
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub ApplyAnnotationStyle(ByRef pAnnotation As Annotation)
|
|
If TypeOf pAnnotation Is AnnotationStickyNote Then
|
|
Dim oStickyNote As AnnotationStickyNote = pAnnotation
|
|
oStickyNote.Fill = True
|
|
oStickyNote.FillColor = Color.LightGoldenrodYellow
|
|
oStickyNote.Text = "SIGNATUR"
|
|
oStickyNote.Alignment = StringAlignment.Center
|
|
oStickyNote.LineAlignment = StringAlignment.Center
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub BarButtonItem3_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDelete.ItemClick
|
|
Dim oSelected = GDViewer.GetSelectedAnnotationIdx()
|
|
|
|
If oSelected = -1 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
If MsgBox("Wollen Sie die Annotation löschen?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, Text) = DialogResult.Yes Then
|
|
GDViewer.DeleteAnnotation(oSelected)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadAnnotation(pElement As EnvelopeDocumentElement)
|
|
Dim oAnnotation As AnnotationStickyNote = Manager.AddStickyNoteAnnot(0, 0, 0, 0, "SIGNATUR")
|
|
|
|
|
|
If Manager.GetStat() = GdPictureStatus.OK Then
|
|
oAnnotation.Width = CSng(pElement.Width)
|
|
oAnnotation.Height = CSng(pElement.Height)
|
|
oAnnotation.Left = CSng(pElement.X)
|
|
oAnnotation.Top = CSng(pElement.Y)
|
|
oAnnotation.Fill = True
|
|
oAnnotation.FillColor = Color.DarkRed
|
|
oAnnotation.Text = "SIGNATUR"
|
|
|
|
' TODO: Set tag with annotation index and page
|
|
'oAnnotation.Tag =
|
|
|
|
If Manager.SaveAnnotationsToPage() = GdPictureStatus.OK Then
|
|
End If
|
|
End If
|
|
End Sub
|
|
End Class
|
|
|
|
|