コード例 #1
0
ファイル: JSEvent.cs プロジェクト: vrajeshbhavsar/mcjs
        public static JSEvent createEvent(string eventClassString, WrappedObject target)
        {
            JSEvent      evt        = null;
            EventClasses eventClass = EventClasses.Event;

            if (eventClassString == "Event")
            {
                eventClass = EventClasses.Event;
            }
            else if (eventClassString == "UIEvent")
            {
                eventClass = EventClasses.UIEvent;
            }
            else if (eventClassString == "MouseEvent")
            {
                eventClass = EventClasses.MouseEvent;
            }
            else
            {
                //Throw Unsupported error exception according to W3C createEvent documentation
            }
            evt = new JSEvent();
            evt.InitializeCreatedEvent(eventClass, target);

            return(evt);
        }
コード例 #2
0
ファイル: HTMLRuntime.cs プロジェクト: reshadi2/mcjs
 /*
 // This isn't compiling since we've moved away from using WrapperType.
 // I'd update it, but apparently nobody is actually calling it. - SF
 internal mdr.PropertyMap GetPropertyMapOfDomPrototype(WrapperType domClass)
 {
     var mapIndex = (int)domClass;
     var map = _maps[mapIndex];
     if (map == null)
     {
         var prototype = DOMBinder.GetPrototype(mapIndex);
         map = GetRootMapOfPrototype(prototype);
         _maps[mapIndex] = map;
     }
     return map;
 }
 */
 public mdr.PropertyMap GetPropertyMapOfEventPrototype(EventClasses eventClass)
 {
     var mapIndex = /*(int) WrapperType.LastWrapperType + */(int)eventClass;
     var map = _maps[mapIndex];
     if (map == null)
     {
         var prototype = JSEvent.GetPrototype(eventClass);
         map = GetRootMapOfPrototype(prototype);
         _maps[mapIndex] = map;
     }
     return map;
 }
コード例 #3
0
        /*
         * // This isn't compiling since we've moved away from using WrapperType.
         * // I'd update it, but apparently nobody is actually calling it. - SF
         * internal mdr.PropertyMap GetPropertyMapOfDomPrototype(WrapperType domClass)
         * {
         *  var mapIndex = (int)domClass;
         *  var map = _maps[mapIndex];
         *  if (map == null)
         *  {
         *      var prototype = DOMBinder.GetPrototype(mapIndex);
         *      map = GetRootMapOfPrototype(prototype);
         *      _maps[mapIndex] = map;
         *  }
         *  return map;
         * }
         */
        public mdr.PropertyMap GetPropertyMapOfEventPrototype(EventClasses eventClass)
        {
            var mapIndex = /*(int) WrapperType.LastWrapperType + */ (int)eventClass;
            var map      = _maps[mapIndex];

            if (map == null)
            {
                var prototype = JSEvent.GetPrototype(eventClass);
                map             = GetRootMapOfPrototype(prototype);
                _maps[mapIndex] = map;
            }
            return(map);
        }
