예제 #1
0
파일: TreeItem.cs 프로젝트: mono/uia2atk
		public TreeItem (IRawElementProviderSimple provider) : base (provider)
		{
			invokeProvider = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id);
			selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id);

			expandCollapseProvider = provider.GetPatternProvider (
				ExpandCollapsePatternIdentifiers.Pattern.Id) as IExpandCollapseProvider;

			textExpert = TextImplementorFactory.GetImplementor (this, provider);
			actionExpert = new ActionImplementorHelper ();

			// TODO: Localize the name?s
			actionExpert.Add ("click", "click", null, DoClick);
			if (ToggleProvider != null)
				actionExpert.Add ("toggle", "toggle", null, DoToggle);
			if (invokeProvider != null)
				actionExpert.Add ("invoke", "invoke", null, DoInvoke);

			IRawElementProviderFragment fragment = Provider as IRawElementProviderFragment;
			if (fragment != null && fragment.Navigate (NavigateDirection.FirstChild) != null)
				AddExpandContractAction ();

			Role = (ToggleProvider != null? Atk.Role.CheckBox: Atk.Role.TableCell);

			imageExpert = new ImageImplementorHelper (this);
			editableTextExpert = new EditableTextImplementorHelper (this, this, textExpert);
		}
예제 #2
0
        public MenuItem(IRawElementProviderSimple provider) : base(provider)
        {
            if (provider == null)
            {
                throw new ArgumentNullException("provider");
            }

            if ((provider as IRawElementProviderFragment) == null)
            {
                throw new ArgumentException("Provider for ParentMenu should be IRawElementProviderFragment");
            }

            textExpert = TextImplementorFactory.GetImplementor(this, provider);

            Role = Atk.Role.MenuItem;

            string name = (string)provider.GetPropertyValue(AutomationElementIdentifiers.NameProperty.Id);

            if (!String.IsNullOrEmpty(name))
            {
                Name = name;
            }

            invokeProvider = (IInvokeProvider)
                             provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id);
            toggleProvider = (IToggleProvider)
                             provider.GetPatternProvider(TogglePatternIdentifiers.Pattern.Id);
            selectionItemProvider = (ISelectionItemProvider)
                                    provider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id);
            expandCollapseProvider = (IExpandCollapseProvider)
                                     provider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id);

            actionExpert.Add("click", "click", null, DoClick);
        }
예제 #3
0
        public void TestHasKeyboardFocusAfterPattern()
        {
            StackPanel panel = new StackPanel();
            ComboBox   fe    = CreateConcreteFrameworkElement() as ComboBox;

            fe.Items.Add("Item 0");
            fe.Items.Add("Item 1");

            Button button = new Button()
            {
                Content = "Button"
            };

            panel.Children.Add(fe);
            panel.Children.Add(button);

            AutomationPeer          buttonPeer = FrameworkElementAutomationPeer.CreatePeerForElement(button);
            AutomationPeer          peer       = FrameworkElementAutomationPeer.CreatePeerForElement(fe);
            IExpandCollapseProvider provider   = null;

            CreateAsyncTest(panel,
                            () => {
                provider = (IExpandCollapseProvider)peer.GetPattern(PatternInterface.ExpandCollapse);
                Assert.IsNotNull(provider, "#1");
            },
                            () => provider.Expand(),
                            () => Assert.IsTrue(peer.HasKeyboardFocus(), "#2"),
                            () => button.Focus(),
                            () => Assert.IsTrue(buttonPeer.HasKeyboardFocus(), "#3"),
                            () => provider.Collapse(),
                            () => Assert.IsTrue(peer.HasKeyboardFocus(), "#4")
                            );
        }
