Files
Nuvolar/Nuvolar.Module.Win/Controllers/WinNewObjectViewVC.vb
T
2017-03-08 11:21:27 +01:00

82 lines
3.6 KiB
VB.net

Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text
Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.ExpressApp.Win.SystemModule
Imports DevExpress.ExpressApp.SystemModule
Public Class WinNewObjectViewVC
Inherits WinNewObjectViewController
Public Sub New()
MyBase.New()
'This call is required by the Component Designer.
InitializeComponent()
RegisterActions(components)
End Sub
Protected Overrides Sub OnActivated()
MyBase.OnActivated()
'Get the ShowNavigationItemController,
'then get its ShowNavigationItemAction and subscribe the SelectedItemChanged event
AddHandler Frame.GetController(Of ShowNavigationItemController)().ShowNavigationItemAction.SelectedItemChanged, AddressOf ShowNavigationItemAction_SelectedItemChanged
AddHandler CollectCreatableItemTypes, AddressOf MyController_CollectCreatableItemTypes
AddHandler CollectDescendantTypes, AddressOf MyController_CollectDescendantTypes
End Sub
Private Sub MyController_CollectDescendantTypes(ByVal sender As Object, _
ByVal e As DevExpress.ExpressApp.SystemModule.CollectTypesEventArgs)
CustomizeList(e.Types)
End Sub
Private Sub MyController_CollectCreatableItemTypes(ByVal sender As Object, _
ByVal e As DevExpress.ExpressApp.SystemModule.CollectTypesEventArgs)
CustomizeList(e.Types)
End Sub
Private Sub ShowNavigationItemAction_SelectedItemChanged(ByVal sender As Object, ByVal e As EventArgs)
Me.UpdateActionState()
End Sub
Public Sub CustomizeList(ByVal types As ICollection(Of Type))
'Get the ShowNavigationItemController, then get its ShowNavigationItemAction
Dim showNavigationItemAction As SingleChoiceAction = _
Frame.GetController(Of ShowNavigationItemController)().ShowNavigationItemAction
'Get the item selected in the navigation control
Dim selectedItem As ChoiceActionItem = showNavigationItemAction.SelectedItem
Dim currentGroup As ChoiceActionItem = Nothing
If Not selectedItem Is Nothing Then
'Get the selected item's parent group
currentGroup = selectedItem.ParentItem
Dim unusableTypes As List(Of Type) = New List(Of Type)()
'Collect the types that must be deleted
For Each type As Type In types
Dim deletionRequired As Boolean = True
For Each item As ChoiceActionItem In currentGroup.Items
Dim shortcut As ViewShortcut = TryCast(item.Data, ViewShortcut)
If shortcut.ViewId = Application.FindListViewId(type) Then
deletionRequired = False
End If
Next item
If deletionRequired = True Then
unusableTypes.Add(type)
End If
Next type
'Remove the collected types
For Each type As Type In unusableTypes
types.Remove(type)
Next type
End If
End Sub
Protected Overrides Sub OnDeactivated()
MyBase.OnDeactivated()
RemoveHandler Frame.GetController(Of ShowNavigationItemController)().ShowNavigationItemAction.SelectedItemChanged, _
AddressOf ShowNavigationItemAction_SelectedItemChanged
RemoveHandler CollectCreatableItemTypes, AddressOf MyController_CollectCreatableItemTypes
RemoveHandler CollectDescendantTypes, AddressOf MyController_CollectDescendantTypes
End Sub
End Class