private static void AssertStringParse(string sMouseButtonCombo, XMouseButtonCombo vMouseButtonCombo, CultureInfo culture, string message)
        {
            XMouseButtonCombo actualValue = XMouseButtonCombo.Parse(sMouseButtonCombo, culture);

            //System.Diagnostics.Trace.WriteLine(actualValue);
            Assert.AreEqual(vMouseButtonCombo, actualValue, "{0}: converting {1} which is {2}", message, sMouseButtonCombo, actualValue);
        }
        public void TestEmptyEquality()
        {
            Assert.AreEqual(XMouseButtonCombo.None, XMouseButtonCombo.None, "None should be equal to None.");
            Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(), "None should be equal to value constructed with default ctor.");
            Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(XMouseButtons.None), "None should be equal to value constructed with no mouse buttons.");
            Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(XMouseButtons.None, ModifierFlags.None), "None should be equal to value constructed with no mouse buttons and no modifiers.");
            Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(XMouseButtons.None, ModifierFlags.Shift), "None should be equal to value constructed with no mouse buttons and non-zero modifiers.");
            Assert.AreEqual(XMouseButtonCombo.None, (XMouseButtonCombo)XMouseButtons.None, "None should be equal to value cast from no mouse buttons.");
            Assert.AreEqual(XMouseButtonCombo.None, (XMouseButtonCombo)XKeys.None, "None should be equal to value cast from no XKeys.");
            Assert.AreEqual(XMouseButtonCombo.None, (XMouseButtonCombo)(XKeys.Control | XKeys.None), "None should be equal to value cast from modified XKeys.None.");

            XMouseButtonCombo value = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.Shift);

            value.MouseButtons = XMouseButtons.None;
            Assert.AreEqual(XMouseButtonCombo.None, value, "None should be equal to value which had a modifier and has had its mouse button field modified to be empty.");

            XMouseButtonCombo value2 = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.None);

            value2.MouseButtons = XMouseButtons.None;
            Assert.AreEqual(XMouseButtonCombo.None, value2, "None should be equal to value which has had its mouse button field modified to be empty.");

            XMouseButtonCombo value3 = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.Shift);

            value3.Modifiers    = ModifierFlags.None;
            value3.MouseButtons = XMouseButtons.None;
            Assert.AreEqual(XMouseButtonCombo.None, value3, "None should be equal to value which has had its fields modified to be empty.");
        }
        private static void AssertStringFormat(string sMouseButtonCombo, XMouseButtonCombo vMouseButtonCombo, CultureInfo culture, string message)
        {
            string actualString = vMouseButtonCombo.ToString(culture);

            //System.Diagnostics.Trace.WriteLine(actualString);
            Assert.AreEqual(sMouseButtonCombo, actualString, "{0}: converting [{1},{2}] which is {3}", message, vMouseButtonCombo.MouseButtons, vMouseButtonCombo.Modifiers, vMouseButtonCombo);
        }
예제 #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);
        }
        public void TestEmptyStringParse()
        {
            // empty strings should parse to XMouseButtonCombo.None
            XMouseButtonCombo mouseButtonCombo = XMouseButtonCombo.Parse(string.Empty);

            Assert.AreEqual(XMouseButtonCombo.None, mouseButtonCombo, "empty strings should parse to XMouseButtonCombo.None");
        }
예제 #6
0
		public void TestEquality()
		{
			XMouseButtonCombo value = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.Shift);
			value.MouseButtons = XMouseButtons.XButton2;
			value.Modifiers = ModifierFlags.None;
			Assert.AreEqual(new XMouseButtonCombo(XMouseButtons.XButton2), new XMouseButtonCombo(XMouseButtons.XButton2, ModifierFlags.None));
			Assert.AreEqual(new XMouseButtonCombo(XMouseButtons.XButton2), new XMouseButtonCombo(XMouseButtons.XButton2, ModifierFlags.None));
			Assert.AreEqual(new XMouseButtonCombo(XMouseButtons.XButton2), value);
		}
예제 #7
0
		public void TestInvalidCastFromXKeys()
		{
			try
			{
				XMouseButtonCombo combo = (XMouseButtonCombo) (XKeys.Shift | XKeys.Attn);
				Assert.Fail("Casting a key stroke as an XMouseButtonCombo should be invalid");
			}
			catch (InvalidCastException) {}
		}
예제 #8
0
 public MouseImageViewerToolPropertyComponent(AbstractActionModelTreeNode selectedNode, XMouseButtons activeMouseButtons, XMouseButtons globalMouseButtons, ModifierFlags globalModifiers, bool initiallyActive)
     : base(selectedNode)
 {
     _activeMouseButtons     = activeMouseButtons;
     _globalMouseButtonCombo = new XMouseButtonCombo(globalMouseButtons, globalModifiers);
     _globalMouseButtons     = globalMouseButtons;
     _globalModifiers        = globalModifiers;
     _initiallyActive        = initiallyActive;
 }
