/// <summary>
 /// Default ctor
 /// </summary>
 public RouteEventSetEditorForm(IRailway railway, IModule module, IRouteEventSet events)
 {
     this.railway = railway;
     this.module  = module;
     InitializeComponent();
     Initialize(events);
 }
 /// <summary>
 /// Initialize the controls for the given set.
 /// </summary>
 private void Initialize(IRouteEventSet events)
 {
     this.events = events;
     lbAll.Items.Clear();
     lbSet.Nodes.Clear();
     behaviorGrid.SelectedObject = null;
     if (module != null)
     {
         foreach (var sensor in module.Sensors.Where(x => events.All(e => e.Sensor != x)).OrderBy(x => x.Description, NameWithNumbersComparer.Instance))
         {
             lbAll.Items.Add(sensor);
         }
         foreach (var @event in events.OrderBy(x => x.Description, NameWithNumbersComparer.Instance))
         {
             lbSet.Nodes.Add(new EventNode(railway, @event));
         }
         if (lbAll.Items.Count > 0)
         {
             lbAll.SelectedIndex = 0;
         }
         if (lbSet.Nodes.Count > 0)
         {
             lbSet.SelectedNode = lbSet.Nodes[0];
         }
         lbSetSensors.Text = "Events";
     }
     if (railway != null)
     {
         cbViewLocs.Items.Clear();
         cbViewLocs.Items.Add(Strings.ViewAllLocs);
         foreach (var loc in railway.GetLocs().OrderBy(x => x.Description, NameWithNumbersComparer.Instance))
         {
             cbViewLocs.Items.Add(loc);
         }
         cbViewLocs.SelectedIndex = 0;
     }
     UpdateComponents();
 }