Beispiel #1
0
        public CheckResultGroupViewModel(BrowserNodeViewModel parent, CheckResultGroup group)
            : base(parent, group, GetCheckResultGroupName(group))
        {
            if (group == null)
            {
                throw new ArgumentNullException("group");
            }

            InitializeChildren();
        }
Beispiel #2
0
        public CheckResultNodeViewModel(BrowserNodeViewModel parent, CheckResult checkResult, string nativeName)
            : base(parent, checkResult, null)
        {
            if (checkResult == null)
            {
                throw new ArgumentNullException("checkResult");
            }
            _nativeName = nativeName;

            checkResult.StatusChanged += OnStatusChanged;
            Name = BuildCheckResultNodeName();
        }
Beispiel #3
0
        private static void StartDrag(DragInfo dragInfo, BrowserEvents browserEvents)
        {
            var sourceItems = dragInfo.SourceItems.Cast <object>();

            // only support single selection
            int itemCount = sourceItems.Count();

            if (itemCount != 1)
            {
                return;
            }

            dragInfo.Data = sourceItems.Single();

            // browser node
            BrowserNodeViewModel viewModel = dragInfo.Data as BrowserNodeViewModel;

            if (viewModel == null)
            {
                return;
            }

            // If view model doesn't support dragging, then bail
            if (!viewModel.SupportsDrag)
            {
                dragInfo.Effects = DragDropEffects.None;
                return;
            }

            // collect event arguments
            BrowserValidateEventArgs args = new BrowserValidateEventArgs
            {
                BrowserNodeViewModel = viewModel,
                DataObject           = dragInfo,
            };

            // Validate the drag operation.
            if (browserEvents != null)
            {
                browserEvents.RaiseOnBeforeStartDrag(args);
                if (!args.StopEvent)
                {
                    // Raise start drag event
                    browserEvents.RaiseOnStartDrag(args);
                }
            }

            dragInfo.Effects = (dragInfo.Data != null) ? DragDropEffects.Copy : DragDropEffects.None;
        }
Beispiel #4
0
        private static void OnPreviewMouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (BrowserEventsHandler == null)
            {
                return;
            }

            if (s_isDragging)
            {
                return;
            }
            if (s_dragInfo != null)
            {
                s_dragInfo = null;
            }

            var dataContext = HitTestValidItem(sender, e);

            if (dataContext == null)
            {
                return;
            }
            if (e.ClickCount == 1)
            {
                BrowserNodeViewModel viewModel = GetSelectedBrowserNodeViewModel(sender);
                if (viewModel == null || viewModel != dataContext)
                {
                    return;
                }

                // collect event arguments
                BrowserEventArgs args = new BrowserEventArgs()
                {
                    Sender = sender
                };
                args.BrowserNodeViewModel = viewModel;
                args.DataObject           = viewModel.DataObject;

                // Raise event if hook browser events.
                bool hookBrowserEvents = GetHookBrowserEvents((UIElement)sender);
                if (hookBrowserEvents && BrowserEventsHandler != null)
                {
                    BrowserEventsHandler.RaiseOnNodeClick(args);
                }
            }
        }
Beispiel #5
0
        static BrowserNodeViewModel GetSelectedBrowserNodeViewModel(object sender)
        {
            ItemsControl itemsControl = sender as ItemsControl;

            // get selected objects
            IEnumerable SourceItems = itemsControl.GetSelectedItems();

            // click only apply to one object
            object dataObject = SourceItems.Cast <object>().FirstOrDefault();

            if (dataObject != null)
            {
                BrowserNodeViewModel viewModel = dataObject as BrowserNodeViewModel;
                return(viewModel);
            }
            else
            {
                return(null);
            }
        }
Beispiel #6
0
        private static void OnKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            if (BrowserEventsHandler == null)
            {
                return;
            }

            ItemsControl itemsControl = sender as ItemsControl;

            // get selected objects
            IEnumerable SourceItems = itemsControl.GetSelectedItems();

            // click only apply to one object
            object dataObject = SourceItems.Cast <object>().FirstOrDefault();

            if (dataObject == null)
            {
                return;
            }

            // dynamic cast to view model
            BrowserNodeViewModel viewModel = dataObject as BrowserNodeViewModel;

            // collect event arguments
            BrowserKeyEventArgs args = new BrowserKeyEventArgs()
            {
                Sender = sender
            };

            args.BrowserNodeViewModel = viewModel;
            args.DataObject           = viewModel == null ? null : viewModel.DataObject;
            args.Key = e.Key;

            // Raise event
            bool hookBrowserEvents = GetHookBrowserEvents((UIElement)sender);

            if (hookBrowserEvents && BrowserEventsHandler != null)
            {
                BrowserEventsHandler.RaiseOnKeyDown(args);
            }
        }
Beispiel #7
0
        private static void OnPreviewMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            if (BrowserEventsHandler == null)
            {
                return;
            }

            // Handle drag&drop, click and double click
            if (s_isDragging)
            {
                return;
            }

            // Ignore the click if the user has clicked on a scrollbar.
            if (HitTestScrollBar(sender, e))
            {
                s_dragInfo = null;
                return;
            }

            // If the mouse doesn't click on any item.
            // Return if the mouse is not click on the element
            var dataContext = HitTestValidItem(sender, e);

            if (dataContext == null)
            {
                return;
            }

            // Handle double click
            if (e.ClickCount == 2)
            {
                // Make sure the first clicked item is equal to the second clicked item.
                BrowserNodeViewModel viewModel = GetSelectedBrowserNodeViewModel(sender);
                if (viewModel == null || dataContext != viewModel)
                {
                    return;
                }

                // collect event arguments
                BrowserValidateEventArgs args = new BrowserValidateEventArgs()
                {
                    Sender = sender
                };
                args.BrowserNodeViewModel = viewModel;
                args.DataObject           = viewModel.DataObject;
                args.StopEvent            = false;

                // If hook to browser events, raise double click event.
                bool hookBrowserEvents = GetHookBrowserEvents((UIElement)sender);
                if (hookBrowserEvents && BrowserEventsHandler != null)
                {
                    // Validate the drag operation.
                    BrowserEventsHandler.RaiseOnBeforeDoubleClick(args);
                    if (!args.StopEvent)
                    {
                        // Raise event
                        BrowserEventsHandler.RaiseOnDoubleClick(args);
                    }
                }
            }
            else
            {
                // Create a drag info which will be used in next events.
                s_dragInfo = new DragInfo(sender, e);
            }
        }