Ejemplo n.º 1
0
        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;
 }
Ejemplo n.º 3
0
        public IJsCsGlue Convert(IGlueFactory factory, object @object)
        {
            var result = factory.Build(@object, _PropertyAccessor);

            result.SetAttributes(MapNested(@object));
            return(result);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        internal IJsCsGlue ConvertEnumerable(IGlueFactory factory, object @object)
        {
            var enumerable  = (IEnumerable)@object;
            var arrayResult = Build(factory, enumerable);

            arrayResult.SetChildren(Convert(enumerable));
            return(arrayResult);
        }
Ejemplo n.º 6
0
        internal IJsCsGlue ConvertCollection(IGlueFactory factory, object @object)
        {
            var collection  = (ICollection)@object;
            var arrayResult = Build(factory, collection);

            arrayResult.SetChildren(Convert(collection));
            return(arrayResult);
        }
Ejemplo n.º 7
0
 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);
 }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 12
0
        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;
        }
Ejemplo n.º 13
0
 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),
     };
 }
Ejemplo n.º 14
0
        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();
        }
Ejemplo n.º 15
0
 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),
     };
 }
Ejemplo n.º 16
0
 private static IJsCsGlue BuildResultCommandWithTarg <TArg, TRes>(IGlueFactory factory, object @object) => factory.Build((IResultCommand <TArg, TRes>)@object);
Ejemplo n.º 17
0
 private static IJsCsGlue BuildCommandWithoutParameter(IGlueFactory factory, object @object) => factory.Build((ICommandWithoutParameter)@object);
Ejemplo n.º 18
0
 private static IJsCsGlue BuildGenericCommand <T>(IGlueFactory factory, object @object) => factory.Build((ICommand <T>)@object);
Ejemplo n.º 19
0
 private static IJsCsGlue BuildSimpleCommand(IGlueFactory factory, object @object) => factory.Build((ISimpleCommand)@object);
Ejemplo n.º 20
0
 private static IJsCsGlue BuildEnum(IGlueFactory factory, object @object) => factory.BuildEnum((Enum)@object);
Ejemplo n.º 21
0
 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));
        }
Ejemplo n.º 25
0
 private static IJsCsGlue BuildResultCommand(IGlueFactory factory, object @object) => factory.Build((IResultCommand)@object);