Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
            }
            }
        }
Ejemplo n.º 4
0
        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");
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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");
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }