public new static IEnumerable <Feature> GetAvailableFeatures(Area area)
        {
            foreach (Feature f in FeatureBasedDCM.GetAvailableFeatures(area))
            {
                yield return(f);
            }

            foreach (TimeSliceFeature f in Enum.GetValues(typeof(TimeSliceFeature)))
            {
                yield return(new Feature(typeof(TimeSliceFeature), f, null, null, f.ToString(), null));
            }

            IFeatureExtractor externalFeatureExtractor = InitializeExternalFeatureExtractor(typeof(TimeSliceDCM));

            if (externalFeatureExtractor != null)
            {
                foreach (Feature f in externalFeatureExtractor.GetAvailableFeatures(area))
                {
                    yield return(f);
                }
            }
        }
        public FeatureBasedDcmForm()
        {
            InitializeComponent();

            discreteChoiceModelOptions.trainingAreas.SelectedValueChanged += (o, e) =>
            {
                featureBasedDcmOptions.TrainingArea = discreteChoiceModelOptions.TrainingArea;
            };

            featureBasedDcmOptions.GetFeatures = new Func <Area, List <Feature> >(a => FeatureBasedDCM.GetAvailableFeatures(a).ToList());

            discreteChoiceModelOptions.RefreshAreas();
        }