コード例 #4
0
ファイル: JSEvent.cs プロジェクト: vrajeshbhavsar/mcjs
 public void InitializeCreatedEvent(EventClasses eventClass, WrappedObject target)
 {
     Data.EventClass  = eventClass;
     Data.Type        = EventTypes.ZoommInvalid;
     Data.Target      = target;
     CurrentTarget    = target;
     Bubbles          = false;
     Cancelable       = true;
     DefaultPrevented = false;
     IsTrusted        = false;
     Phase            = Phases.AtTarget;
     InitializeEventFlags();
     UpdateMap();
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: lizapolyudova/dnp3
    // ANCHOR_END: master_channel_config

    // ANCHOR: association_config
    private static AssociationConfig GetAssociationConfig()
    {
        var config = new AssociationConfig(
            // disable unsolicited first (Class 1/2/3)
            EventClasses.All(),
            // after the integrity poll, enable unsolicited (Class 1/2/3)
            EventClasses.All(),
            // perform startup integrity poll with Class 1/2/3/0
            Classes.All(),
            // don't automatically scan Class 1/2/3 when the corresponding IIN bit is asserted
            EventClasses.None()
            );

        config.AutoTimeSync     = AutoTimeSync.Lan;
        config.KeepAliveTimeout = TimeSpan.FromSeconds(60);
        return(config);
    }
        protected IDictionary <TransitionEventPhase, string> GetClassNames(TransitionEvent @event)
        {
            bool hasPrefix = !string.IsNullOrWhiteSpace(EventClass);

            string baseClass = null, activeClass = null, doneClass = null;

            if (hasPrefix)
            {
                baseClass = $"{EventClass}-{@event}";

                activeClass = $"{baseClass}-Active";

                doneClass = $"{baseClass}-Done";
            }
            else
            {
                if (Enum.TryParse($"{@event}", out TransitionEventClass baseEvent))
                {
                    baseClass = EventClasses.ContainsKey(baseEvent) ? EventClasses[baseEvent] : null;
                }

                if (Enum.TryParse($"{@event}{TransitionEventPhase.Active}", out TransitionEventClass activeEvent))
                {
                    activeClass = EventClasses.ContainsKey(activeEvent) ? EventClasses[activeEvent] : null;
                }

                if (Enum.TryParse($"{@event}{TransitionEventPhase.Done}", out TransitionEventClass doneEvent))
                {
                    doneClass = EventClasses.ContainsKey(doneEvent) ? EventClasses[doneEvent] : null;
                }
            }

            var classes = new Dictionary <TransitionEventPhase, string>
            {
                { TransitionEventPhase.Base, baseClass },

                { TransitionEventPhase.Active, activeClass },

                { TransitionEventPhase.Done, doneClass }
            };

            return(classes);
        }
コード例 #7
0
ファイル: JSEvent.cs プロジェクト: reshadi2/mcjs
        public static mdr.DObject GetPrototype(EventClasses eventClass)
        {
            mdr.DObject prototype = null;
            switch (eventClass)
            {
                case EventClasses.Event:
                    {
                        prototype = new mdr.DObject();
                        prototype.DefineOwnProperty("type", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Data.Type.ToString().ToLower());
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("screenX", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.screenX);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("screenY", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.screenY);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("clientX", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.clientX);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("clientY", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.clientY);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("pageX", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.pageX);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("pageY", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.pageY);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("buttons", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.buttons);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("button", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((int)ev.Data.button);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("metaKey", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Data.metaKey);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("ctrlKey", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Data.ctrlKey);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("shiftKey", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Data.shiftKey);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("altKey", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Data.altKey);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("target", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Target);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("currentTarget", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.CurrentTarget);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("eventPhase", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set((UInt32)ev.Phase);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("bubbles", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Bubbles);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        prototype.DefineOwnProperty("cancelable", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Cancelable);
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);


                        prototype.SetField("initEvent", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                        {
                            string eventTypeString = callFrame.Arg0.AsString();
                            bool bubbles = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg1);
                            bool cancelable = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg2);

                            var ev = callFrame.This.FirstInPrototypeChainAs<JSEvent>();
                            EventTypes type;
                            eventTypesToString.TryGetValue(eventTypeString, out type);
                            ev.InitEvent(type, bubbles, cancelable);

                        }));
                        prototype.SetField("stopPropagation", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                        {
                            var ev = callFrame.This.FirstInPrototypeChainAs<JSEvent>();
                            ev.StopPropagation();

                        }));
                        prototype.SetField("stopImmediatePropagation", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                        {
                            var ev = callFrame.This.FirstInPrototypeChainAs<JSEvent>();
                            ev.StopImmediatePropagation();

                        }));
                        prototype.SetField("preventDefault", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                        {
                            var ev = callFrame.This.FirstInPrototypeChainAs<JSEvent>();
                            ev.PreventDefault();

                        }));
                        //Fill the rest ...
                        break;
                    }
                case EventClasses.UIEvent:
                    {
                        prototype = new mdr.DObject(HTMLRuntime.Instance.GetPropertyMapOfEventPrototype(EventClasses.Event));
                        /*
                                                prototype.DefineOwnProperty("type", new mdr.DProperty()
                                                {
                                                    OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                                                    {
                                                        var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                                        v.Set(ev.Data.Type.ToString());
                                                    },
                                                }, mdr.PropertyDescriptor.Attributes.NotWritable);
                         * */
                        prototype.SetField("initUIEvent", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                        {
                            string eventTypeString = callFrame.Arg0.AsString();
                            bool bubbles = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg1);
                            bool cancelable = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg2);
                            // TODO: Variables 'view' and 'detail' are never used; remove?
                            /*string view = callFrame.Arg3.ToString();
                            int detail = -1;
                            if (callFrame.ArgsCount > 4)
                            {
                                detail = callFrame.Arguments[0].ToInt32();
                            }*/

                            var ev = callFrame.This.FirstInPrototypeChainAs<JSEvent>();
                            EventTypes type;
                            eventTypesToString.TryGetValue(eventTypeString, out type);
                            ev.InitEvent(type, bubbles, cancelable);

                        }));
                        //Fill the rest ...
                        break;
                    }
                case EventClasses.MouseEvent:
                    {
                        prototype = new mdr.DObject(HTMLRuntime.Instance.GetPropertyMapOfEventPrototype(EventClasses.UIEvent));
                        prototype.DefineOwnProperty("type", new mdr.DProperty()
                        {
                            OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                            {
                                var ev = This.FirstInPrototypeChainAs<JSEvent>();
                                v.Set(ev.Data.Type.ToString());
                            },
                        }, mdr.PropertyDescriptor.Attributes.NotWritable);
                        //Fill the rest ...
                        break;
                    }
                default:
                    Trace.Fail("Invalid event class type {0}", eventClass);
                    break;
            }
            return prototype;
        }