예제 #4
0
파일: MenuItem.cs 프로젝트: mono/uia2atk
		public MenuItem (IRawElementProviderSimple provider) : base (provider)
		{
			if (provider == null)
				throw new ArgumentNullException ("provider");

			if ((provider as IRawElementProviderFragment) == null)
				throw new ArgumentException ("Provider for ParentMenu should be IRawElementProviderFragment");

			textExpert = TextImplementorFactory.GetImplementor (this, provider);

			Role = Atk.Role.MenuItem;

			string name = (string) provider.GetPropertyValue (AutomationElementIdentifiers.NameProperty.Id);
			if (!String.IsNullOrEmpty (name))
				Name = name;

			invokeProvider = (IInvokeProvider)
				provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id);
			toggleProvider = (IToggleProvider)
				provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id);
			selectionItemProvider = (ISelectionItemProvider)
				provider.GetPatternProvider (SelectionItemPatternIdentifiers.Pattern.Id);
			expandCollapseProvider = (IExpandCollapseProvider)
				provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id);

			actionExpert.Add ("click", "click", null, DoClick);
		}
예제 #5
0
        public static void SetWidthFromItems(this ComboBox comboBox)
        {
            double comboBoxWidth = 19;

            ComboBoxAutomationPeer  peer         = new ComboBoxAutomationPeer(comboBox);
            IExpandCollapseProvider provider     = (IExpandCollapseProvider)peer.GetPattern(PatternInterface.ExpandCollapse);
            EventHandler            eventHandler = null;

            eventHandler = new EventHandler(delegate
            {
                if (comboBox.IsDropDownOpen && comboBox.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
                {
                    double width = 0;
                    foreach (var item in comboBox.Items)
                    {
                        ComboBoxItem comboBoxItem = comboBox.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem;
                        comboBoxItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
                        if (comboBoxItem.DesiredSize.Width > width)
                        {
                            width = comboBoxItem.DesiredSize.Width;
                        }
                    }
                    comboBox.Width = comboBoxWidth + width;
                    comboBox.ItemContainerGenerator.StatusChanged -= eventHandler;
                    comboBox.DropDownOpened -= eventHandler;
                    provider.Collapse();
                }
            });
            comboBox.ItemContainerGenerator.StatusChanged += eventHandler;
            comboBox.DropDownOpened += eventHandler;
            provider.Expand();
        }
예제 #6
0
        public TreeItem(IRawElementProviderSimple provider) : base(provider)
        {
            invokeProvider        = (IInvokeProvider)provider.GetPatternProvider(InvokePatternIdentifiers.Pattern.Id);
            selectionItemProvider = (ISelectionItemProvider)provider.GetPatternProvider(SelectionItemPatternIdentifiers.Pattern.Id);

            expandCollapseProvider = provider.GetPatternProvider(
                ExpandCollapsePatternIdentifiers.Pattern.Id) as IExpandCollapseProvider;

            textExpert   = TextImplementorFactory.GetImplementor(this, provider);
            actionExpert = new ActionImplementorHelper();

            // TODO: Localize the name?s
            actionExpert.Add("click", "click", null, DoClick);
            if (ToggleProvider != null)
            {
                actionExpert.Add("toggle", "toggle", null, DoToggle);
            }
            if (invokeProvider != null)
            {
                actionExpert.Add("invoke", "invoke", null, DoInvoke);
            }

            IRawElementProviderFragment fragment = Provider as IRawElementProviderFragment;

            if (fragment != null && fragment.Navigate(NavigateDirection.FirstChild) != null)
            {
                AddExpandContractAction();
            }

            Role = (ToggleProvider != null? Atk.Role.CheckBox: Atk.Role.TableCell);

            imageExpert        = new ImageImplementorHelper(this);
            editableTextExpert = new EditableTextImplementorHelper(this, this, textExpert);
        }
예제 #7
0
        private readonly ITextProvider2 publicITextProvider2;                                      // AccessibleObject as ITextProvider2

        /// <summary>
        ///  Create a new wrapper.
        /// </summary>
        internal InternalAccessibleObject(AccessibleObject accessibleImplemention)
        {
            // Get all the casts done here to catch any issues early
            publicIAccessible                     = (IAccessible)accessibleImplemention;
            publicIEnumVariant                    = (Oleaut32.IEnumVariant)accessibleImplemention;
            publicIOleWindow                      = (Ole32.IOleWindow)accessibleImplemention;
            publicIReflect                        = (IReflect)accessibleImplemention;
            publicIServiceProvider                = (Ole32.IServiceProvider)accessibleImplemention;
            publicIAccessibleEx                   = (IAccessibleEx)accessibleImplemention;
            publicIRawElementProviderSimple       = (IRawElementProviderSimple)accessibleImplemention;
            publicIRawElementProviderFragment     = (IRawElementProviderFragment)accessibleImplemention;
            publicIRawElementProviderFragmentRoot = (IRawElementProviderFragmentRoot)accessibleImplemention;
            publicIInvokeProvider                 = (IInvokeProvider)accessibleImplemention;
            publicIValueProvider                  = (IValueProvider)accessibleImplemention;
            publicIRangeValueProvider             = (IRangeValueProvider)accessibleImplemention;
            publicIExpandCollapseProvider         = (IExpandCollapseProvider)accessibleImplemention;
            publicIToggleProvider                 = (IToggleProvider)accessibleImplemention;
            publicITableProvider                  = (ITableProvider)accessibleImplemention;
            publicITableItemProvider              = (ITableItemProvider)accessibleImplemention;
            publicIGridProvider                   = (IGridProvider)accessibleImplemention;
            publicIGridItemProvider               = (IGridItemProvider)accessibleImplemention;
            publicILegacyIAccessibleProvider      = (ILegacyIAccessibleProvider)accessibleImplemention;
            publicISelectionProvider              = (ISelectionProvider)accessibleImplemention;
            publicISelectionItemProvider          = (ISelectionItemProvider)accessibleImplemention;
            publicIScrollItemProvider             = (IScrollItemProvider)accessibleImplemention;
            publicIRawElementProviderHwndOverride = (IRawElementProviderHwndOverride)accessibleImplemention;
            publicIMultiViewProvider              = (IMultipleViewProvider)accessibleImplemention;
            publicITextProvider                   = (ITextProvider)accessibleImplemention;
            publicITextProvider2                  = (ITextProvider2)accessibleImplemention;
            // Note: Deliberately not holding onto AccessibleObject to enforce all access through the interfaces
        }
예제 #8
0
        static void ShowNextItem(TreeViewItem item)
        {
            var peer = new TreeViewItemAutomationPeer(item);
            IExpandCollapseProvider expander = peer;

            expander.Expand();
            InvokeUtility.DoEvents();
        }
예제 #9
0
		public ComboBoxDropDown (IRawElementProviderSimple provider) : base (provider)
		{
			this.provider = provider as IRawElementProviderFragmentRoot;
			if (this.provider == null)
				throw new ArgumentException ("Provider should be IRawElementProviderFragmentRoot");
			
			expandCollapseProvider = (IExpandCollapseProvider)provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id);
		}
