Пример #1
0
 /// <summary>
 /// Responds to the <see cref="E:System.Windows.UIElement.KeyDown"/> event.
 /// </summary>
 /// <param name="e">The event data for the <see cref="E:System.Windows.UIElement.KeyDown"/> event.</param>
 protected override void OnKeyDown(KeyEventArgs e)
 {
     if (e.Key == Key.Escape)
     {
         if (this.IsSubmenuOpen)
         {
             this.IsSubmenuOpen = false;
         }
         else
         {
             DependencyObject parent = this.FindParentDropDownOrMenuItem();
             if (parent != null)
             {
                 IDropDownControl dropDown = parent as IDropDownControl;
                 if (dropDown != null)
                 {
                     dropDown.IsDropDownOpen = false;
                 }
                 else
                 {
                     (parent as System.Windows.Controls.MenuItem).IsSubmenuOpen = false;
                 }
             }
         }
         e.Handled = true;
     }
     else
     {
         base.OnKeyDown(e);
     }
 }
Пример #2
0
        //public DropDownTreeCardsController(ChooserEditor editor, IDropDownControl ctl)
        //    : base(editor, ctl)
        //{
        //    ddController = new CardGridChooserController<TS, TD, CS, CD>(ctl.Grid);
        //    ddController.Reload(null);
        //    ddController.DatValueChanged += new DatEventDelegate(ddController_DatValueChanged);
        //    ddController.DatValueSelected += new DatEventDelegate(ddController_DatValueSelected);
        //    ddController.ListReloaded += new EventHandler<EventArgs<TD>>(ddController_ListReloaded);
        //}

        public DropDownTreeCardsController(ChooserEditor editor, IDropDownControl ctl, bool reload)
            : base(editor, ctl, reload)
        {
            ddController = new CardGridChooserController <TS, TD, CS, CD>(ctl.Grid);
            ddController.Reload(null);
            ddController.DatValueChanged  += new DatEventDelegate(ddController_DatValueChanged);
            ddController.DatValueSelected += new DatEventDelegate(ddController_DatValueSelected);
            ddController.ListReloaded     += new EventHandler <EventArgs <TD> >(ddController_ListReloaded);
        }
Пример #3
0
        /// <summary>
        /// Handles context menu opened event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void OnContextMenuOpened(object sender, ContextMenuEventArgs e)
        {
            IDropDownControl control = sender as IDropDownControl;

            if (control != null)
            {
                control.IsContextMenuOpened = true;
                // Debug.WriteLine("Context menu opened");
            }
        }
Пример #4
0
        /// <summary>
        /// Handles context menu closed event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void OnContextMenuClosed(object sender, ContextMenuEventArgs e)
        {
            IDropDownControl control = sender as IDropDownControl;

            if (control != null)
            {
                //Debug.WriteLine("Context menu closed");
                control.IsContextMenuOpened = false;
                RaiseDismissPopupEvent(control, DismissPopupMode.MouseNotOver);
            }
        }
Пример #5
0
        public DropDownController(ChooserEditor editor, IDropDownControl ctl, CS bset, bool reload)
            : base(editor, bset, reload)
        {
            ddControl = ctl;
            ddForm    = new DropDownFormBase(this, ddControl);
            ddControl.Grid.DataSource = set;
            ddControl.RowEntered     += new EventHandler <EventArgs <int> >(ddControl_RowEntered);
            ddControl.RowSelected    += new EventHandler <EventArgs <int> >(ddControl_RowSelected);
            ddControl.DropDownClosed += new EventHandler(ddControl_DropDownClosed);

            Editor = editor;
            Editor.ValueDropDown += Editor_ValueDropDown;
            //Editor.ValueChanged += new EventHandler(Editor_ValueChanged);
        }
 public virtual void Show(IDropDownControl owner)
 {
     if (!this.initialized)
     {
         this.Initialize();
     }
     if (owner != null)
     {
         this.Owner = (Control)owner;
         if (!this.Control.Capture)
         {
             this.Control.Capture = true;
         }
         this.SetSize();
         this.ShowInternal();
     }
 }
Пример #7
0
        /// <summary>
        /// Handles lost mouse capture event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void OnLostMouseCapture(object sender, MouseEventArgs e)
        {
            //Debug.WriteLine("Lost Capture - " + Mouse.Captured);
            IDropDownControl control = sender as IDropDownControl;

            if (control == null)
            {
                return;
            }
            if ((Mouse.Captured != sender) && (control.IsDropDownOpen) && (!control.IsContextMenuOpened))
            {
                Popup popup = control.DropDownPopup;
                if ((popup == null) || (popup.Child == null))
                {
                    RaiseDismissPopupEvent(sender, DismissPopupMode.MouseNotOver);
                    return;
                }

                if (e.OriginalSource == sender)
                {
                    // If Ribbon loses capture because something outside popup is clicked - close the popup
                    if (Mouse.Captured == null || !IsAncestorOf(popup.Child, Mouse.Captured as DependencyObject))
                    {
                        RaiseDismissPopupEvent(sender, DismissPopupMode.MouseNotOver);
                    }
                }
                else
                {
                    // If control inside Ribbon loses capture - restore capture to Ribbon
                    if (IsAncestorOf(popup.Child, e.OriginalSource as DependencyObject))
                    {
                        if (Mouse.Captured == null)
                        {
                            Mouse.Capture(sender as IInputElement, CaptureMode.SubTree);
                            e.Handled = true;
                        }
                    }
                    else
                    {
                        RaiseDismissPopupEvent(sender, DismissPopupMode.MouseNotOver);
                    }
                }
            }
        }
