private void NoOfRebarsChanged(object sender, EventArgs e)
        {
            PhaseItem phaseItem = (PhaseItem)sender;

            if (phaseItem.RebarList.Count == 0)
            {
                RemovePhaseItem(phaseItem);
            }
        }
 public void RemovePhaseItem(PhaseItem phaseItemToRemove)
 {
     if (phaseItemToRemove.RebarList.Count > 0)
     {
         RebarVisualizator.SetTempColor(phaseItemToRemove.RebarList, Data.NotAnalyzedColor);
     }
     colors.Enqueue(phaseItemToRemove.Color);
     PhaseItemsList.Remove(phaseItemToRemove);
 }
        public void ModifyPhase()
        {
            PhaseItem phaseItemToSet = PhaseItemsList.First(ph => ph.Selected);

            foreach (Reinforcement rebar in rebarsSelector)
            {
                Phase phase = rebar.WhatIsMyPhase();
                if (rebar.SetPhase(phaseItemToSet.Phase))
                {
                    RemoveRebar(rebar, phase);
                    AddRebar(rebar);
                }
            }
        }
        private void PhaseItemsList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                PhaseItem addedPhaseItem = (PhaseItem)e.NewItems[0];
                if (addedPhaseItem != null)
                {
                    addedPhaseItem.NoOfRebarsChanged += NoOfRebarsChanged;
                }
                break;

            case NotifyCollectionChangedAction.Remove:
                PhaseItem removedPhaseItem = (PhaseItem)e.OldItems[0];
                if (removedPhaseItem != null)
                {
                    removedPhaseItem.NoOfRebarsChanged -= NoOfRebarsChanged;
                }
                break;
            }
        }