Пример #1
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();
        }
Пример #2
0
        public static void SetWidthFromItems(this ComboBox comboBox)
        {
            double comboBoxWidth = 19;// comboBox.DesiredSize.Width;

            // Create the peer and provider to expand the comboBox in code behind.
            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 + 10;
                    // Remove the event handler.
                    comboBox.ItemContainerGenerator.StatusChanged -= eventHandler;
                    comboBox.DropDownOpened -= eventHandler;
                    provider.Collapse();
                }
            });
            comboBox.ItemContainerGenerator.StatusChanged += eventHandler;
            comboBox.DropDownOpened += eventHandler;
            // Expand the comboBox to generate all its ComboBoxItem's.
            provider.Expand();
        }
Пример #3
0
        public static async Task <bool> SimulateSetTextAsync(this ComboBox comboBox, JoinableTaskFactory joinableTaskFactory, string value)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            await joinableTaskFactory.SwitchToMainThreadAsync();

            if (comboBox.Text == value)
            {
                return(true);
            }

            if (!comboBox.IsEditable)
            {
                throw new InvalidOperationException("The combo box is not editable.");
            }

            if (!comboBox.IsEnabled || !comboBox.IsVisible)
            {
                return(false);
            }

            IValueProvider valueProvider = new ComboBoxAutomationPeer(comboBox);

            valueProvider.SetValue(value);

            // Wait for changes to propagate
            await Task.Yield();

            return(true);
        }
Пример #4
0
        public static async Task <bool> SimulateExpandAsync(
            this ComboBox comboBox,
            JoinableTaskFactory joinableTaskFactory
            )
        {
            await joinableTaskFactory.SwitchToMainThreadAsync();

            if (comboBox.IsDropDownOpen)
            {
                return(true);
            }

            if (!comboBox.IsEnabled || !comboBox.IsVisible)
            {
                return(false);
            }

            IExpandCollapseProvider expandCollapseProvider = new ComboBoxAutomationPeer(comboBox);

            expandCollapseProvider.Expand();

            // Wait for changes to propagate
            await Task.Yield();

            return(true);
        }
Пример #5
0
        public static async Task <bool> SimulateSelectItemAsync(
            this ComboBox comboBox,
            JoinableTaskFactory joinableTaskFactory,
            string itemText,
            bool mustExist = true
            )
        {
            await joinableTaskFactory.SwitchToMainThreadAsync();

            if (comboBox.Text == itemText)
            {
                return(true);
            }

            if (!await comboBox.SimulateExpandAsync(joinableTaskFactory))
            {
                return(false);
            }

            var peer = new ComboBoxAutomationPeer(comboBox);

            var children     = peer.GetChildren().OfType <ListBoxItemAutomationPeer>().ToList();
            var existingItem = children.Find(x => x.GetName() == itemText);

            if (existingItem is null)
            {
                if (mustExist)
                {
                    throw new InvalidOperationException(
                              $"Item '{itemText}' was not found in the combo box."
                              );
                }

                // Collapse the combo box, and then set the value explicitly
                if (
                    !await comboBox.SimulateCollapseAsync(joinableTaskFactory) ||
                    !await comboBox.SimulateSetTextAsync(joinableTaskFactory, itemText)
                    )
                {
                    return(false);
                }

                return(true);
            }
            else
            {
                ISelectionItemProvider selectionItemProvider = existingItem;
                selectionItemProvider.Select();

                // Wait for changes to propagate
                await Task.Yield();

                if (!await comboBox.SimulateCollapseAsync(joinableTaskFactory))
                {
                    return(false);
                }

                return(true);
            }
        }
Пример #6
0
        //public string i9DrowndownType
        //{
        //    get { return (string)base.GetValue(i9DrowndownTypeProperty); }
        //    set { base.SetValue(i9DrowndownTypeProperty, value); }
        //}

        //public string i9BindColumn
        //{
        //    get { return (string)base.GetValue(i9BindColumnProperty); }
        //    set { base.SetValue(i9BindColumnProperty, value); }
        //}


        protected override void OnGotFocus(System.Windows.RoutedEventArgs e)
        {
            base.OnGotFocus(e);
            ComboBoxAutomationPeer peer     = new ComboBoxAutomationPeer(this);
            List <AutomationPeer>  children = peer.GetChildren();

            if (children != null && children.Count == 1 && children[0] is TextBoxAutomationPeer)
            {
                ((TextBox)((TextBoxAutomationPeer)children[0]).Owner).MaxLength = maxLength;
            }
        }
