ToolCollection/ToolCollection/frmDIRegelverwaltung.vb

278 lines
12 KiB
VB.net

Public Class frmDIRegelverwaltung
Private profilname As String
Private selectedProfil As ClassDIProfil
Public Shared _windream As New ClassWindream_allgemein(CURR_LogConfig)
Public _regeln As ClassDIRegeln
' verhindert (wenn True) das selectedProfile auf Nothing gesetzt wird, wenn das Panel auf visible = True gesetzt wird
Private flagIgnoreVisibilityChanged As Boolean = False
Private flagIgnoreCheckedChanged As Boolean = False
Private Shared _Instance As frmDIRegelverwaltung = Nothing
Public Shared Function Instance() As frmDIRegelverwaltung
If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then
_Instance = New frmDIRegelverwaltung
End If
_Instance.BringToFront()
Return _Instance
End Function
Sub New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Me.LoadProfilesInCombobox()
End Sub
' ++++++++++++++++++++++++++++++++++++++++++++++ Methoden ++++++++++++++++++++++++++++++++++++++++++++++
''' <summary>
''' Schreibt die Profile in die Combobox in der Toolbar.
''' </summary>
''' <remarks></remarks>
Private Sub LoadProfilesInCombobox()
Try
ClassDIProfile.Init()
Me.cmbProfilauswahl.DropDownItems.Clear()
If ClassDIProfile.Profile IsNot Nothing Then
For Each item As ClassDIProfil In ClassDIProfile.Profile
Me.cmbProfilauswahl.DropDownItems.Add(item.Profilname)
Next
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der Profile in die Auswahlliste")
End Try
End Sub
Private Sub btnSchliessen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSchliessen.Click
' Panel schliessen
Me.Visible = False
End Sub
Private Sub cmbProfilauswahl_DropDownItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles cmbProfilauswahl.DropDownItemClicked
ClassDIProfile.aktivesProfil = ClassDIProfile.getProfilByName(e.ClickedItem.Text)
Me.selectedProfil = ClassDIProfile.aktivesProfil
If Me.selectedProfil.Dokumenttyp Is Nothing Then
Me.lbxRegeln.Enabled = False
Else
Me.lbxRegeln.Enabled = True
End If
Me.LoadRegelnInListen(Me.selectedProfil.Profilname)
Me.lbxRegeln.Visible = True
Me.lblRegeln.Visible = True
Me.btnLöschen.Enabled = False
Me.btnInformationenAnzeigen.Visible = True
Me.btnInformationenAnzeigen.Enabled = False
End Sub
Private Sub LoadRegelnInListen(ByVal profilname As String)
'' wenn bereits ein Profil ausgewählt wurde
'If Me.selectedProfile IsNot Nothing Then
' ' wenn es sich bei dem ausgewählten Element um das gleiche handelt wie das Aktive, dann nichts tun
' If profilname = Me.selectedProfile.Profilname Then Exit Sub
'End If
Try
Me.lbxRegeln.Items.Clear()
Me.profilname = profilname
Me.lblProfilname.Text = "Gewähltes Profil: '" & profilname & "'"
Me.lblProfilname.Visible = True
Me.btnHinzufügen.Enabled = True
Me._regeln = New ClassDIRegeln(profilname)
If Me._regeln Is Nothing Then Exit Sub
If Me._regeln._regeln Is Nothing Then Exit Sub
Dim regelZähler As Integer = 0
For Each regel As ClassDIRegel In Me._regeln._regeln
Dim beschreibung As String
If regel._indexieren_aus.ToUpper = "FEST" Then
beschreibung = "Festen Wert an Index übergeben" ' regel._art.ToUpper & " aus " & regel._indexieren_aus.ToUpper & " in " & regel._zielindex.ToUpper
Else
beschreibung = regel._art.ToUpper & " aus " & regel._indexieren_aus.ToUpper & " in " & regel._zielindex.ToUpper
End If
Select Case regel._art.ToUpper
Case "KOMPLETT"
Case "BEREICH"
beschreibung &= " (vom " & regel._position_von & ". bis einschließlich zum " & regel._position_von + regel._anzahl - 1 & ". Zeichen)"
Case "REST"
beschreibung &= " (ab dem " & regel._position_von & ". Zeichen bis zum Ende"
If regel._mit_endung Then
beschreibung &= " [Dateiendung wird einbezogen])"
Else
beschreibung &= " [Dateiendung wird nicht einbezogen])"
End If
Case "TRENNZEICHEN"
beschreibung &= " (Trennzeichen:'" & regel._trennzeichen & "'; Position des Vorkommens:" & regel._position & ")"
Case "DATEIENDUNG"
beschreibung &= " (Dateiendung:" & regel._dateiendung & "; Indexwert:" & regel._text & ")"
Case Else
If regel._indexieren_aus.ToUpper = "FEST" Then
beschreibung &= " (Wert: '" & regel._art & "' in Index: " & regel._zielindex.ToUpper & " schreiben)"
Else
beschreibung &= " (DIESE REGELART IST UNGÜLTIG !!!)"
End If
End Select
Me.flagIgnoreCheckedChanged = True
Me.lbxRegeln.Items.Add(beschreibung)
Me.lbxRegeln.SetItemChecked(regelZähler, regel._aktiv)
Me.btnLöschen.Enabled = False
Me.flagIgnoreCheckedChanged = False
regelZähler += 1
Next
Catch ex As Exception
MsgBox("Es ist ein Fehler beim Laden der Regeln aufgetreten." & vbNewLine & vbNewLine & "Fehlernachricht:" & vbNewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der Regeln in die Übersicht")
End Try
End Sub
Private Sub btnHinzufügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHinzufügen.Click
' Wenn der Objekttyp des Profils leer ist, bedeutet dies, dass er nich geladen werden konnte. Der wahrscheinlichste
' Grund dafür ist dass das Profil erstellt wurde wärend der Benutzer an einem anderen windream-Server angemeldet war.
If Me.selectedProfil.Dokumenttyp Is Nothing Then
' Hinweis ausgeben
MsgBox("Der zugeordnete Objekttyp konnte nicht geladen werden. Möglicherweise wurde das Profil erstellt während Sie auf einem anderen windream-Server angemeldet waren." & vbNewLine & vbNewLine & "Es ist leider nicht möglich Regeln für ein Profil mit ungültigem Objekttyp zu erstellen.", MsgBoxStyle.Information, "Für einen unbekannten Objekttyp können keine Regeln angelegt werden")
' Verhindern, dass sich der Assistent öffnet
Exit Sub
End If
' Eigenschaften dem Assistenten zuweisen
frmDIRegelAssistent._objekttyp = Me.selectedProfil.Dokumenttyp.aName
frmDIRegelAssistent._profilname = Me.selectedProfil.OriginalProfilname
frmDIRegelAssistent._regeln = Me._regeln
' Assistent anzeigen
frmDIRegelAssistent.ShowDialog()
' nachdem der Assistent geschlossen wurde die Liste der Regeln aktualisieren
Me.LoadRegelnInListen(Me.selectedProfil.OriginalProfilname)
End Sub
Private Sub lbxRegeln_ItemCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles lbxRegeln.ItemCheck
If Not Me.flagIgnoreCheckedChanged Then
Dim regel As ClassDIRegel = Me._regeln.Regel(e.Index)
If regel IsNot Nothing Then
regel.SetRegelAktiv(e.NewValue)
End If
End If
End Sub
Private Sub btnLöschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLöschen.Click
' Fragen ob das Profil wirklich gelöscht werden soll
Dim result As MsgBoxResult = MsgBox("Sind Sie sicher, dass sie die Regel löschen möchten?", MsgBoxStyle.YesNo, "Regel löschen")
' wenn das Profil gelöscht werden soll
If result = MsgBoxResult.Yes Then
Me._regeln.DeleteRegel(Me._regeln.Regel(Me.lbxRegeln.SelectedIndex)._id)
Me.LoadRegelnInListen(Me.selectedProfil.Profilname)
Me.btnLöschen.Enabled = False
Me.btnInformationenAnzeigen.Enabled = False
End If
End Sub
Private Sub lbxRegeln_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbxRegeln.SelectedIndexChanged
Me.btnLöschen.Enabled = True
Me.btnInformationenAnzeigen.Enabled = True
End Sub
Private Function GetDatumFormatFürAnwender(ByVal formatUrsprung As String)
Dim temp As String = formatUrsprung
temp = temp.Replace("y", "J")
temp = temp.Replace("M", "M")
temp = temp.Replace("d", "T")
temp = temp.Replace("H", "s")
temp = temp.Replace("m", "m")
temp = temp.Replace("s", "S")
temp = temp.Replace("'", "")
Return temp
End Function
Private Sub btnInformationenAnzeigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInformationenAnzeigen.Click
If Me.lbxRegeln.SelectedIndex >= 0 Then
Dim text = "Dokumenttyp: " & Me.selectedProfil.DokumenttypString & vbNewLine & _
"Indexieren aus: " & Me._regeln.Regel(Me.lbxRegeln.SelectedIndex)._indexieren_aus & vbNewLine & _
"Indexierungsart: " & Me._regeln.Regel(Me.lbxRegeln.SelectedIndex)._art & vbNewLine & _
"Zielindex: " & Me._regeln.Regel(Me.lbxRegeln.SelectedIndex)._zielindex & vbNewLine
If _windream.GetTypeOfIndexAsIntByName(Me._regeln.Regel(Me.lbxRegeln.SelectedIndex)._zielindex) = 5 Then
text &= "Datumsformat: " & GetDatumFormatFürAnwender(Me._regeln.Regel(Me.lbxRegeln.SelectedIndex)._datum_format) & vbNewLine
End If
'": " & Me._regeln.Regel(Me.lbxRegeln.SelectedIndex) & vbNewLine & _
'": " & Me._regeln.Regel(Me.lbxRegeln.SelectedIndex) & vbNewLine & _
'": " & Me._regeln.Regel(Me.lbxRegeln.SelectedIndex) & vbNewLine & _
'": " & Me._regeln.Regel(Me.lbxRegeln.SelectedIndex) & vbNewLine
MsgBox(text, MsgBoxStyle.Information, "Details zu der gewählten Regel")
End If
End Sub
Private Sub frmDIRegelverwaltung_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.LoadProfilesInCombobox()
If ClassDIProfile.aktivesProfilAusProfileigenschaften And ClassDIProfile.aktivesProfil Is Nothing = False Then
Me.selectedProfil = ClassDIProfile.aktivesProfil
Me.lblProfilname.Text = "(" & Me.selectedProfil.Profilname & ")"
Me.lblProfilname.Visible = True
Me.LoadRegelnInListen(Me.selectedProfil.Profilname)
ClassDIProfile.aktivesProfilAusProfileigenschaften = False
If Me.selectedProfil.Dokumenttyp Is Nothing Then
Me.lbxRegeln.Enabled = False
Else
Me.lbxRegeln.Enabled = True
End If
Else
Me.selectedProfil = Nothing
Me.lblProfilname.Visible = False
Me.btnHinzufügen.Enabled = False
Me.lbxRegeln.Visible = False
Me.lblRegeln.Visible = False
Me.lbxRegeln.Items.Clear()
Me.btnInformationenAnzeigen.Visible = False
Me.btnInformationenAnzeigen.Enabled = False
End If
End Sub
End Class