Example #1
0
        private void UpdateMouseToolInitiallyActive(AbstractActionModelTreeLeafAction node, bool initiallyActive)
        {
            if (_updatingKeyStrokes)
            {
                return;
            }

            _updatingKeyStrokes = true;
            try
            {
                // find the mouse button to which this tool is assigned
                var mouseButton = _mouseButtonMap.FindKey(node.ActionId, XMouseButtons.Left);

                // check if updating this value actually causes a change
                var oldInitiallyActive = _initialMouseToolsMap.IsAssignedToMe(mouseButton, node.ActionId);
                if (oldInitiallyActive == initiallyActive)
                {
                    return;
                }

                // update the initial tool map
                _initialMouseToolsMap[mouseButton] = initiallyActive ? node.ActionId : string.Empty;
            }
            finally
            {
                _updatingKeyStrokes = false;
            }
        }
Example #2
0
            protected override void OnNodePropertiesValidated(AbstractActionModelTreeNode node, string propertyName, object value)
            {
                base.OnNodePropertiesValidated(node, propertyName, value);

                if (propertyName == "KeyStroke" && node is AbstractActionModelTreeLeafClickAction)
                {
                    _owner.UpdateClickActionKeyStroke((AbstractActionModelTreeLeafClickAction)node, (XKeys)value);
                }

                if (node is AbstractActionModelTreeLeafAction)
                {
                    AbstractActionModelTreeLeafAction actionNode = (AbstractActionModelTreeLeafAction)node;
                    if (propertyName == "InitiallyActive")
                    {
                        _owner.UpdateMouseToolInitiallyActive(actionNode, (bool)value);
                    }
                    else if (propertyName == "ActiveMouseButtons")
                    {
                        _owner.UpdateMouseToolMouseButton(actionNode, (XMouseButtons)value);
                    }
                    else if (propertyName == "GlobalMouseButtonCombo")
                    {
                        _owner.UpdateDefaultMouseButtons(actionNode, (XMouseButtonCombo)value);
                    }
                }
            }
