public override void Start()
        {
            InitializeAddFactories();
            _selectedAddFactory = new PresetFactoryDescriptor(PresetVoiLutOperationFactories.GetFactory(LinearPresetVoiLutOperationFactory.FactoryName));

            _voiLutPresets = new Table <PresetVoiLut>();

            _availableModalities = new List <string>(StandardModalities.Modalities);
            _availableModalities.Sort();

            _presetVoiLutGroups = PresetVoiLutSettings.DefaultInstance.GetPresetGroups().Clone();

            foreach (string modality in _availableModalities)
            {
                if (!_presetVoiLutGroups.Contains(new PresetVoiLutGroup(modality)))
                {
                    _presetVoiLutGroups.Add(new PresetVoiLutGroup(modality));
                }
            }

            _presetVoiLutGroups.Sort();

            _selectedPresetVoiLutGroup = _presetVoiLutGroups[0];

            InitializeMenuAndToolbar();
            InitializeTable();
            PopulateTable();

            Selection = null;

            base.Start();
        }
        private void DeserializeGroupPresets(PresetVoiLutCollection presets, XmlNodeList presetNodes)
        {
            foreach (XmlElement presetNode in presetNodes)
            {
                string keyStrokeAttribute = presetNode.GetAttribute("keystroke");
                XKeys  keyStroke          = XKeys.None;
                if (!String.IsNullOrEmpty(keyStrokeAttribute))
                {
                    keyStroke = (XKeys)_xkeysConverter.ConvertFromInvariantString(keyStrokeAttribute);
                }

                string factoryName = presetNode.GetAttribute("factory");

                IPresetVoiLutOperationFactory factory = PresetVoiLutOperationFactories.GetFactory(factoryName);
                if (factory == null)
                {
                    continue;
                }

                PresetVoiLutConfiguration configuration = PresetVoiLutConfiguration.FromFactory(factory);

                XmlNodeList configurationItems = presetNode.SelectNodes("configuration/item");
                foreach (XmlElement configurationItem in configurationItems)
                {
                    configuration[configurationItem.GetAttribute("key")] = configurationItem.GetAttribute("value");
                }

                try
                {
                    IPresetVoiLutOperation operation = factory.Create(configuration);
                    PresetVoiLut           preset    = new PresetVoiLut(operation);
                    preset.KeyStroke = keyStroke;
                    presets.Add(preset);
                }
                catch (Exception e)
                {
                    Platform.Log(LogLevel.Error, e);
                    continue;
                }
            }
        }