Пример #8
0
        private DependencyObject FindParentDropDownOrMenuItem()
        {
            DependencyObject parent = this.Parent;

            while (parent != null)
            {
                IDropDownControl dropDown = parent as IDropDownControl;
                if (dropDown != null)
                {
                    return(parent);
                }
                System.Windows.Controls.MenuItem menuItem = parent as System.Windows.Controls.MenuItem;
                if (menuItem != null)
                {
                    return(parent);
                }
                parent = LogicalTreeHelper.GetParent(parent);
            }
            return(null);
        }
Пример #9
0
        /// <summary>
        /// Creates a <strong>DropDownForm</strong>.
        /// </summary>
        /// <param name="service">The service that drops1 this form.</param>
        public DropDownFormBase(IWindowsFormsEditorService service, IDropDownControl ctl)
        {
            StartPosition   = FormStartPosition.Manual;
            ShowInTaskbar   = false;
            KeyPreview      = true;
            ControlBox      = false;
            MinimizeBox     = false;
            MaximizeBox     = false;
            Text            = "";
            Visible         = false;
            TopMost         = true;
            FormBorderStyle = FormBorderStyle.Sizable;

            currentControl = (Control)ctl;
            Controls.Add(currentControl);
            currentControl.Dock    = DockStyle.Fill;
            currentControl.Visible = true;
            //this.Padding =
            this.service = service;
        }
Пример #10
0
        /// <summary>
        /// Handles dismiss popup event
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public static void OnDismissPopup(object sender, DismissPopupEventArgs e)
        {
            IDropDownControl control = sender as IDropDownControl;

            if (control == null)
            {
                return;
            }
            if (e.DismissMode == DismissPopupMode.Always)
            {
                if (Mouse.Captured == control)
                {
                    Mouse.Capture(null);
                }
                // Debug.WriteLine("DropDown Closed");
                control.IsDropDownOpen = false;
            }
            else
            {
                if ((control.IsDropDownOpen) && (!PopupService.IsMousePhysicallyOver(control.DropDownPopup.Child)))
                {
                    if (Mouse.Captured == control)
                    {
                        Mouse.Capture(null);
                    }
                    // Debug.WriteLine("DropDown Closed");
                    control.IsDropDownOpen = false;
                }
                else
                {
                    if ((control.IsDropDownOpen) && (Mouse.Captured != control))
                    {
                        Mouse.Capture(sender as IInputElement, CaptureMode.SubTree);
                    }
                    if (control.IsDropDownOpen)
                    {
                        e.Handled = true;
                    }
                }
            }
        }
Пример #11
0
        /*protected override void OnGotMouseCapture(MouseEventArgs e)
         * {
         *  IInputElement element = GetRootDropDownControl() as IInputElement;
         *  if ((element!=null)&&(Mouse.Captured!=element)) Mouse.Capture(element, CaptureMode.SubTree);
         * }*/

        private IDropDownControl GetRootDropDownControl()
        {
            DependencyObject element = this;

            while (element != null)
            {
                IDropDownControl popup = element as IDropDownControl;
                if (popup != null)
                {
                    return(popup);
                }
                DependencyObject elementParent = VisualTreeHelper.GetParent(element);
                if (elementParent == null)
                {
                    element = LogicalTreeHelper.GetParent(element);
                }
                else
                {
                    element = elementParent;
                }
            }
            return(null);
        }
 public override void Show(IDropDownControl owner)
 {
     base.Show(owner);
     this.Control.Focus();
 }
Пример #13
0
 public DropDownController(ChooserEditor editor, IDropDownControl ctl, CS bset)
     : this(editor, ctl, bset, true)
 {
 }
Пример #14
0
 public DropDownController(ChooserEditor editor, IDropDownControl ctl, bool reload)
     : this(editor, ctl, null, reload)
 {
 }
Пример #15
0
        /// <summary>
        /// Конструктор с заданным IDropDownControl - выпадающим контролом
        /// </summary>
        /// <param name="editor"></param>
        /// <param name="ctl"></param>
        //public DropDownController(ChooserEditor editor, IDropDownControl ctl)
        //    : base(editor)
        //{
        //    ddControl = ctl;
        //    ddForm = new DropDownFormBase(this, ddControl);
        //    ddControl.Grid.DataSource = set;
        //    ddControl.RowEntered += new EventHandler<EventArgs<int>>(ddControl_RowEntered);
        //    ddControl.RowSelected += new EventHandler<EventArgs<int>>(ddControl_RowSelected);
        //    ddControl.DropDownClosed += new EventHandler(ddControl_DropDownClosed);

        //    Editor = editor;
        //    Editor.ValueDropDown += Editor_ValueDropDown;
        //    //Editor.ValueChanged += new EventHandler(Editor_ValueChanged);
        //}

        public DropDownController(ChooserEditor editor, IDropDownControl ctl)
            : this(editor, ctl, null)
        {
        }