예제 #1
0
        public ActionNode(IInteractionAction action)
        {
            interactionAction = action;
            Guid = action.Guid;
            switch (action.ActionType)
            {
            case ActionType.OpenAction:
                IInteractionOpenAction openAction = action as IInteractionOpenAction;
                OperateType = CommonData.ActionOpen;
                if (openAction.LinkPageGuid == Guid.Empty)
                {
                    pageOrLink = openAction.ExternalUrl;
                }
                else
                {
                    IPage page = _document.Pages.GetPage(openAction.LinkPageGuid);
                    pageOrLink = page.Name;
                    PageGuid   = openAction.LinkPageGuid;
                }
                IN = CommonData.IN;
                if (openAction.OpenIn == ActionOpenIn.CurrentWindow)
                {
                    Container = CommonData.CurrentWindow;
                }
                else if (openAction.OpenIn == ActionOpenIn.NewWindowOrTab)
                {
                    Container = CommonData.NewWindowTab;
                }
                break;

            case ActionType.CloseAction:
                OperateType = CommonData.ActionClose + " " + CommonData.CurrentWindow;
                break;
            }
        }
예제 #2
0
        public void AddAction(IInteractionAction action, int index)
        {
            InteractionAction newAction = action as InteractionAction;

            if (newAction != null)
            {
                _actions.Insert(index, newAction);
                newAction.InteractionCase = this;
            }
        }
예제 #3
0
        public InteractionTargetProxy(object target, IInteractionAction interactionAction) : base(target)
        {
            this.handler = (sender, args) =>
            {
                if (target is Behaviour behaviour && !behaviour.isActiveAndEnabled)
                {
                    return;
                }

                interactionAction.OnRequest(sender, args);
            };
        }
예제 #4
0
        public ITargetProxy CreateProxy(object target, BindingDescription description)
        {
            if (target == null || !(target is ILuaExtendable))
            {
                return(null);
            }

            LuaTable metatable = (target as ILuaExtendable).GetMetatable();

            if (metatable == null || !metatable.ContainsKey(description.TargetName))
            {
                return(null);
            }

            var obj = metatable.Get <object>(description.TargetName);

            if (obj != null)
            {
                LuaFunction function = obj as LuaFunction;
                if (function != null)
                {
                    return(new LuaMethodTargetProxy(target, function));
                }

                IObservableProperty observableValue = obj as IObservableProperty;
                if (observableValue != null)
                {
                    return(new ObservableTargetProxy(target, observableValue));
                }

                IInteractionAction interactionAction = obj as IInteractionAction;
                if (interactionAction != null)
                {
                    return(new InteractionTargetProxy(target, interactionAction));
                }
            }
            return(new LuaTableTargetProxy(target, description.TargetName));
        }
 public InteractionTargetProxy(object target, IInteractionAction interactionAction) : base(target)
 {
     this.handler = interactionAction.OnRequest;
 }
예제 #6
0
 public JsAction(HtmlServiceProvider service, IInteractionAction action)
 {
     _service = service;
     _action  = action;
 }