Пример #1
0
        public void SetUp()
        {
            scaleGridToggleBehaviourMock_     = Substitute.For <IToggleButtonBehaviour>();
            directionGridToggleBehaviourMock_ = Substitute.For <IToggleButtonBehaviour>();
            equatorToggleBehaviourMock_       = Substitute.For <IToggleButtonBehaviour>();
            scaleGridToggleButtonMock_        = Substitute.For <IToggleButton>();
            directionGridToggleButtonMock_    = Substitute.For <IToggleButton>();
            equatorGridToggleButtonMock_      = Substitute.For <IToggleButton>();
            consoleBehaviourMock_             = Substitute.For <IConsoleBehaviour>();
            gridBehaviourMock_            = Substitute.For <IGridBehaviour>();
            componentFactoryMock_         = Substitute.For <IComponentFactory>();
            scaleCircleBehaviourMock_     = Substitute.For <IVisible>();
            directionCircleBehaviourMock_ = Substitute.For <IVisible>();
            equatorCircleBehaviourMock_   = Substitute.For <IVisible>();
            pureDataFacadeMock_           = Substitute.For <IPureDataFacade>();

            consoleBehaviourMock_.ScaleGridToggleBehaviour.Returns(scaleGridToggleBehaviourMock_);
            consoleBehaviourMock_.DirectionGridToggleBehaviour.Returns(directionGridToggleBehaviourMock_);
            consoleBehaviourMock_.EquatorToggleBehaviour.Returns(equatorToggleBehaviourMock_);

            componentFactoryMock_.CreateToggleButton(scaleGridToggleBehaviourMock_).Returns(scaleGridToggleButtonMock_);
            componentFactoryMock_.CreateToggleButton(directionGridToggleBehaviourMock_).Returns(directionGridToggleButtonMock_);
            componentFactoryMock_.CreateToggleButton(equatorToggleBehaviourMock_).Returns(equatorGridToggleButtonMock_);

            gridBehaviourMock_.ScaleCircleBehaviour.Returns(scaleCircleBehaviourMock_);
            gridBehaviourMock_.DirectionCircleBehaviour.Returns(directionCircleBehaviourMock_);
            gridBehaviourMock_.FFTCircleBehaviour.Returns(equatorCircleBehaviourMock_);

            console_ = new Console(consoleBehaviourMock_, gridBehaviourMock_, pureDataFacadeMock_, componentFactoryMock_);
        }
Пример #2
0
 /// <summary>
 /// Add a ToggleButton to group
 /// </summary>
 /// <param name="button">Button to add</param>
 public void Add(IToggleButton button)
 {
     if (_Buttons.Contains(button))
     {
         return;
     }
     _Buttons.Add(button);
     button.Checked   += button_Checked;
     button.Unchecked += button_Unchecked;
 }
Пример #3
0
        /// <summary>
        /// Remove ToggleButton to group
        /// </summary>
        /// <param name="button">Button to remove</param>
        /// <returns>True if success otherwise false</returns>
        public bool Remove(IToggleButton button)
        {
            bool result = _Buttons.Remove(button);

            if (result)
            {
                button.Checked   -= button_Checked;
                button.Unchecked -= button_Unchecked;
            }
            return(result);
        }
Пример #4
0
        public void OnButtonClick(IToggleButton button)
        {
            if (LastButton != button)
            {
                LastButton?.IsButtonClick(false);
            }

            button.IsButtonClick(true);

            LastButton = button;
        }
Пример #5
0
        /// <summary>
        /// Remove from group
        /// </summary>
        private static void RemoveFromGroup(string groupName, IToggleButton toggleButton)
        {
            List <WeakReference> buttons;

            if (!groupedButtons.TryGetValue(groupName, out buttons))
            {
                return;
            }

            buttons.RemoveAt(buttons.FindIndex(x => (x.IsAlive && ((IToggleButton)x.Target) == toggleButton)));
        }
Пример #6
0
        /// <summary>
        /// Add to group
        /// </summary>
        private static void AddToGroup(string groupName, IToggleButton toggleButton)
        {
            List <WeakReference> buttons;

            if (!groupedButtons.TryGetValue(groupName, out buttons))
            {
                buttons = new List <WeakReference>();
                groupedButtons.Add(groupName, buttons);
            }

            buttons.Add(new WeakReference(toggleButton));
        }
Пример #7
0
        public override void Dispose()
        {
            if (this.IsDisposed)
            {
                return;
            }
            base.Dispose();

            this.ButtonList?.Clear();
            this.ButtonList = null;
            LastButton      = null;
        }
