ToolCollection/ToolCollection/frmMIProfileigenschaften.vb

433 lines
20 KiB
VB.net

Public Class frmMIProfileigenschaften
' entspricht dem, über die Toolbar-Combobox ausgewählten, Profil und enthält alle relevanten Informationen darüber
Private _selectedProfile As ClassMI_Profil
Dim Formloaded As Boolean = False
Public Shared _windream As New ClassWindream_allgemein(CURR_LogConfig)
Private Shared _Instance As frmMIProfileigenschaften = Nothing
Public Shared Function Instance() As frmMIProfileigenschaften
If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then
_Instance = New frmMIProfileigenschaften
End If
_Instance.BringToFront()
Return _Instance
End Function
''' <summary>
''' Konstruktor des Panels. Laden der Profilnamen in die Auswahliste.
''' </summary>
''' <remarks></remarks>
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
ClassMI_Profile.Init()
Me.cmbProfilauswahl.DropDownItems.Clear()
If ClassMI_Profile.Profile IsNot Nothing Then
For Each item As ClassMI_Profil In ClassMI_Profile.Profile
Me.cmbProfilauswahl.DropDownItems.Add(item.Profilname)
Next
End If
txtConfig.Text = My.Application.Info.DirectoryPath & "\" & My.Settings.vMIConfigDatei
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Fehler beim Laden der Profile in die Auswahlliste")
End Try
End Sub
' ''' <summary>
' ''' Wenn Änderungen am Profil vorgenommen wurden, wird gefragt ob das Profil gespeichert werden soll.
' ''' Yes : Profil wird gespeichert und anschließend wird das Hauptpanel geschlossen
' ''' No : das Hauptpanel wird geschlossen (ohne Speichern)
' ''' Cancel : das Schließen des Hauptpanels wird verhindert (das Profil bleibt erhalten)
' ''' </summary>
' ''' <returns>Gibt False zurück, wenn die Aktion abgebrochen wurde, sonst True.</returns>
' ''' <remarks>Gibt die Funktion True zurück, geht der Vorgang normal weiter. Gibt die Funktion
' ''' jedoch False zurück, so soll z.B. der Wechsel des Profil NICHT durchgeführt werden.</remarks>
Private Function Check_Aenderung()
' wenn ein Profil gewählt ist
If Me._selectedProfile IsNot Nothing Then
' wenn es Änderungen am Profil gibt
If Me._selectedProfile.HasChanges Then
' klären wie mit den veränderten Informationen verfahren werden soll
Dim result As MsgBoxResult = MsgBox("Möchten Sie Ihre Änderungen vorher speichern?", MsgBoxStyle.YesNoCancel, "Änderungen übernehmen")
If result = MsgBoxResult.Yes Then ' wenn die Daten gespeichert werden sollen
If Not Me.txtProfilname.Text = "" And Not Me.txtServername.Text = "" And Not Me.txtWdfSuche.Text = "" Then
' die Änderungen speichern
If Me._selectedProfile.Save() = True Then ' wenn das Speichern erfolgreich war
' die Profile neu in die Combobox der Toolbar laden (für den Fall das Profilname geändert wurde)
Me.LoadProfilesInCombobox()
' die Profileigenschaften auf diesem Panel ausblenden
Me.pnlWindreamsuche.Visible = False
' den Speichern-Button deaktivieren
Me.btnSpeichern.Enabled = False
' den Löschen-Button deaktivieren
Me.btnLöschen.Enabled = False
' kein selectedProfile wählen
Me._selectedProfile = Nothing
End If
Else
MsgBox("Es wurde nicht alle notwendigen Angaben gemacht. Bitte überprüfen Sie Ihre Eingaben auf Vollständigkeit.", MsgBoxStyle.Exclamation, "Eingabe erwartet")
End If
ElseIf result = MsgBoxResult.No Then ' wenn die Daten verworfen werden sollen
' wenn ein Profil selektiert ist: den originalen Profilnamen setzen
If Me._selectedProfile IsNot Nothing Then Me._selectedProfile.SetBackToOriginal()
' die Profileigenschaften auf diesem Panel ausblenden
Me.pnlWindreamsuche.Visible = False
' den Speichern-Button deaktivieren
Me.btnSpeichern.Enabled = False
' den Löschen-Button deaktivieren
Me.btnLöschen.Enabled = False
' kein selectedProfile wählen
Me._selectedProfile = Nothing
Return "Nein"
ElseIf result = MsgBoxResult.Cancel Then ' wenn die Aktion abgebrochen werden soll
Return "Abbruch"
End If
Else ' wenn keine Änderungen gemacht wurden
' wenn ein Profil selektiert ist: den originalen Profilnamen setzen
If Me._selectedProfile IsNot Nothing Then Me._selectedProfile.SetBackToOriginal()
' die Profileigenschaften auf diesem Panel ausblenden
Me.pnlWindreamsuche.Visible = False
' den Speichern-Button deaktivieren
Me.btnSpeichern.Enabled = False
' den Löschen-Button deaktivieren
Me.btnLöschen.Enabled = False
End If
End If
End Function
' ++++++++++++++++++++++++++++++++++++++++++++++ Events ++++++++++++++++++++++++++++++++++++++++++++++
' +++ Elemente auf Toolbar +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Private Sub cmbProfilauswahl_DropDownItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles cmbProfilauswahl.DropDownItemClicked
' 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 e.ClickedItem.Text = Me._selectedProfile.Profilname Then Exit Sub
End If
'' Wenn Änderungen am Profil vorgenommen wurden, wird gefragt ob das Profil gespeichert werden soll.
'Dim wechselnDesProfilsFortsetzen As Boolean = Me.AskToSaveIfNeccessary(False)
'' wenn die Aktion des Profilwechsels ausgeführt werden soll, also nicht über die Messagebox mit
'' Cancel abgebrochen wurde -> Profilwechsel durchführen
'If wechselnDesProfilsFortsetzen Then
' das ausgewählte Profil in selectedProfile laden
Me._selectedProfile = ClassMI_Profile.getProfilByName(e.ClickedItem.Text)
' wenn das selektierte Profil gefunden wurde
If Me._selectedProfile IsNot Nothing Then
' die Steuerelemente für die Profilinformationen mit den Daten füllen
Me.txtProfilname.Text = Me._selectedProfile.Profilname
If Me._selectedProfile.Dokumenttyp IsNot Nothing Then
Me.cmbObjekttyp.Items.Clear()
Me.cmbObjekttyp.ForeColor = System.Drawing.Color.Black
Me.cmbObjekttyp.Items.Add(Me._selectedProfile.Dokumenttyp.aName) ' den Dokumenttyp eintragen
Me.cmbObjekttyp.SelectedIndex = 0 ' und direkt auswählen
Else
Me.cmbObjekttyp.Items.Clear()
Me.cmbObjekttyp.ForeColor = System.Drawing.Color.Red
Me.cmbObjekttyp.Items.Add(Me._selectedProfile.DokumenttypString)
Me.cmbObjekttyp.SelectedItem = Me._selectedProfile.DokumenttypString
End If
Me.txtServername.Text = Me._selectedProfile.Servername
Me.txtWdfSuche.Text = Me._selectedProfile.WdfSuche
Me.chkSuchmaskeZeigen.Checked = Me._selectedProfile.ZeigeSuchmaske
Me.lblProfil.Text = "Profil: " & e.ClickedItem.Text
Me.lbxParameter.Items.Clear()
If Me._selectedProfile._parameter IsNot Nothing Then
For Each param As String In Me._selectedProfile._parameter
Me.lbxParameter.Items.Add(param)
Next
End If
' Das Profil auf gespeichert setzen, da ja keine Änderungen am Profil selbst gemacht wurden. Das Profil
' hat jedoch zu diesem Zeitpunkt den Status HasChanges(), da der Inhalt der Steuerelemente verändert wurde.
Me._selectedProfile.setSaved()
' das Panel mit den Profil-Steuerelementen anzeigen
Me.pnlWindreamsuche.Visible = True
' den Speichern-Button deaktivieren
Me.btnSpeichern.Enabled = False
' den Löschen-Button deaktivieren
Me.btnLöschen.Enabled = True
End If
'' die abhängigen Steuerelemente (de-)aktivieren
'End If
End Sub
Private Sub btnHinzufügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnHinzufügen.Click
' das Formular zum Erstellen eines neuen Profil öffnen
Dim frmProfilHinzufügen As New frmMI_Profilhinzufuegen
frmProfilHinzufügen.ShowDialog()
' wenn das Formular geschlossen wurde, werden die Profile neu in die Combobox geladen
Me.LoadProfilesInCombobox()
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 das Profil '" & Me._selectedProfile.OriginalProfilname & "' löschen möchten?", MsgBoxStyle.YesNo, "Profil löschen")
' wenn das Profil gelöscht werden soll
If result = MsgBoxResult.Yes Then
' das Profil löschen
If ClassMI_Profile.Delete(Me._selectedProfile.OriginalProfilname) Then
' Panel mit Profileigenschaften schliessen
Me.pnlWindreamsuche.Visible = False
' den Speichern-Button deaktivieren
Me.btnSpeichern.Enabled = False
' den Löschen-Button deaktivieren
Me.btnLöschen.Enabled = False
' kein Profil als selektiert wählen
Me._selectedProfile = Nothing
' die Profile neu in die Combobox laden
Me.LoadProfilesInCombobox()
End If
End If
End Sub
Private Sub btnSpeichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSpeichern.Click
' wenn kein Profil gewählt wurde, soll das Event abgebrochen werden
If Me._selectedProfile Is Nothing Then Exit Sub
' wenn Veränderungen am Profil gemacht wurden
If Me._selectedProfile.HasChanges Then
If Me.txtProfilname.Text = "" Then
MsgBox("Es wurde kein Profilname angegeben. Bitte tragen Sie einen in das Fald Profilname ein.", MsgBoxStyle.Information, "Eingabe erwartet")
Exit Sub
End If
' prüfen ob ein Servername angegeben wurde
If Me.txtServername.Text = "" Then
MsgBox("Es wurde kein Servername angegeben. Bitte tragen Sie einen Servernamen ein.", MsgBoxStyle.Information, "Eingabe erwartet")
Exit Sub
End If
' prüfen ob eine windream-Suche angegeben wurde
If Me.txtWdfSuche.Text = "" Then
MsgBox("Es wurde keine windream-Suche angegeben. Bitte wählen Sie eine windream-Suche aus.", MsgBoxStyle.Information, "Eingabe erwartet")
Exit Sub
End If
' prüfen ob der Profilname geändert wurde
If Not Me._selectedProfile.OriginalProfilname = Me.txtProfilname.Text Then
' prüfen ob der eingegebene Profilname schon vorhanden ist
If ClassMI_Profile.Exists(Me.txtProfilname.Text) Then
MsgBox("Der angegebene Profilname existiert bereits. Bitte wählen Sie einen anderen Profilnamen.", MsgBoxStyle.Information, "Ungültige Eingabe")
Exit Sub
End If
End If
' die Änderungen speichern
If Me._selectedProfile.Save() = True Then ' wenn das Speichern erfolgreich war
' den Speichern-Button deaktivieren
Me.btnSpeichern.Enabled = False
' die Profile neu in die Combobox der Toolbar laden (für den Fall das Profilname geändert wurde)
Me.LoadProfilesInCombobox()
Else
'Dim result As MsgBoxResult = MsgBox("Das Profil konnte nicht erfolgreich gespeichert werden." & vbNewLine & vbNewLine & "Sie können jedoch versuchen das Profil neu anzulegen. Möchten Sie dies versuchen?", MsgBoxStyle.YesNo, "Fehler beim Speichern eines Profils")
'Dim msg As System.Windows.Forms.MessageBox = System.Windows.Forms.MessageBox("Das Profil konnte nicht erfolgreich gespeichert werden." & vbNewLine & vbNewLine & "Sie können jedoch versuchen das Profil neu anzulegen. Möchten Sie dies versuchen?", MsgBoxStyle.YesNo, "Fehler beim Speichern eines Profils")
If System.Windows.Forms.MessageBox.Show("Das Profil konnte nicht erfolgreich gespeichert werden." & vbNewLine & vbNewLine & "Sie können jedoch versuchen das Profil neu anzulegen. Möchten Sie dies versuchen?", "Fehler beim Speichern eines Profils", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Exclamation, Windows.Forms.MessageBoxDefaultButton.Button2) = Windows.Forms.DialogResult.Yes Then
If ClassMI_Profile.Add(Me.txtProfilname.Text, Me.cmbObjekttyp.SelectedItem, Me.txtServername.Text, Me.chkSuchmaskeZeigen.Checked, Me.txtWdfSuche.Text) Then
MsgBox("Das Profil '" & Me.txtProfilname.Text & "' konnte erfolgreich angelegt werden.", MsgBoxStyle.Information, "Profil wurde angelegt")
Me._selectedProfile = ClassMI_Profile.getProfilByName(Me.txtProfilname.Text)
Me._selectedProfile.Profilname = Me.txtProfilname.Text
Me._selectedProfile.Dokumenttyp = _windream.GetObjecttypeByName(Me.cmbObjekttyp.SelectedItem, False)
Me._selectedProfile.Servername = Me.txtServername.Text
Me._selectedProfile.WdfSuche = Me.txtWdfSuche.Text
Me._selectedProfile.ZeigeSuchmaske = Me.chkSuchmaskeZeigen.Checked
Me._selectedProfile.ÜbernehmeAktuelleWerte()
Me.btnSpeichern.Enabled = False
Me.LoadProfilesInCombobox()
Else
MsgBox("Das Profil '" & Me.txtProfilname.Text & "' konnte nicht erfolgreich angelegt werden.", MsgBoxStyle.Exclamation, "Profil konnte nicht angelegt werden")
End If
ClassMI_Profile.LoadFromXmlFile()
End If
End If
End If
End Sub
Private Sub btnWdfSuche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWdfSuche.Click
If Me.dlgWindreamSuche.ShowDialog() = Windows.Forms.DialogResult.OK Then
Me.txtWdfSuche.Text = Me.dlgWindreamSuche.FileName
End If
End Sub
Private Sub btnWdfSucheLöschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.txtWdfSuche.Text = ""
End Sub
Private Sub txtWdfSuche_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtWdfSuche.TextChanged
Me._selectedProfile.WdfSuche = Me.txtWdfSuche.Text
If Not Me.txtWdfSuche.Text = Me._selectedProfile.OriginalWdfSuche Then
Me.btnSpeichern.Enabled = True
Else
Me.btnSpeichern.Enabled = False
End If
End Sub
Private Sub txtServername_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtServername.TextChanged
If Me._selectedProfile IsNot Nothing Then
Me._selectedProfile.Servername = Me.txtServername.Text
If Not Me.txtServername.Text = Me._selectedProfile.OriginalServername Then
Me.btnSpeichern.Enabled = True
Else
Me.btnSpeichern.Enabled = False
End If
End If
End Sub
Private Sub chkSuchmaskeZeigen_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkSuchmaskeZeigen.CheckedChanged
If Me._selectedProfile IsNot Nothing Then
Me._selectedProfile.ZeigeSuchmaske = Me.chkSuchmaskeZeigen.Checked
If Not Me.chkSuchmaskeZeigen.Checked = Me._selectedProfile.OriginalZeigeSuchmaske Then
Me.btnSpeichern.Enabled = True
Else
Me.btnSpeichern.Enabled = False
End If
End If
End Sub
Private Sub txtProfilname_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtProfilname.TextChanged
If Me._selectedProfile IsNot Nothing Then
Me._selectedProfile.Profilname = Me.txtProfilname.Text
If Not Me.txtProfilname.Text = Me._selectedProfile.OriginalProfilname Then
Me.btnSpeichern.Enabled = True
Else
Me.btnSpeichern.Enabled = False
End If
End If
End Sub
Private Sub btnParameterHinzufügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnParameterHinzufügen.Click
Dim frmParameterHinzufügen As New frmMIParameterHinzufügen
frmParameterHinzufügen.selectedProfil = Me._selectedProfile
frmParameterHinzufügen.ShowDialog()
Me.lbxParameter.Items.Clear()
If Me._selectedProfile._parameter IsNot Nothing Then
For Each parameter As String In Me._selectedProfile._parameter
If Not parameter = "" Then Me.lbxParameter.Items.Add(parameter)
Next
End If
Me._selectedProfile.SaveParameters()
End Sub
Private Sub btnParameterLöschen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnParameterLöschen.Click
Me._selectedProfile.RemoveParameter(Me.lbxParameter.SelectedItem)
Me.lbxParameter.Items.Remove(Me.lbxParameter.SelectedItem)
Me._selectedProfile.SaveParameters()
End Sub
Private Sub btnParameterHoch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnParameterHoch.Click
If Me.lbxParameter.Items.Count > 1 Then
Dim tempParameter As String = Me.lbxParameter.SelectedItem
Me._selectedProfile.ShiftParameterHoch(Me.lbxParameter.SelectedItem)
Me.lbxParameter.Items.Clear()
If Me._selectedProfile._parameter IsNot Nothing Then
For Each parameter As String In Me._selectedProfile._parameter
If Not parameter = "" Then Me.lbxParameter.Items.Add(parameter)
Next
End If
Me.lbxParameter.SelectedItem = tempParameter
Me._selectedProfile.SaveParameters()
End If
End Sub
Private Sub btnParameterRunter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnParameterRunter.Click
If Me.lbxParameter.Items.Count > 1 Then
Dim tempParameter As String = Me.lbxParameter.SelectedItem
Me._selectedProfile.ShiftParameterRunter(Me.lbxParameter.SelectedItem)
Me.lbxParameter.Items.Clear()
If Me._selectedProfile._parameter IsNot Nothing Then
For Each parameter As String In Me._selectedProfile._parameter
If Not parameter = "" Then Me.lbxParameter.Items.Add(parameter)
Next
End If
Me.lbxParameter.SelectedItem = tempParameter
Me._selectedProfile.SaveParameters()
End If
End Sub
Private Sub frmMIProfileigenschaften_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
If Check_Aenderung() = "Abbruch" Then
e.Cancel = True
End If
End Sub
End Class