protected IJsCsGlue Convert(IGlueFactory factory, object @object, IGenericPropertyAcessor propertyAcessor) { var result = factory.Build(@object, propertyAcessor); result.SetAttributes(MapNested(@object, propertyAcessor)); return(result); }
public CSharpToJavascriptConverter(IWebBrowserWindow context, IJavascriptSessionCache cacher, IGlueFactory glueFactory, IWebSessionLogger logger) { _Context = context; _GlueFactory = glueFactory; _Logger = logger; _Cacher = cacher; }
public IJsCsGlue Convert(IGlueFactory factory, object @object) { var result = factory.Build(@object, _PropertyAccessor); result.SetAttributes(MapNested(@object)); return(result); }
internal BidirectionalMapper(object root, HtmlViewEngine contextBuilder, IGlueFactory glueFactory, IJavascriptObjectBuilderStrategyFactory strategyFactory, JavascriptBindingMode mode, IInternalSessionCache sessionCacher) { Mode = mode; Context = contextBuilder.GetMainContext(); _SessionCache = sessionCacher ?? new SessionCacher(); strategyFactory = strategyFactory ?? new StandardStrategyFactory(); _BuilderStrategy = new Lazy <IJavascriptObjectBuilderStrategy>(() => strategyFactory.GetStrategy(Context.WebView, _SessionCache, Context.JavascriptFrameworkIsMappingObject) ); _JavascriptFrameworkManager = new Lazy <IJavascriptFrameworkMapper>(() => Context.GetMapper(_SessionCache, BuilderStrategy)); var jsUpdateHelper = new JsUpdateHelper(this, Context, _JavascriptFrameworkManager, _SessionCache); _JavascriptToGlueMapper = new JavascriptToGlueMapper(jsUpdateHelper, _SessionCache); _CSharpChangesListener = ListenToCSharp ? new CSharpListenerJavascriptUpdater(jsUpdateHelper) : null; glueFactory = glueFactory ?? GlueFactoryFactory.GetFactory(Context, _SessionCache, _JavascriptToGlueMapper, _CSharpChangesListener?.On); _CSharpToGlueMapper = new CSharpToGlueMapper(_SessionCache, glueFactory, Context.Logger); jsUpdateHelper.GlueMapper = _CSharpToGlueMapper; _CSharpUnrootedObjectManager = new CSharpUnrootedObjectManager(jsUpdateHelper, _CSharpToGlueMapper); glueFactory.UnrootedObjectManager = _CSharpUnrootedObjectManager; _JavascriptChangesListener = (Mode == JavascriptBindingMode.TwoWay) ? new JavascriptListenerCSharpUpdater(_CSharpChangesListener, jsUpdateHelper, _JavascriptToGlueMapper) : null; jsUpdateHelper.CheckUiContext(); JsValueRoot = _CSharpToGlueMapper.Map(root); JsValueRoot.AddRef(); }
internal IJsCsGlue ConvertEnumerable(IGlueFactory factory, object @object) { var enumerable = (IEnumerable)@object; var arrayResult = Build(factory, enumerable); arrayResult.SetChildren(Convert(enumerable)); return(arrayResult); }
internal IJsCsGlue ConvertCollection(IGlueFactory factory, object @object) { var collection = (ICollection)@object; var arrayResult = Build(factory, collection); arrayResult.SetChildren(Convert(collection)); return(arrayResult); }
public CSharpToJavascriptConverterTests(ITestOutputHelper testOutputHelper) { _TestOutputHelper = testOutputHelper; _Cacher = Substitute.For <IJavascriptSessionCache>(); _Cacher.When(c => c.CacheFromCSharpValue(Arg.Any <object>(), Arg.Any <IJsCsGlue>())) .Do(callInfo => _Cache.Add(callInfo[0], (IJsCsGlue)callInfo[1])); _Cacher.GetCached(Arg.Any <object>()).Returns(callInfo => _Cache.GetOrDefault(callInfo[0])); _ObjectChangesListener = new ObjectChangesListener(_ => { }, _ => { }, _ => { }); _GlueFactory = new GlueFactory(null, _Cacher, null, _ObjectChangesListener); _Logger = Substitute.For <IWebSessionLogger>(); _CSharpToJavascriptConverter = new CSharpToJavascriptConverter(_Cacher, _GlueFactory, _Logger); }
public CSharpToJavascriptConverterTests() { _Cacher = Substitute.For <IJavascriptSessionCache>(); _Cacher.When(c => c.CacheFromCSharpValue(Arg.Any <object>(), Arg.Any <IJSCSGlue>())) .Do(callInfo => _Cache.Add(callInfo[0], (IJSCSGlue)callInfo[1])); _Cacher.GetCached(Arg.Any <object>()).Returns(callInfo => _Cache.GetOrDefault(callInfo[0])); _GlueFactory = new GlueFactory(null, null); _Logger = Substitute.For <IWebSessionLogger>(); _IWebBrowserWindow = Substitute.For <IWebBrowserWindow>(); _IWebBrowserWindow.IsTypeBasic(typeof(string)).Returns(true); _CSharpToJavascriptConverter = new CSharpToJavascriptConverter(_IWebBrowserWindow, _Cacher, _GlueFactory, _Logger); }
internal BidirectionalMapper(object root, HtmlViewEngine contextBuilder, IGlueFactory glueFactory, IJavascriptObjectBuilderStrategyFactory strategyFactory, JavascriptBindingMode mode, IWebSessionLogger logger) { _BuilderStrategyFactory = strategyFactory ?? new StandardStrategyFactory(); Mode = mode; _Logger = logger; var javascriptObjecChanges = (mode == JavascriptBindingMode.TwoWay) ? (IJavascriptChangesObserver)this : null; Context = contextBuilder.GetMainContext(javascriptObjecChanges); _SessionCache = new SessionCacher(); _ListenerRegister = ListenToCSharp ? new FullListenerRegister(OnCSharpPropertyChanged, OnCSharpCollectionChanged): null; glueFactory = glueFactory ?? GlueFactoryFactory.GetFactory(Context, _SessionCache, this, _ListenerRegister?.On); _JsObjectBuilder = new CSharpToJavascriptConverter(_SessionCache, glueFactory, _Logger); _RootObject = root; }
protected override void Init() { _CSharpMapper = Substitute.For <ISessionCache>(); _ObjectChangesListener = new ObjectChangesListener(_ => { }, _ => { }, _ => { }, _ => { }); _GlueFactory = new GlueFactory(null, _CSharpMapper, null, _ObjectChangesListener); _CSharpMapper.GetCached(Arg.Any <object>()).Returns((IJsCsGlue)null); _JavascriptFrameworkManager = Substitute.For <IJavascriptFrameworkManager>(); _HtmlViewContext = new HtmlViewContext(WebBrowserWindow, GetTestUIDispacther(), _JavascriptFrameworkManager, _Logger); _ConverTOJSO = new CSharpToGlueMapper(_CSharpMapper, _GlueFactory, _Logger); _Test = new TestClass { S1 = "string", I1 = 25 }; _Tests = new List <TestClass> { new TestClass() { S1 = "string1", I1 = 1 }, new TestClass() { S1 = "string2", I1 = 2 } }; _Test2 = new Test2() { T1 = _Test, T2 = _Test }; _TestsNg = new ArrayList { _Tests[0], _Tests[0] }; _CircularSimple = new Circular1(); _CircularSimple.Reference = _CircularSimple; _CircularComplex = new Circular2(); var circularChild = new Circular2 { Reference = _CircularComplex }; _CircularComplex.List.Add(circularChild); }
protected override void Init() { _ICSharpMapper = Substitute.For <IJavascriptSessionCache>(); _GlueFactory = new GlueFactory(null, null); _ICSharpMapper.GetCached(Arg.Any <object>()).Returns((IJSCSGlue)null); _javascriptFrameworkManager = Substitute.For <IJavascriptFrameworkManager>(); _HTMLViewContext = new HTMLViewContext(WebBrowserWindow, GetTestUIDispacther(), _javascriptFrameworkManager, null, _Logger); _ConverTOJSO = new CSharpToJavascriptConverter(WebBrowserWindow, _ICSharpMapper, _GlueFactory, _Logger); _Test = new TestClass { S1 = "string", I1 = 25 }; _Tests = new List <TestClass> { new TestClass() { S1 = "string1", I1 = 1 }, new TestClass() { S1 = "string2", I1 = 2 } }; _Test2 = new Test2() { T1 = _Test, T2 = _Test }; _Tests_NG = new ArrayList(); _Tests_NG.Add(_Tests[0]); _Tests_NG.Add(_Tests[0]); _CircularSimple = new Circular1(); _CircularSimple.Reference = _CircularSimple; _CircularComplex = new Circular2(); var circularChild = new Circular2 { Reference = _CircularComplex }; _CircularComplex.List.Add(circularChild); }
internal BidirectionalMapper(object root, HTMLViewEngine contextBuilder, IGlueFactory glueFactory, IJavascriptObjectBuilderStrategyFactory strategyFactory, JavascriptBindingMode mode, IWebSessionLogger logger) { _BuilderStrategyFactory = strategyFactory ?? new StandardStrategyFactory(); _BindingMode = mode; _Logger = logger; var javascriptObjecChanges = (mode == JavascriptBindingMode.TwoWay) ? (IJavascriptChangesObserver)this : null; _Context = contextBuilder.GetMainContext(javascriptObjecChanges); _SessionCache = new SessionCacher(); _ListenerRegister = new FullListenerRegister( (n) => n.PropertyChanged += CSharpPropertyChanged, (n) => n.PropertyChanged -= CSharpPropertyChanged, (n) => n.CollectionChanged += CSharpCollectionChanged, (n) => n.CollectionChanged -= CSharpCollectionChanged, (c) => c.ListenChanges(), (c) => c.UnListenChanges()); glueFactory = glueFactory ?? GlueFactoryFactory.GetFactory(_Context, this); _JSObjectBuilder = new CSharpToJavascriptConverter(contextBuilder.HTMLWindow, _SessionCache, glueFactory, _Logger); _RootObject = root; }
public CSharpToJavascriptConverter(ICSharpToJsCache cacher, IGlueFactory glueFactory, IWebSessionLogger logger) { _GlueFactory = glueFactory; _Logger = logger; _Cacher = cacher; _Converters = new Dictionary <Type, Func <IGlueFactory, object, IJsCsGlue> > { [typeof(string)] = (factory, @object) => factory.BuildString(@object), [typeof(bool)] = (factory, @object) => factory.BuildBool(@object), [typeof(int)] = (factory, @object) => factory.BuildInt(@object), [typeof(double)] = (factory, @object) => factory.BuildDouble(@object), [typeof(uint)] = (factory, @object) => factory.BuildUint(@object), [typeof(decimal)] = (factory, @object) => factory.BuildDecimal(@object), [typeof(long)] = (factory, @object) => factory.BuildLong(@object), [typeof(short)] = (factory, @object) => factory.BuildShort(@object), [typeof(float)] = (factory, @object) => factory.BuildFloat(@object), [typeof(ulong)] = (factory, @object) => factory.BuildUlong(@object), [typeof(ushort)] = (factory, @object) => factory.BuildUshort(@object), [typeof(DateTime)] = (factory, @object) => factory.BuildDateTime(@object), [typeof(char)] = (factory, @object) => factory.BuildChar(@object), }; }
internal BidirectionalMapper(object root, HtmlViewEngine contextBuilder, IGlueFactory glueFactory, IJavascriptObjectBuilderStrategyFactory strategyFactory, JavascriptBindingMode mode, IWebSessionLogger logger) { _BuilderStrategyFactory = strategyFactory ?? new StandardStrategyFactory(); Mode = mode; _Logger = logger; var javascriptObjectChanges = (mode == JavascriptBindingMode.TwoWay) ? (IJavascriptChangesObserver)this : null; Context = contextBuilder.GetMainContext(javascriptObjectChanges); _SessionCache = new SessionCacher(); var jsUpdateHelper = new JsUpdateHelper(this, Context, () => _BuilderStrategy, _SessionCache); _ListenerUpdater = ListenToCSharp ? new ListenerUpdater(jsUpdateHelper) : null; glueFactory = glueFactory ?? GlueFactoryFactory.GetFactory(Context, _SessionCache, this, _ListenerUpdater?.On); _JsObjectBuilder = new CSharpToJavascriptConverter(_SessionCache, glueFactory, _Logger); jsUpdateHelper.JsObjectBuilder = _JsObjectBuilder; _JsUpdateHelper = jsUpdateHelper; _RootObject = root; _JsUpdateHelper.CheckUiContext(); JsValueRoot = _JsObjectBuilder.Map(_RootObject); JsValueRoot.AddRef(); }
public CSharpToGlueMapper(ICSharpToJsCache cacher, IGlueFactory glueFactory, IWebSessionLogger logger) { _GlueFactory = glueFactory; _Logger = logger; _Cacher = cacher; _Converters = new Dictionary <Type, Func <IGlueFactory, object, IJsCsGlue> > { [Types.String] = (factory, @object) => factory.BuildString(@object), [Types.Bool] = (factory, @object) => factory.BuildBool(@object), [Types.Int] = (factory, @object) => factory.BuildInt(@object), [Types.Double] = (factory, @object) => factory.BuildDouble(@object), [Types.Uint] = (factory, @object) => factory.BuildUint(@object), [Types.Byte] = (factory, @object) => factory.BuildByte(@object), [Types.SByte] = (factory, @object) => factory.BuildSByte(@object), [Types.Decimal] = (factory, @object) => factory.BuildDecimal(@object), [Types.Long] = (factory, @object) => factory.BuildLong(@object), [Types.Short] = (factory, @object) => factory.BuildShort(@object), [Types.Float] = (factory, @object) => factory.BuildFloat(@object), [Types.ULong] = (factory, @object) => factory.BuildUlong(@object), [Types.UShort] = (factory, @object) => factory.BuildUshort(@object), [Types.DateTime] = (factory, @object) => factory.BuildDateTime(@object), [Types.Char] = (factory, @object) => factory.BuildChar(@object), }; }
private static IJsCsGlue BuildResultCommandWithTarg <TArg, TRes>(IGlueFactory factory, object @object) => factory.Build((IResultCommand <TArg, TRes>)@object);
private static IJsCsGlue BuildCommandWithoutParameter(IGlueFactory factory, object @object) => factory.Build((ICommandWithoutParameter)@object);
private static IJsCsGlue BuildGenericCommand <T>(IGlueFactory factory, object @object) => factory.Build((ICommand <T>)@object);
private static IJsCsGlue BuildSimpleCommand(IGlueFactory factory, object @object) => factory.Build((ISimpleCommand)@object);
private static IJsCsGlue BuildEnum(IGlueFactory factory, object @object) => factory.BuildEnum((Enum)@object);
private JsArray Build(IGlueFactory factory, IEnumerable enumerable) { return(factory.BuildArray(enumerable, _BasicType)); }
private CSharpToGlueMapper GetCircularBreakerConverter(ISessionCache cacher) { _GlueFactory = new GlueFactory(null, cacher, null, _ObjectChangesListener); return(new CSharpToGlueMapper(cacher, _GlueFactory, _Logger)); }
public IJsCsGlue Convert(IGlueFactory factory, object @object) { var propertyAcessor = DictionaryPropertyAccessor.FromStringDictionary(@object, _TargetType); return(Convert(factory, @object, propertyAcessor)); }
public IJsCsGlue Convert(IGlueFactory factory, object @object) { var propertyAccessor = new DynamicObjectPropertyAccessor((DynamicObject)@object); return(Convert(factory, @object, propertyAccessor)); }
private static IJsCsGlue BuildResultCommand(IGlueFactory factory, object @object) => factory.Build((IResultCommand)@object);