Index: ActiviteitenOpvolging/ActiviteitenOpvolging/grids/IDataGridUserControl.vb
===================================================================
diff -u -r1701 -r1702
--- ActiviteitenOpvolging/ActiviteitenOpvolging/grids/IDataGridUserControl.vb (.../IDataGridUserControl.vb) (revision 1701)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/grids/IDataGridUserControl.vb (.../IDataGridUserControl.vb) (revision 1702)
@@ -1,12 +1,18 @@
Public Interface IDataGridUserControl
'''
+ ''' Access to the grid number.
+ '''
+ '''
+ ReadOnly Property GridNumber As Integer
+
+ '''
''' Clears the selection from the datagrid.
'''
- sub RemoveSelection()
+ Sub RemoveSelection()
'''
- ''' Access to the grid number.
+ ''' Refresh the data of the grid.
'''
- '''
- ReadOnly Property GridNumber As Integer
+ ''' Whether or not it was successful
+ Function RefreshData() As Boolean
End Interface
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.Designer.vb
===================================================================
diff -u -r1682 -r1702
--- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.Designer.vb (.../ActiviteitenOpvolgingForm.Designer.vb) (revision 1682)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.Designer.vb (.../ActiviteitenOpvolgingForm.Designer.vb) (revision 1702)
@@ -24,6 +24,9 @@
Private Sub InitializeComponent()
Me.DatagridViewControlsFlowLayoutPanel = New System.Windows.Forms.FlowLayoutPanel()
Me.GridLabel = New System.Windows.Forms.Label()
+ Me.RefreshButton = New System.Windows.Forms.Button()
+ Me.RefreshTimeLabel = New System.Windows.Forms.Label()
+ Me.RefreshFailedLabel = New System.Windows.Forms.Label()
Me.SuspendLayout
'
'DatagridViewControlsFlowLayoutPanel
@@ -47,11 +50,44 @@
Me.GridLabel.TabIndex = 2
Me.GridLabel.Text = "Grid label"
'
+ 'RefreshButton
+ '
+ Me.RefreshButton.Location = New System.Drawing.Point(696, 9)
+ Me.RefreshButton.Name = "RefreshButton"
+ Me.RefreshButton.Size = New System.Drawing.Size(75, 23)
+ Me.RefreshButton.TabIndex = 3
+ Me.RefreshButton.Text = "Refresh"
+ Me.RefreshButton.UseVisualStyleBackColor = true
+ '
+ 'RefreshTimeLabel
+ '
+ Me.RefreshTimeLabel.AutoSize = true
+ Me.RefreshTimeLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+ Me.RefreshTimeLabel.Location = New System.Drawing.Point(1082, 18)
+ Me.RefreshTimeLabel.Name = "RefreshTimeLabel"
+ Me.RefreshTimeLabel.Size = New System.Drawing.Size(0, 16)
+ Me.RefreshTimeLabel.TabIndex = 4
+ '
+ 'RefreshFailedLabel
+ '
+ Me.RefreshFailedLabel.AutoSize = true
+ Me.RefreshFailedLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte))
+ Me.RefreshFailedLabel.ForeColor = System.Drawing.Color.Maroon
+ Me.RefreshFailedLabel.Location = New System.Drawing.Point(848, 18)
+ Me.RefreshFailedLabel.Name = "RefreshFailedLabel"
+ Me.RefreshFailedLabel.Size = New System.Drawing.Size(228, 16)
+ Me.RefreshFailedLabel.TabIndex = 5
+ Me.RefreshFailedLabel.Text = "Refresh failed. Latest refresh at:"
+ Me.RefreshFailedLabel.Visible = false
+ '
'ActiviteitenOpvolgingForm
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1264, 986)
+ Me.Controls.Add(Me.RefreshFailedLabel)
+ Me.Controls.Add(Me.RefreshTimeLabel)
+ Me.Controls.Add(Me.RefreshButton)
Me.Controls.Add(Me.GridLabel)
Me.Controls.Add(Me.DatagridViewControlsFlowLayoutPanel)
Me.Name = "ActiviteitenOpvolgingForm"
@@ -63,4 +99,7 @@
Friend WithEvents DatagridViewControlsFlowLayoutPanel As FlowLayoutPanel
Friend WithEvents GridLabel As Label
+ Friend WithEvents RefreshButton As Button
+ Friend WithEvents RefreshTimeLabel As Label
+ Friend WithEvents RefreshFailedLabel As Label
End Class
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb
===================================================================
diff -u -r1701 -r1702
--- ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb (.../ActiviteitenOpvolgingForm.vb) (revision 1701)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/ActiviteitenOpvolgingForm.vb (.../ActiviteitenOpvolgingForm.vb) (revision 1702)
@@ -50,6 +50,8 @@
'CLear selection on every data grid view.
ChangeSelectedActivity(Nothing, 0)
Next
+ 'Refresh all user grids.
+ RefreshUserGridsData()
End Sub
'''
@@ -65,10 +67,29 @@
_userControls.ForEach(Sub(userControl) userControl.RemoveSelection())
Else
'Clear selection of every grid except the one with the grid number.
- For each control in _userControls
+ For Each control In _userControls
'Remove selection from every other grid.
- if not control.GridNumber = gridNumber Then control.RemoveSelection()
+ If Not control.GridNumber = gridNumber Then control.RemoveSelection()
Next
End If
End Sub
+
+ Private Sub RefreshButton_Click(sender As Object, e As EventArgs) Handles RefreshButton.Click
+ RefreshUserGridsData()
+ End Sub
+
+ '''
+ ''' Try to reshresh all user grids and register time of latest refresh.
+ '''
+ Private Sub RefreshUserGridsData()
+ 'Refresh every user control. Register whether or not all refreshes were successful.
+ Dim allSuccesfulRefresh = _userControls.All(Function(userControl) userControl.RefreshData())
+ If allSuccesfulRefresh Then
+ 'Update latest refresh time label with current time.
+ RefreshTimeLabel.Text = TimeOfDay.ToString()
+ RefreshFailedLabel.Visible = False
+ Else
+ RefreshFailedLabel.Visible = True
+ End If
+ End Sub
End Class
Index: ActiviteitenOpvolging/ActiviteitenOpvolging/grids/DataGridViewUserControl.vb
===================================================================
diff -u -r1701 -r1702
--- ActiviteitenOpvolging/ActiviteitenOpvolging/grids/DataGridViewUserControl.vb (.../DataGridViewUserControl.vb) (revision 1701)
+++ ActiviteitenOpvolging/ActiviteitenOpvolging/grids/DataGridViewUserControl.vb (.../DataGridViewUserControl.vb) (revision 1702)
@@ -35,6 +35,21 @@
_WorkItemsDataGridView.ClearSelection()
End Sub
+ '''
+ Public Function RefreshData() As Boolean Implements IDataGridUserControl.RefreshData
+ Try
+ 'Call helper method.
+ LoadGrid()
+ 'Refresh succesfull.
+ Return True
+ Catch ex As Exception
+ 'Failed to retrieve update with data.
+ Return False
+ Finally
+ _skipSelectionChanged = False
+ End Try
+ End Function
+
Private Sub DataGridViewUserControl_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
'Set back color and fore color.
@@ -71,32 +86,38 @@
'Set label.
GridLabel.Text = ConfigsLoader.GridLabelNames(GridNumber)
-
- 'Load the data.
- LoadData()
Catch ex As Exception
MessageBox.Show($"Could not load {Me.Name}.{vbNewLine}{ex.Message}", "An error occured...", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
_skipSelectionChanged = False
End Try
End Sub
+ Private isInitialLoad As Boolean = True
'''
''' Fetch the data and fill the data grid view with it.
'''
- Private Sub LoadData()
- 'Changes to data grid can trigger selectio changed event, ignores it for now.
- _skipSelectionChanged = True
-
- 'Update headers and visibility of static columns.
- UpdateStaticColumns()
-
+ Private Sub LoadGrid()
'Load all work items.
LoadWorkItems()
- 'Generate grid columns for the activities of the work items.
- GenerateActivityColumns(_workItems)
+ If isInitialLoad Then
+ 'Update headers and visibility of static columns. This only happens once.
+ UpdateStaticColumns()
+ 'Generate grid columns for the activities of the work items. This only happens once.
+ GenerateActivityColumns(_workItems)
+
+ isInitialLoad = False
+ End If
+
+ 'Clear grid.
+ WorkItemsDataGridView.DataSource = Nothing
+ WorkItemsDataGridView.Rows.Clear()
+
+ 'Changes to data grid can trigger selectio changed event, ignores it for now.
+ _skipSelectionChanged = True
+
'Show the work items.
ShowWorkItems(_workItems)