Example #3
0
        private bool ValidateMouseToolInitiallyActive(AbstractActionModelTreeLeafAction node, bool initiallyActive)
        {
            // if we're just synchronizing the value due to another update action, short the validation request
            if (_updatingKeyStrokes)
            {
                return(true);
            }

            // find the mouse button to which this tool is assigned
            var mouseButton = _mouseButtonMap.FindKey(node.ActionId, XMouseButtons.Left);

            // check for presence of another initial tool for this button
            if (initiallyActive && _initialMouseToolsMap.IsAssignedToOther(mouseButton, node.ActionId))
            {
                IList <AbstractActionModelTreeLeafAction> actions = _actionMap[_initialMouseToolsMap[mouseButton]];
                if (actions.Count > 0)
                {
                    string          message = string.Format(SR.MessageMouseButtonInitialToolAlreadyAssigned, XMouseButtonsConverter.Format(mouseButton), actions[0].Label);
                    DialogBoxAction result  = base.Host.DesktopWindow.ShowMessageBox(message, MessageBoxActions.YesNo);
                    if (result != DialogBoxAction.Yes)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Example #4
0
        private bool ValidateMouseToolMouseButton(AbstractActionModelTreeLeafAction node, XMouseButtons mouseButton)
        {
            // if we're just synchronizing the value due to another update action, short the validation request
            if (_updatingKeyStrokes)
            {
                return(true);
            }

            // check that we're not setting it to none
            if (mouseButton == XMouseButtons.None)
            {
                return(false);
            }

            // check for presence of a global tool for this button
            var defaultMouseButtonCombo = new XMouseButtonCombo(mouseButton, ModifierFlags.None);

            if (_defaultMouseToolsMap.IsAssigned(defaultMouseButtonCombo))
            {
                IList <AbstractActionModelTreeLeafAction> actions = _actionMap[_defaultMouseToolsMap[defaultMouseButtonCombo]];
                if (actions.Count > 0)
                {
                    string          message = string.Format(SR.MessageMouseButtonActiveToolAssignmentConflict, defaultMouseButtonCombo, actions[0].Label);
                    DialogBoxAction result  = base.Host.DesktopWindow.ShowMessageBox(message, MessageBoxActions.YesNo);
                    if (result != DialogBoxAction.Yes)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Example #5
0
        private bool ValidateDefaultMouseButtons(AbstractActionModelTreeLeafAction node, XMouseButtonCombo defaultMouseButtonCombo)
        {
            // if we're just synchronizing the value due to another update action, short the validation request
            if (_updatingKeyStrokes)
            {
                return(true);
            }

            // check for presence of another global tool for this button
            if (_defaultMouseToolsMap.IsAssignedToOther(defaultMouseButtonCombo, node.ActionId))
            {
                IList <AbstractActionModelTreeLeafAction> actions = _actionMap[_defaultMouseToolsMap[defaultMouseButtonCombo]];
                if (actions.Count > 0)
                {
                    string          message = string.Format(SR.MessageMouseButtonGlobalToolAlreadyAssigned, defaultMouseButtonCombo, actions[0].Label);
                    DialogBoxAction result  = base.Host.DesktopWindow.ShowMessageBox(message, MessageBoxActions.YesNo);
                    if (result != DialogBoxAction.Yes)
                    {
                        return(false);
                    }
                }
            }

            // check for presence of an active tool for this button
            var unmodifiedMouseButton = defaultMouseButtonCombo.MouseButtons;

            if (defaultMouseButtonCombo.Modifiers == ModifierFlags.None && _mouseButtonMap[unmodifiedMouseButton].Count > 0)
            {
                IList <AbstractActionModelTreeLeafAction> actions = _actionMap[_mouseButtonMap[unmodifiedMouseButton][0]];
                if (actions.Count > 0)
                {
                    string          message = string.Format(SR.MessageMouseButtonGlobalToolAssignmentConflict, unmodifiedMouseButton, actions[0].Label);
                    DialogBoxAction result  = base.Host.DesktopWindow.ShowMessageBox(message, MessageBoxActions.YesNo);
                    if (result != DialogBoxAction.Yes)
                    {
                        return(false);
                    }
                }
            }

            return(true);
        }
Example #6
0
        private void UpdateMouseToolMouseButton(AbstractActionModelTreeLeafAction node, XMouseButtons mouseButton)
        {
            if (_updatingKeyStrokes)
            {
                return;
            }

            _updatingKeyStrokes = true;
            try
            {
                // find the original mouse button to which the tool was assigned
                var oldMouseButton = _mouseButtonMap.FindKey(node.ActionId, XMouseButtons.Left);
                if (oldMouseButton == mouseButton)
                {
                    return;
                }

                // if the tool was originally the initial tool for this button, remove it
                if (_initialMouseToolsMap.IsAssignedToMe(oldMouseButton, node.ActionId))
                {
                    _initialMouseToolsMap[oldMouseButton] = string.Empty;
                }

                // unassign the tool from the mouse button
                _mouseButtonMap.Remove(oldMouseButton, node.ActionId);

                // update the mouse button map
                if (mouseButton != XMouseButtons.None && !_mouseButtonMap[mouseButton].Contains(node.ActionId))
                {
                    _mouseButtonMap.Add(mouseButton, node.ActionId);
                }
            }
            finally
            {
                _updatingKeyStrokes = false;
            }
        }
Example #7
0
        private void UpdateDefaultMouseButtons(AbstractActionModelTreeLeafAction node, XMouseButtonCombo defaultMouseButtonCombo)
        {
            if (_updatingKeyStrokes)
            {
                return;
            }

            _updatingKeyStrokes = true;
            try
            {
                // find the old default mouse buttons to which this tool was assigned
                var oldMouseButtons = _defaultMouseToolsMap.FindAssignment(node.ActionId, XMouseButtonCombo.None);

                // check if updating this value actually causes a change
                if (oldMouseButtons == defaultMouseButtonCombo)
                {
                    return;
                }

                // clear the old assignment
                if (oldMouseButtons != XMouseButtonCombo.None)
                {
                    _defaultMouseToolsMap[oldMouseButtons] = string.Empty;
                }

                // update the default tool map
                if (defaultMouseButtonCombo != XMouseButtonCombo.None)
                {
                    _defaultMouseToolsMap[defaultMouseButtonCombo] = node.ActionId;
                }
            }
            finally
            {
                _updatingKeyStrokes = false;
            }
        }