-
Notifications
You must be signed in to change notification settings - Fork 3
/
WebPageItemExtensionModule.vb
91 lines (85 loc) · 3.84 KB
/
WebPageItemExtensionModule.vb
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Imports DevExpress.DashboardCommon
Imports DevExpress.DashboardWin
Imports DevExpress.XtraBars
Imports DevExpress.XtraBars.Ribbon
Imports DevExpress.XtraEditors.Repository
Imports DevExpresss.DashboardWin.CustomItemExtension.CustomItems.WebPageItem
Namespace DevExpresss.DashboardWin.CustomItemExtension
Public Class WebPageItemExtensionModule
Implements IExtensionModule
Private urlBarItem As BarEditItem
Private dashboardControl As IDashboardControl
Private ReadOnly Property designer() As DashboardDesigner
Get
Return TryCast(dashboardControl, DashboardDesigner)
End Get
End Property
Private ReadOnly Property selectedCustomItem() As CustomDashboardItem(Of WebPageItemMetadata)
Get
Return TryCast(designer.SelectedDashboardItem, CustomDashboardItem(Of WebPageItemMetadata))
End Get
End Property
Public Sub AttachViewer(ByVal viewer As DashboardViewer) Implements IExtensionModule.AttachViewer
AttachDashboardControl(viewer)
End Sub
Public Sub AttachDesigner(ByVal designer As DashboardDesigner) Implements IExtensionModule.AttachDesigner
AttachDashboardControl(designer)
designer.CreateCustomItemBars(GetType(WebPageItemMetadata))
InitializeUrlBarItem()
AddHandler designer.DashboardItemSelected, AddressOf Designer_DashboardItemSelected
' Other code specific for Designer
End Sub
Private Sub Designer_DashboardItemSelected(ByVal sender As Object, ByVal e As DashboardItemSelectedEventArgs)
If TypeOf designer.SelectedDashboardItem Is CustomDashboardItem(Of WebPageItemMetadata) Then
urlBarItem.EditValue = selectedCustomItem.Metadata.URI
End If
End Sub
Private Sub AttachDashboardControl(ByVal dashboardControl As IDashboardControl)
If dashboardControl IsNot Nothing Then
Me.dashboardControl = dashboardControl
AddHandler dashboardControl.CustomDashboardItemControlCreating, AddressOf OnCustomDashboardItemControlCreating
End If
End Sub
Public Sub DetachViewer() Implements IExtensionModule.DetachViewer
Detach()
End Sub
Public Sub DetachDesigner() Implements IExtensionModule.DetachDesigner
Detach()
End Sub
Private Sub Detach()
If dashboardControl IsNot Nothing Then
RemoveHandler dashboardControl.CustomDashboardItemControlCreating, AddressOf OnCustomDashboardItemControlCreating
End If
End Sub
Private Sub OnCustomDashboardItemControlCreating(ByVal sender As Object, ByVal e As CustomDashboardItemControlCreatingEventArgs)
If e.MetadataType Is GetType(WebPageItemMetadata) Then
e.CustomControlProvider = New WebPageItemControlProvider(TryCast(dashboardControl.Dashboard.Items(e.DashboardItemName), CustomDashboardItem(Of WebPageItemMetadata)))
End If
End Sub
Private Sub InitializeUrlBarItem()
Dim page As RibbonPage = designer.Ribbon.GetDashboardRibbonPage(GetType(WebPageItemMetadata), DashboardRibbonPage.Design)
Dim group As RibbonPageGroup = page.GetGroupByName("URI")
If group Is Nothing Then
group = New RibbonPageGroup("URI") With {.Name = "URI"}
page.Groups.Add(group)
group.AllowTextClipping = False
End If
Dim buttonEdit As New RepositoryItemButtonEdit()
buttonEdit.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor
AddHandler buttonEdit.ButtonClick, AddressOf ButtonEdit_ButtonClick
urlBarItem = New BarEditItem(designer.Ribbon.Manager, buttonEdit)
urlBarItem.Caption = "URI Pattern"
urlBarItem.EditWidth = 150
group.ItemLinks.Add(urlBarItem)
End Sub
Private Sub ButtonEdit_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs)
Using dlg As New UriEditForm()
dlg.UriPattern = selectedCustomItem.Metadata.URI
If dlg.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
selectedCustomItem.Metadata.URI = dlg.UriPattern
urlBarItem.EditValue = dlg.UriPattern
End If
End Using
End Sub
End Class
End Namespace