public Simulator(SimulatorConfiguration config, AbstractWindowsEnvironment environmentInterface) { if (config == null) throw new ArgumentNullException(nameof(config)); if (environmentInterface == null) throw new ArgumentNullException(nameof(environmentInterface)); if (config.MainAction == null) throw new ArgumentException("There must be an action specified in the SimulatorConfiguration."); this.config = config; this.environmentInterface = environmentInterface; provider = new StandardInteractionProvider(environmentInterface, out cancelCallback); }
private SimulatorConfiguration ParseConfiguration(XElement configEl) { var config = new SimulatorConfiguration(); // Find the <MainAction> var mainActionEl = configEl.Element(ns + "MainAction"); if (mainActionEl != null) { IList<IAction> actionList = ParseActionList(mainActionEl); if (actionList.Count != 1) { throw new InvalidDataException("<MainAction> must contain exactly one Action element."); } config.MainAction = actionList[0]; } // Parse quick actions. var quickActionElements = configEl.Elements(ns + "QuickAction"); int i = 0; foreach (var el in quickActionElements) { i++; var quickActionName = el.Attribute("title")?.Value ?? $"Quick Action [{i.ToString()}]"; IList<IAction> quickActionList = ParseActionList(el); if (quickActionList.Count != 1) { throw new InvalidDataException("<QuickAction> must contain exactly one Action element."); } config.QuickActions.Add(new SimulatorConfiguration.QuickActionDescriptor() { Name = quickActionName, Action = quickActionList[0] }); } if (config.MainAction == null && config.QuickActions.Count == 0) throw new ArgumentException("There must be a <MainAction> or at least one <QuickAction> element in the <SimulatorProject>."); return config; }