Пример #7
0
        private void OnLoaded(object sender, RoutedEventArgs e)
        {
            var desiredWidth = AssociatedObject.DesiredSize.Width;

            // Create the peer and provider to expand the comboBox in code behind.
            var peer     = new ComboBoxAutomationPeer(AssociatedObject);
            var provider = peer.GetPattern(PatternInterface.ExpandCollapse) as IExpandCollapseProvider;

            if (provider == null)
            {
                return;
            }

            EventHandler[] handler = { null };      // array usage prevents access to modified closure
            handler[0] = new EventHandler(delegate
            {
                if (!AssociatedObject.IsDropDownOpen || AssociatedObject.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
                {
                    return;
                }

                double largestWidth = 0;
                foreach (var item in AssociatedObject.Items)
                {
                    var comboBoxItem = AssociatedObject.ItemContainerGenerator.ContainerFromItem(item) as ComboBoxItem;
                    if (comboBoxItem == null)
                    {
                        continue;
                    }

                    comboBoxItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
                    if (comboBoxItem.DesiredSize.Width > largestWidth)
                    {
                        largestWidth = comboBoxItem.DesiredSize.Width;
                    }
                }

                AssociatedObject.Width = desiredWidth + largestWidth;

                // Remove the event handler.
                AssociatedObject.ItemContainerGenerator.StatusChanged -= handler[0];
                AssociatedObject.DropDownOpened -= handler[0];
                provider.Collapse();
            });

            AssociatedObject.ItemContainerGenerator.StatusChanged += handler[0];
            AssociatedObject.DropDownOpened += handler[0];

            // Expand the comboBox to generate all its ComboBoxItem's.
            provider.Expand();
        }
Пример #8
0
        public static void SetWidthFromItems(this ComboBox comboBox)
        {
            const double comboBoxWidth = 19; // comboBox.DesiredSize.Width;

            // Create the peer and provider to expand the comboBox in code behind.
            ComboBoxAutomationPeer  peer         = new ComboBoxAutomationPeer(comboBox);
            IExpandCollapseProvider provider     = (IExpandCollapseProvider)peer.GetPattern(PatternInterface.ExpandCollapse);
            EventHandler            eventHandler = null;

            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;
                        if (comboBoxItem != null)
                        {
                            comboBoxItem.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
                            if (comboBoxItem.DesiredSize.Width > width)
                            {
                                width = comboBoxItem.DesiredSize.Width;
                            }
                        }
                    }
                    comboBox.Width = comboBoxWidth + width;
                    // Remove the event handler.
                    comboBox.ItemContainerGenerator.StatusChanged -= eventHandler;
                    comboBox.DropDownOpened -= eventHandler;
                    provider?.Collapse();
                }
            };
            comboBox.ItemContainerGenerator.StatusChanged += eventHandler;
            comboBox.DropDownOpened += eventHandler;
            // Expand the comboBox to generate all its ComboBoxItem's.
            provider?.Expand();
        }