예제 #9
0
		public void TestInvalidElementStringParse()
		{
			try
			{
				// on the other hand, invalid combo strings should throw exceptions during conversion
				XMouseButtonCombo.Parse("NonExistentCombo");
				Assert.Fail("Expected an exception because the parsed string has an invalid element name");
			}
			catch (FormatException) {}
		}
예제 #10
0
		public void TestInvalidStringParse()
		{
			try
			{
				// on the other hand, invalid combo strings should throw exceptions during conversion
				XMouseButtonCombo.Parse("\n");
				Assert.Fail("Expected an exception because the parsed string has an invalid character");
			}
			catch (FormatException) {}
		}
예제 #11
0
		public void TestInvalidModifiersOnlyStringParse()
		{
			try
			{
				// on the other hand, invalid combo strings should throw exceptions during conversion
				XMouseButtonCombo.Parse("Ctrl+Shift");
				Assert.Fail("Expected an exception because the parsed string has no mouse button, only modifiers");
			}
			catch (FormatException) {}
		}
예제 #12
0
		public void TestInvalidElementLeadingSeparatorStringParse()
		{
			try
			{
				// on the other hand, invalid combo strings should throw exceptions during conversion
				XMouseButtonCombo.Parse("+Right Mouse Button");
				Assert.Fail("Expected an exception because of a leading separator in the parse string");
			}
			catch (FormatException) {}
		}
예제 #13
0
		public void TestEquality()
		{
			XMouseButtonCombo value = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.Shift);
			value.MouseButtons = XMouseButtons.XButton2;
			value.Modifiers = ModifierFlags.None;
			Assert.AreEqual(new XMouseButtonCombo(XMouseButtons.XButton2), new XMouseButtonCombo(XMouseButtons.XButton2, ModifierFlags.None));
			Assert.AreEqual(new XMouseButtonCombo(XMouseButtons.XButton2), new XMouseButtonCombo(XMouseButtons.XButton2, ModifierFlags.None));
			Assert.AreEqual(new XMouseButtonCombo(XMouseButtons.XButton2), value);
		}
예제 #14
0
		private static void AssertEquivalency(string sMouseButtonCombo, XMouseButtonCombo vMouseButtonCombo, CultureInfo culture, string message)
		{
			AssertStringFormat(sMouseButtonCombo, vMouseButtonCombo, culture, message);
			AssertStringParse(sMouseButtonCombo, vMouseButtonCombo, culture, message);
		}
예제 #15
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);
        }
예제 #16
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;
            }
        }
예제 #17
0
		private static void AssertStringParse(string sMouseButtonCombo, XMouseButtonCombo vMouseButtonCombo, CultureInfo culture, string message)
		{
			XMouseButtonCombo actualValue = XMouseButtonCombo.Parse(sMouseButtonCombo, culture);
			//System.Diagnostics.Trace.WriteLine(actualValue);
			Assert.AreEqual(vMouseButtonCombo, actualValue, "{0}: converting {1} which is {2}", message, sMouseButtonCombo, actualValue);
		}
예제 #18
0
		private static void AssertStringFormat(string sMouseButtonCombo, XMouseButtonCombo vMouseButtonCombo, CultureInfo culture, string message)
		{
			string actualString = vMouseButtonCombo.ToString(culture);
			//System.Diagnostics.Trace.WriteLine(actualString);
			Assert.AreEqual(sMouseButtonCombo, actualString, "{0}: converting [{1},{2}] which is {3}", message, vMouseButtonCombo.MouseButtons, vMouseButtonCombo.Modifiers, vMouseButtonCombo);
		}
예제 #19
0
		private static void AssertEquivalency(string sMouseButtonCombo, XMouseButtonCombo vMouseButtonCombo, CultureInfo culture, string message)
		{
			AssertStringFormat(sMouseButtonCombo, vMouseButtonCombo, culture, message);
			AssertStringParse(sMouseButtonCombo, vMouseButtonCombo, culture, message);
		}
