Mini Kabibi Habibi
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using DevExpress.Xpf.NavBar;
using DevExpress.Xpf.Core.WPFCompatibility;
using System.Text;
using DevExpress.Xpf.Editors;
namespace NavBarDemo {
public partial class Events : NavBarDemoModule {
public Events() {
InitializeComponent();
navBar.View = UpdateSubscription(new ExplorerBarView());
UpdateControlAvailability();
navBar.AddHandler(NavBarControl.MouseLeftButtonDownEvent, new MouseButtonEventHandler(OnNavBarMouseDown), true);
navBar.MouseMove += new MouseEventHandler(OnNavBarMouseMove);
navBar.AddHandler(NavBarControl.MouseLeftButtonUpEvent, new MouseButtonEventHandler(OnNavBarMouseUp), true);
}
protected override ExplorerBarView GetExplorerBarView() {
return (ExplorerBarView)UpdateSubscription(base.GetExplorerBarView());
}
protected override NavigationPaneView GetNavigationPaneView() {
return (NavigationPaneView)UpdateSubscription(base.GetNavigationPaneView());
}
protected override SideBarView GetSideBarView() {
return (SideBarView)UpdateSubscription(base.GetSideBarView());
}
void SubscribeView(NavBarViewBase view) {
if (view == null)
return;
if (view is ExplorerBarView) {
((ExplorerBarView)view).GroupExpandedChanging += OnViewGroupExpandedChanging;
((ExplorerBarView)view).GroupExpandedChanged += OnViewGroupExpandedChanged;
}
if (view is NavigationPaneView) {
((NavigationPaneView)view).NavPaneExpandedChanging += navPane_NavPaneExpandedChanging;
((NavigationPaneView)view).NavPaneExpandedChanged += navPane_NavPaneExpandingChanged;
}
view.ItemSelecting += OnViewSelectionChanging;
view.ItemSelected += OnViewSelectionChanged;
view.ActiveGroupChanging += OnViewActiveGroupChanging;
view.ActiveGroupChanged += OnViewActiveGroupChanged;
view.Click += OnViewClick;
}
void UnsubscribeView(NavBarViewBase view) {
if (view == null)
return;
if (view is ExplorerBarView) {
((ExplorerBarView)view).GroupExpandedChanging -= OnViewGroupExpandedChanging;
((ExplorerBarView)view).GroupExpandedChanged -= OnViewGroupExpandedChanged;
}
if (view is NavigationPaneView) {
((NavigationPaneView)view).NavPaneExpandedChanging -= navPane_NavPaneExpandedChanging;
((NavigationPaneView)view).NavPaneExpandedChanged -= navPane_NavPaneExpandingChanged;
}
view.ItemSelecting -= OnViewSelectionChanging;
view.ItemSelected -= OnViewSelectionChanged;
view.ActiveGroupChanging -= OnViewActiveGroupChanging;
view.ActiveGroupChanged -= OnViewActiveGroupChanged;
view.Click -= OnViewClick;
}
void UpdateControlAvailability() {
cbEventGroupExpandedChanged.IsEnabled = navBar.View is ExplorerBarView;
cbEventGroupExpandedChanging.IsEnabled = navBar.View is ExplorerBarView;
navPaneExpandedChangedCheckbox.IsEnabled = navBar.View is NavigationPaneView;
navPaneExpandedChangingCheckbox.IsEnabled = navBar.View is NavigationPaneView;
}
NavBarViewBase UpdateSubscription(NavBarViewBase view) {
UnsubscribeView(navBar.View);
SubscribeView(view);
return view;
}
protected override void SelectView(object sender, RoutedEventArgs e) {
base.SelectView(sender, e);
UpdateControlAvailability();
}
void OnNavBarMouseDown(object sender, RoutedEventArgs e) {
NavBarGroup group = navBar.View.GetNavBarGroup(e);
NavBarItem item = navBar.View.GetNavBarItem(e);
if(group != null || item != null)
AddToStack("MouseDown: " + (item != null ? GetItemContent(item) : GetGroupHeader(group)), cbEventMouseDown);
}
void OnNavBarMouseMove(object sender, RoutedEventArgs e) {
NavBarGroup group = navBar.View.GetNavBarGroup(e);
NavBarItem item = navBar.View.GetNavBarItem(e);
if(group != null || item != null)
AddToStack("MouseMove: " + (item != null ? GetItemContent(item) : GetGroupHeader(group)), cbEventMouseMove);
}
void OnNavBarMouseUp(object sender, RoutedEventArgs e) {
NavBarGroup group = navBar.View.GetNavBarGroup(e);
NavBarItem item = navBar.View.GetNavBarItem(e);
if(group != null || item != null)
AddToStack("MouseUp: " + (item != null ? GetItemContent(item) : GetGroupHeader(group)), cbEventMouseUp);
}
void OnViewClick(object sender, SLRoutedEventArgs e) {
NavBarGroup group = navBar.View.GetNavBarGroup(e);
NavBarItem item = navBar.View.GetNavBarItem(e);
if(group != null || item != null)
AddToStack("Click: " + (item != null ? GetItemContent(item) : GetGroupHeader(group)), cbEventClick);
}
void OnViewGroupExpandedChanging(object sender, NavBarGroupExpandedChangingEventArgs e) {
AddToStack("GroupExpandedChanging: Group '" + GetGroupHeader(e.Group) + "', IsExpanded=" + e.IsExpanded.ToString(), cbEventGroupExpandedChanging);
}
void OnViewGroupExpandedChanged(object sender, NavBarGroupExpandedChangedEventArgs e) {
AddToStack("GroupExpandedChanged: Group '" + GetGroupHeader(e.Group) + "', IsExpanded=" + e.IsExpanded.ToString(), cbEventGroupExpandedChanged);
}
void OnViewSelectionChanging(object sender, NavBarItemSelectingEventArgs e) {
AddToStack("ItemSelecting: "
+ "PrevGroup '" + GetGroupHeader(e.PrevGroup) + "', PrevItem '" + GetItemContent(e.PrevItem) + "'; "
+ "NewGroup '" + GetGroupHeader(e.NewGroup) + "', NewItem '" + GetItemContent(e.NewItem) + "'", cbEventItemSelecting);
}
void OnViewSelectionChanged(object sender, NavBarItemSelectedEventArgs e) {
AddToStack("ItemSelected: Group '" + e.Group.Header.ToString() + "', Item '" + e.Item.Content.ToString() + "'", cbEventItemSelected);
}
void OnViewActiveGroupChanging(object sender, NavBarActiveGroupChangingEventArgs e) {
AddToStack("ActiveGroupChanging: " + "PrevGroup '" + GetGroupHeader(e.PrevGroup) + "'; " + "NewGroup '" + GetGroupHeader(e.NewGroup) + "'", cbEventActiveGroupChanging);
}
void OnViewActiveGroupChanged(object sender, NavBarActiveGroupChangedEventArgs e) {
AddToStack("ActiveGroupChanged: " + GetGroupHeader(e.Group), cbEventActiveGroupChanged);
}
void navPane_NavPaneExpandedChanging(object sender, NavPaneExpandedChangingEventArgs e) {
AddToStack("NavPaneExpandedChanging: IsExpanded=" + e.IsExpanded, navPaneExpandedChangingCheckbox);
}
void navPane_NavPaneExpandingChanged(object sender, NavPaneExpandedChangedEventArgs e) {
AddToStack("NavPaneExpandedChanged: IsExpanded=" + e.IsExpanded, navPaneExpandedChangedCheckbox);
}
string GetGroupHeader(NavBarGroup group) {
return group != null ? group.Header.ToString() : "null";
}
string GetItemContent(NavBarItem item) {
return item != null ? item.Content.ToString() : "null";
}
protected virtual void OnClearLogClick(object sender, RoutedEventArgs e) {
logQueue.Clear();
log.Text = String.Empty;
}
Queue<string> logQueue = new Queue<string>();
const int logEntriesCount = 100;
protected void AddToStack(string str, CheckEdit checkEdit) {
if(!(bool)checkEdit.IsChecked)
return;
logQueue.Enqueue(str);
if(logQueue.Count > logEntriesCount)
logQueue.Dequeue();
log.Text = string.Empty;
StringBuilder builder = new StringBuilder();
foreach(string text in logQueue) {
builder.Append((builder.Length != 0 ? Environment.NewLine : string.Empty) + text);
}
log.Text = builder.ToString();
log.SelectionLength = 0;
log.SelectionStart = log.Text.Length;
}
}
}