-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathComparers.vb
More file actions
67 lines (53 loc) · 2.77 KB
/
Copy pathComparers.vb
File metadata and controls
67 lines (53 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports DevExpress.XtraScheduler
Namespace SchedulerSortResources
Public MustInherit Class ResourceBaseComparer
Implements IComparer(Of Resource), IComparer
'#Region "IComparer Members"
Private Function IComparer_Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
Return CompareCore(x, y)
End Function
Public Function Compare(ByVal x As Resource, ByVal y As Resource) As Integer Implements IComparer(Of Resource).Compare
Return CompareCore(x, y)
End Function
'#End Region
Protected Overridable Function CompareCore(ByVal x As Object, ByVal y As Object) As Integer
Dim xRes As Resource = CType(x, Resource)
Dim yRes As Resource = CType(y, Resource)
If xRes Is Nothing OrElse yRes Is Nothing Then Return 0
If ResourceEmpty.Resource.Equals(xRes) OrElse ResourceEmpty.Resource.Equals(yRes) Then Return 0
Return CompareResources(xRes, yRes)
End Function
Protected MustOverride Function CompareResources(ByVal xRes As Resource, ByVal yRes As Resource) As Integer
End Class
Public Class ResourceCaptionComparer
Inherits ResourceBaseComparer
Protected Overrides Function CompareResources(ByVal xRes As Resource, ByVal yRes As Resource) As Integer
Return String.Compare(xRes.Caption, yRes.Caption)
End Function
End Class
Public Class ResourceCaptionReverseComparer
Inherits ResourceBaseComparer
Protected Overrides Function CompareResources(ByVal xRes As Resource, ByVal yRes As Resource) As Integer
Return String.Compare(yRes.Caption, xRes.Caption)
End Function
End Class
Public Class ResourceNOfAppointmentsComparer
Inherits ResourceBaseComparer
Private schedulerStorage As SchedulerStorage
Public Sub New(ByVal schedulerStorage As SchedulerStorage)
Me.schedulerStorage = schedulerStorage
End Sub
Protected Overrides Function CompareResources(ByVal xRes As Resource, ByVal yRes As Resource) As Integer
' "Unassigned" resource
If Convert.ToInt32(yRes.Id) = -1 Then Return 1
' "Unassigned" resource
If Convert.ToInt32(xRes.Id) = -1 Then Return -1
Dim order As Integer = schedulerStorage.Appointments.Items.FindAll(Function(e) e.ResourceId.Equals(yRes.Id)).Count - schedulerStorage.Appointments.Items.FindAll(Function(e) e.ResourceId.Equals(xRes.Id)).Count
If order = 0 Then Return schedulerStorage.Resources.Items.IndexOf(xRes) - schedulerStorage.Resources.Items.IndexOf(yRes)
Return order
End Function
End Class
End Namespace