internal ActionNodePropertiesEditor(ActionNodeConfiguration node, NodeSelectionManager nodeSelectionManager) { InitializeComponent(); this.node = node; this.nodeSelectionManager = nodeSelectionManager; uiName.Text = node.Name; #region Prepare next node selector uiNextNodeSelector.Initialize(nodeSelectionManager, node, () => node.NextNode, delegate(NodeConfiguration nextNode) { node.NextNode = nextNode; }); #endregion #region Prepare actions editing uiActionsListEditor.Initialize(AddAction); uiActionsListEditor.ItemRemoved += RemoveAction; uiActionsListEditor.ItemSelected += SetActiveAction; uiActionConfigurationRegion.Visibility = Visibility.Collapsed; foreach (ActionConfiguration action in node.Actions) { uiActionsListEditor.AddItem(CreateActionRepresentation(action)); } uiActionsListEditor.SelectItem(uiActionsListEditor.Items.FirstOrDefault()); #endregion }
/// <summary> /// Initializes an action node. /// </summary> /// <param name="configuration">ActionNodeConfiguration is expected /// </param> public override void InitializeCore(NodeConfiguration configuration) { Config = (ActionNodeConfiguration)configuration; foreach (ActionConfiguration actionConfig in Config.Actions) { ActionType actionType = ProcessorService.Configuration.GetActionType(actionConfig.ActionTypeName); IActionPlugin action = TypeUtils.CreateTypeInstance<IActionPlugin>(actionType.ClrTypeAndAssembly); ObjectConfigurator.Configurator.LoadConfiguration(action, actionConfig.Configuration); action.Initialize(ProcessorService); actions.Add(action); } }
private ContextMenu CreateGraphCanvasContextMenu() { ContextMenu result = new ContextMenu(); MenuItem menuItemAddActionNode = new MenuItem { Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/XRouter.Gui;component/Resources/Actions-tool-animator-icon.png")), Height = 20 }, Header = new TextBlock { Text = "Action", FontSize = 14, FontWeight = FontWeights.Bold } }; menuItemAddActionNode.Click += delegate { AddNode("Action", result, delegate { ActionNodeConfiguration newActionNode = new ActionNodeConfiguration(); #region Add a default action ActionType actionType = ConfigManager.Configuration.GetActionTypes().First(); ActionConfiguration action = new ActionConfiguration(actionType.Name) { Configuration = new SerializableXDocument(new XDocument(new XElement(XName.Get("objectConfig")))) }; newActionNode.Actions.Add(action); #endregion return newActionNode; }); }; MenuItem menuItemAddCbrNode = new MenuItem { Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/XRouter.Gui;component/Resources/nfs-unmount-icon.png")), Height = 20 }, Header = new TextBlock { Text = "CBR", FontSize = 14, FontWeight = FontWeights.Bold } }; menuItemAddCbrNode.Click += delegate { AddNode("CBR", result, delegate { return new CbrNodeConfiguration(); }); }; MenuItem menuItemAddTerminatorNode = new MenuItem { Icon = new Image { Source = new BitmapImage(new Uri("pack://application:,,,/XRouter.Gui;component/Resources/Button-exit-icon.png")), Height = 20 }, Header = new TextBlock { Text = "Terminator", FontSize = 14, FontWeight = FontWeights.Bold } }; menuItemAddTerminatorNode.Click += delegate { Point menuLocationOnCanvas = result.TranslatePoint(new Point(), graphCanvas.Canvas); AddNode("Terminator", result, delegate { return new TerminatorNodeConfiguration(); }); }; MenuItem menuItemAdd = new MenuItem { Header = new TextBlock { Text = "Add node...", FontSize = 14 } }; menuItemAdd.Items.Add(menuItemAddActionNode); menuItemAdd.Items.Add(menuItemAddCbrNode); menuItemAdd.Items.Add(menuItemAddTerminatorNode); result.Items.Add(menuItemAdd); return result; }