예제 #10
0
		internal ExpandCollapsePattern (IExpandCollapseProvider source, AutomationElement element, bool cached)
		{
			this.element = element;
			this.cached = cached;
			this.Source = source;
			currentInfo = new ExpandCollapsePatternInformation (this, false);
			if (cached)
				cachedInfo = new ExpandCollapsePatternInformation (this, true);
		}
예제 #11
0
        public ComboBoxDropDown(IRawElementProviderSimple provider) : base(provider)
        {
            this.provider = provider as IRawElementProviderFragmentRoot;
            if (this.provider == null)
            {
                throw new ArgumentException("Provider should be IRawElementProviderFragmentRoot");
            }

            expandCollapseProvider = (IExpandCollapseProvider)provider.GetPatternProvider(ExpandCollapsePatternIdentifiers.Pattern.Id);
        }
        public virtual void ExpanderPeerIsIExpandCollapseProvider()
        {
            Expander item = new Expander();
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => provider = FrameworkElementAutomationPeer.CreatePeerForElement(item) as IExpandCollapseProvider,
                () => Assert.IsNotNull(provider, "ExpanderAutomationPeer should implement IExpandCollapseProvider!"));
        }
예제 #13
0
        private static void HandleExpandCollapseStateProperty(ProxySimple el, IntPtr hwnd, int eventId)
        {
            IExpandCollapseProvider expandCollapse = el.GetPatternProvider(ExpandCollapsePattern.Pattern) as IExpandCollapseProvider;

            if (expandCollapse == null)
            {
                return;
            }

            RaisePropertyChangedEvent(el, ExpandCollapsePattern.ExpandCollapseStateProperty, expandCollapse.ExpandCollapseState);
        }
