public void Initialize(Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, Type selectedType = null) { var types = _manager.GetModules(); var targetTypes = _manager.GetModules(valueType, side); SelectedType = selectedType; foreach (var type in types) { var itemView = new SelectActionItemView(); itemView.Text = Lazurite.ActionsDomain.Utils.ExtractHumanFriendlyName(type); itemView.Icon = Icons.LazuriteIconAttribute.GetIcon(type); if (itemView.Icon == Icons.Icon._None) { itemView.Icon = Icons.Icon.Brick; } itemView.HorizontalAlignment = HorizontalAlignment.Stretch; itemView.Tag = type; itemView.Click += (o, e) => { SelectedType = itemView.Tag as Type; SelectionChanged?.Invoke(this); }; itemView.IsEnabled = targetTypes.Any(x => x.Equals(type)); var category = CategoryAttribute.Get(type); switch (category) { case Category.Control: itemsViewControl.Children.Add(itemView); break; case Category.DateTime: itemsViewDateTime.Children.Add(itemView); break; case Category.Geolocation: itemsViewGeolocation.Children.Add(itemView); break; case Category.Meta: itemsViewMeta.Children.Add(itemView); break; case Category.Multimedia: itemsViewMedia.Children.Add(itemView); break; case Category.Administration: case Category.Other: itemsViewOther.Children.Add(itemView); break; } } }
public void Initialize(Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, string selectedScenarioId = "") { var scenarioActionSource = new ScenarioActionSource( UsersRepository.SystemUser, ScenarioStartupSource.OtherScenario, side == ActionInstanceSide.OnlyRight ? ScenarioAction.ViewValue : ScenarioAction.Execute); var scenarios = ScenariosRepository.Scenarios.Where(x => valueType == null || x.ValueType.GetType().Equals(valueType)); if (side == ActionInstanceSide.OnlyRight) { scenarios = scenarios.Where(x => !(x.ValueType is ButtonValueType) && x.IsAccessAvailable(scenarioActionSource)); } else { scenarios = scenarios.Where(x => x.IsAccessAvailable(scenarioActionSource)); } foreach (var scenario in scenarios) { var itemView = new ItemView(); itemView.Content = scenario.Name; if (scenario.Id.Equals(selectedScenarioId)) { Loaded += (o, e) => itemView.Selected = true; } itemView.Icon = Icons.Icon.ChevronRight; itemView.Tag = scenario; itemView.Margin = new Thickness(2); itemView.Click += (o, e) => { SelectedScenario = itemView.Tag as ScenarioBase; SelectionChanged?.Invoke(this); }; itemsView.Children.Add(itemView); } if (itemsView.Children.Count > 0) { tbScensNotExist.Visibility = Visibility.Collapsed; MinHeight = 0; } }
/// <summary> /// Get all types in module libraries /// </summary> /// <returns></returns> public Type[] GetModules(Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both) { var result = new List <Type>(); bool isValueTypeSupport = false; bool rightSide = false; var allTypes = new Type[] { typeof(GetStateVTAction), typeof(GetDateTimeVTAction), typeof(GetFloatVTAction), typeof(GetInfoVTAction), typeof(GetToggleVTAction), typeof(GetInputValueAction), typeof(GetPreviousValueAction), typeof(GetExistingScenarioValueAction), typeof(RunExistingScenarioAction), }.Union( _allTypes .OrderBy(x => x.Plugin.Name) .Select(x => x.Type)); foreach (var type in allTypes) { isValueTypeSupport = valueType == null || (valueType.Equals(typeof(InfoValueType)) && side == ActionInstanceSide.OnlyRight) || ActionsDomain.Utils.IsComparableWithValueType(type, valueType); rightSide = (side == ActionInstanceSide.Both) || (side == ActionInstanceSide.OnlyLeft && !ActionsDomain.Utils.IsOnlyGetValue(type)) || (side == ActionInstanceSide.OnlyRight && !ActionsDomain.Utils.IsOnlyExecute(type)); if (rightSide && isValueTypeSupport) { result.Add(type); } } return(result.ToArray()); }
public static void Show(Action <ScenarioBase> selectedCallback, Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, string selectedScenarioId = "") { var control = new SelectScenarioView(); var dialogView = new DialogView(control); control.Initialize(valueType, side, selectedScenarioId); control.SelectionChanged += (ctrl) => { selectedCallback?.Invoke(control.SelectedScenario); dialogView.Close(); }; dialogView.Show(); }
public static void Show(Action <Type> selectedCallback, Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, Type selectedType = null) { var control = new SelectActionView(); var dialogView = new DialogView(control); control.Initialize(valueType, side, selectedType); control.SelectionChanged += (ctrl) => { selectedCallback?.Invoke(control.SelectedType); dialogView.Close(); }; dialogView.Show(); }
public static void Show(Action <ScenarioBase, RunExistingScenarioMode> selectedCallback, Type valueType = null, ActionInstanceSide side = ActionInstanceSide.Both, string selectedScenarioId = "", RunExistingScenarioMode runMode = RunExistingScenarioMode.Synchronously) { var control = new SelectScenarioAndRunModeView(); var dialogView = new DialogView(control); control.Initialize(valueType, side, selectedScenarioId, runMode); control.SelectionChanged += (ctrl) => { selectedCallback?.Invoke(control.SelectedScenario, control.SelectedMode); dialogView.Close(); }; dialogView.Show(); }