/// <summary> /// Initializes the editor. /// </summary> /// <param name="nodeDefinitions">Node definitions</param> /// <param name="flowConfiguration">Flow configuration</param> public void Initialize(IList <Definition.NodeDefinition> nodeDefinitions, Configuration.FlowConfiguration flowConfiguration) { isInitialized = true; toolbox.DataContext = new ToolboxViewModel(nodeDefinitions); diagramViewModel = new WorkflowEditorViewModel(nodeDefinitions, flowConfiguration); this.DataContext = diagramViewModel; this.MyDiagram.ConnectionManipulationStarted += MyDiagram_ConnectionManipulationStarted; this.MyDiagram.ConnectionManipulationCompleted += MyDiagram_ConnectionManipulationCompleted; }
/// <summary> /// Constructor /// </summary> /// <param name="nodeDefinitions">NodeDefinition</param> /// <param name="flowConfiguration">FlowConfiguration</param> public WorkflowEditorViewModel(IList <NodeDefinition> nodeDefinitions, Configuration.FlowConfiguration flowConfiguration) { connections = new ObservableCollection <NodeConnectionViewModel>(); variables = new ObservableCollection <FlowVariable>(); Nodes = new ObservableCollection <NodeViewModel>(); this.nodeDefinitions = nodeDefinitions; Nodes.CollectionChanged += (s, e) => { IsDirty = true; if (e.NewItems != null) { foreach (var item in e.NewItems.OfType <Simplic.UI.MVC.ViewModelBase>()) { item.Parent = this; } } }; if (flowConfiguration == null) { this.flowConfiguration = new Configuration.FlowConfiguration() { Id = Guid.NewGuid(), Name = "New Workflow" } } ; else { this.flowConfiguration = flowConfiguration; } FillConfiguration(); addVariableCommand = new Simplic.UI.MVC.RelayCommand(NewVariableRelayCommand); AvailableVariableTypes = new List <Type>() { { typeof(string) }, { typeof(int) }, { typeof(uint) }, { typeof(short) }, { typeof(ushort) }, { typeof(long) }, { typeof(ulong) }, { typeof(float) }, { typeof(double) }, { typeof(decimal) } }; }