public void AppendToBottom(IEnumerable <TData> set)
        {
            if (ReferenceEquals(null, set))
            {
                return;
            }

            if (_currentBindRequest is BindNextRequest)
            {
                _currentBindRequest.Merge(set);
            }

            var link = _window.Count > 0 ? _bindings.FindFromTail(_window.Last.Value.LinkedData) : _bindings.First;

            while (!ReferenceEquals(null, link))
            {
                TryAppendToWindowBottom(link.Value);
                link = link.Next;
            }

            // обнуляется он только когда есть запас записей
            _currentBindRequest = _bindings.ContainsFromTail(_preBoundaryThreshold, _window.Last.Value.LinkedData)
                                ? _currentBindRequest
                                : null;

            UnityEngine.Debug.Log(
                _bindings.ToText(
                    string.Format(
                        "<color=magenta>BINDINGS now are with request: {0}</color>",
                        _currentBindRequest == null ? "null" : _currentBindRequest.GetType().NameNice())));
        }
        protected override void beforeEach()
        {
            var repo = new MockRepository();

            _bindings = new List <ITemplate>();
            _bindings.AddRange(Enumerable.Range(1, 5).Select(x => repo.DynamicMock <ITemplate>()));

            _logger = MockFor <ISparkLogger>();
            _sharedTemplateLocator = MockFor <ISharedTemplateLocator>();

            _template = MockFor <ITemplate>();
            _template.Stub(x => x.Descriptor).PropertyBehavior();
            _template.Stub(x => x.FilePath).Return("Fubu.spark");
            _template.Stub(x => x.RootPath).Return("/App/Views");
            _template.Stub(x => x.Origin).Return("Host");
            _template.Descriptor = new ViewDescriptor(_template);

            ClassUnderTest.BindingsName = "bindings";

            _request = new BindRequest
            {
                TemplateRegistry = new TemplateRegistry(new[] { _template }.Union(_bindings)),
                Target           = _template,
                ViewModelType    = typeof(ProductModel).FullName,
                Logger           = _logger,
            };

            _sharedTemplateLocator
            .Expect(x => x.LocateBindings(ClassUnderTest.BindingsName, _template, _request.TemplateRegistry))
            .Return(_bindings);

            _logger
            .Expect(x => x.Log(Arg.Is(_template), Arg <string> .Is.Anything, Arg <string> .Is.Anything))
            .Repeat.Times(_bindings.Count);
        }
Пример #3
0
        public void Bind(IBindRequest request)
        {
            var logger     = request.Logger;
            var template   = request.Target;
            var descriptor = template.Descriptor.As <ViewDescriptor>();

            var types     = request.Types.TypesWithFullName(request.ViewModelType);
            var typeCount = types.Count();

            if (typeCount == 1)
            {
                descriptor.ViewModel = types.First();
                logger.Log(template, "View model type is : [{0}]", descriptor.ViewModel);

                return;
            }

            logger.Log(template, "Unable to set view model type : {0}", request.ViewModelType);

            if (typeCount > 1)
            {
                var candidates = types.Select(x => x.AssemblyQualifiedName).Join(", ");
                logger.Log(template, "Type ambiguity on: {0}", candidates);
            }
        }
Пример #4
0
        public bool CanBind(IBindRequest <T> request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor <T>;

            return(descriptor != null &&
                   !descriptor.HasViewModel() &&
                   request.Parsing.ViewModelType.IsNotEmpty() &&
                   GenericParser.IsGeneric(request.Parsing.ViewModelType));
        }
Пример #5
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;

            return(descriptor != null &&
                   !descriptor.HasViewModel() &&
                   !request.Target.IsPartial() &&
                   request.ViewModelType.IsNotEmpty() &&
                   GenericParser.IsGeneric(request.ViewModelType) == false);
        }
