This object wraps a number of plugins that work together to create a functionnality. These plugins form a bundle that are started and stopped togther in order to make sure the system stays stable. Handles setting explicitely the plugins to start and those to stop.
 public ConfigImplementationSelectorItem( ConfigManager configManager, PluginCluster pluginCluster )
     : base(configManager)
 {
     _cluster = pluginCluster;
     SelectItem = new VMCommand( OnSelectItem, CanSelectItem );
     OpenEditor = new VMCommand( StartPluginEditor, () => CanOpenEditor );
 }
        public ConfigFeatureStarter( ConfigManager configManager, ISimplePluginRunner runner, PluginCluster pluginCluster )
            : base(configManager)
        {
            _pluginCluster = pluginCluster;
            _runner = runner;
            _runner.PluginHost.StatusChanged += ( o, e ) =>
            {
                if( _pluginCluster.StartWithPlugin.Contains( e.PluginProxy.PluginKey.PluginId ) || _pluginCluster.StopWithPlugin.Contains( e.PluginProxy.PluginKey.PluginId ) )
                {
                    NotifyOfPropertyChange( () => Start );
                    NotifyOfPropertyChange( () => Stop );
                    NotifyOfPropertyChange( () => IsRunning );
                    NotifyOfPropertyChange( () => IsRunnable );
                }
            };

            Start = new SimpleCommand( StartPlugin, CanStart );
            Stop = new SimpleCommand( StopPlugin );
        }
 public ConfigImplementationSelectorItem( ConfigManager configManager, PluginCluster pluginCluster, Guid pluginEditor, string groupName )
     : this(configManager, pluginCluster, pluginEditor)
 {
     _groupName = groupName;
 }
 public ConfigImplementationSelectorItem( ConfigManager configManager, PluginCluster pluginCluster, Guid pluginEditor )
     : this(configManager, pluginCluster)
 {
     _pluginEditor = pluginEditor;
 }