예제 #14
0
 internal ExpandCollapsePattern(IExpandCollapseProvider source, AutomationElement element, bool cached)
 {
     this.element = element;
     this.cached  = cached;
     this.Source  = source;
     currentInfo  = new ExpandCollapsePatternInformation(this, false);
     if (cached)
     {
         cachedInfo = new ExpandCollapsePatternInformation(this, true);
     }
 }
        public virtual void TreeViewItemPeerCollapsingNoItems()
        {
            TreeViewItem item = new TreeViewItem();
            TreeViewItemAutomationPeer peer     = null;
            IExpandCollapseProvider    provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Collapse());
        }
예제 #16
0
        public virtual void AccordionItemPeerExpandStateNoItems()
        {
            AccordionItem item = new AccordionItem();
            AccordionItemAutomationPeer peer     = null;
            IExpandCollapseProvider     provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as AccordionItemAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => Assert.AreEqual(ExpandCollapseState.Collapsed, provider.ExpandCollapseState, "Unexpected ExpandCollapseState!"));
        }
예제 #17
0
        /// <summary>Hides all nodes, controls, or content that are descendants of the control.</summary>
        // Token: 0x06002873 RID: 10355 RVA: 0x000BC6D8 File Offset: 0x000BA8D8
        void IExpandCollapseProvider.Collapse()
        {
            TreeViewItemAutomationPeer treeViewItemAutomationPeer = this.GetWrapperPeer() as TreeViewItemAutomationPeer;

            if (treeViewItemAutomationPeer != null)
            {
                IExpandCollapseProvider expandCollapseProvider = treeViewItemAutomationPeer;
                expandCollapseProvider.Collapse();
                return;
            }
            base.ThrowElementNotAvailableException();
        }
        public virtual void ExpanderPeerSupportsExpandCollapse()
        {
            Expander item = new Expander();
            ExpanderAutomationPeer  peer     = null;
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as ExpanderAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => Assert.IsNotNull(provider, "IExpandCollapseProvider peer should not be null!"));
        }
        public virtual void ExpanderPeerExpandStateCollapsed()
        {
            Expander item = new Expander();
            ExpanderAutomationPeer  peer     = null;
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as ExpanderAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => Assert.AreEqual(ExpandCollapseState.Collapsed, provider.ExpandCollapseState, "Unexpected ExpandCollapseState!"));
        }
예제 #20
0
        private IExpandCollapseProvider GetExpandCollapseProvider(FrameworkElement element)
        {
            AutomationPeer peer = FrameworkElementAutomationPeer.CreatePeerForElement(element);

            Assert.IsNotNull(peer, "CreatePeerForElement #0");

            IExpandCollapseProvider expandCollapse
                = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider;

            Assert.IsNotNull(expandCollapse, "ExpandCollapseProvider  #0");
            return(expandCollapse);
        }