Пример #6
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;

            return(descriptor != null &&
                   descriptor.Master == null &&
                   (request.ViewModelType.IsNotEmpty() || request.Master.IsNotEmpty()) &&
                   !request.Target.IsPartial() &&
                   request.Master != string.Empty);
        }
        public void ShiftWindowDown()
        {
            // попадает ли хвост в диапазон и отправлен ли запрос
            if (!(_currentBindRequest is BindNextRequest) && _bindings.ContainsFromTail(_preBoundaryThreshold, _window.Last.Value.LinkedData))
            {
                _currentBindRequest = new BindNextRequest(this);
                _currentBindRequest.Execute();
            }

            var next = _bindings.Find(_window.Last.Value.LinkedData).Next;

            // while scrolling up (moving down)
            if (next == null)
            {
                var measureCutting = new Straight {
                    Direction = GrowDirection
                };
                VectorGeneric2 firstIntersection;
                VectorGeneric2 lastIntersection;
                VectorGeneric2 boundIntersection;
                _window.First.Value.RectTransform.GetIntersectionInParentSpace(measureCutting, out firstIntersection);
                _window.Last.Value.RectTransform.GetIntersectionInParentSpace(measureCutting, out lastIntersection);
                RectTransform.GetIntersectionInLocalSpace(measureCutting, out boundIntersection);
                if (boundIntersection.Direction.sqrMagnitude < (lastIntersection.Target - firstIntersection.Origin).sqrMagnitude)
                {
                    CarrierFactory.SetBumperCoDirection(this);
                }
                else
                {
                    CarrierFactory.SetBumperCounterDirection(this);
                }
                return;
            }

            _itemFactory.Put(_window.First.Value);
            _window.RemoveFirst();

            var cutting = new Straight {
                Direction = GrowDirection,
            };
            VectorGeneric2 intersection;

            var item = _itemFactory.Get(next.Value);

            // TODO: one record cause en error here
            _window.Last.Value.RectTransform.GetIntersectionInParentSpace(cutting, out intersection);
            _window.AddLast(item);
            item.RectTransform.anchoredPosition = intersection.Target;

            if (ReferenceEquals(item.LinkedData, _bindings.Last.Value))
            {
                OnCoDirectionBoundReach();
            }
        }
Пример #8
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;
            var parsing = request.Parsing;

            return descriptor != null
                   && !descriptor.HasViewModel()
                   && !request.Target.IsPartial()
                   && parsing.ViewModelType.IsNotEmpty()
                   && GenericParser.IsGeneric(parsing.ViewModelType) == false;
        }
Пример #9
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;
            var parsing    = request.Parsing;

            return(descriptor != null &&
                   !descriptor.HasViewModel() &&
                   !request.Target.IsPartial() &&
                   parsing.ViewModelType.IsNotEmpty() &&
                   GenericParser.IsGeneric(parsing.ViewModelType));
        }
Пример #10
0
        public void Bind(IBindRequest request)
        {
            var target     = request.Target;
            var logger     = request.Logger;
            var templates  = request.TemplateRegistry;
            var descriptor = target.Descriptor.As <ViewDescriptor>();

            var bindings = _sharedTemplateLocator.LocateBindings(BindingsName, target, templates);

            bindings.Each(template =>
            {
                descriptor.AddBinding(template);
                logger.Log(target, "Binding attached : {0}", template.FilePath);
            });
        }
Пример #11
0
        public void Bind(IBindRequest request)
        {
            var template   = request.Target;
            var tracer     = request.Logger;
            var masterName = request.Master ?? MasterName;

            var master = _sharedTemplateLocator.LocateMaster(masterName, template, request.TemplateRegistry);

            if (master == null)
            {
                tracer.Log(template, "Expected master page [{0}] not found.", masterName);
                return;
            }

            template.Descriptor.As <ViewDescriptor>().Master = master;
            tracer.Log(template, "Master page [{0}] found at {1}", masterName, master.FilePath);
        }
Пример #12
0
        public void Bind(IBindRequest request)
        {
            var logger = request.Logger;
            var template = request.Target;

            var genericParser = new GenericParser(request.Types.Assemblies);
            var viewModel = genericParser.Parse(request.Parsing.ViewModelType);

            if (viewModel != null)
            {
                var descriptor = template.Descriptor.As<ViewDescriptor>();
                descriptor.ViewModel = viewModel;
                logger.Log(template, "Generic view model type is : {0}", descriptor.ViewModel);
                return;
            }

            genericParser.ParseErrors.Each(error => logger.Log(template, error));
        }
Пример #13
0
        public void Bind(IBindRequest request)
        {
            var logger   = request.Logger;
            var template = request.Target;

            var genericParser = new GenericParser(request.Types.Assemblies);
            var viewModel     = genericParser.Parse(request.Parsing.ViewModelType);

            if (viewModel != null)
            {
                var descriptor = template.Descriptor.As <ViewDescriptor>();
                descriptor.ViewModel = viewModel;
                logger.Log(template, "Generic view model type is : {0}", descriptor.ViewModel);
                return;
            }

            genericParser.ParseErrors.Each(error => logger.Log(template, error));
        }
Пример #14
0
 public bool CanBind(IBindRequest request)
 {
     return request.Target.Descriptor is ViewDescriptor
         && request.ViewModelType.IsNotEmpty();
 }
Пример #15
0
 public void Bind(IBindRequest <IRazorTemplate> request)
 {
     Action.Do(request);
 }
Пример #16
0
 public bool CanBind(IBindRequest <IRazorTemplate> request)
 {
     return(Filter.MatchesAny(request));
 }
Пример #17
0
 public bool CanBind(IBindRequest request)
 {
     return request.Target.Descriptor is ViewDescriptor;
 }
Пример #18
0
        public bool CanBind(IBindRequest request)
        {
            var template = request.Target;

            return template.IsSparkView() && !template.IsPartial();
        }
