private void _signalCheckStatusChanged(SignalTree e)
 {
     _updateSignals(e);
     if (SelectedStep != null)
     {
         //SelectedStep.UpdateInputOutputTree();
         SelectedStep.ThisStepInputsGroupedByType.SignalList = SampleDataMngr.SortSignalsByType(SelectedStep.InputChannels);
         if (SelectedStep is PreProcessStepViewModel)
         {
             //SampleDataMngr.GroupedSignalByPreProcessStepsInput.Add(SelectedStep.ThisStepInputsGroupedByType);
             SelectedStep.ThisStepOutputsGroupedByPMU.SignalList = SampleDataMngr.SortSignalByPMU(SelectedStep.OutputChannels);
             //var thisSelectedStep = SelectedStep as PreProcessStepViewModel;
             //if (thisSelectedStep.Model is Customization)
             //{
             //    SampleDataMngr.GroupedSignalByPreProcessStepsOutput.Add(SelectedStep.ThisStepOutputsGroupedByPMU);
             //}
         }
         //if (SelectedStep is SignatureSettingViewModel)
         //{
         //    SampleDataMngr.GroupedSignalBySignatureStepsInput.Add(SelectedStep.ThisStepInputsGroupedByType);
         //}
         //if (SelectedStep is DataWriterViewModel)
         //{
         //    SampleDataMngr.GroupedSignalByDataWriterStepsInput.Add(SelectedStep.ThisStepInputsGroupedByType);
         //}
     }
 }
 private void _addSignalsToPlot(SignalTree tree)
 {
     if (tree.Signal != null)
     {
         SelectedSignalPlotPanel.Signals.Add(tree.Signal);
     }
     else
     {
         foreach (var tr in tree.SignalList)
         {
             _addSignalsToPlot(tr);
         }
     }
 }
 private void _addSignalsToStep(SignalTree tree)
 {
     if (tree.Signal != null)
     {
         SelectedStep.AddSignal(tree.Signal);
     }
     else
     {
         foreach (var tr in tree.SignalList)
         {
             _addSignalsToStep(tr);
         }
     }
 }
 private void _removeSignalsFromPlot(SignalTree tree)
 {
     if (tree.Signal != null && SelectedSignalPlotPanel.Signals.Contains(tree.Signal))
     {
         SelectedSignalPlotPanel.Signals.Remove(tree.Signal);
     }
     else
     {
         if (tree.SignalList != null && tree.SignalList.Count > 0)
         {
             foreach (var tr in tree.SignalList)
             {
                 _removeSignalsFromPlot(tr);
             }
         }
     }
 }
 private void _removeSignalsFromStep(SignalTree tree)
 {
     if (tree.Signal != null && SelectedStep.InputChannels.Contains(tree.Signal))
     {
         SelectedStep.RemoveSignal(tree.Signal);
     }
     else
     {
         if (tree.SignalList != null && tree.SignalList.Count > 0)
         {
             foreach (var tr in tree.SignalList)
             {
                 _removeSignalsFromStep(tr);
             }
         }
     }
 }
        private void _updatePlot(SignalTree obj)
        {
            var tree = obj as SignalTree;

            if (SelectedSignalPlotPanel != null)
            {
                var needToUpdate = true;
                if ((bool)tree.IsChecked)
                {
                    //check to see if newly added signal has the same sampling rate as the already drawn ones.
                    if (SelectedSignalPlotPanel.Signals.Count > 0)
                    {
                        needToUpdate = _checkFreq(SelectedSignalPlotPanel.Signals[0].SamplingRate, tree);
                    }
                    if (needToUpdate)
                    {
                        //add signals to plot's signal list
                        _addSignalsToPlot(tree);
                    }
                }
                else
                {
                    //remove signals from plot's signal list
                    _removeSignalsFromPlot(tree);
                }
                if (needToUpdate)
                {
                    _drawSignals();
                    if (SelectedSignalPlotPanel.Signals.Count > 0 && InspectionAnalysisParams.Fs != SelectedSignalPlotPanel.Signals[0].SamplingRate)
                    {
                        InspectionAnalysisParams.Fs = SelectedSignalPlotPanel.Signals[0].SamplingRate;
                    }
                }
                else
                {
                    MessageBox.Show("Selected signal has a different sampling rate than the plotted ones.");
                }
            }
            else
            {
                MessageBox.Show("No plot is selected to add signal.");
                tree.ChangeIsCheckedStatus(false);
                tree.CheckDirectParent();
            }
        }
 private bool _checkFreq(int samplingRate, SignalTree tree)
 {
     if (tree.Signal != null)
     {
         return(tree.Signal.SamplingRate == samplingRate);
     }
     else
     {
         if (tree.SignalList != null && tree.SignalList.Count > 0)
         {
             return(_checkFreq(samplingRate, tree.SignalList[0]));
         }
         else
         {
             return(false);
         }
     }
 }
        private void _updateSignals(SignalTree e)
        {
            SignalTree tree = e as SignalTree;

            if (SelectedStep != null)
            {
                if ((bool)tree.IsChecked)
                {
                    _addSignalsToStep(tree);
                }
                else
                {
                    //remove signals from plot's signal list
                    _removeSignalsFromStep(tree);
                }
            }
            else
            {
                MessageBox.Show("No step is selected to add signal.");
                tree.ChangeIsCheckedStatus(false);
                tree.CheckDirectParent();
            }
        }
 private void _signalCheckStatusChanged(SignalTree e)
 {
     //MessageBox.Show("Draw signals now!");
     _updatePlot(e);
 }