コード例 #8
0
ファイル: JSEvent.cs プロジェクト: reshadi2/mcjs
 public void InitializeCreatedEvent(EventClasses eventClass, WrappedObject target)
 {
     Data.EventClass = eventClass;
     Data.Type = EventTypes.ZoommInvalid;
     Data.Target = target;
     CurrentTarget = target;
     Bubbles = false;
     Cancelable = true;
     DefaultPrevented = false;
     IsTrusted = false;
     Phase = Phases.AtTarget;
     InitializeEventFlags();
     UpdateMap();
 }
コード例 #9
0
ファイル: JSEvent.cs プロジェクト: vrajeshbhavsar/mcjs
        public static mdr.DObject GetPrototype(EventClasses eventClass)
        {
            mdr.DObject prototype = null;
            switch (eventClass)
            {
            case EventClasses.Event:
            {
                prototype = new mdr.DObject();
                prototype.DefineOwnProperty("type", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Data.Type.ToString().ToLower());
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("screenX", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.screenX);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("screenY", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.screenY);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("clientX", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.clientX);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("clientY", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.clientY);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("pageX", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.pageX);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("pageY", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.pageY);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("buttons", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.buttons);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("button", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((int)ev.Data.button);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("metaKey", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Data.metaKey);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("ctrlKey", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Data.ctrlKey);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("shiftKey", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Data.shiftKey);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("altKey", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Data.altKey);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("target", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Target);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("currentTarget", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.CurrentTarget);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("eventPhase", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set((UInt32)ev.Phase);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("bubbles", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Bubbles);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                prototype.DefineOwnProperty("cancelable", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Cancelable);
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);


                prototype.SetField("initEvent", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                    {
                        string eventTypeString = callFrame.Arg0.AsString();
                        bool bubbles           = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg1);
                        bool cancelable        = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg2);

                        var ev = callFrame.This.FirstInPrototypeChainAs <JSEvent>();
                        EventTypes type;
                        eventTypesToString.TryGetValue(eventTypeString, out type);
                        ev.InitEvent(type, bubbles, cancelable);
                    }));
                prototype.SetField("stopPropagation", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                    {
                        var ev = callFrame.This.FirstInPrototypeChainAs <JSEvent>();
                        ev.StopPropagation();
                    }));
                prototype.SetField("stopImmediatePropagation", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                    {
                        var ev = callFrame.This.FirstInPrototypeChainAs <JSEvent>();
                        ev.StopImmediatePropagation();
                    }));
                prototype.SetField("preventDefault", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                    {
                        var ev = callFrame.This.FirstInPrototypeChainAs <JSEvent>();
                        ev.PreventDefault();
                    }));
                //Fill the rest ...
                break;
            }

            case EventClasses.UIEvent:
            {
                prototype = new mdr.DObject(HTMLRuntime.Instance.GetPropertyMapOfEventPrototype(EventClasses.Event));

                /*
                 *                      prototype.DefineOwnProperty("type", new mdr.DProperty()
                 *                      {
                 *                          OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                 *                          {
                 *                              var ev = This.FirstInPrototypeChainAs<JSEvent>();
                 *                              v.Set(ev.Data.Type.ToString());
                 *                          },
                 *                      }, mdr.PropertyDescriptor.Attributes.NotWritable);
                 * */
                prototype.SetField("initUIEvent", new mdr.DFunction((ref mdr.CallFrame callFrame) =>
                    {
                        string eventTypeString = callFrame.Arg0.AsString();
                        bool bubbles           = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg1);
                        bool cancelable        = mjr.Operations.Convert.ToBoolean.Run(ref callFrame.Arg2);
                        // TODO: Variables 'view' and 'detail' are never used; remove?

                        /*string view = callFrame.Arg3.ToString();
                         * int detail = -1;
                         * if (callFrame.ArgsCount > 4)
                         * {
                         *  detail = callFrame.Arguments[0].ToInt32();
                         * }*/

                        var ev = callFrame.This.FirstInPrototypeChainAs <JSEvent>();
                        EventTypes type;
                        eventTypesToString.TryGetValue(eventTypeString, out type);
                        ev.InitEvent(type, bubbles, cancelable);
                    }));
                //Fill the rest ...
                break;
            }

            case EventClasses.MouseEvent:
            {
                prototype = new mdr.DObject(HTMLRuntime.Instance.GetPropertyMapOfEventPrototype(EventClasses.UIEvent));
                prototype.DefineOwnProperty("type", new mdr.DProperty()
                    {
                        OnGetDValue = (mdr.DObject This, ref mdr.DValue v) =>
                        {
                            var ev = This.FirstInPrototypeChainAs <JSEvent>();
                            v.Set(ev.Data.Type.ToString());
                        },
                    }, mdr.PropertyDescriptor.Attributes.NotWritable);
                //Fill the rest ...
                break;
            }

            default:
                Trace.Fail("Invalid event class type {0}", eventClass);
                break;
            }
            return(prototype);
        }
