protected override void InitializeView() { base.InitializeView(); Nodes.MakeArrayNode node = targetNode as Nodes.MakeArrayNode; if (node.elementType.isAssigned) { System.Type type = node.elementType.Get <System.Type>(); FilterAttribute filter = new FilterAttribute(type); for (int i = 0; i < node.values.Count; i++) { int x = i; AddInputValuePort( new PortData() { portID = "Element#" + x, onValueChanged = (o) => { RegisterUndo(); node.values[x] = o as MemberData; }, getPortName = () => "Element " + x, getPortType = () => filter.GetActualType(), getPortValue = () => node.values[x], filter = filter, } ); } } ControlView control = new ControlView(); control.Add(new Button(() => { if (node.values.Count > 0) { RegisterUndo(); node.values.RemoveAt(node.values.Count - 1); MarkRepaint(); } }) { text = "-" }); control.Add(new Button(() => { RegisterUndo(); MemberData val; if (ReflectionUtils.CanCreateInstance(node.elementType.Get <Type>())) { val = new MemberData(ReflectionUtils.CreateInstance(node.elementType.Get <Type>())); } else { val = MemberData.empty; } node.values.Add(val); MarkRepaint(); }) { text = "+" }); AddControl(Direction.Input, control); }
protected override void InitializeView() { base.InitializeView(); Nodes.StringBuilderNode node = targetNode as Nodes.StringBuilderNode; if (node.stringValues == null) { node.stringValues = new List <MemberData>(); } for (int x = 0; x < node.stringValues.Count; x++) { int index = x; AddInputValuePort( new PortData() { portID = "stringValues#" + x, onValueChanged = (o) => { RegisterUndo(); node.stringValues[index] = o as MemberData; }, getPortName = () => "String " + x, getPortType = () => typeof(string), getPortValue = () => node.stringValues[index], } ); } ControlView control = new ControlView(); control.Add(new Button(() => { if (node.stringValues.Count > 0) { RegisterUndo(); node.stringValues.RemoveAt(node.stringValues.Count - 1); MarkRepaint(); } }) { text = "-" }); control.Add(new Button(() => { RegisterUndo(); node.stringValues.Add(new MemberData("")); MarkRepaint(); }) { text = "+" }); AddControl(Direction.Input, control); }
public void AddControl(Direction direction, VisualElement visualElement) { var control = new ControlView(); control.Add(visualElement); switch (direction) { case Direction.Input: { inputControls.Add(control); inputContainer.Add(control); break; } case Direction.Output: { outputControls.Add(control); outputContainer.Add(control); break; } } }
protected override void InitializeView() { base.InitializeView(); Nodes.NodeSwitch node = targetNode as Nodes.NodeSwitch; if (node.target == null || !node.target.isAssigned || node.target.type == null) { return; } while (node.values.Count != node.targetNodes.Count) { if (node.values.Count > node.targetNodes.Count) { node.values.RemoveAt(node.values.Count - 1); } else { node.values.Add(null); } } filter.SetType(node.target.type); for (int i = 0; i < node.values.Count; i++) { int x = i; var member = node.values[i]; Type type = typeof(object); if (member.isAssigned) { type = member.startType; } //var port = AddOutputFlowPort( new PortData() { portID = "values#" + x, getPortName = () => x.ToString(), getPortType = () => type, getPortValue = () => node.targetNodes[x], onValueChanged = (val) => { node.targetNodes[x] = val as MemberData; }, } ); ControlView controlType = new ControlView(); controlType.Add(new Label(x.ToString())); controlType.Add(new MemberControl( new ControlConfig() { owner = this, type = typeof(MemberData), value = member, onValueChanged = (obj) => { node.values[x] = obj as MemberData; }, filter = filter, }, true )); AddControl(Direction.Input, controlType); //port.SetControl(controlType); } ControlView control = new ControlView(); control.style.alignSelf = Align.Center; control.Add(new Button(() => { if (node.values.Count > 0) { RegisterUndo(); node.values.RemoveAt(node.values.Count - 1); node.targetNodes.RemoveAt(node.targetNodes.Count - 1); MarkRepaint(); } }) { text = "-" }); control.Add(new Button(() => { RegisterUndo(); node.values.Add(new MemberData(ReflectionUtils.CreateInstance(node.target.type))); node.targetNodes.Add(null); MarkRepaint(); }) { text = "+" }); AddControl(Direction.Input, control); { //Default var member = node.defaultTarget; Type type = typeof(object); if (member.isAssigned) { type = member.startType; } AddOutputFlowPort( new PortData() { portID = "default", getPortName = () => "Default", getPortType = () => type, getPortValue = () => node.defaultTarget, onValueChanged = (val) => { node.defaultTarget = val as MemberData; }, } ); } AddOutputFlowPort("onFinished", "Next"); }
protected override void InitializeView() { base.InitializeView(); BaseEventNode node = targetNode as BaseEventNode; #region Title if (node is EventNode) { if ((node as EventNode).eventType != EventNode.EventType.Custom) { title = ObjectNames.NicifyVariableName((node as EventNode).eventType.ToString()); } } else if (node is StateEventNode) { title = ObjectNames.NicifyVariableName((node as StateEventNode).eventType.ToString()); } #endregion var flows = node.GetFlows(); if (flows.Count == 0) { flows.Add(MemberData.none); MarkRepaint(); } for (int x = 0; x < flows.Count; x++) { int index = x; AddOutputFlowPort( new PortData() { getPortValue = () => flows[index], onValueChanged = (val) => { flows[index] = val as MemberData; }, } ); } ControlView control = new ControlView(); control.style.alignSelf = Align.Center; control.Add(new Button(() => { if (flows.Count > 1) { RegisterUndo(); flows.RemoveAt(flows.Count - 1); MarkRepaint(); } }) { text = "-" }); control.Add(new Button(() => { RegisterUndo(); flows.Add(MemberData.none); MarkRepaint(); }) { text = "+" }); AddControl(Direction.Input, control); }
protected override void InitializeView() { base.InitializeView(); Nodes.NodeTry node = targetNode as Nodes.NodeTry; while (node.Exceptions.Count != node.ExceptionTypes.Count) { if (node.Exceptions.Count > node.ExceptionTypes.Count) { node.Exceptions.RemoveAt(node.Exceptions.Count - 1); } else { node.Exceptions.Add(null); } } while (node.Flows.Count != node.ExceptionTypes.Count) { if (node.Flows.Count > node.ExceptionTypes.Count) { node.Flows.RemoveAt(node.Flows.Count - 1); } else { node.Flows.Add(null); } } for (int i = 0; i < node.ExceptionTypes.Count; i++) { int x = i; var member = node.ExceptionTypes[i]; Type type = typeof(Exception); if (member.isAssigned) { type = member.Get <Type>(); } AddOutputValuePort( new PortData() { getPortName = () => "Ex " + x.ToString(), getPortType = () => type, getPortValue = () => node.Exceptions[x], getConnection = () => { return(MemberData.CreateConnection(node, "Exceptions", x, type)); }, } ); ControlView controlType = new ControlView(); //controlType.Add(new Label(x.ToString())); controlType.Add(new MemberControl( new ControlConfig() { owner = this, type = typeof(MemberData), value = member, onValueChanged = (obj) => { node.ExceptionTypes[x] = obj as MemberData; }, filter = filter, }, true )); AddControl(Direction.Input, controlType); AddOutputFlowPort( new PortData() { getPortName = () => x.ToString(), getPortValue = () => node.Flows[x], onValueChanged = (val) => { node.Flows[x] = val as MemberData; }, } ); } ControlView control = new ControlView(); control.style.alignSelf = Align.Center; control.Add(new Button(() => { if (node.ExceptionTypes.Count > 0) { RegisterUndo(); node.ExceptionTypes.RemoveAt(node.ExceptionTypes.Count - 1); node.Exceptions.RemoveAt(node.Exceptions.Count - 1); node.Flows.RemoveAt(node.Flows.Count - 1); MarkRepaint(); } }) { text = "-" }); control.Add(new Button(() => { RegisterUndo(); node.ExceptionTypes.Add(MemberData.none); node.Exceptions.Add(null); node.Flows.Add(MemberData.none); MarkRepaint(); }) { text = "+" }); AddControl(Direction.Input, control); AddOutputFlowPort("Finally"); AddOutputFlowPort("onFinished", "Next"); }
protected override void InitializeView() { base.InitializeView(); Nodes.SelectNode node = targetNode as Nodes.SelectNode; if (!node.target.isAssigned || node.target.type == null) { return; } AddInputValuePort( new PortData() { getPortName = () => "default", getPortType = () => node.targetType.Get <Type>(), getPortValue = () => node.defaultTarget, onValueChanged = (o) => { RegisterUndo(); node.defaultTarget = o as MemberData; }, }); FilterAttribute valueFilter = new FilterAttribute(node.target.type) { ValidTargetType = MemberData.TargetType.Values }; FilterAttribute filter = new FilterAttribute(node.ReturnType()); for (int i = 0; i < node.values.Count; i++) { int x = i; var member = node.values[i]; var port = AddInputValuePort( new PortData() { getPortValue = () => node.targetNodes[x], onValueChanged = (o) => { RegisterUndo(); node.targetNodes[x] = o as MemberData; }, filter = filter, }); ControlView controlType = new ControlView(); controlType.Add(new MemberControl( new ControlConfig() { owner = this, value = member, onValueChanged = (obj) => { node.values[x] = obj as MemberData; }, filter = valueFilter, }, true )); port.SetControl(controlType, true); } ControlView control = new ControlView(); control.style.alignSelf = Align.Center; control.Add(new Button(() => { if (node.values.Count > 0) { RegisterUndo(); node.values.RemoveAt(node.values.Count - 1); node.targetNodes.RemoveAt(node.targetNodes.Count - 1); MarkRepaint(); } }) { text = "-" }); control.Add(new Button(() => { RegisterUndo(); node.values.Add(new MemberData(ReflectionUtils.CreateInstance(node.target.type))); node.targetNodes.Add(MemberData.none); MarkRepaint(); }) { text = "+" }); AddControl(Direction.Input, control); }
protected override void InitializeView() { base.InitializeView(); Nodes.NodeAnonymousFunction node = targetNode as Nodes.NodeAnonymousFunction; while (node.parameterValues.Count != node.parameterTypes.Count) { if (node.parameterValues.Count > node.parameterTypes.Count) { node.parameterValues.RemoveAt(node.parameterValues.Count - 1); } else { node.parameterValues.Add(null); } } for (int i = 0; i < node.parameterTypes.Count; i++) { int x = i; var member = node.parameterTypes[i]; Type type = typeof(object); if (member.isAssigned) { type = member.startType; } //var port = AddOutputValuePort( new PortData() { portID = "parameterValues#" + x, getPortName = () => "", getPortType = () => type, getPortValue = () => node.parameterTypes[x], getConnection = () => { return(MemberData.CreateConnection(node, "parameterValues", x, type)); }, } ); ControlView controlType = new ControlView(); controlType.style.flexDirection = FlexDirection.RowReverse; controlType.Add(new Label("P " + x)); controlType.Add(new MemberControl( new ControlConfig() { owner = this, type = typeof(MemberData), filter = new FilterAttribute() { OnlyGetType = true }, value = member, onValueChanged = (obj) => { node.parameterTypes[x] = obj as MemberData; }, } )); //port.SetControl(controlType); AddControl(Direction.Input, controlType); } ControlView control = new ControlView(); control.style.alignSelf = Align.FlexEnd; control.Add(new Button(() => { if (node.parameterTypes.Count > 0) { RegisterUndo(); node.parameterTypes.RemoveAt(node.parameterTypes.Count - 1); node.parameterValues.RemoveAt(node.parameterValues.Count - 1); MarkRepaint(); } }) { text = "-" }); control.Add(new Button(() => { RegisterUndo(); node.parameterTypes.Add(new MemberData(typeof(object), MemberData.TargetType.Type)); node.parameterValues.Add(null); MarkRepaint(); }) { text = "+" }); AddControl(Direction.Input, control); }