private ObservableCollection <CheckableTreeViewItem> findChildren(CheckableTreeViewItem parent, IMa root)
        {
            var         tempList   = new ObservableCollection <CheckableTreeViewItem>();
            IEnumerator enumerator = root.Asmas.GetEnumerator();

            while (enumerator.MoveNext())
            {
                var currentAsma = (IAsma)enumerator.Current;
                if (currentAsma.AssociatedBieAggregator.IsAbie)
                {
                    IAbie currentAbie = currentAsma.AssociatedBieAggregator.Abie;
                    if (findAbie(currentAbie.Name, rootElement.CandidateAbies) == null)
                    {
                        rootElement.CandidateAbies.Add(new CandidateAbie(currentAbie,
                                                                         AbieFindChildren(currentAbie)));
                    }
                    var currentItem = new CheckableTreeViewItem(true, currentAbie.Name, idCounter++);
                    currentItem.Children = findChildren(currentItem, currentAbie);
                    currentItem.Parent   = parent;
                    tempList.Add(currentItem);
                }
                else if (currentAsma.AssociatedBieAggregator.IsMa)
                {
                    IMa currentMa = currentAsma.AssociatedBieAggregator.Ma;

                    var currentItem = new CheckableTreeViewItem(currentMa.Name, idCounter++);
                    currentItem.Children = findChildren(currentItem, currentMa);
                    currentItem.Parent   = parent;
                    tempList.Add(currentItem);
                }
            }
            return(tempList);
        }
 private void checkChildren(CheckableTreeViewItem itemToCheck)
 {
     foreach (CheckableTreeViewItem child in itemToCheck.Children)
     {
         child.Checked = itemToCheck.Checked;
         SetCheckedCandidateAbie(child);
         //var abie = findAbie(child.Text, rootElement.CandidateAbies);
         //abie.Checked = itemToCheck.Checked;
         //child.Checked = itemToCheck.Checked;
         //if (child.Children != null)
         //{
         //    checkChildren(child);
         //}
     }
 }
        private ObservableCollection <CheckableTreeViewItem> findChildren(CheckableTreeViewItem parent, IAbie root)
        {
            var         tempList   = new ObservableCollection <CheckableTreeViewItem>();
            IEnumerator enumerator = root.Asbies.GetEnumerator();

            while (enumerator.MoveNext())
            {
                var   currentAsbie = (IAsbie)enumerator.Current;
                IAbie currentAbie  = currentAsbie.AssociatedAbie;
                var   currentItem  = new CheckableTreeViewItem(true, currentAbie.Name, idCounter++);
                currentItem.Children = findChildren(currentItem, currentAbie);
                currentItem.Parent   = parent;
                tempList.Add(currentItem);
            }
            return(tempList);
        }
 private void checkAllParents(CheckableTreeViewItem itemToCheck)
 {
     if (itemToCheck.Parent != null)
     {
         itemToCheck.Parent.Checked = itemToCheck.Checked;
         SetCheckedCandidateAbie(itemToCheck.Parent);
         //if (itemToCheck.Checked)
         //{
         //    var abie = findAbie(itemToCheck.Parent.Text, rootElement.CandidateAbies);
         //    if (abie != null)
         //    {
         //        abie.Checked = itemToCheck.Checked;
         //        itemToCheck.Parent.Checked = itemToCheck.Checked;
         //    }
         //}
         //checkAllParents(itemToCheck.Parent);
     }
 }
        private List <CheckableTreeViewItem> buildCheckableTreeView(CandidateRootElement ma)
        {
            var checkableTreeViewItems = new List <CheckableTreeViewItem>();

            foreach (IAsma asma in ma.OriginalMa.Asmas)
            {
                if (asma.AssociatedBieAggregator.IsMa)
                {
                    var currentItem = new CheckableTreeViewItem(asma.AssociatedBieAggregator.Ma.Name, idCounter++)
                    {
                        Parent = null
                    };
                    currentItem.Children = findChildren(currentItem, asma.AssociatedBieAggregator.Ma);

                    checkableTreeViewItems.Add(currentItem);
                }
                else if (asma.AssociatedBieAggregator.IsAbie)
                {
                    rootElement.CandidateAbies.Add(new CandidateAbie(asma.AssociatedBieAggregator.Abie,
                                                                     AbieFindChildren(asma.AssociatedBieAggregator.Abie)));
                    var currentItem = new CheckableTreeViewItem(true, asma.AssociatedBieAggregator.Abie.Name,
                                                                idCounter++)
                    {
                        Parent = null
                    };
                    currentItem.Children = findChildren(currentItem, asma.AssociatedBieAggregator.Abie);

                    checkableTreeViewItems.Add(currentItem);
                }
            }
            //also visualize Root Element in Tree!
            var root = new CheckableTreeViewItem(ma.OriginalMa.Name, idCounter++)
            {
                Children = new ObservableCollection <CheckableTreeViewItem>(checkableTreeViewItems)
            };

            return(new List <CheckableTreeViewItem> {
                root
            });
        }
        public void SetSelectedCandidateAbie(CheckableTreeViewItem checkableTreeViewItem)
        {
            mPotentialBbieItems = new List <CheckableItem>();
            CandidateAbie abie = findAbie(checkableTreeViewItem.Text, rootElement.CandidateAbies);

            if (abie != null)
            {
                if (abie.PotentialBbies == null)
                {
                    var bbies = new List <IBbie>(abie.OriginalAbie.Bbies);
                    abie.PotentialBbies =
                        new List <PotentialBbie>(
                            bbies.ConvertAll(potBbie => new PotentialBbie(potBbie.Name)));
                }
                if (abie.PotentialAsbies == null)
                {
                    var asbies = new List <IAsbie>(abie.OriginalAbie.Asbies);
                    abie.PotentialAsbies =
                        new List <PotentialAsbie>(
                            asbies.ConvertAll(
                                potAsbie =>
                                new PotentialAsbie(potAsbie.Name, (potAsbie.AssociatingAbie.Equals(potAsbie)))));
                }
                mPotentialBbieItems =
                    new List <CheckableItem>(
                        abie.PotentialBbies.ConvertAll(
                            potBbie => new CheckableItem(potBbie.Checked, potBbie.Name, true, false, Cursors.Arrow)));

                mPotentialAsbieItems =
                    new List <IOConnectionItem>(
                        abie.PotentialAsbies.ConvertAll(
                            potAsbie => new IOConnectionItem(potAsbie.Name, potAsbie.Incoming, potAsbie.Checked)));

                abie.Selected = true;
                UnSelectAllButAbie(abie.Name, rootElement.CandidateAbies);
            }
            PotentialBbieItems  = mPotentialBbieItems;
            PotentialAsbieItems = mPotentialAsbieItems;
        }
        public void SetCheckedCandidateAbie(CheckableTreeViewItem checkableTreeViewItem)
        {
            if (checkableTreeViewItem != null)
            {
                CandidateAbie abie = findAbie(checkableTreeViewItem.Text, rootElement.CandidateAbies);
                if (abie == null)
                {
                    return; // it's ok.. we found an MA
                }
                //check all related Nodes from tree if checked is true
                if (checkableTreeViewItem.Checked)
                {
                    checkAllParents(checkableTreeViewItem);
                }
                else
                {
                    checkChildren(checkableTreeViewItem);
                }
                //checkChildren(result, checkedValue); change from 08.04.2010 => only uncheck children

                if (abie.PotentialBbies == null)
                {
                    var bbies = new List <IBbie>(abie.OriginalAbie.Bbies);
                    abie.PotentialBbies =
                        new List <PotentialBbie>(bbies.ConvertAll(potBbie => new PotentialBbie(potBbie.Name)));
                }

                foreach (PotentialBbie bbie in abie.PotentialBbies)
                {
                    bbie.Checked = checkableTreeViewItem.Checked;
                }

                abie.Checked       = checkableTreeViewItem.Checked;
                CandidateAbieItems = new ObservableCollection <CheckableTreeViewItem>(mCandidateAbieItems);
            }
        }