Mini Kabibi Habibi

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

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;
        }
    }
}