99 lines
4.6 KiB
VB.net
99 lines
4.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.Templates.ActionContainers
|
|
Imports DevExpress.ExpressApp.Model
|
|
Imports DevExpress.XtraTreeList.Nodes
|
|
Imports DevExpress.ExpressApp.SystemModule
|
|
Imports DevExpress.XtraTreeList
|
|
Imports System.Drawing
|
|
Imports DevExpress.Data.Filtering
|
|
|
|
Partial Public Class NavbarTreeList
|
|
Inherits WindowController
|
|
Private navActionContainer As NavigationActionContainer
|
|
Public Sub New()
|
|
MyBase.New()
|
|
|
|
'This call is required by the Component Designer.
|
|
InitializeComponent()
|
|
RegisterActions(components)
|
|
|
|
End Sub
|
|
Protected Overrides Sub OnActivated()
|
|
MyBase.OnActivated()
|
|
_ObjectSpace = Application.CreateObjectSpace()
|
|
_ListViewModel = CType(Application.FindModelView("RegistryTasks_ListView_Not_Completed"), IModelListView)
|
|
AddHandler Window.ProcessActionContainer, AddressOf Window_ProcessActionContainer
|
|
End Sub
|
|
Protected Overrides Sub OnDeactivated()
|
|
RemoveHandler Window.ProcessActionContainer, AddressOf Window_ProcessActionContainer
|
|
UnsubscribeFromContainerEvents()
|
|
navActionContainer = Nothing
|
|
MyBase.OnDeactivated()
|
|
End Sub
|
|
Private Sub Window_ProcessActionContainer(ByVal sender As Object, ByVal e As ProcessActionContainerEventArgs)
|
|
UnsubscribeFromContainerEvents()
|
|
If TypeOf e.ActionContainer Is NavigationActionContainer Then
|
|
navActionContainer = TryCast(e.ActionContainer, NavigationActionContainer)
|
|
SubscribeToContainerEvents()
|
|
SetupNavBar()
|
|
End If
|
|
End Sub
|
|
Private Sub SubscribeToContainerEvents()
|
|
If navActionContainer IsNot Nothing Then
|
|
AddHandler navActionContainer.NavigationControlCreated, AddressOf navigationControlCreated
|
|
End If
|
|
End Sub
|
|
Private Sub UnsubscribeFromContainerEvents()
|
|
If navActionContainer IsNot Nothing Then
|
|
RemoveHandler navActionContainer.NavigationControlCreated, AddressOf navigationControlCreated
|
|
End If
|
|
End Sub
|
|
Private Sub navigationControlCreated(ByVal sender As Object, ByVal e As EventArgs)
|
|
SetupNavBar()
|
|
End Sub
|
|
Private _TreeNode As TreeListNode
|
|
Private _ObjectSpace As Xpo.XPObjectSpace
|
|
Private _ListViewModel As IModelListView
|
|
Private Sub SetupNavBar()
|
|
If navActionContainer IsNot Nothing AndAlso TypeOf navActionContainer.NavigationControl Is TreeListNavigationControl Then
|
|
Dim treeListNavigationControl As TreeListNavigationControl = CType(navActionContainer.NavigationControl, TreeListNavigationControl)
|
|
Dim navItem As ChoiceActionItem = Window.GetController(Of ShowNavigationItemController)().ShowNavigationItemAction.Items.Find("@RegistryTask_ListView_Not_Completed", ChoiceActionItemFindType.Recursive, ChoiceActionItemFindTarget.Any)
|
|
If navItem IsNot Nothing Then
|
|
_TreeNode = treeListNavigationControl.FindNodeByActionItem(navItem)
|
|
AddHandler treeListNavigationControl.AfterExpand, AddressOf NavigationTreeList_AfterExpand
|
|
AddHandler treeListNavigationControl.NodeCellStyle, AddressOf NavigationTreeList_NodeCellStyle
|
|
End If
|
|
End If
|
|
End Sub
|
|
Private Sub NavigationTreeList_NodeCellStyle(ByVal sender As Object, ByVal e As GetCustomNodeCellStyleEventArgs)
|
|
If e.Node.GetDisplayText(e.Node.TreeList.Columns(0)).Contains(" [") Then
|
|
e.Appearance.Font = New Font(e.Appearance.Font, FontStyle.Bold)
|
|
End If
|
|
End Sub
|
|
Private Sub NavigationTreeList_AfterExpand(ByVal sender As Object, ByVal e As NodeEventArgs)
|
|
For Each node As TreeListNode In e.Node.Nodes
|
|
If node.Equals(_TreeNode) Then
|
|
Dim caption As String = _TreeNode.GetValue(_TreeNode.TreeList.Columns(0))
|
|
If caption.Contains(" [") Then
|
|
caption = caption.Remove(caption.IndexOf(" ["))
|
|
End If
|
|
Dim count As Integer = CInt(_ObjectSpace.Session.Evaluate(_ListViewModel.ModelClass.TypeInfo.Type, New AggregateOperand("", Aggregate.Count), CriteriaOperator.Parse("Status<>4 and HRPerson.User.UserName=?", SecuritySystem.CurrentUserName)))
|
|
If count > 0 Then
|
|
caption &= String.Format(" [{0}]", count)
|
|
End If
|
|
node.SetValue(_TreeNode.TreeList.Columns(0), caption)
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
|
|
End Class
|