155 lines
5.3 KiB
VB.net
155 lines
5.3 KiB
VB.net
Imports System.Windows.Forms
|
|
Imports DevExpress.Utils.Menu
|
|
Imports DigitalData.Modules.Logging
|
|
Imports DigitalData.Modules.ZooFlow
|
|
Imports DigitalData.Modules.EDMI.API.Rights
|
|
Imports DigitalData.Modules.EDMI.API
|
|
Imports DigitalData.GUIs.Common
|
|
|
|
Public Class DocumentPropertyMenu
|
|
Private ReadOnly _Logger As Logger
|
|
Private ReadOnly _LogConfig As LogConfig
|
|
Private ReadOnly _Environment As Environment
|
|
Private ReadOnly _Client As Client
|
|
Private ReadOnly _File As Modules.Windows.File
|
|
|
|
Private ReadOnly _FilePath As String
|
|
Private ReadOnly _ObjectId As Long
|
|
|
|
Public Const OPEN_FILE As String = "Datei öffnen"
|
|
Public Const OPEN_DIRECTORY As String = "Ordner öffnen"
|
|
Public Const COPY_PATH As String = "Dateipfad kopieren"
|
|
Public Const OPEN_PROPERTIES As String = "Eigenschaften"
|
|
|
|
Public Event FileOpened As EventHandler(Of String)
|
|
Public Event FileClosed As EventHandler(Of String)
|
|
|
|
Public Sub New(LogConfig As LogConfig, Environment As Environment, Client As Client, FilePath As String, Optional ObjectId As Long = 0)
|
|
_LogConfig = LogConfig
|
|
_Logger = LogConfig.GetLogger()
|
|
_Environment = Environment
|
|
_Client = Client
|
|
_FilePath = FilePath
|
|
_ObjectId = ObjectId
|
|
_File = New Modules.Windows.File(LogConfig)
|
|
End Sub
|
|
|
|
Public Function GetMenuItems(OperationMode As IResultForm.Mode, AccessRight As AccessRight) As List(Of DXMenuItem)
|
|
If OperationMode = IResultForm.Mode.NoAppServer Then
|
|
Return GetLegacyMenuItems()
|
|
Else
|
|
Return GetIDBMenuItems(AccessRight)
|
|
End If
|
|
End Function
|
|
|
|
Public Function GetIDBMenuItems(AccessRight As AccessRight) As List(Of DXMenuItem)
|
|
Dim oOpenFile = New DXMenuItem(OPEN_FILE, AddressOf OpenFile_Click)
|
|
Dim oOpenFolder = New DXMenuItem(OPEN_DIRECTORY, AddressOf OpenFolder_Click)
|
|
Dim oCopyPath = New DXMenuItem(COPY_PATH, AddressOf CopyPath_Click)
|
|
Dim oProperties = New DXMenuItem(OPEN_PROPERTIES, AddressOf Properties_Click)
|
|
|
|
If AccessRight = AccessRight.VIEW_ONLY Then
|
|
Return New List(Of DXMenuItem) From {
|
|
oProperties
|
|
}
|
|
Else
|
|
Return New List(Of DXMenuItem) From {
|
|
oOpenFile,
|
|
oOpenFolder,
|
|
oCopyPath,
|
|
oProperties
|
|
}
|
|
End If
|
|
End Function
|
|
|
|
Public Function GetLegacyMenuItems() As List(Of DXMenuItem)
|
|
Dim oOpenFile = New DXMenuItem(OPEN_FILE, AddressOf OpenFile_Click)
|
|
Dim oOpenFolder = New DXMenuItem(OPEN_DIRECTORY, AddressOf OpenFolder_Click)
|
|
Dim oCopyPath = New DXMenuItem(COPY_PATH, AddressOf CopyPath_Click)
|
|
Dim oProperties = New DXMenuItem(OPEN_PROPERTIES, AddressOf Properties_Click_Legacy)
|
|
|
|
Return New List(Of DXMenuItem) From {
|
|
oOpenFile,
|
|
oOpenFolder,
|
|
oCopyPath,
|
|
oProperties
|
|
}
|
|
End Function
|
|
|
|
Public Sub Properties_Click(sender As Object, e As EventArgs)
|
|
If TestObjectIdExists(OPEN_PROPERTIES) = False Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oPropertyDialog As New frmObjectPropertyDialog(_LogConfig, _Environment, _Client, _ObjectId)
|
|
oPropertyDialog.Show()
|
|
End Sub
|
|
|
|
Public Sub Properties_Click_Legacy(sender As Object, e As EventArgs)
|
|
If TestPathExists(OPEN_PROPERTIES) = False Then
|
|
Exit Sub
|
|
End If
|
|
|
|
_File.OpenFileProperties(_FilePath)
|
|
End Sub
|
|
|
|
Public Sub CopyPath_Click(sender As Object, e As EventArgs)
|
|
Clipboard.SetText(_FilePath)
|
|
End Sub
|
|
|
|
Public Sub OpenFile_Click(sender As Object, e As EventArgs)
|
|
If TestPathExists(OPEN_FILE) = False Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Using oProc As New Process
|
|
Try
|
|
oProc.StartInfo.FileName = _FilePath
|
|
oProc.EnableRaisingEvents = True
|
|
AddHandler oProc.Exited, AddressOf Handle_OpenFile
|
|
|
|
oProc.Start(_FilePath)
|
|
RaiseEvent FileOpened(Me, _FilePath)
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Using
|
|
End Sub
|
|
|
|
Public Sub Handle_OpenFile(sender As Object, e As EventArgs)
|
|
RaiseEvent FileClosed(Me, _FilePath)
|
|
End Sub
|
|
|
|
Public Sub OpenFolder_Click(sender As Object, e As EventArgs)
|
|
If TestPathExists(OPEN_DIRECTORY) = False Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oArgs As String = $"/e, /select, ""{_FilePath}"""
|
|
Dim oInfo As New ProcessStartInfo() With {
|
|
.Arguments = oArgs,
|
|
.FileName = "explorer"
|
|
}
|
|
|
|
Process.Start(oInfo)
|
|
End Sub
|
|
|
|
Private Function TestPathExists(Title As String) As Boolean
|
|
If IO.File.Exists(_FilePath) = False Then
|
|
MessageBox.Show($"Datei {_FilePath} existiert nicht oder wurde verschoben!", Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Private Function TestObjectIdExists(Title As String) As Boolean
|
|
If _ObjectId = 0 Then
|
|
MessageBox.Show($"Objekt {_ObjectId} existiert nicht oder wurde verschoben!", Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
End Class
|