Пример #9
0
        private void demoMode() // DemoMode.DemoModeWindow demoModeWindow
        {
            #region unos učionice

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = "\nI - Dodavanje učionice\n"
                                                             + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber +
                                                             ". Kliknemo na dugme Dodaj učionicu u gornjem desnom uglu ekrana\n"
                                                             + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() => {
                ButtonAutomationPeer peer =
                    new ButtonAutomationPeer(dodajUcionicuDugme);
                IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke)
                                             as IInvokeProvider;

                peer.SetFocus();
                invokeProv.Invoke();
            });
            Thread.Sleep(3000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Kliknemo na polje identifikatora učionice\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() => {
                TextBoxAutomationPeer peer = new TextBoxAutomationPeer(ClassroomForma.Identificator);
                peer.SetFocus();
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Unesemo identifikator nove učionice\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() => { ClassroomForma.Identificator.Text = "L-52"; });
            Thread.Sleep(2000);

            Thread.Sleep(3000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Kliknemo na polje opisa učionice\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() => {
                TextBoxAutomationPeer peer = new TextBoxAutomationPeer(ClassroomForma.Description);
                peer.SetFocus();
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Unesemo opis učionice\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() => { ClassroomForma.Description.Text = "Opis učionice"; });
            Thread.Sleep(2000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Unesemo broj radnika\n\n" + demoModeWindow.currentDemoDescription.Text;
            });
            Thread.Sleep(2500);

            Dispatcher.Invoke(() => { ClassroomForma.brojMijestaUpDown.Value = 3; });
            Thread.Sleep(2000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Odaberemo operativni sistem\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() => {
                ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(ClassroomForma.OperatingSystem);
                peer.SetFocus();
                IExpandCollapseProvider provider = (IExpandCollapseProvider)
                                                   peer.GetPattern(PatternInterface.ExpandCollapse);
                provider.Expand();
            });

            Thread.Sleep(2000);

            Dispatcher.Invoke(() => { ClassroomForma.OperatingSystem.SelectedIndex = 2; });

            Thread.Sleep(2000);

            Dispatcher.Invoke(() => {
                ComboBoxAutomationPeer peer = new ComboBoxAutomationPeer(ClassroomForma.OperatingSystem);
                peer.SetFocus();
                IExpandCollapseProvider provider = (IExpandCollapseProvider)
                                                   peer.GetPattern(PatternInterface.ExpandCollapse);
                provider.Collapse();
            });

            Thread.Sleep(3000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Odaberemo instalirani softver iz liste\n\n" + demoModeWindow.currentDemoDescription.Text;
            });
            Thread.Sleep(5500);

            Dispatcher.Invoke(() => {
                ListBoxAutomationPeer peer = new ListBoxAutomationPeer(ClassroomForma.SoftwaresList);
                peer.SetFocus();
                ClassroomForma.SoftwaresList.SelectedIndex = 2;
            });
            Thread.Sleep(2000);
            Dispatcher.Invoke(() => { ClassroomForma.SoftwaresList.SelectedIndex = 4; });

            Thread.Sleep(3000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Označimo opremu koja postoji. Tablu nemamo, ali imamo projektor\n\n" + demoModeWindow.currentDemoDescription.Text;
            });
            Thread.Sleep(5500);

            Dispatcher.Invoke(() => {
                ClassroomForma.TableNeeded.IsChecked     = false;
                ClassroomForma.ProjectorNeeded.IsChecked = true;
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Potvrdimo unos\n\n" + demoModeWindow.currentDemoDescription.Text;
            });
            Thread.Sleep(3000);
            Dispatcher.Invoke(() =>
            {
                ButtonAutomationPeer peer =
                    new ButtonAutomationPeer(ClassroomForma.Potvrda);
                peer.SetFocus();
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() =>
            {
                ButtonAutomationPeer peer  = new ButtonAutomationPeer(ClassroomForma.Potvrda);
                IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                invokeProv.Invoke();

                demoModeWindow.demoNumber = 0;
            });

            Thread.Sleep(1000);
            Console.WriteLine("444444444444");

            #endregion unos učionice

            #region pregled učionica
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = "\nII Pregled učionica\n\n" +
                                                             demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber +
                                                             ". Odaberemo meni Tabele\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);


            Dispatcher.Invoke(() =>
            {
                MenuItemAutomationPeer peer =
                    new MenuItemAutomationPeer(this.MeniTabele);

                IExpandCollapseProvider provider = (IExpandCollapseProvider)
                                                   peer.GetPattern(PatternInterface.ExpandCollapse);
                provider.Expand();
            });

            Thread.Sleep(2000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Odaberemo stavku Učionice\n\n"
                                                             + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(2000);

            Dispatcher.Invoke(() =>
            {
                MenuItemAutomationPeer peer = new MenuItemAutomationPeer(this.MeniItemUcionice);
                peer.SetFocus();
            });

            Thread.Sleep(2000);

            Dispatcher.Invoke(() =>
            {
                MenuItemAutomationPeer peer = new MenuItemAutomationPeer(this.MeniItemUcionice);
                IInvokeProvider invokeProv  = peer.GetPattern(PatternInterface.Invoke)
                                              as IInvokeProvider;

                peer.SetFocus();
                invokeProv.Invoke();
            });

            Thread.Sleep(2000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber + ". Sada vidimo tabelu sa učionicama" +
                                                             " gdje možemo svaku od njih obrisati ili izmijeniti\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            #endregion

            #region izmjena učionice
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = "\nIII Izmjena učionice\n\n" +
                                                             demoModeWindow.currentDemoDescription.Text;
            });
            Thread.Sleep(4000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber +
                                                             ". Izmijenićemo jednu učionicu, klikom na dugme Izmijeni u prvom redu\n\n" +
                                                             demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(4000);
            Dispatcher.Invoke(() =>
            {
                this.ClassroomTabela.ClassroomsList.SelectedItem = 1;
                ClassroomHandler.Instance.SetSelectedClassroom(ClassroomTabela.Classrooms[0], (MainWindow)Window.GetWindow(this));
                ((MainWindow)Window.GetWindow(this)).NovaUcionica_Show();
            });
            Thread.Sleep(4000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Kliknemo na polje opisa učionice\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() => {
                TextBoxAutomationPeer peer = new TextBoxAutomationPeer(ClassroomForma.Description);
                peer.SetFocus();
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Unesemo novi opis učionice\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() => { ClassroomForma.Description.Text = "Novi opis za L-42"; });

            Thread.Sleep(3000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Izmijenimo postojeću opremu. Kupili smo pametnu tablu.\n\n" + demoModeWindow.currentDemoDescription.Text;
            });
            Thread.Sleep(5000);

            Dispatcher.Invoke(() => {
                ClassroomForma.SmartTableNeeded.IsChecked = true;
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber
                                                             + ". Potvrdimo unos.\n\n" + demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);
            Dispatcher.Invoke(() =>
            {
                ButtonAutomationPeer peer =
                    new ButtonAutomationPeer(ClassroomForma.Potvrda);
                peer.SetFocus();
            });

            Thread.Sleep(2000);
            Dispatcher.Invoke(() =>
            {
                ButtonAutomationPeer peer  = new ButtonAutomationPeer(ClassroomForma.Potvrda);
                IInvokeProvider invokeProv = peer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                invokeProv.Invoke();
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber +
                                                             ". Nakon unosa ponovo vidimo prikaz svih učionica, te možemo vidjeti " +
                                                             "da je njen identifikator izmijenjen.\n\n" + demoModeWindow.currentDemoDescription.Text;

                demoModeWindow.demoNumber = 0;
            });

            Thread.Sleep(5000);
            #endregion

            #region brisanje učionice
            Dispatcher.Invoke(() =>
            {
                demoModeWindow.demoNumber = 0;
                demoModeWindow.currentDemoDescription.Text = "\nIV Brisanje učionice\n\n" +
                                                             demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(3000);

            Dispatcher.Invoke(() =>
            {
                demoModeWindow.currentDemoDescription.Text = demoModeWindow.demoNumber +
                                                             ". Obrisaćemo jednu učionicu, recimo prvu, klikom na dugme Obriši u prvom redu\n\n" +
                                                             demoModeWindow.currentDemoDescription.Text;
            });

            Thread.Sleep(4000);
            Dispatcher.Invoke(() =>
            {
                this.ClassroomTabela.ClassroomsList.SelectedItem = 1;
                ClassroomHandler.Instance.SetSelectedClassroom(ClassroomTabela.Classrooms[0], (MainWindow)Window.GetWindow(this));
                ClassroomHandler.Instance.Remove(ClassroomHandler.Instance.SelectedClassroom.Id, (MainWindow)Window.GetWindow(this));
            });
            Thread.Sleep(4000);
            #endregion
        }