Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/DataGridViewUserControl.vb =================================================================== diff -u -r1716 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/DataGridViewUserControl.vb (.../DataGridViewUserControl.vb) (revision 1716) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/DataGridViewUserControl.vb (.../DataGridViewUserControl.vb) (revision 1721) @@ -70,6 +70,8 @@ WorkItemsDataGridView.ColumnHeadersDefaultCellStyle.Font = New Font("Microsoft Sans Serif", 10) 'todo configureerbaar maken 'Center normal cells. WorkItemsDataGridView.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter + 'DueOut column is right aligned. + DueOut.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 'Make text bigger of normal cells. WorkItemsDataGridView.DefaultCellStyle.Font = New Font("Microsoft Sans Serif", 9.5) 'todo configureerbaar maken @@ -218,7 +220,7 @@ 'Load normal parameters. Dim data As New List(Of String) From { workItem.BatchVisual, - workItem.EndTimeStamp.ToString("d MMM HH:mm"), + workItem.EndTimeStamp.ToString("d/MM HH:mm"), workItem.ProductGroup, workItem.DeliverToResource, workItem.Remark Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/IEmployeeDetailUserControl.vb =================================================================== diff -u -r1717 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/IEmployeeDetailUserControl.vb (.../IEmployeeDetailUserControl.vb) (revision 1717) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/IEmployeeDetailUserControl.vb (.../IEmployeeDetailUserControl.vb) (revision 1721) @@ -1,8 +1,4 @@ Public Interface IEmployeeDetailUserControl + inherits IRefreshableUserControl - ''' - ''' Update the information with the given employee. - ''' - ''' - sub UpdateInformation(employee As IEmployee) End Interface Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.Designer.vb =================================================================== diff -u -r1718 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.Designer.vb (.../EmployeeDetailUserControl.Designer.vb) (revision 1718) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.Designer.vb (.../EmployeeDetailUserControl.Designer.vb) (revision 1721) @@ -22,6 +22,7 @@ 'Do not modify it using the code editor. _ Private Sub InitializeComponent() + Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(EmployeeDetailUserControl)) Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() Me.ActivityLabel = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label() @@ -33,6 +34,7 @@ Me.StatusLabel = New System.Windows.Forms.Label() Me.Label1 = New System.Windows.Forms.Label() Me.BatchLabel = New System.Windows.Forms.Label() + Me.RemoveEmployeeButton = New System.Windows.Forms.Button() Me.TableLayoutPanel1.SuspendLayout CType(Me.ImagePictureBox,System.ComponentModel.ISupportInitialize).BeginInit Me.SuspendLayout @@ -52,10 +54,11 @@ Me.TableLayoutPanel1.Controls.Add(Me.StartButton, 1, 7) Me.TableLayoutPanel1.Controls.Add(Me.StopButton, 1, 9) Me.TableLayoutPanel1.Controls.Add(Me.FinishButton, 1, 11) - Me.TableLayoutPanel1.Controls.Add(Me.NameLabel, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.NameLabel, 0, 1) Me.TableLayoutPanel1.Controls.Add(Me.StatusLabel, 0, 3) Me.TableLayoutPanel1.Controls.Add(Me.Label1, 0, 4) Me.TableLayoutPanel1.Controls.Add(Me.BatchLabel, 1, 4) + Me.TableLayoutPanel1.Controls.Add(Me.RemoveEmployeeButton, 2, 3) Me.TableLayoutPanel1.Location = New System.Drawing.Point(3, 3) Me.TableLayoutPanel1.Name = "TableLayoutPanel1" Me.TableLayoutPanel1.RowCount = 13 @@ -106,8 +109,8 @@ Me.ImagePictureBox.InitialImage = Nothing Me.ImagePictureBox.Location = New System.Drawing.Point(331, 3) Me.ImagePictureBox.Name = "ImagePictureBox" - Me.TableLayoutPanel1.SetRowSpan(Me.ImagePictureBox, 4) - Me.ImagePictureBox.Size = New System.Drawing.Size(160, 226) + Me.TableLayoutPanel1.SetRowSpan(Me.ImagePictureBox, 3) + Me.ImagePictureBox.Size = New System.Drawing.Size(160, 168) Me.ImagePictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom Me.ImagePictureBox.TabIndex = 0 Me.ImagePictureBox.TabStop = false @@ -148,12 +151,15 @@ ' 'NameLabel ' + Me.NameLabel.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.NameLabel.AutoSize = true - Me.NameLabel.Dock = System.Windows.Forms.DockStyle.Left + Me.TableLayoutPanel1.SetColumnSpan(Me.NameLabel, 2) Me.NameLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) - Me.NameLabel.Location = New System.Drawing.Point(3, 0) + Me.NameLabel.Location = New System.Drawing.Point(3, 58) Me.NameLabel.Name = "NameLabel" - Me.NameLabel.Size = New System.Drawing.Size(45, 58) + Me.TableLayoutPanel1.SetRowSpan(Me.NameLabel, 2) + Me.NameLabel.Size = New System.Drawing.Size(322, 16) Me.NameLabel.TabIndex = 6 Me.NameLabel.Text = "Name" Me.NameLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -195,6 +201,19 @@ Me.BatchLabel.Text = "batch" Me.BatchLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' + 'RemoveEmployeeButton + ' + Me.RemoveEmployeeButton.BackColor = System.Drawing.Color.White + Me.RemoveEmployeeButton.BackgroundImage = CType(resources.GetObject("RemoveEmployeeButton.BackgroundImage"),System.Drawing.Image) + Me.RemoveEmployeeButton.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom + Me.RemoveEmployeeButton.Dock = System.Windows.Forms.DockStyle.Fill + Me.RemoveEmployeeButton.Location = New System.Drawing.Point(343, 177) + Me.RemoveEmployeeButton.Margin = New System.Windows.Forms.Padding(15, 3, 15, 3) + Me.RemoveEmployeeButton.Name = "RemoveEmployeeButton" + Me.RemoveEmployeeButton.Size = New System.Drawing.Size(136, 52) + Me.RemoveEmployeeButton.TabIndex = 12 + Me.RemoveEmployeeButton.UseVisualStyleBackColor = false + ' 'EmployeeDetailUserControl ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!) @@ -221,4 +240,5 @@ Friend WithEvents Label2 As Label Friend WithEvents BatchLabel As Label Friend WithEvents ActivityLabel As Label + Friend WithEvents RemoveEmployeeButton As Button End Class Index: ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/EmployeeManager.vb =================================================================== diff -u -r1718 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/EmployeeManager.vb (.../EmployeeManager.vb) (revision 1718) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/domain/managers/implementations/EmployeeManager.vb (.../EmployeeManager.vb) (revision 1721) @@ -41,7 +41,7 @@ ''' Public Function GetSelectedEmployee(employeeNumber As Integer) As IEmployee Implements IEmployeeManager.GetSelectedEmployee - If _selectedEmployeesDictionary.ContainsKey(employeeNumber) Then + If not _selectedEmployeesDictionary.ContainsKey(employeeNumber) Then Throw New InternalException($"Employee number for getting the selected value is invalid, key value: {employeeNumber}.") End If 'Get the value. Index: ActiviteitenOpvolging/ActiviteitenOpvolging/My Project/Resources.resx =================================================================== diff -u -r1715 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/My Project/Resources.resx (.../Resources.resx) (revision 1715) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/My Project/Resources.resx (.../Resources.resx) (revision 1721) @@ -117,10 +117,18 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ICT_READONLY + The username for the Caché database + SQL02 The server name for the employees database + + fixed + The password for the Caché database + CACHE01 The name of the server for the Caché database @@ -133,28 +141,23 @@ WieIsWie The name of the Employees database - - fixed - The password for the Caché database - Cache01Admin1 The name of the DSN for the Caché database - - ICT_READONLY - The username for the Caché database + + VH_ReadOnly + The username for the employees database SQLr3*d The password for the employee database - - VH_ReadOnly - The username for the employees database - ..\Resources\user.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\remove_user.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file Index: ActiviteitenOpvolging/ActiviteitenOpvolging/Resources/remove_user.png =================================================================== diff -u Binary files differ Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.vb =================================================================== diff -u -r1718 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.vb (.../EmployeeDetailUserControl.vb) (revision 1718) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.vb (.../EmployeeDetailUserControl.vb) (revision 1721) @@ -25,11 +25,6 @@ _parentUserControl = parentForm End Sub - ''' - Public Sub UpdateInformation(employee As IEmployee) Implements IEmployeeDetailUserControl.UpdateInformation - 'todo update information - End Sub - Private Sub EmployeeUserControl_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try 'Set back color corresponding to the employee index. @@ -41,11 +36,44 @@ StopButton.BackColor = ConfigsLoader.ColorsActivities(ActivityStateEnum.Pauzed) FinishButton.BackColor = ConfigsLoader.ColorsActivities(ActivityStateEnum.Finished) + 'Fetch and show the employee. + LoadEmployee() Catch ex As Exception MessageBox.Show($"Could not load {Me.Name}.{vbNewLine}{ex.Message}", "An error occured...", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub + ''' + Public Function RefreshData() As Boolean Implements IEmployeeDetailUserControl.RefreshData + Try + LoadEmployee + Return True + Catch ex As Exception + Return False + End Try + End Function + + ''' + ''' Load the employee + ''' + Private Sub LoadEmployee() + 'Fetch the employee. + dim employee = _parentUserControl.FetchEmployee() + 'Show all information on screen. + NameLabel.Text = $"{Employee.FirstName} {Employee.LastName}" + + 'Todo activity status + 'todo enable status of buttons. + End Sub + + Private Sub RemoveEmployeeButton_Click(sender As Object, e As EventArgs) Handles RemoveEmployeeButton.Click + Try + _parentUserControl.DeselectEmployee() + Catch ex As Exception + MessageBox.Show($"Could not remove user.{vbNewLine}{ex.Message}", "An error occured...", MessageBoxButtons.OK, MessageBoxIcon.Error) + End Try + End Sub + Private Sub StartButton_Click(sender As Object, e As EventArgs) Handles StartButton.Click Try _parentUserControl.StartActivity() Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.resx =================================================================== diff -u -r1717 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.resx (.../EmployeeDetailUserControl.resx) (revision 1717) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/EmployeeDetailUserControl.resx (.../EmployeeDetailUserControl.resx) (revision 1721) @@ -117,4 +117,353 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 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 + gg== + + \ No newline at end of file Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/IEmployeesMainForm.vb =================================================================== diff -u -r1718 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/IEmployeesMainForm.vb (.../IEmployeesMainForm.vb) (revision 1718) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/IEmployeesMainForm.vb (.../IEmployeesMainForm.vb) (revision 1721) @@ -13,6 +13,11 @@ Sub SelectEmployee(employeeIndex As Integer, employee As IEmployee) ''' + ''' Removes the selection of the current employee. + ''' + Sub DeselectEmployee(employeeIndex As Integer) + + ''' ''' Gets the selected employee for this index. This function still works if no employee was selected yet. ''' ''' Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/IEmployeeDetailParentUserControl.vb =================================================================== diff -u -r1718 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/IEmployeeDetailParentUserControl.vb (.../IEmployeeDetailParentUserControl.vb) (revision 1718) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/details/IEmployeeDetailParentUserControl.vb (.../IEmployeeDetailParentUserControl.vb) (revision 1721) @@ -5,6 +5,11 @@ ''' Function FetchEmployee() As IEmployee + ''' + ''' Removes the selection of the current employee. + ''' + sub DeselectEmployee() + Sub StartActivity() Sub FinishActivity() Sub StopActivity() Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolging.vbproj =================================================================== diff -u -r1717 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolging.vbproj (.../ActiviteitenOpvolging.vbproj) (revision 1717) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolging.vbproj (.../ActiviteitenOpvolging.vbproj) (revision 1721) @@ -192,5 +192,8 @@ + + + \ No newline at end of file Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb =================================================================== diff -u -r1720 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb (.../ActiviteitenOpvolgingForm.vb) (revision 1720) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb (.../ActiviteitenOpvolgingForm.vb) (revision 1721) @@ -147,6 +147,11 @@ End Sub ''' + Public Sub DeselectEmployee(employeeIndex As Integer) Implements IEmployeesMainForm.DeselectEmployee + _domainController.DeselectEmployee(employeeIndex) + End Sub + + ''' Public Function GetSelectedEmployee(employeeIndex As Integer) As IEmployee Implements IEmployeesMainForm.GetSelectedEmployee Return _domainController.GetSelectedEmployee(employeeIndex) End Function Index: ActiviteitenOpvolging/ActiviteitenOpvolging/My Project/Resources.Designer.vb =================================================================== diff -u -r1715 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/My Project/Resources.Designer.vb (.../Resources.Designer.vb) (revision 1715) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/My Project/Resources.Designer.vb (.../Resources.Designer.vb) (revision 1721) @@ -144,6 +144,16 @@ ''' ''' Looks up a localized resource of type System.Drawing.Bitmap. ''' + Friend ReadOnly Property remove_user() As System.Drawing.Bitmap + Get + Dim obj As Object = ResourceManager.GetObject("remove_user", resourceCulture) + Return CType(obj,System.Drawing.Bitmap) + End Get + End Property + + ''' + ''' Looks up a localized resource of type System.Drawing.Bitmap. + ''' Friend ReadOnly Property user() As System.Drawing.Bitmap Get Dim obj As Object = ResourceManager.GetObject("user", resourceCulture) Index: ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/EmployeeUserControl.vb =================================================================== diff -u -r1718 -r1721 --- ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/EmployeeUserControl.vb (.../EmployeeUserControl.vb) (revision 1718) +++ ActiviteitenOpvolging/ActiviteitenOpvolging/screens/employee/EmployeeUserControl.vb (.../EmployeeUserControl.vb) (revision 1721) @@ -39,13 +39,7 @@ BorderStyle = BorderStyle.FixedSingle 'Show the Employee picker user control. - Dim employeePickerUserControl = New EmployeePickerUserControl(Me) - With employeePickerUserControl - 'Make it exactly as big as the panel it will go into. - .Size = UserControlPanel.Size - End With - - UserControlPanel.Controls.Add(employeePickerUserControl) + SwitchUserControl(New EmployeePickerUserControl(Me)) Catch ex As Exception MessageBox.Show($"Could not load {Me.Name}.{vbNewLine}{ex.Message}", "An error occured...", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try @@ -89,10 +83,13 @@ Try 'Call parent to select employee. _parentForm.SelectEmployee(EmployeeIndex, employee) + 'Load detail user control. + SwitchUserControl(New EmployeeDetailUserControl(Me)) Catch ex As Exception MessageBox.Show($"Could not select employee.{vbNewLine}{ex.Message}", "An error occured...", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub + #End Region #Region "Employee details" @@ -102,6 +99,19 @@ End Function ''' + Public Sub DeselectEmployee() Implements IEmployeeDetailParentUserControl.DeselectEmployee + Try + 'Call parent to deselect employee. + _parentForm.DeselectEmployee(EmployeeIndex) + + 'Switch to employee picker user control. + SwitchUserControl(new EmployeePickerUserControl(Me)) + Catch ex As Exception + MessageBox.Show($"Could not deselect employee.{vbNewLine}{ex.Message}", "An error occured...", MessageBoxButtons.OK, MessageBoxIcon.Error) + End Try + End Sub + + ''' Public Sub StartActivity() Implements IEmployeeDetailParentUserControl.StartActivity Throw New NotImplementedException End Sub @@ -117,4 +127,20 @@ End Sub #End Region + ''' + ''' Swtich to another user control on the screen. + ''' + ''' + Private Sub SwitchUserControl(userControl As UserControl) + 'Remove the current user control from the screen. + UserControlPanel.Controls.Clear() + 'Set the properties of the user control. + With userControl + 'Make it exactly as big as the panel it will go into. + .Size = UserControlPanel.Size + End With + 'Add it onto the panel. + UserControlPanel.Controls.Add(userControl) + End Sub + End Class