Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/Silverlight/VB/NavBarDemo/Modules.SL/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/Silverlight/VB/NavBarDemo/Modules.SL/Events.xaml.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Net
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Shapes
Imports DevExpress.Xpf.NavBar
Imports DevExpress.Xpf.Core.WPFCompatibility
Imports System.Text
Imports DevExpress.Xpf.Editors

Namespace NavBarDemo
	Partial Public Class Events
		Inherits NavBarDemoModule
		Public Sub New()
			InitializeComponent()
			navBar.View = UpdateSubscription(New ExplorerBarView())
			UpdateControlAvailability()
			navBar.AddHandler(NavBarControl.MouseLeftButtonDownEvent, New MouseButtonEventHandler(AddressOf OnNavBarMouseDown), True)
			AddHandler navBar.MouseMove, AddressOf OnNavBarMouseMove
			navBar.AddHandler(NavBarControl.MouseLeftButtonUpEvent, New MouseButtonEventHandler(AddressOf OnNavBarMouseUp), True)
		End Sub
		Protected Overrides Function GetExplorerBarView() As ExplorerBarView
			Return CType(UpdateSubscription(MyBase.GetExplorerBarView()), ExplorerBarView)
		End Function
		Protected Overrides Function GetNavigationPaneView() As NavigationPaneView
			Return CType(UpdateSubscription(MyBase.GetNavigationPaneView()), NavigationPaneView)
		End Function
		Protected Overrides Function GetSideBarView() As SideBarView
			Return CType(UpdateSubscription(MyBase.GetSideBarView()), SideBarView)
		End Function
		Private Sub SubscribeView(ByVal view As NavBarViewBase)
			If view Is Nothing Then
				Return
			End If
			If TypeOf view Is ExplorerBarView Then
				AddHandler (CType(view, ExplorerBarView)).GroupExpandedChanging, AddressOf OnViewGroupExpandedChanging
				AddHandler (CType(view, ExplorerBarView)).GroupExpandedChanged, AddressOf OnViewGroupExpandedChanged
			End If
			If TypeOf view Is NavigationPaneView Then
				AddHandler (CType(view, NavigationPaneView)).NavPaneExpandedChanging, AddressOf navPane_NavPaneExpandedChanging
				AddHandler (CType(view, NavigationPaneView)).NavPaneExpandedChanged, AddressOf navPane_NavPaneExpandingChanged
			End If
			AddHandler view.ItemSelecting, AddressOf OnViewSelectionChanging
			AddHandler view.ItemSelected, AddressOf OnViewSelectionChanged
			AddHandler view.ActiveGroupChanging, AddressOf OnViewActiveGroupChanging
			AddHandler view.ActiveGroupChanged, AddressOf OnViewActiveGroupChanged
			AddHandler view.Click, AddressOf OnViewClick
		End Sub
		Private Sub UnsubscribeView(ByVal view As NavBarViewBase)
			If view Is Nothing Then
				Return
			End If
			If TypeOf view Is ExplorerBarView Then
				RemoveHandler (CType(view, ExplorerBarView)).GroupExpandedChanging, AddressOf OnViewGroupExpandedChanging
				RemoveHandler (CType(view, ExplorerBarView)).GroupExpandedChanged, AddressOf OnViewGroupExpandedChanged
			End If
			If TypeOf view Is NavigationPaneView Then
				RemoveHandler (CType(view, NavigationPaneView)).NavPaneExpandedChanging, AddressOf navPane_NavPaneExpandedChanging
				RemoveHandler (CType(view, NavigationPaneView)).NavPaneExpandedChanged, AddressOf navPane_NavPaneExpandingChanged
			End If
			RemoveHandler view.ItemSelecting, AddressOf OnViewSelectionChanging
			RemoveHandler view.ItemSelected, AddressOf OnViewSelectionChanged
			RemoveHandler view.ActiveGroupChanging, AddressOf OnViewActiveGroupChanging
			RemoveHandler view.ActiveGroupChanged, AddressOf OnViewActiveGroupChanged
			RemoveHandler view.Click, AddressOf OnViewClick
		End Sub
		Private Sub UpdateControlAvailability()
			cbEventGroupExpandedChanged.IsEnabled = TypeOf navBar.View Is ExplorerBarView
			cbEventGroupExpandedChanging.IsEnabled = TypeOf navBar.View Is ExplorerBarView

			navPaneExpandedChangedCheckbox.IsEnabled = TypeOf navBar.View Is NavigationPaneView
			navPaneExpandedChangingCheckbox.IsEnabled = TypeOf navBar.View Is NavigationPaneView
		End Sub
		Private Function UpdateSubscription(ByVal view As NavBarViewBase) As NavBarViewBase
			UnsubscribeView(navBar.View)
			SubscribeView(view)
			Return view
		End Function
		Protected Overrides Sub SelectView(ByVal sender As Object, ByVal e As RoutedEventArgs)
			MyBase.SelectView(sender, e)
			UpdateControlAvailability()
		End Sub
		Private Sub OnNavBarMouseDown(ByVal sender As Object, ByVal e As RoutedEventArgs)
			Dim group As NavBarGroup = navBar.View.GetNavBarGroup(e)
			Dim item As NavBarItem = navBar.View.GetNavBarItem(e)
			If group IsNot Nothing OrElse item IsNot Nothing Then
				AddToStack("MouseDown: " & (If(item IsNot Nothing, GetItemContent(item), GetGroupHeader(group))), cbEventMouseDown)
			End If
		End Sub
		Private Sub OnNavBarMouseMove(ByVal sender As Object, ByVal e As RoutedEventArgs)
			Dim group As NavBarGroup = navBar.View.GetNavBarGroup(e)
			Dim item As NavBarItem = navBar.View.GetNavBarItem(e)
			If group IsNot Nothing OrElse item IsNot Nothing Then
				AddToStack("MouseMove: " & (If(item IsNot Nothing, GetItemContent(item), GetGroupHeader(group))), cbEventMouseMove)
			End If
		End Sub
		Private Sub OnNavBarMouseUp(ByVal sender As Object, ByVal e As RoutedEventArgs)
			Dim group As NavBarGroup = navBar.View.GetNavBarGroup(e)
			Dim item As NavBarItem = navBar.View.GetNavBarItem(e)
			If group IsNot Nothing OrElse item IsNot Nothing Then
				AddToStack("MouseUp: " & (If(item IsNot Nothing, GetItemContent(item), GetGroupHeader(group))), cbEventMouseUp)
			End If
		End Sub
		Private Sub OnViewClick(ByVal sender As Object, ByVal e As SLRoutedEventArgs)
			Dim group As NavBarGroup = navBar.View.GetNavBarGroup(e)
			Dim item As NavBarItem = navBar.View.GetNavBarItem(e)
			If group IsNot Nothing OrElse item IsNot Nothing Then
				AddToStack("Click: " & (If(item IsNot Nothing, GetItemContent(item), GetGroupHeader(group))), cbEventClick)
			End If
		End Sub
		Private Sub OnViewGroupExpandedChanging(ByVal sender As Object, ByVal e As NavBarGroupExpandedChangingEventArgs)
			AddToStack("GroupExpandedChanging: Group '" & GetGroupHeader(e.Group) & "', IsExpanded=" & e.IsExpanded.ToString(), cbEventGroupExpandedChanging)
		End Sub
		Private Sub OnViewGroupExpandedChanged(ByVal sender As Object, ByVal e As NavBarGroupExpandedChangedEventArgs)
			AddToStack("GroupExpandedChanged: Group '" & GetGroupHeader(e.Group) & "', IsExpanded=" & e.IsExpanded.ToString(), cbEventGroupExpandedChanged)
		End Sub
		Private Sub OnViewSelectionChanging(ByVal sender As Object, ByVal e As NavBarItemSelectingEventArgs)
			AddToStack("ItemSelecting: " & "PrevGroup '" & GetGroupHeader(e.PrevGroup) & "', PrevItem '" & GetItemContent(e.PrevItem) & "'; " & "NewGroup '" & GetGroupHeader(e.NewGroup) & "', NewItem '" & GetItemContent(e.NewItem) & "'", cbEventItemSelecting)
		End Sub
		Private Sub OnViewSelectionChanged(ByVal sender As Object, ByVal e As NavBarItemSelectedEventArgs)
			AddToStack("ItemSelected: Group '" & e.Group.Header.ToString() & "', Item '" & e.Item.Content.ToString() & "'", cbEventItemSelected)
		End Sub
		Private Sub OnViewActiveGroupChanging(ByVal sender As Object, ByVal e As NavBarActiveGroupChangingEventArgs)
			AddToStack("ActiveGroupChanging: " & "PrevGroup '" & GetGroupHeader(e.PrevGroup) & "'; " & "NewGroup '" & GetGroupHeader(e.NewGroup) & "'", cbEventActiveGroupChanging)
		End Sub
		Private Sub OnViewActiveGroupChanged(ByVal sender As Object, ByVal e As NavBarActiveGroupChangedEventArgs)
			AddToStack("ActiveGroupChanged: " & GetGroupHeader(e.Group), cbEventActiveGroupChanged)
		End Sub
		Private Sub navPane_NavPaneExpandedChanging(ByVal sender As Object, ByVal e As NavPaneExpandedChangingEventArgs)
			AddToStack("NavPaneExpandedChanging: IsExpanded=" & e.IsExpanded, navPaneExpandedChangingCheckbox)
		End Sub
		Private Sub navPane_NavPaneExpandingChanged(ByVal sender As Object, ByVal e As NavPaneExpandedChangedEventArgs)
			AddToStack("NavPaneExpandedChanged: IsExpanded=" & e.IsExpanded, navPaneExpandedChangedCheckbox)
		End Sub

		Private Function GetGroupHeader(ByVal group As NavBarGroup) As String
			Return If(group IsNot Nothing, group.Header.ToString(), "null")
		End Function
		Private Function GetItemContent(ByVal item As NavBarItem) As String
			Return If(item IsNot Nothing, item.Content.ToString(), "null")
		End Function

		Protected Overridable Sub OnClearLogClick(ByVal sender As Object, ByVal e As RoutedEventArgs)
			logQueue.Clear()
			log.Text = String.Empty
		End Sub

		Private logQueue As New Queue(Of String)()
		Private Const logEntriesCount As Integer = 100

		Protected Sub AddToStack(ByVal str As String, ByVal checkEdit As CheckEdit)
			If (Not CBool(checkEdit.IsChecked)) Then
				Return
			End If
			logQueue.Enqueue(str)
			If logQueue.Count > logEntriesCount Then
				logQueue.Dequeue()
			End If
			log.Text = String.Empty
			Dim builder As New StringBuilder()
			For Each text As String In logQueue
				builder.Append((If(builder.Length <> 0, Environment.NewLine, String.Empty)) & text)
			Next text
			log.Text = builder.ToString()
			log.SelectionLength = 0
			log.SelectionStart = log.Text.Length
		End Sub
	End Class
End Namespace