Пример #19
0
        public void Bind(IBindRequest request)
        {
            var logger = request.Logger;
            var template = request.Target;
            var descriptor = template.Descriptor.As<ViewDescriptor>();

            var types = request.Types.TypesWithFullName(request.Parsing.ViewModelType);
            var typeCount = types.Count();

            if (typeCount == 1)
            {
                descriptor.ViewModel = types.First();
                logger.Log(template, "View model type is : [{0}]", descriptor.ViewModel);

                return;
            }

            logger.Log(template, "Unable to set view model type : {0}", request.Parsing.ViewModelType);

            if (typeCount > 1)
            {
                var candidates = types.Select(x => x.AssemblyQualifiedName).Join(", ");
                logger.Log(template, "Type ambiguity on: {0}", candidates);
            }
        }
Пример #20
0
 public bool CanBind(IBindRequest request)
 {
     return(request.Target.Descriptor is ViewDescriptor &&
            request.ViewModelType.IsNotEmpty());
 }
Пример #21
0
        public bool CanBind(IBindRequest <T> request)
        {
            var template = request.Target;

            return(!(template.Descriptor is ViewDescriptor <T>) && _templateSelector.IsAppropriate(template));
        }
Пример #22
0
 public void Bind(IBindRequest <ITemplate> request)
 {
     request.Target.Descriptor = new SparkDescriptor(request.Target);
 }
Пример #23
0
 public bool CanBind(IBindRequest request)
 {
     return(Filter.MatchesAny(request));
 }
Пример #24
0
        public bool CanBind(IBindRequest request)
        {
            var template = request.Target;

            return(template.IsSparkView() && !template.IsPartial());
        }
Пример #25
0
 public bool CanBind(IBindRequest request)
 {
     return(request.Target.Descriptor is ViewDescriptor);
 }
Пример #26
0
        public void Bind(IBindRequest request)
        {
            var template = request.Target;
            var tracer = request.Logger;
            var masterName = request.Master ?? MasterName;

            var master = _sharedTemplateLocator.LocateMaster(masterName, template, request.TemplateRegistry);

            if (master == null)
            {
                tracer.Log(template, "Expected master page [{0}] not found.", masterName);
                return;
            }

            template.Descriptor.As<ViewDescriptor>().Master = master;
            tracer.Log(template, "Master page [{0}] found at {1}", masterName, master.FilePath);
        }
Пример #27
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;

            return descriptor != null
                   && !descriptor.HasViewModel()
                   && !request.Target.IsPartial()
                   && request.ViewModelType.IsNotEmpty()
                   && GenericParser.IsGeneric(request.ViewModelType);
        }
Пример #28
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;

            return(descriptor != null && descriptor.Bindings.Count() == 0);
        }
Пример #29
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;

            return descriptor != null
                && descriptor.Master == null
                && (request.ViewModelType.IsNotEmpty() || request.Master.IsNotEmpty())
                && !request.Target.IsPartial()
                && request.Master != string.Empty;
        }
Пример #30
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;

            return descriptor != null
                   && !descriptor.HasViewModel()
                   && request.ViewModelType.IsNotEmpty();
        }
Пример #31
0
        public void Bind(IBindRequest request)
        {
            var target = request.Target;
            var logger = request.Logger;
            var templates = request.TemplateRegistry;
            var descriptor = target.Descriptor.As<ViewDescriptor>();

            var bindings = _sharedTemplateLocator.LocateBindings(BindingsName, target, templates);
            bindings.Each(template =>
            {
                descriptor.AddBinding(template);
                logger.Log(target, "Binding attached : {0}", template.FilePath);
            });
        }
Пример #32
0
        public bool CanBind(IBindRequest request)
        {
            var descriptor = request.Target.Descriptor as ViewDescriptor;

            return descriptor != null && descriptor.Bindings.Count() == 0;
        }
Пример #33
0
 public void Bind(IBindRequest request)
 {
     request.Target.Descriptor = new ViewDescriptor(request.Target);
 }
Пример #34
0
 public bool CanBind(IBindRequest request)
 {
     var template = request.Target;
     return !(template.Descriptor is ViewDescriptor) && template.IsSparkView();
 }
Пример #35
0
        public bool CanBind(IBindRequest <ITemplate> request)
        {
            var template = request.Target;

            return(!(template.Descriptor is SparkDescriptor) && template.IsSparkView());
        }
Пример #36
0
 public void Bind(IBindRequest request)
 {
     request.Target.Descriptor = new ViewDescriptor(request.Target);
 }
Пример #37
0
 public void Bind(IBindRequest request)
 {
     Action.Do(request);
 }
 protected void SetWindow(int thresholdSize)
 {
     _preBoundaryThreshold = thresholdSize;
     _currentBindRequest   = new BindNextRequest(this);
 }