예제 #20
0
            public ImageViewerActionModelConfigurationComponent(string @namespace, string site, CustomizeViewerActionModelsComponent owner)
                : base(@namespace, site, owner._imageViewer.ExportedActions, owner._imageViewer.DesktopWindow, site == _globalToolbarActionSite)
            {
                _owner = owner;

                // just keep a single copy of it for a consistent startup state - we don't store the unsaved changes in here
                _toolProfile = MouseToolSettingsProfile.Current.Clone();

                this.ValidationPolicy = _owner._validationPolicy;

                // update the keystroke and action maps
                foreach (AbstractActionModelTreeLeafAction node in base.ActionNodeMap.ActionNodes)
                {
                    if (node is AbstractActionModelTreeLeafClickAction)
                    {
                        AbstractActionModelTreeLeafClickAction clickActionNode = (AbstractActionModelTreeLeafClickAction)node;
                        if (clickActionNode.KeyStroke != XKeys.None)
                        {
                            if (_owner._keyStrokeMap.IsAssignedToOther(clickActionNode.KeyStroke, clickActionNode.ActionId))
                            {
                                clickActionNode.KeyStroke = XKeys.None;
                            }
                            else
                            {
                                _owner._keyStrokeMap[clickActionNode.KeyStroke] = clickActionNode.ActionId;
                            }
                        }
                    }

                    if (_toolProfile.HasEntryByActivationActionId(node.ActionId))
                    {
                        var mouseToolSetting = _toolProfile.GetEntryByActivationActionId(node.ActionId);
                        var mouseButtonValue = mouseToolSetting.MouseButton.GetValueOrDefault(XMouseButtons.Left);
                        if (mouseButtonValue != XMouseButtons.None)
                        {
                            if (mouseToolSetting.InitiallyActive.GetValueOrDefault(false))
                            {
                                if (!_owner._initialMouseToolsMap.IsAssignedToOther(mouseButtonValue, node.ActionId))
                                {
                                    _owner._initialMouseToolsMap[mouseButtonValue] = node.ActionId;
                                }
                            }
                            if (!_owner._mouseButtonMap[mouseButtonValue].Contains(node.ActionId))
                            {
                                _owner._mouseButtonMap.Add(mouseButtonValue, node.ActionId);
                            }
                        }
                        var defaultMouseButtonValue     = mouseToolSetting.DefaultMouseButton.GetValueOrDefault(XMouseButtons.None);
                        var defaultMouseButtonModifiers = mouseToolSetting.DefaultMouseButtonModifiers.GetValueOrDefault(ModifierFlags.None);
                        if (defaultMouseButtonValue != XMouseButtons.None)
                        {
                            var defaultMouseButton = new XMouseButtonCombo(defaultMouseButtonValue, defaultMouseButtonModifiers);
                            if (!_owner._defaultMouseToolsMap.IsAssignedToOther(defaultMouseButton, node.ActionId))
                            {
                                _owner._defaultMouseToolsMap[defaultMouseButton] = node.ActionId;
                            }
                        }
                    }
                }

                foreach (string actionId in base.ActionNodeMap.ActionIds)
                {
                    _owner._actionMap.AddRange(actionId, base.ActionNodeMap[actionId]);
                }
            }
예제 #21
0
		public void TestEmptyEquality()
		{
			Assert.AreEqual(XMouseButtonCombo.None, XMouseButtonCombo.None, "None should be equal to None.");
			Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(), "None should be equal to value constructed with default ctor.");
			Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(XMouseButtons.None), "None should be equal to value constructed with no mouse buttons.");
			Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(XMouseButtons.None, ModifierFlags.None), "None should be equal to value constructed with no mouse buttons and no modifiers.");
			Assert.AreEqual(XMouseButtonCombo.None, new XMouseButtonCombo(XMouseButtons.None, ModifierFlags.Shift), "None should be equal to value constructed with no mouse buttons and non-zero modifiers.");
			Assert.AreEqual(XMouseButtonCombo.None, (XMouseButtonCombo) XMouseButtons.None, "None should be equal to value cast from no mouse buttons.");
			Assert.AreEqual(XMouseButtonCombo.None, (XMouseButtonCombo) XKeys.None, "None should be equal to value cast from no XKeys.");
			Assert.AreEqual(XMouseButtonCombo.None, (XMouseButtonCombo) (XKeys.Control | XKeys.None), "None should be equal to value cast from modified XKeys.None.");

			XMouseButtonCombo value = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.Shift);
			value.MouseButtons = XMouseButtons.None;
			Assert.AreEqual(XMouseButtonCombo.None, value, "None should be equal to value which had a modifier and has had its mouse button field modified to be empty.");

			XMouseButtonCombo value2 = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.None);
			value2.MouseButtons = XMouseButtons.None;
			Assert.AreEqual(XMouseButtonCombo.None, value2, "None should be equal to value which has had its mouse button field modified to be empty.");

			XMouseButtonCombo value3 = new XMouseButtonCombo(XMouseButtons.Left, ModifierFlags.Shift);
			value3.Modifiers = ModifierFlags.None;
			value3.MouseButtons = XMouseButtons.None;
			Assert.AreEqual(XMouseButtonCombo.None, value3, "None should be equal to value which has had its fields modified to be empty.");
		}