예제 #21
0
        public virtual void AccordionItemPeerExpands()
        {
            AccordionItem item = new AccordionItem();
            AccordionItemAutomationPeer peer     = null;
            IExpandCollapseProvider     provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as AccordionItemAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Expand(),
                () => Assert.IsTrue(item.IsSelected, "Item should be expanded!"));
        }
        public virtual void PickerPeerCollapseCollapsed()
        {
            Picker item = PickerInstance;
            PickerAutomationPeer    peer     = null;
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as PickerAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Collapse(),
                () => Assert.IsFalse(item.IsDropDownOpen, "Item should be collapsed!"));
        }
        public virtual void ExpanderPeerCollapseCollapsed()
        {
            Expander item = new Expander();
            ExpanderAutomationPeer  peer     = null;
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as ExpanderAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Collapse(),
                () => Assert.IsFalse(item.IsExpanded, "Item should be collapsed!"));
        }
        public virtual void TreeViewItemPeerExpandStateExpanded()
        {
            TreeViewItem item = new TreeViewItem {
                IsExpanded = true, ItemsSource = new int[] { 1, 2, 3 }
            };
            TreeViewItemAutomationPeer peer     = null;
            IExpandCollapseProvider    provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => Assert.AreEqual(ExpandCollapseState.Expanded, provider.ExpandCollapseState, "Unexpected ExpandCollapseState!"));
        }
        public virtual void ExpanderPeerCollapseDisabled()
        {
            Expander item = new Expander {
                IsEnabled = false
            };
            ExpanderAutomationPeer  peer     = null;
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as ExpanderAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Collapse());
        }
        // Token: 0x0600276E RID: 10094 RVA: 0x000B9FD8 File Offset: 0x000B81D8
        internal override void RealizeCore()
        {
            ComboBox comboBox = base.ItemsControlAutomationPeer.Owner as ComboBox;

            if (comboBox != null)
            {
                IExpandCollapseProvider expandCollapseProvider = ((IExpandCollapseProvider)UIElementAutomationPeer.FromElement(comboBox)) as ComboBoxAutomationPeer;
                if (expandCollapseProvider.ExpandCollapseState != ExpandCollapseState.Expanded)
                {
                    expandCollapseProvider.Expand();
                }
            }
            base.RealizeCore();
        }
        public virtual void PickerPeerExpandDisabled()
        {
            Picker item = PickerInstance;

            item.IsEnabled = false;
            PickerAutomationPeer    peer     = null;
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as PickerAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Expand());
        }
        ///
        void IExpandCollapseProvider.Collapse()
        {
            TreeViewItemAutomationPeer wrapperPeer = GetWrapperPeer() as TreeViewItemAutomationPeer;

            if (wrapperPeer != null)
            {
                IExpandCollapseProvider iExpandCollapseProvider = wrapperPeer as IExpandCollapseProvider;
                iExpandCollapseProvider.Collapse();
            }
            else
            {
                ThrowElementNotAvailableException();
            }
        }
예제 #29
0
        ///For ComboBoxItem for which peer is this element only, scrolling should happen when the pop-up is expanded.
        internal override void RealizeCore()
        {
            ComboBox parent = ItemsControlAutomationPeer.Owner as ComboBox;

            if (parent != null)
            {
                IExpandCollapseProvider iecp = (IExpandCollapseProvider)UIElementAutomationPeer.FromElement(parent) as ComboBoxAutomationPeer;
                if (iecp.ExpandCollapseState != ExpandCollapseState.Expanded)
                {
                    iecp.Expand();
                }
            }
            base.RealizeCore();
        }
예제 #30
0
        public virtual void AccordionItemPeerExpandDisabled()
        {
            AccordionItem item = new AccordionItem {
                IsEnabled = false
            };
            AccordionItemAutomationPeer peer     = null;
            IExpandCollapseProvider     provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as AccordionItemAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Expand());
        }
        public virtual void PickerPeerExpandStateExpanded()
        {
            Picker item = PickerInstance;

            item.IsDropDownOpen = true;

            PickerAutomationPeer    peer     = null;
            IExpandCollapseProvider provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as PickerAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => Assert.AreEqual(ExpandCollapseState.Expanded, provider.ExpandCollapseState, "Unexpected ExpandCollapseState!"));
        }
        public virtual void TreeViewItemPeerCollapseCollapsed()
        {
            TreeViewItem item = new TreeViewItem {
                ItemsSource = new int[] { 1, 2, 3 }
            };
            TreeViewItemAutomationPeer peer     = null;
            IExpandCollapseProvider    provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as TreeViewItemAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Collapse(),
                () => Assert.IsFalse(item.IsExpanded, "Item should be collapsed!"));
        }