Пример #8
0
        private static int GetIsCheckedValue(IToggleButton childAsToggleButton)
        {
            var isChecked = childAsToggleButton.IsChecked;

            var isCheckedValue = isChecked.GetValueOrDefault()
                                     ? (isChecked.HasValue
                                            ? 1
                                            : 0)
                                     : 0;

            return(isCheckedValue);
        }
Пример #9
0
        public void Awake()
        {
            if (ButtonList == null)
            {
                ButtonList = new List <IToggleButton>();
            }
            else
            {
                ButtonList.Clear();
            }

            LastButton = null;
        }
Пример #10
0
        /// <summary>
        /// Add to group
        /// </summary>
        private static void AddToGroup(string groupName, IToggleButton toggleButton)
        {
            List <WeakReference> buttons;

            if (GroupedButtons.TryGetValue(groupName, out buttons) == false)
            {
                buttons = new List <WeakReference>();
                GroupedButtons.Add(groupName, buttons);
            }
            else
            {
                PurgeDead(buttons, null);
            }

            buttons.Add(new WeakReference(toggleButton));
        }
Пример #11
0
        /// <summary>
        /// Remove from group
        /// </summary>
        private static void RemoveFromGroup(string groupName, IToggleButton toggleButton)
        {
            List <WeakReference> buttons;

            if (GroupedButtons.TryGetValue(groupName, out buttons) == false)
            {
                return;
            }

            PurgeDead(buttons, toggleButton);

            if (buttons.Count == 0)
            {
                GroupedButtons.Remove(groupName);
            }
        }
Пример #12
0
        public bool RemoveButton(IToggleButton button, IToggleButton clickButton = null)
        {
            if (LastButton == button)
            {
                LastButton = null;
            }

            if (!ButtonList.Contains(button))
            {
                return(false);
            }

            clickButton?.IsButtonClick(true);

            button.ButtonGroup = null;
            return(ButtonList.Remove(button));
        }
Пример #13
0
        /// <summary>
        /// Gets all buttons in the given group
        /// </summary>
        private static IEnumerable <IToggleButton> GetButtonsInGroup(IToggleButton button)
        {
            List <WeakReference> buttons;

            if (GroupedButtons.TryGetValue(button.GroupName, out buttons) == false)
            {
                return(Enumerable.Empty <IToggleButton>());
            }

            PurgeDead(buttons, null);

            var rootScope = PresentationSource.FromVisual((Visual)button);

            return(buttons
                   .Where(x => rootScope == PresentationSource.FromVisual((Visual)x.Target))
                   .Select(x => (IToggleButton)x.Target).ToList());
        }
Пример #14
0
        private static void Unregister(string groupName, IToggleButton toggleButton)
        {
            if (groupNameToElements == null)
            {
                return;
            }

            var groupNameToElement = (ArrayList)groupNameToElements[groupName];

            if (groupNameToElement != null)
            {
                PurgeDead(groupNameToElement, toggleButton);
                if (groupNameToElement.Count == 0)
                {
                    groupNameToElements.Remove(groupName);
                }
            }
        }
Пример #15
0
        private static void UncheckToggleButton(IToggleButton toggleButton)
        {
            var dependencyObject = toggleButton as DependencyObject;

            if (dependencyObject == null)
            {
                return;
            }

            if (toggleButton is System.Windows.Controls.MenuItem)
            {
                dependencyObject.SetCurrentValue(System.Windows.Controls.MenuItem.IsCheckedProperty, BooleanBoxes.FalseBox);
            }
            else
            {
                dependencyObject.SetCurrentValue(System.Windows.Controls.Primitives.ToggleButton.IsCheckedProperty, BooleanBoxes.FalseBox);
            }
        }
Пример #16
0
        private static void Register(string groupName, IToggleButton toggleButton)
        {
            if (groupNameToElements == null)
            {
                groupNameToElements = new Hashtable(1);
            }

            var elements = (ArrayList)groupNameToElements[groupName];

            if (elements == null)
            {
                elements = new ArrayList(1);
                groupNameToElements[groupName] = elements;
            }
            else
            {
                PurgeDead(elements, null);
            }

            elements.Add(new WeakReference(toggleButton));
        }
Пример #17
0
        public void AddButton(IToggleButton button, bool isSelected = true)
        {
            if (ButtonList.Contains(button))
            {
                return;
            }

            ButtonList?.Add(button);
            button.ButtonGroup = this;

            if (isSelected)
            {
                if (LastButton != null)
                {
                    button.IsButtonClick(false);
                    return;
                }

                button.IsButtonClick(true);

                LastButton = button;
            }
        }
