diff --git a/app/TaskFlow/frmCockpitConfig.Designer.vb b/app/TaskFlow/frmCockpitConfig.Designer.vb
index 075aa32..78431e8 100644
--- a/app/TaskFlow/frmCockpitConfig.Designer.vb
+++ b/app/TaskFlow/frmCockpitConfig.Designer.vb
@@ -34,6 +34,7 @@ Partial Class frmCockpitConfig
Me.bbtnitm_NodeOverviewAdd = New DevExpress.XtraBars.BarButtonItem()
Me.bbtnitm_NodeProfilAdd = New DevExpress.XtraBars.BarButtonItem()
Me.bbtnitmCopy = New DevExpress.XtraBars.BarButtonItem()
+ Me.bsitm_info = New DevExpress.XtraBars.BarStaticItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
@@ -63,6 +64,23 @@ Partial Class frmCockpitConfig
Me.LabelControl_Chart = New DevExpress.XtraEditors.LabelControl()
Me.LookUpEditMonitor = New DevExpress.XtraEditors.LookUpEdit()
Me.LabelControl_Monitor = New DevExpress.XtraEditors.LabelControl()
+ Me.XtraTabControl1 = New DevExpress.XtraTab.XtraTabControl()
+ Me.XtraTabPage1 = New DevExpress.XtraTab.XtraTabPage()
+ Me.gridAssignedUsers = New DevExpress.XtraGrid.GridControl()
+ Me.viewAssignedUsers = New DevExpress.XtraGrid.Views.Grid.GridView()
+ Me.gridAvailableUsers = New DevExpress.XtraGrid.GridControl()
+ Me.viewAvailableUsers = New DevExpress.XtraGrid.Views.Grid.GridView()
+ Me.PanelControl1 = New DevExpress.XtraEditors.PanelControl()
+ Me.LabelControl9 = New DevExpress.XtraEditors.LabelControl()
+ Me.LabelControl8 = New DevExpress.XtraEditors.LabelControl()
+ Me.XtraTabPage2 = New DevExpress.XtraTab.XtraTabPage()
+ Me.PanelControl2 = New DevExpress.XtraEditors.PanelControl()
+ Me.LabelControl10 = New DevExpress.XtraEditors.LabelControl()
+ Me.LabelControl11 = New DevExpress.XtraEditors.LabelControl()
+ Me.GridAvailableGroups = New DevExpress.XtraGrid.GridControl()
+ Me.ViewAvailableGroups = New DevExpress.XtraGrid.Views.Grid.GridView()
+ Me.GridAssignedGroups = New DevExpress.XtraGrid.GridControl()
+ Me.ViewAssignedGroups = New DevExpress.XtraGrid.Views.Grid.GridView()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LookUpEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.CheckEdit_Cockpit_Active.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -78,6 +96,22 @@ Partial Class frmCockpitConfig
CType(Me.LookUpEditProfil.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LookUpEditChart.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LookUpEditMonitor.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.XtraTabControl1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.XtraTabControl1.SuspendLayout()
+ Me.XtraTabPage1.SuspendLayout()
+ CType(Me.gridAssignedUsers, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.viewAssignedUsers, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.gridAvailableUsers, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.viewAvailableUsers, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.PanelControl1.SuspendLayout()
+ Me.XtraTabPage2.SuspendLayout()
+ CType(Me.PanelControl2, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.PanelControl2.SuspendLayout()
+ CType(Me.GridAvailableGroups, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.ViewAvailableGroups, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.GridAssignedGroups, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.ViewAssignedGroups, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'RibbonControl1
@@ -85,10 +119,10 @@ Partial Class frmCockpitConfig
Me.RibbonControl1.EmptyAreaImageOptions.ImagePadding = New System.Windows.Forms.Padding(35, 39, 35, 39)
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.BarButtonItem2, Me.bbtnSQL_Data, Me.bbtnSQL_Count, Me.bbtnitm_Save, Me.BarButtonItem4, Me.bbtnitm_NodeOverviewAdd, Me.bbtnitm_NodeProfilAdd, Me.bbtnitmCopy})
+ Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1, Me.BarButtonItem2, Me.bbtnSQL_Data, Me.bbtnSQL_Count, Me.bbtnitm_Save, Me.BarButtonItem4, Me.bbtnitm_NodeOverviewAdd, Me.bbtnitm_NodeProfilAdd, Me.bbtnitmCopy, Me.bsitm_info})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.Margin = New System.Windows.Forms.Padding(4)
- Me.RibbonControl1.MaxItemId = 10
+ Me.RibbonControl1.MaxItemId = 11
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.OptionsMenuMinWidth = 385
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
@@ -159,6 +193,13 @@ Partial Class frmCockpitConfig
Me.bbtnitmCopy.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitmCopy.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.bbtnitmCopy.Name = "bbtnitmCopy"
'
+ 'bsitm_info
+ '
+ Me.bsitm_info.Id = 10
+ Me.bsitm_info.ImageOptions.SvgImage = CType(resources.GetObject("bsitm_info.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
+ Me.bsitm_info.Name = "bsitm_info"
+ Me.bsitm_info.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
+ '
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
@@ -188,7 +229,8 @@ Partial Class frmCockpitConfig
'
'RibbonStatusBar1
'
- Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 566)
+ Me.RibbonStatusBar1.ItemLinks.Add(Me.bsitm_info)
+ Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 711)
Me.RibbonStatusBar1.Margin = New System.Windows.Forms.Padding(4)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
@@ -240,8 +282,6 @@ Partial Class frmCockpitConfig
'
'TreeList_Cockpit
'
- Me.TreeList_Cockpit.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
- Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.TreeList_Cockpit.Font = New System.Drawing.Font("Tahoma", 9.75!)
Me.TreeList_Cockpit.ImageIndexFieldName = "ICON_ID"
Me.TreeList_Cockpit.KeyFieldName = "PK_CFG_COCKPIT_DEFINITION_ID"
@@ -264,7 +304,7 @@ Partial Class frmCockpitConfig
Me.TreeList_Cockpit.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark
Me.TreeList_Cockpit.ParentFieldName = "PARENT_ID"
Me.TreeList_Cockpit.SelectImageList = Me.ImageCollection1
- Me.TreeList_Cockpit.Size = New System.Drawing.Size(383, 339)
+ Me.TreeList_Cockpit.Size = New System.Drawing.Size(383, 236)
Me.TreeList_Cockpit.TabIndex = 24
'
'LabelControl2
@@ -465,12 +505,183 @@ Partial Class frmCockpitConfig
Me.LabelControl_Monitor.TabIndex = 46
Me.LabelControl_Monitor.Text = "Monitor-Definition"
'
+ 'XtraTabControl1
+ '
+ Me.XtraTabControl1.AllowDrop = True
+ Me.XtraTabControl1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.XtraTabControl1.Location = New System.Drawing.Point(12, 462)
+ Me.XtraTabControl1.Name = "XtraTabControl1"
+ Me.XtraTabControl1.SelectedTabPage = Me.XtraTabPage1
+ Me.XtraTabControl1.Size = New System.Drawing.Size(921, 242)
+ Me.XtraTabControl1.TabIndex = 50
+ Me.XtraTabControl1.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.XtraTabPage1, Me.XtraTabPage2})
+ '
+ 'XtraTabPage1
+ '
+ Me.XtraTabPage1.Controls.Add(Me.gridAssignedUsers)
+ Me.XtraTabPage1.Controls.Add(Me.gridAvailableUsers)
+ Me.XtraTabPage1.Controls.Add(Me.PanelControl1)
+ Me.XtraTabPage1.Name = "XtraTabPage1"
+ Me.XtraTabPage1.Size = New System.Drawing.Size(919, 219)
+ Me.XtraTabPage1.Text = "User zu Cockpit"
+ '
+ 'gridAssignedUsers
+ '
+ Me.gridAssignedUsers.AllowDrop = True
+ Me.gridAssignedUsers.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.gridAssignedUsers.Location = New System.Drawing.Point(406, 33)
+ Me.gridAssignedUsers.MainView = Me.viewAssignedUsers
+ Me.gridAssignedUsers.Name = "gridAssignedUsers"
+ Me.gridAssignedUsers.Size = New System.Drawing.Size(513, 186)
+ Me.gridAssignedUsers.TabIndex = 7
+ Me.gridAssignedUsers.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.viewAssignedUsers})
+ '
+ 'viewAssignedUsers
+ '
+ Me.viewAssignedUsers.DetailHeight = 295
+ Me.viewAssignedUsers.GridControl = Me.gridAssignedUsers
+ Me.viewAssignedUsers.Name = "viewAssignedUsers"
+ Me.viewAssignedUsers.OptionsView.ShowAutoFilterRow = True
+ Me.viewAssignedUsers.OptionsView.ShowGroupPanel = False
+ '
+ 'gridAvailableUsers
+ '
+ Me.gridAvailableUsers.AllowDrop = True
+ Me.gridAvailableUsers.Dock = System.Windows.Forms.DockStyle.Left
+ Me.gridAvailableUsers.Location = New System.Drawing.Point(0, 33)
+ Me.gridAvailableUsers.MainView = Me.viewAvailableUsers
+ Me.gridAvailableUsers.Name = "gridAvailableUsers"
+ Me.gridAvailableUsers.Size = New System.Drawing.Size(406, 186)
+ Me.gridAvailableUsers.TabIndex = 6
+ Me.gridAvailableUsers.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.viewAvailableUsers})
+ '
+ 'viewAvailableUsers
+ '
+ Me.viewAvailableUsers.DetailHeight = 295
+ Me.viewAvailableUsers.GridControl = Me.gridAvailableUsers
+ Me.viewAvailableUsers.Name = "viewAvailableUsers"
+ Me.viewAvailableUsers.OptionsBehavior.Editable = False
+ Me.viewAvailableUsers.OptionsBehavior.ReadOnly = True
+ Me.viewAvailableUsers.OptionsView.ShowAutoFilterRow = True
+ Me.viewAvailableUsers.OptionsView.ShowGroupPanel = False
+ '
+ 'PanelControl1
+ '
+ Me.PanelControl1.Controls.Add(Me.LabelControl9)
+ Me.PanelControl1.Controls.Add(Me.LabelControl8)
+ Me.PanelControl1.Dock = System.Windows.Forms.DockStyle.Top
+ Me.PanelControl1.Location = New System.Drawing.Point(0, 0)
+ Me.PanelControl1.Name = "PanelControl1"
+ Me.PanelControl1.Size = New System.Drawing.Size(919, 33)
+ Me.PanelControl1.TabIndex = 0
+ '
+ 'LabelControl9
+ '
+ Me.LabelControl9.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.LabelControl9.Appearance.Options.UseFont = True
+ Me.LabelControl9.Location = New System.Drawing.Point(409, 5)
+ Me.LabelControl9.Name = "LabelControl9"
+ Me.LabelControl9.Size = New System.Drawing.Size(106, 17)
+ Me.LabelControl9.TabIndex = 1
+ Me.LabelControl9.Text = "Zugeordnete User"
+ '
+ 'LabelControl8
+ '
+ Me.LabelControl8.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.LabelControl8.Appearance.Options.UseFont = True
+ Me.LabelControl8.Location = New System.Drawing.Point(5, 5)
+ Me.LabelControl8.Name = "LabelControl8"
+ Me.LabelControl8.Size = New System.Drawing.Size(139, 17)
+ Me.LabelControl8.TabIndex = 0
+ Me.LabelControl8.Text = "Nicht zugeordnete User"
+ '
+ 'XtraTabPage2
+ '
+ Me.XtraTabPage2.Controls.Add(Me.GridAssignedGroups)
+ Me.XtraTabPage2.Controls.Add(Me.GridAvailableGroups)
+ Me.XtraTabPage2.Controls.Add(Me.PanelControl2)
+ Me.XtraTabPage2.Name = "XtraTabPage2"
+ Me.XtraTabPage2.Size = New System.Drawing.Size(919, 219)
+ Me.XtraTabPage2.Text = "Gruppe zu Cockpit"
+ '
+ 'PanelControl2
+ '
+ Me.PanelControl2.Controls.Add(Me.LabelControl10)
+ Me.PanelControl2.Controls.Add(Me.LabelControl11)
+ Me.PanelControl2.Dock = System.Windows.Forms.DockStyle.Top
+ Me.PanelControl2.Location = New System.Drawing.Point(0, 0)
+ Me.PanelControl2.Name = "PanelControl2"
+ Me.PanelControl2.Size = New System.Drawing.Size(919, 33)
+ Me.PanelControl2.TabIndex = 1
+ '
+ 'LabelControl10
+ '
+ Me.LabelControl10.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.LabelControl10.Appearance.Options.UseFont = True
+ Me.LabelControl10.Location = New System.Drawing.Point(409, 5)
+ Me.LabelControl10.Name = "LabelControl10"
+ Me.LabelControl10.Size = New System.Drawing.Size(130, 17)
+ Me.LabelControl10.TabIndex = 1
+ Me.LabelControl10.Text = "Zugeordnete Gruppen"
+ '
+ 'LabelControl11
+ '
+ Me.LabelControl11.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.LabelControl11.Appearance.Options.UseFont = True
+ Me.LabelControl11.Location = New System.Drawing.Point(5, 5)
+ Me.LabelControl11.Name = "LabelControl11"
+ Me.LabelControl11.Size = New System.Drawing.Size(163, 17)
+ Me.LabelControl11.TabIndex = 0
+ Me.LabelControl11.Text = "Nicht zugeordnete Gruppen"
+ '
+ 'GridAvailableGroups
+ '
+ Me.GridAvailableGroups.AllowDrop = True
+ Me.GridAvailableGroups.Dock = System.Windows.Forms.DockStyle.Left
+ Me.GridAvailableGroups.Location = New System.Drawing.Point(0, 33)
+ Me.GridAvailableGroups.MainView = Me.ViewAvailableGroups
+ Me.GridAvailableGroups.Name = "GridAvailableGroups"
+ Me.GridAvailableGroups.Size = New System.Drawing.Size(406, 186)
+ Me.GridAvailableGroups.TabIndex = 7
+ Me.GridAvailableGroups.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewAvailableGroups})
+ '
+ 'ViewAvailableGroups
+ '
+ Me.ViewAvailableGroups.DetailHeight = 295
+ Me.ViewAvailableGroups.GridControl = Me.GridAvailableGroups
+ Me.ViewAvailableGroups.Name = "ViewAvailableGroups"
+ Me.ViewAvailableGroups.OptionsBehavior.Editable = False
+ Me.ViewAvailableGroups.OptionsBehavior.ReadOnly = True
+ Me.ViewAvailableGroups.OptionsView.ShowAutoFilterRow = True
+ Me.ViewAvailableGroups.OptionsView.ShowGroupPanel = False
+ '
+ 'GridAssignedGroups
+ '
+ Me.GridAssignedGroups.AllowDrop = True
+ Me.GridAssignedGroups.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.GridAssignedGroups.Location = New System.Drawing.Point(406, 33)
+ Me.GridAssignedGroups.MainView = Me.ViewAssignedGroups
+ Me.GridAssignedGroups.Name = "GridAssignedGroups"
+ Me.GridAssignedGroups.Size = New System.Drawing.Size(513, 186)
+ Me.GridAssignedGroups.TabIndex = 8
+ Me.GridAssignedGroups.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewAssignedGroups})
+ '
+ 'ViewAssignedGroups
+ '
+ Me.ViewAssignedGroups.DetailHeight = 295
+ Me.ViewAssignedGroups.GridControl = Me.GridAssignedGroups
+ Me.ViewAssignedGroups.Name = "ViewAssignedGroups"
+ Me.ViewAssignedGroups.OptionsView.ShowAutoFilterRow = True
+ Me.ViewAssignedGroups.OptionsView.ShowGroupPanel = False
+ '
'frmCockpitConfig
'
Me.Appearance.Options.UseFont = True
Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 17.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(974, 588)
+ Me.ClientSize = New System.Drawing.Size(974, 733)
+ Me.Controls.Add(Me.XtraTabControl1)
Me.Controls.Add(Me.LookUpEditMonitor)
Me.Controls.Add(Me.LabelControl_Monitor)
Me.Controls.Add(Me.LookUpEditChart)
@@ -518,6 +729,24 @@ Partial Class frmCockpitConfig
CType(Me.LookUpEditProfil.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.LookUpEditChart.Properties, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.LookUpEditMonitor.Properties, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.XtraTabControl1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.XtraTabControl1.ResumeLayout(False)
+ Me.XtraTabPage1.ResumeLayout(False)
+ CType(Me.gridAssignedUsers, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.viewAssignedUsers, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.gridAvailableUsers, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.viewAvailableUsers, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.PanelControl1.ResumeLayout(False)
+ Me.PanelControl1.PerformLayout()
+ Me.XtraTabPage2.ResumeLayout(False)
+ CType(Me.PanelControl2, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.PanelControl2.ResumeLayout(False)
+ Me.PanelControl2.PerformLayout()
+ CType(Me.GridAvailableGroups, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.ViewAvailableGroups, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.GridAssignedGroups, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.ViewAssignedGroups, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -562,4 +791,22 @@ Partial Class frmCockpitConfig
Friend WithEvents LookUpEditMonitor As DevExpress.XtraEditors.LookUpEdit
Friend WithEvents LabelControl_Monitor As DevExpress.XtraEditors.LabelControl
Friend WithEvents bbtnitmCopy As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents XtraTabControl1 As DevExpress.XtraTab.XtraTabControl
+ Friend WithEvents XtraTabPage1 As DevExpress.XtraTab.XtraTabPage
+ Friend WithEvents XtraTabPage2 As DevExpress.XtraTab.XtraTabPage
+ Friend WithEvents gridAvailableUsers As DevExpress.XtraGrid.GridControl
+ Friend WithEvents viewAvailableUsers As DevExpress.XtraGrid.Views.Grid.GridView
+ Friend WithEvents PanelControl1 As DevExpress.XtraEditors.PanelControl
+ Friend WithEvents LabelControl9 As DevExpress.XtraEditors.LabelControl
+ Friend WithEvents LabelControl8 As DevExpress.XtraEditors.LabelControl
+ Friend WithEvents gridAssignedUsers As DevExpress.XtraGrid.GridControl
+ Friend WithEvents viewAssignedUsers As DevExpress.XtraGrid.Views.Grid.GridView
+ Friend WithEvents bsitm_info As DevExpress.XtraBars.BarStaticItem
+ Friend WithEvents PanelControl2 As DevExpress.XtraEditors.PanelControl
+ Friend WithEvents LabelControl10 As DevExpress.XtraEditors.LabelControl
+ Friend WithEvents LabelControl11 As DevExpress.XtraEditors.LabelControl
+ Friend WithEvents GridAssignedGroups As DevExpress.XtraGrid.GridControl
+ Friend WithEvents ViewAssignedGroups As DevExpress.XtraGrid.Views.Grid.GridView
+ Friend WithEvents GridAvailableGroups As DevExpress.XtraGrid.GridControl
+ Friend WithEvents ViewAvailableGroups As DevExpress.XtraGrid.Views.Grid.GridView
End Class
diff --git a/app/TaskFlow/frmCockpitConfig.resx b/app/TaskFlow/frmCockpitConfig.resx
index a9f00db..cf193e2 100644
--- a/app/TaskFlow/frmCockpitConfig.resx
+++ b/app/TaskFlow/frmCockpitConfig.resx
@@ -297,6 +297,27 @@
MC41LDAsMS0wLjUsMS0xdi01aDVjMC41LDAsMS0wLjUsMS0xICAgVjlMMjEsMnogTTIwLDI4SDZWMTBo
OHY1YzAsMC41LDAuNSwxLDEsMWg1VjI4eiBNMjYsMjJoLTR2LTdsLTctN2gtM1Y0aDh2NWMwLDAuNSww
LjUsMSwxLDFoNVYyMnoiIGNsYXNzPSJCbGFjayIgLz4NCiAgPC9nPg0KPC9zdmc+Cw==
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
+ LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
+ dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAABsDAAAC77u/
+ PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
+ IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
+ MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
+ Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
+ MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJ
+ LlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5HcmVlbntmaWxsOiMwMzlD
+ MjM7fQoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
+ Y2l0eTowLjU7fQoJLnN0MXtkaXNwbGF5Om5vbmU7fQoJLnN0MntkaXNwbGF5OmlubGluZTtmaWxsOiMw
+ MzlDMjM7fQoJLnN0M3tkaXNwbGF5OmlubGluZTtmaWxsOiNEMTFDMUM7fQoJLnN0NHtkaXNwbGF5Omlu
+ bGluZTtmaWxsOiM3MjcyNzI7fQo8L3N0eWxlPg0KICA8ZyBpZD0iQWJvdXQiPg0KICAgIDxwYXRoIGQ9
+ Ik0xNiwyQzguMywyLDIsOC4zLDIsMTZzNi4zLDE0LDE0LDE0czE0LTYuMywxNC0xNFMyMy43LDIsMTYs
+ MnogTTE2LDZjMS4xLDAsMiwwLjksMiwycy0wLjksMi0yLDJzLTItMC45LTItMiAgIFMxNC45LDYsMTYs
+ NnogTTIwLDI0aC04di0yaDJ2LThoLTJ2LTJoMmg0djEwaDJWMjR6IiBjbGFzcz0iQmx1ZSIgLz4NCiAg
+ PC9nPg0KPC9zdmc+Cw==
diff --git a/app/TaskFlow/frmCockpitConfig.vb b/app/TaskFlow/frmCockpitConfig.vb
index 2318f97..76856c6 100644
--- a/app/TaskFlow/frmCockpitConfig.vb
+++ b/app/TaskFlow/frmCockpitConfig.vb
@@ -1,5 +1,6 @@
Imports DevExpress.XtraBars.Ribbon
Imports DigitalData.GUIs.Common
+Imports taskFLOW.DD_DMSLiteDataSetTableAdapters
Public Class frmCockpitConfig
Private Selected_Cockpit_ID As Integer
@@ -203,6 +204,8 @@ Public Class frmCockpitConfig
Selected_Cockpit_ID = LookUpEdit1.EditValue
CheckEdit_Cockpit_Active.Checked = LookUpEdit1.Properties.GetDataSourceValue("ACTIVE", LookUpEdit1.ItemIndex)
Load_TBTF_CFG_COCKPIT_DEFINITION()
+ Load_Free_User_2_Cockpit()
+ Load_Assigned_User_2_Cockpit()
Catch ex As Exception
LOGGER.Error($"Error in LookUpEdit1_EditValueChanged: {ex.Message}")
End Try
@@ -503,6 +506,10 @@ Public Class frmCockpitConfig
Else
LOGGER.Debug("No TreeList nodes found - falling back to Decide_Load")
End If
+
+ ' ===== DRAG & DROP INITIALISIEREN =====
+ Initialize_DragDrop_User()
+ Initialize_DragDrop_Groups()
End Sub
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs)
@@ -564,7 +571,7 @@ Public Class frmCockpitConfig
End Sub
Private Sub Load_Monitor_LookUp()
Try
- Dim oSQL = "SELECT 0 ID UNION SELECT DISTINCT COCKPIT_ID ID FROM TBPM_MONITOR_KONFIG WITH (NOLOCK) ORDER BY COCKPIT_ID"
+ Dim oSQL = "SELECT 0 ID UNION SELECT DISTINCT COCKPIT_ID ID FROM TBPM_MONITOR_KONFIG WITH (NOLOCK) ORDER BY ID"
Dim oDT = DatabaseFallback.GetDatatableECM(oSQL)
LookUpEditMonitor.Properties.DataSource = oDT
@@ -928,4 +935,504 @@ Public Class frmCockpitConfig
LOGGER.Error(ex)
End Try
End Sub
+ Private Sub Load_Assigned_User_2_Cockpit()
+ Try
+ Dim oSQL = $"SELECT
+ CP_MAP.PK_MAP_COCKPIT_ID
+ ,FK_CFG_USER_ID
+ ,USR.USERNAME [Username]
+ ,USR.EMAIL [Email]
+ ,[SEQUENCE] [Reihenfolge]
+ FROM
+ TBTF_MAP_COCKPIT CP_MAP (NOLOCK) INNER JOIN
+ TBTF_CFG_COCKPIT CP_CONF (NOLOCK) ON CP_MAP.FK_CFG_COCKPIT_ID = CP_CONF.PK_CFG_COCKPIT_ID
+ INNER JOIN TBDD_USER USR (NOLOCK) ON CP_MAP.FK_CFG_USER_ID = USR.GUID
+ WHERE
+ CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID}"
+ Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
+ viewAssignedUsers.Columns.Clear()
+ gridAssignedUsers.DataSource = oDT
+ ' Spalten ausblenden
+ If viewAssignedUsers.Columns("PK_MAP_COCKPIT_ID") IsNot Nothing Then
+ viewAssignedUsers.Columns("PK_MAP_COCKPIT_ID").Visible = False
+ End If
+ If viewAssignedUsers.Columns("FK_CFG_USER_ID") IsNot Nothing Then
+ viewAssignedUsers.Columns("FK_CFG_USER_ID").Visible = False
+ End If
+
+ ' ===== DROPDOWN FÜR REIHENFOLGE KONFIGURIEREN =====
+ Setup_Sequence_Dropdown(viewAssignedUsers)
+
+ Catch ex As Exception
+ LOGGER.Error($"Error in Load_User_2_Cockpit: {ex.Message}")
+ End Try
+ End Sub
+ Private Sub Load_Free_User_2_Cockpit()
+ Try
+ Dim oSQL = $"SELECT
+ USR.GUID AS USR_ID
+ ,USR.USERNAME [Username]
+ ,USR.NAME + ', ' + USR.PRENAME AS [Name, Vorname]
+ ,USR.EMAIL [Email]
+ FROM
+ TBDD_USER USR (NOLOCK) WHERE
+ USR.GUID NOT IN (
+ SELECT
+ CP_MAP.FK_CFG_USER_ID
+ FROM
+ TBTF_MAP_COCKPIT CP_MAP (NOLOCK)
+ WHERE
+ CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID} AND CP_MAP.FK_CFG_USER_ID IS NOT NULL)"
+ Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
+ viewAvailableUsers.Columns.Clear()
+ gridAvailableUsers.DataSource = oDT
+ ' Spalten ausblenden
+ If viewAvailableUsers.Columns("USR_ID") IsNot Nothing Then
+ viewAvailableUsers.Columns("USR_ID").Visible = False
+ End If
+ Catch ex As Exception
+ LOGGER.Error($"Error in Load_FreeUser_2_Cockpit: {ex.Message}")
+ End Try
+ End Sub
+ Private Sub Load_Assigned_Groups_2_Cockpit()
+ Try
+ Dim oSQL = $"SELECT
+ CP_MAP.PK_MAP_COCKPIT_ID, FK_CFG_GROUP_ID, GRP.NAME [Groupname], [SEQUENCE] [Reihenfolge]
+ FROM
+ TBTF_MAP_COCKPIT CP_MAP (NOLOCK) INNER JOIN
+ TBTF_CFG_COCKPIT CP_CONF (NOLOCK) ON CP_MAP.FK_CFG_COCKPIT_ID = CP_CONF.PK_CFG_COCKPIT_ID
+ INNER JOIN TBDD_GROUPS GRP (NOLOCK) ON CP_MAP.FK_CFG_GROUP_ID = GRP.GUID
+ WHERE
+ CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID}"
+ Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
+ ViewAssignedGroups.Columns.Clear()
+ GridAssignedGroups.DataSource = oDT
+ ' Spalten ausblenden
+ If ViewAssignedGroups.Columns("PK_MAP_COCKPIT_ID") IsNot Nothing Then
+ ViewAssignedGroups.Columns("PK_MAP_COCKPIT_ID").Visible = False
+ End If
+ If ViewAssignedGroups.Columns("FK_CFG_GROUP_ID") IsNot Nothing Then
+ ViewAssignedGroups.Columns("FK_CFG_GROUP_ID").Visible = False
+ End If
+
+ ' ===== DROPDOWN FÜR REIHENFOLGE KONFIGURIEREN =====
+ Setup_Sequence_Dropdown(ViewAssignedGroups)
+
+ Catch ex As Exception
+ LOGGER.Error($"Error in Load_Assigned_Groups_2_Cockpit: {ex.Message}")
+ End Try
+ End Sub
+ Private Sub Load_Free_Groups_2_Cockpit()
+ Try
+ Dim oSQL = $"SELECT
+ GRP.GUID AS GRP_ID
+ ,GRP.NAME [Groupname]
+ FROM
+ TBDD_GROUPS GRP (NOLOCK) WHERE
+ GRP.GUID NOT IN (
+ SELECT
+ CP_MAP.FK_CFG_GROUP_ID
+ FROM
+ TBTF_MAP_COCKPIT CP_MAP (NOLOCK)
+ WHERE
+ CP_MAP.FK_CFG_COCKPIT_ID = {Selected_Cockpit_ID} AND CP_MAP.FK_CFG_GROUP_ID IS NOT NULL)
+ ORDER BY [Groupname]"
+ Dim oDT As DataTable = DatabaseFallback.GetDatatableECM(oSQL)
+ ViewAvailableGroups.Columns.Clear()
+ GridAvailableGroups.DataSource = oDT
+ ' Spalten ausblenden
+ If ViewAvailableGroups.Columns("GRP_ID") IsNot Nothing Then
+ ViewAvailableGroups.Columns("GRP_ID").Visible = False
+ End If
+ Catch ex As Exception
+ LOGGER.Error($"Error in Load_Free_Groups_2_Cockpit: {ex.Message}")
+ End Try
+ End Sub
+ ' ===== DROPDOWN FÜR REIHENFOLGE-SPALTE EINRICHTEN =====
+ Private Sub Setup_Sequence_Dropdown(pGridView As DevExpress.XtraGrid.Views.Grid.GridView)
+ Try
+ If pGridView.Columns("Reihenfolge") Is Nothing Then
+ LOGGER.Warn("Spalte 'Reihenfolge' nicht gefunden")
+ Exit Sub
+ End If
+ ' ComboBox-Editor erstellen
+ Dim comboEdit As New DevExpress.XtraEditors.Repository.RepositoryItemComboBox()
+
+ ' Werte 1-10 hinzufügen
+ For i As Integer = 1 To 10
+ comboEdit.Items.Add(i)
+ Next
+
+ ' ComboBox-Eigenschaften
+ comboEdit.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor ' Nur Auswahl, keine manuelle Eingabe
+ comboEdit.DropDownRows = 10 ' Alle Werte auf einmal anzeigen
+
+ ' Editor der Spalte zuweisen
+ pGridView.Columns("Reihenfolge").ColumnEdit = comboEdit
+
+ ' Spalte editierbar machen
+ pGridView.OptionsBehavior.Editable = True
+ pGridView.Columns("Reihenfolge").OptionsColumn.AllowEdit = True
+ If pGridView.Name = "viewAssignedUsers" Then
+ If pGridView.Columns("Username") IsNot Nothing Then
+ pGridView.Columns("Username").OptionsColumn.AllowEdit = False
+ End If
+ If pGridView.Columns("Email") IsNot Nothing Then
+ pGridView.Columns("Email").OptionsColumn.AllowEdit = False
+ End If
+ Else
+ If pGridView.Columns("Groupname") IsNot Nothing Then
+ pGridView.Columns("Groupname").OptionsColumn.AllowEdit = False
+ End If
+
+ End If
+ LOGGER.Debug("Reihenfolge-Dropdown erfolgreich konfiguriert")
+
+ Catch ex As Exception
+ LOGGER.Error($"Error in Setup_Sequence_Dropdown: {ex.Message}")
+ End Try
+ End Sub
+
+ ' ===== EVENT-HANDLER FÜR WERTVALIDIERUNG IN DER GRID-ZELLE =====
+ Private Sub ValidateSequenceEditor(sender As Object, e As DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs) Handles viewAssignedUsers.ValidatingEditor, ViewAssignedGroups.ValidatingEditor
+ Try
+ Dim view As DevExpress.XtraGrid.Views.Grid.GridView = CType(sender, DevExpress.XtraGrid.Views.Grid.GridView)
+
+ ' Nur bei Änderung der Reihenfolge-Spalte reagieren
+ If view.FocusedColumn.FieldName <> "Reihenfolge" Then
+ Exit Sub
+ End If
+
+ ' PK_MAP_COCKPIT_ID aus der aktuellen Zeile holen
+ Dim mapId As Object = view.GetFocusedRowCellValue("PK_MAP_COCKPIT_ID")
+
+ If mapId Is Nothing OrElse IsDBNull(mapId) Then
+ LOGGER.Warn("PK_MAP_COCKPIT_ID ist NULL - Update abgebrochen")
+ e.Valid = False
+ e.ErrorText = "Ungültige Zeile"
+ Exit Sub
+ End If
+
+ ' Alten Wert holen
+ Dim oldValue As Object = view.GetFocusedRowCellValue("Reihenfolge")
+
+ ' Neuen Reihenfolge-Wert validieren
+ Dim newSequence As Integer
+ If Not Integer.TryParse(e.Value?.ToString(), newSequence) Then
+ LOGGER.Warn($"Ungültiger Reihenfolge-Wert: {e.Value}")
+ e.Valid = False
+ e.ErrorText = "Bitte geben Sie eine gültige Zahl ein (1-10)"
+ Exit Sub
+ End If
+
+ ' Prüfen ob Wert im erlaubten Bereich liegt
+ If newSequence < 1 OrElse newSequence > 10 Then
+ e.Valid = False
+ e.ErrorText = "Reihenfolge muss zwischen 1 und 10 liegen"
+ Exit Sub
+ End If
+
+ ' UPDATE-Statement ausführen
+ Dim updateSQL = $"UPDATE TBTF_MAP_COCKPIT
+ SET SEQUENCE = {newSequence},
+ CHANGED_WHO = '{Environment.UserName}',
+ CHANGED_WHEN = GETDATE()
+ WHERE PK_MAP_COCKPIT_ID = {mapId}"
+
+ If DatabaseFallback.ExecuteNonQueryECM(updateSQL) Then
+ bsitm_info_Display($"Reihenfolge für MAP_ID={mapId} auf {newSequence} aktualisiert (alter Wert: {oldValue})")
+ e.Valid = True
+ Else
+ LOGGER.Error($"Fehler beim Update der Reihenfolge für MAP_ID={mapId}")
+ bsitm_info_Display($"Fehler beim Update der Reihenfolge für MAP_ID={mapId}", True)
+ e.Valid = False
+ e.ErrorText = "Fehler beim Speichern in der Datenbank. Prüfen Sie das Log."
+ End If
+
+ Catch ex As Exception
+ LOGGER.Error($"Error in ValidateSequenceEditor: {ex.Message}")
+ LOGGER.Error(ex)
+ bsitm_info_Display($"Fehler: {ex.Message}", True)
+ e.Valid = False
+ e.ErrorText = $"Fehler: {ex.Message}"
+ End Try
+ End Sub
+ Sub bsitm_info_Display(msg As String, Optional err As Boolean = False)
+ If msg IsNot Nothing Then
+ bsitm_info.Caption = msg
+ bsitm_info.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
+ bsitm_info.ItemAppearance.Normal.ForeColor = Color.White
+ Else
+ bsitm_info.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
+ End If
+ End Sub
+
+ ' ===== DRAG & DROP INITIALISIERUNG (im Form_Load oder Shown) =====
+ Private Sub Initialize_DragDrop_User()
+ ' Ziel-Grids müssen Drop erlauben
+ gridAssignedUsers.AllowDrop = True
+ gridAvailableUsers.AllowDrop = True
+
+ ' Event-Handler für Drag-Start registrieren
+ AddHandler viewAvailableUsers.MouseDown, AddressOf viewAvailableUsers_MouseDown
+ AddHandler viewAvailableUsers.MouseMove, AddressOf viewAvailableUsers_MouseMove
+ AddHandler viewAssignedUsers.MouseDown, AddressOf viewAssignedUsers_MouseDown
+ AddHandler viewAssignedUsers.MouseMove, AddressOf viewAssignedUsers_MouseMove
+
+ ' Event-Handler für Drag-Over registrieren
+ AddHandler gridAssignedUsers.DragOver, AddressOf gridAssignedUsers_DragOver
+ AddHandler gridAvailableUsers.DragOver, AddressOf gridAvailableUsers_DragOver
+ End Sub
+ Private Sub Initialize_DragDrop_Groups()
+ ' Ziel-Grids müssen Drop erlauben
+ GridAssignedGroups.AllowDrop = True
+ GridAvailableGroups.AllowDrop = True
+
+ ' Event-Handler für Drag-Start registrieren
+ AddHandler ViewAvailableGroups.MouseDown, AddressOf viewAvailableGroups_MouseDown
+ AddHandler ViewAvailableGroups.MouseMove, AddressOf viewAvailableGroups_MouseMove
+ AddHandler ViewAssignedGroups.MouseDown, AddressOf viewAssignedGroups_MouseDown
+ AddHandler ViewAssignedGroups.MouseMove, AddressOf viewAssignedGroups_MouseMove
+
+ ' Event-Handler für Drag-Over registrieren
+ AddHandler GridAssignedGroups.DragOver, AddressOf gridAssignedGroups_DragOver
+ AddHandler GridAvailableGroups.DragOver, AddressOf gridAvailableGroups_DragOver
+ End Sub
+ ' ===== DRAG-START VON AVAILABLE USERS =====
+ Private dragStartPoint As Point
+ Private isDragging As Boolean = False
+
+ Private Sub viewAvailableUsers_MouseDown(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left Then
+ dragStartPoint = e.Location
+ isDragging = False
+ End If
+ End Sub
+ Private Sub viewAvailableGroups_MouseDown(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left Then
+ dragStartPoint = e.Location
+ isDragging = False
+ End If
+ End Sub
+
+ Private Sub viewAvailableUsers_MouseMove(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left AndAlso Not isDragging Then
+ Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
+
+ If dragDistance > 5 Then ' Mindestbewegung 5 Pixel
+ isDragging = True
+ Dim hitInfo = viewAvailableUsers.CalcHitInfo(dragStartPoint)
+
+ If hitInfo.RowHandle >= 0 Then
+ Dim userId = viewAvailableUsers.GetRowCellValue(hitInfo.RowHandle, "USR_ID")
+ Dim userName = viewAvailableUsers.GetRowCellValue(hitInfo.RowHandle, "USERNAME")
+
+ If userId IsNot Nothing Then
+ Dim dragData = $"{userId}|{userName}"
+ gridAvailableUsers.DoDragDrop(dragData, DragDropEffects.Move)
+ End If
+ End If
+ End If
+ End If
+ End Sub
+ Private Sub viewAvailableGroups_MouseMove(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left AndAlso Not isDragging Then
+ Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
+
+ If dragDistance > 5 Then ' Mindestbewegung 5 Pixel
+ isDragging = True
+ Dim hitInfo = ViewAvailableGroups.CalcHitInfo(dragStartPoint)
+
+ If hitInfo.RowHandle >= 0 Then
+ Dim groupId = ViewAvailableGroups.GetRowCellValue(hitInfo.RowHandle, "GRP_ID")
+ Dim groupName = ViewAvailableGroups.GetRowCellValue(hitInfo.RowHandle, "Groupname")
+
+ If groupId IsNot Nothing Then
+ Dim dragData = $"{groupId}|{groupName}"
+ GridAvailableGroups.DoDragDrop(dragData, DragDropEffects.Move)
+ End If
+ End If
+ End If
+ End If
+ End Sub
+ ' ===== DRAG-START VON ASSIGNED 272|ENVELOPE-ADMINUSERS =====
+ Private Sub viewAssignedUsers_MouseDown(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left Then
+ dragStartPoint = e.Location
+ isDragging = False
+ End If
+ End Sub
+ Private Sub viewAssignedGroups_MouseDown(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left Then
+ dragStartPoint = e.Location
+ isDragging = False
+ End If
+ End Sub
+ Private Sub viewAssignedUsers_MouseMove(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left AndAlso Not isDragging Then
+ Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
+
+ If dragDistance > 5 Then
+ isDragging = True
+ Dim hitInfo = viewAssignedUsers.CalcHitInfo(dragStartPoint)
+
+ If hitInfo.RowHandle >= 0 Then
+ Dim mapId = viewAssignedUsers.GetRowCellValue(hitInfo.RowHandle, "PK_MAP_COCKPIT_ID")
+ Dim userName = viewAssignedUsers.GetRowCellValue(hitInfo.RowHandle, "USERNAME")
+
+ If mapId IsNot Nothing Then
+ Dim dragData = $"{mapId}|{userName}"
+ gridAssignedUsers.DoDragDrop(dragData, DragDropEffects.Move)
+ End If
+ End If
+ End If
+ End If
+ End Sub
+ Private Sub viewAssignedGroups_MouseMove(sender As Object, e As MouseEventArgs)
+ If e.Button = MouseButtons.Left AndAlso Not isDragging Then
+ Dim dragDistance = Math.Abs(e.Location.X - dragStartPoint.X) + Math.Abs(e.Location.Y - dragStartPoint.Y)
+
+ If dragDistance > 5 Then
+ isDragging = True
+ Dim hitInfo = ViewAssignedGroups.CalcHitInfo(dragStartPoint)
+
+ If hitInfo.RowHandle >= 0 Then
+ Dim mapId = ViewAssignedGroups.GetRowCellValue(hitInfo.RowHandle, "PK_MAP_COCKPIT_ID")
+ Dim groupName = ViewAssignedGroups.GetRowCellValue(hitInfo.RowHandle, "Groupname")
+
+ If mapId IsNot Nothing Then
+ Dim dragData = $"{mapId}|{groupName}"
+ gridAssignedUsers.DoDragDrop(dragData, DragDropEffects.Move)
+ End If
+ End If
+ End If
+ End If
+ End Sub
+ ' ===== DRAG-OVER EVENTS (visuelles Feedback) =====
+ Private Sub gridAssignedUsers_DragOver(sender As Object, e As DragEventArgs)
+ If e.Data.GetDataPresent(DataFormats.Text) Then
+ e.Effect = DragDropEffects.Move
+ Else
+ e.Effect = DragDropEffects.None
+ End If
+ End Sub
+ Private Sub gridAssignedGroups_DragOver(sender As Object, e As DragEventArgs)
+ If e.Data.GetDataPresent(DataFormats.Text) Then
+ e.Effect = DragDropEffects.Move
+ Else
+ e.Effect = DragDropEffects.None
+ End If
+ End Sub
+ Private Sub gridAvailableUsers_DragOver(sender As Object, e As DragEventArgs)
+ If e.Data.GetDataPresent(DataFormats.Text) Then
+ e.Effect = DragDropEffects.Move
+ Else
+ e.Effect = DragDropEffects.None
+ End If
+ End Sub
+ Private Sub gridAvailableGroups_DragOver(sender As Object, e As DragEventArgs)
+ If e.Data.GetDataPresent(DataFormats.Text) Then
+ e.Effect = DragDropEffects.Move
+ Else
+ e.Effect = DragDropEffects.None
+ End If
+ End Sub
+
+ Private Sub gridAssignedUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridAssignedUsers.DragDrop
+ Try
+ Dim data As String = e.Data.GetData(DataFormats.Text)
+ Dim userId As Integer = data.Split("|")(0)
+ Dim oInsert = $"INSERT INTO [dbo].[TBTF_MAP_COCKPIT]
+ ([FK_CFG_COCKPIT_ID]
+ ,[FK_CFG_USER_ID]
+ ,[SEQUENCE]
+ ,[ADDED_WHO])
+ VALUES
+ ({Selected_Cockpit_ID}, {userId}, 0, '{USER_USERNAME}')"
+
+ If DatabaseFallback.ExecuteNonQueryECM(oInsert) Then
+ Load_Free_User_2_Cockpit()
+ Load_Assigned_User_2_Cockpit()
+ Else
+ MsgBox("Fehler beim Hinzufügen des Benutzers. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
+ End If
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ MsgBox(ex.Message, MsgBoxStyle.Critical, "Error adding users:")
+ End Try
+ End Sub
+ Private Sub gridAssignedGroups_DragDrop(sender As Object, e As DragEventArgs) Handles GridAssignedGroups.DragDrop
+ Try
+ Dim data As String = e.Data.GetData(DataFormats.Text)
+ Dim groupID As Integer = data.Split("|")(0)
+ Dim oInsert = $"INSERT INTO [dbo].[TBTF_MAP_COCKPIT]
+ (FK_CFG_COCKPIT_ID
+ ,FK_CFG_GROUP_ID
+ ,[SEQUENCE]
+ ,ADDED_WHO)
+ VALUES
+ ({Selected_Cockpit_ID}, {groupID}, 0, '{USER_USERNAME}')"
+
+ If DatabaseFallback.ExecuteNonQueryECM(oInsert) Then
+ Load_Free_Groups_2_Cockpit()
+ Load_Assigned_Groups_2_Cockpit()
+ Else
+ MsgBox("Fehler beim Hinzufügen der Gruppe. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
+ End If
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ MsgBox(ex.Message, MsgBoxStyle.Critical, "Error adding groups:")
+ End Try
+ End Sub
+ Private Sub gridAvailableUsers_DragDrop(sender As Object, e As DragEventArgs) Handles gridAvailableUsers.DragDrop
+ Try
+ Dim data As String = e.Data.GetData(DataFormats.Text)
+ Dim MAPID As Integer = data.Split("|")(0)
+ Dim oDelete = $"DELETE FROM [dbo].[TBTF_MAP_COCKPIT]
+ WHERE PK_MAP_COCKPIT_ID = {MAPID}"
+
+ If DatabaseFallback.ExecuteNonQueryECM(oDelete) Then
+ Dim omsg = "Benutzer erfolgreich entfernt."
+ bsitm_info_Display(omsg)
+ Load_Free_User_2_Cockpit()
+ Load_Assigned_User_2_Cockpit()
+ Else
+ MsgBox("Fehler beim Entfernen des Benutzers. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
+ End If
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ MsgBox(ex.Message, MsgBoxStyle.Critical, "Error removing user:")
+ End Try
+ End Sub
+ Private Sub gridAvailableGroups_DragDrop(sender As Object, e As DragEventArgs) Handles GridAvailableGroups.DragDrop
+ Try
+ Dim data As String = e.Data.GetData(DataFormats.Text)
+ Dim MAPID As Integer = data.Split("|")(0)
+ Dim oDelete = $"DELETE FROM [dbo].[TBTF_MAP_COCKPIT]
+ WHERE PK_MAP_COCKPIT_ID = {MAPID}"
+
+ If DatabaseFallback.ExecuteNonQueryECM(oDelete) Then
+ Dim omsg = "Gruppe erfolgreich entfernt."
+ bsitm_info_Display(omsg)
+ Load_Free_Groups_2_Cockpit()
+ Load_Assigned_Groups_2_Cockpit()
+ Else
+ MsgBox("Fehler beim Entfernen der Gruppe. Prüfen Sie Ihr Log", MsgBoxStyle.Exclamation)
+ End If
+ Catch ex As Exception
+ LOGGER.Error(ex)
+ MsgBox(ex.Message, MsgBoxStyle.Critical, "Error removing group:")
+ End Try
+ End Sub
+ Private Sub XtraTabControl1_SelectedPageChanged(sender As Object, e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles XtraTabControl1.SelectedPageChanged
+ Select Case XtraTabControl1.SelectedTabPageIndex
+ Case 0
+ Load_Assigned_User_2_Cockpit()
+ Load_Free_User_2_Cockpit()
+ Case 1
+ Load_Assigned_Groups_2_Cockpit()
+ Load_Free_Groups_2_Cockpit()
+ End Select
+ bsitm_info_Display("")
+ End Sub
End Class
\ No newline at end of file