예제 #33
0
        public virtual void AccordionItemPeerCollapse()
        {
            AccordionItem item = new AccordionItem {
                IsSelected = true
            };
            AccordionItemAutomationPeer peer     = null;
            IExpandCollapseProvider     provider = null;

            TestAsync(
                item,
                () => peer     = FrameworkElementAutomationPeer.CreatePeerForElement(item) as AccordionItemAutomationPeer,
                () => provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider,
                () => provider.Collapse(),
                () => Thread.Sleep(40),
                () => Assert.IsFalse(item.IsSelected, "Item should be collapsed!"));
        }
예제 #34
0
        public override void OnRefStateSet(ref Atk.StateSet states)
        {
            IExpandCollapseProvider expandCollapse
                = peer.GetPattern(PatternInterface.ExpandCollapse)
                  as IExpandCollapseProvider;

            if (expandCollapse != null)
            {
                var state = expandCollapse.ExpandCollapseState;

                // If it's not a leaf, it can be expanded
                if (state != ExpandCollapseState.LeafNode)
                {
                    states.AddState(Atk.StateType.Expandable);
                }

                if (state == ExpandCollapseState.Expanded ||
                    state == ExpandCollapseState.PartiallyExpanded)
                {
                    states.AddState(Atk.StateType.Expanded);
                }
                else
                {
                    states.RemoveState(Atk.StateType.Expanded);
                }
            }

            IToggleProvider toggle
                = peer.GetPattern(PatternInterface.Toggle)
                  as IToggleProvider;

            if (toggle != null)
            {
                states.RemoveState(Atk.StateType.Checked);
                states.RemoveState(Atk.StateType.Indeterminate);

                var state = toggle.ToggleState;
                if (state == ToggleState.On)
                {
                    states.AddState(Atk.StateType.Checked);
                }
                else if (state == ToggleState.Indeterminate)
                {
                    states.AddState(Atk.StateType.Indeterminate);
                }
            }
        }
        //-----------------------------------------------------
        // 
        //  Constructors
        // 
        //----------------------------------------------------- 

        #region Constructors 

        private ExpandCollapseProviderWrapper( AutomationPeer peer, IExpandCollapseProvider iface )
        {
            _peer = peer; 
            _iface = iface;
        } 
예제 #36
0
파일: MenuItem.cs 프로젝트: mono/uia2atk
		public override void RaiseAutomationPropertyChangedEvent (AutomationPropertyChangedEventArgs e)
		{
			if (e.Property.Id == AutomationElementIdentifiers.IsOffscreenProperty.Id) {
				selected = (bool) e.NewValue ? false : selected;
				NotifyStateChange (Atk.StateType.Showing);
			} else if (e.Property.Id == AutomationElementIdentifiers.HasKeyboardFocusProperty.Id) {
				NotifyStateChange (Atk.StateType.Selected, (bool) e.NewValue);
				base.RaiseAutomationPropertyChangedEvent (e);
			} else if (e.Property == AutomationElementIdentifiers.IsTogglePatternAvailableProperty) {
				toggleProvider = (IToggleProvider)
					Provider.GetPatternProvider (TogglePatternIdentifiers.Pattern.Id);
				NotifyStateChange (Atk.StateType.Checked, Checked);
			} else if (e.Property == AutomationElementIdentifiers.IsInvokePatternAvailableProperty) {
				invokeProvider = (IInvokeProvider)
					Provider.GetPatternProvider (InvokePatternIdentifiers.Pattern.Id);
			} else if (e.Property == AutomationElementIdentifiers.IsExpandCollapsePatternAvailableProperty) {
				expandCollapseProvider = (IExpandCollapseProvider)
					Provider.GetPatternProvider (ExpandCollapsePatternIdentifiers.Pattern.Id);
			} else if (e.Property == AutomationElementIdentifiers.IsSelectionItemPatternAvailableProperty) {
				selectionItemProvider = (ISelectionItemProvider)
					Provider.GetPatternProvider (SelectionItemPatternIdentifiers.Pattern.Id);
				NotifyStateChange (Atk.StateType.Checked, SelectionItemSelected);
			} else {
				base.RaiseAutomationPropertyChangedEvent (e);
			}
		}