/// <summary>
 /// Adds a command binding to a control for a specific user
 /// </summary>
 public virtual void AddBinding( ICommandUser user, CommandInputBinding binding )
 {
     ICommandInputBindingMonitor monitor = binding.CreateMonitor( m_MonitorFactory, user );
     GetSafeMonitorList( user ).Add( monitor );
     m_AllMonitors.Add( monitor );
     if ( m_Started )
     {
         monitor.Start( );
     }
 }
 /// <summary>
 /// Setup constructor
 /// </summary>
 /// <param name="binding">Input binding</param>
 /// <param name="user">Command user</param>
 public CommandBinaryInputBindingMonitor( CommandInputBinding binding, ICommandUser user )
     : base(binding, user)
 {
 }
 /// <summary>
 /// Creates a monitor for an unknown binding type
 /// </summary>
 /// <exception cref="ArgumentNullException">Thrown if binding or user are null</exception>
 /// <exception cref="NotSupportedException">Always thrown</exception>
 public virtual ICommandInputBindingMonitor CreateBindingMonitor( CommandInputBinding binding, ICommandUser user )
 {
     Arguments.CheckNotNull( binding, "binding" );
     Arguments.CheckNotNull( user, "user" );
     throw new NotSupportedException( "Unsupported binding type " + binding.GetType( ) );
 }
 /// <summary>
 /// Setup constructor
 /// </summary>
 /// <param name="binding">Input binding</param>
 /// <param name="user">Command user</param>
 public CommandInputBindingMonitor( CommandInputBinding binding, ICommandUser user )
 {
     m_Binding = binding;
     m_User = user;
 }