Пример #18
0
        /// <summary>
        ///     Updates the states of all buttons inside the group which <paramref name="toggleButton" /> belongs to.
        /// </summary>
        public static void UpdateButtonGroup(IToggleButton toggleButton)
        {
            var groupName = toggleButton.GroupName;

            if (string.IsNullOrEmpty(groupName) == false)
            {
                var visualRoot = getVisualRootMethodInfo.Invoke(null, new object[] { (DependencyObject)toggleButton });
                if (groupNameToElements == null)
                {
                    groupNameToElements = new Hashtable(1);
                }

                var groupNameToElement = (ArrayList)groupNameToElements[groupName];
                var index = 0;
                while (index < groupNameToElement.Count)
                {
                    var target = ((WeakReference)groupNameToElement[index]).Target as IToggleButton;
                    if (target == null)
                    {
                        groupNameToElement.RemoveAt(index);
                    }
                    else
                    {
                        if (target != toggleButton)
                        {
                            var isCheckedValue = GetIsCheckedValue(target);

                            if (isCheckedValue != 0 &&
                                visualRoot == getVisualRootMethodInfo.Invoke(null, new object[] { (DependencyObject)target }))
                            {
                                UncheckToggleButton(target);
                            }
                        }

                        ++index;
                    }
                }
            }

            //else
            //{
            //    var parent = toggleButton.Parent;
            //    if (parent == null)
            //    {
            //        return;
            //    }

            //    foreach (var child in LogicalTreeHelper.GetChildren(parent))
            //    {
            //        var childAsToggleButton = child as IToggleButton;

            //        if (childAsToggleButton != null
            //            && childAsToggleButton != toggleButton
            //            && string.IsNullOrEmpty(childAsToggleButton.GroupName))
            //        {
            //            var isCheckedValue = GetIsCheckedValue(childAsToggleButton);

            //            if (isCheckedValue != 0)
            //            {
            //                UncheckToggleButton(childAsToggleButton);
            //            }
            //        }
            //    }
            //}
        }
Пример #19
0
        /// <summary>
        /// Add to group
        /// </summary>
        private static void AddToGroup(string groupName, IToggleButton toggleButton)
        {
            List<WeakReference> buttons;

            if (!groupedButtons.TryGetValue(groupName, out buttons))
            {
                buttons = new List<WeakReference>();
                groupedButtons.Add(groupName, buttons);
            }

            buttons.Add(new WeakReference(toggleButton));
        }
Пример #20
0
        /// <summary>
        /// Remove from group
        /// </summary>
        private static void RemoveFromGroup(string groupName, IToggleButton toggleButton)
        {
            List<WeakReference> buttons;

            if (!groupedButtons.TryGetValue(groupName, out buttons))
            {
                return;
            }

            buttons.RemoveAt(buttons.FindIndex(x => (x.IsAlive && ((IToggleButton)x.Target) == toggleButton)));
        }
Пример #21
0
        /// <summary>
        /// Remove from group
        /// </summary>
        private static void RemoveFromGroup(string groupName, IToggleButton toggleButton)
        {
            List<WeakReference> buttons;

            if (GroupedButtons.TryGetValue(groupName, out buttons) == false)
            {
                return;
            }

            PurgeDead(buttons, toggleButton);

            if (buttons.Count == 0)
            {
                GroupedButtons.Remove(groupName);
            }
        }
Пример #22
0
        /// <summary>
        /// Add to group
        /// </summary>
        private static void AddToGroup(string groupName, IToggleButton toggleButton)
        {
            List<WeakReference> buttons;

            if (GroupedButtons.TryGetValue(groupName, out buttons) == false)
            {
                buttons = new List<WeakReference>();
                GroupedButtons.Add(groupName, buttons);
            }
            else
            {
                PurgeDead(buttons, null);
            }

            buttons.Add(new WeakReference(toggleButton));
        }
Пример #23
0
        /// <summary>
        /// Gets all buttons in the given group
        /// </summary>
        private static IEnumerable<IToggleButton> GetButtonsInGroup(IToggleButton button)
        {
            List<WeakReference> buttons;

            if (GroupedButtons.TryGetValue(button.GroupName, out buttons) == false)
            {
                return Enumerable.Empty<IToggleButton>();
            }

            PurgeDead(buttons, null);

            var rootScope = PresentationSource.FromVisual((Visual)button);

            return buttons
                .Where(x => rootScope == PresentationSource.FromVisual((Visual)x.Target))
                .Select(x => (IToggleButton)x.Target).ToList();
        }