コード例 #10
0
    private static async Task MainAsync(Runtime runtime)
    {
        var master = Master.CreateTcpSession(
            runtime,
            LinkErrorMode.Close,
            GetMasterConfig(),
            new EndpointList("127.0.0.1:20000"),
            new TestListener()
            );

        var readHandler = new TestReadHandler();
        var association = master.AddAssociation(
            1024,
            new AssociationConfig(EventClasses.All(), EventClasses.All(), Classes.All(), EventClasses.None())
        {
            AutoTimeSync           = AutoTimeSync.Lan,
            AutoTasksRetryStrategy = new RetryStrategy
            {
                MinDelay = TimeSpan.FromSeconds(1),
                MaxDelay = TimeSpan.FromSeconds(5),
            },
            KeepAliveTimeout = TimeSpan.FromSeconds(60),
        },
            new AssociationHandlers(readHandler, readHandler, readHandler),
            new TestTimeProvider()
            );

        var pollRequest = Request.ClassRequest(false, true, true, true);
        var poll        = association.AddPoll(pollRequest, TimeSpan.FromSeconds(5));

        // start communications
        master.Enable();

        while (true)
        {
            switch (await GetInputAsync())
            {
            case "x":
                return;

            case "enable":
            {
                master.Enable();
                break;
            }

            case "disable":
            {
                master.Disable();
                break;
            }

            case "dln":
            {
                master.SetDecodeLevel(new DecodeLevel());
                break;
            }

            case "dlv":
            {
                master.SetDecodeLevel(new DecodeLevel()
                    {
                        Application = AppDecodeLevel.ObjectValues
                    });
                break;
            }

            case "rao":
            {
                var request = new Request();
                request.AddAllObjectsHeader(Variation.Group40Var0);
                var result = await association.Read(request);

                Console.WriteLine($"Result: {result}");
                break;
            }

            case "rmo":
            {
                var request = new Request();
                request.AddAllObjectsHeader(Variation.Group10Var0);
                request.AddAllObjectsHeader(Variation.Group40Var0);
                var result = await association.Read(request);

                Console.WriteLine($"Result: {result}");
                break;
            }

            case "cmd":
            {
                var command = new Command();
                command.AddU16g12v1(3, new G12v1(new ControlCode(TripCloseCode.Nul, false, OpType.LatchOn), 1, 1000, 1000));
                var result = await association.Operate(CommandMode.SelectBeforeOperate, command);

                Console.WriteLine($"Result: {result}");
                break;
            }

            case "evt":
            {
                poll.Demand();
                break;
            }

            case "lts":
            {
                var result = await association.PerformTimeSync(TimeSyncMode.Lan);

                Console.WriteLine($"Result: {result}");
                break;
            }

            case "nts":
            {
                var result = await association.PerformTimeSync(TimeSyncMode.NonLan);

                Console.WriteLine($"Result: {result}");
                break;
            }

            case "crt":
            {
                var result = await association.ColdRestart();

                Console.WriteLine($"Result: {result}");
                break;
            }

            case "wrt":
            {
                var result = await association.WarmRestart();

                Console.WriteLine($"Result: {result}");
                break;
            }

            case "lsr":
            {
                var result = await association.CheckLinkStatus();

                Console.WriteLine($"Result: {result}");
                break;
            }

            default:
                Console.WriteLine("Unknown command");
                break;
            }
        }
    }