public MyReportBase Print(Action <XtraReport> printAction)
        {
            var actions       = OnGetDefautActions();
            var defaultFacade = new XRRuntimeActionFacade(actions.ToArray());

            _toDos = new List <IReportRuntimeAction>();
            OnRegisterAdditionalActions();
            var additionalActionsFacade = new XRRuntimeActionFacade(_toDos.ToArray());

            var newView = _view.ConvertReportToMyReportBase();

            newView.RootHashCode = newView.GetHashCode();
            _subscriber          = new ScopedXRSubscriber(newView.RootHashCode, c =>
            {
                defaultFacade.AttemptActionsOnControl(c);
                additionalActionsFacade.AttemptActionsOnControl(c);

                if (_injectedFacade != null)
                {
                    _injectedFacade.AttemptActionsOnControl(c);
                }
            });
            printAction(newView);
            return(newView);
        }
        public void Should_not_collide_with_two_controllers()
        {
            var view = new XtraReport {DataSource = new[] {new object(), new object()}};

            var counterA = 0;
            var counterB = 0;

            var actionA = ReportRuntimeAction<XRControl>.WithNoPredicate(c => counterA++);
            var actionB = ReportRuntimeAction<XRControl>.WithNoPredicate(c => counterB++);
            var facadeA = new XRRuntimeActionFacade(actionA);
            var facadeB = new XRRuntimeActionFacade(actionB);

            var controllerA = new XRReportController(view, facadeA);
            var controllerB = new XRReportController(view, facadeB);

            controllerA.Print(r => r.ExportToMemory());
            controllerB.Print(r => r.ExportToMemory());

            counterA.Should().Be(1);
            counterB.Should().Be(1);
        }
 public XRReportController(XtraReport view, XRRuntimeActionFacade injectedFacade = null)
 {
     _view           = view;
     _injectedFacade = injectedFacade;
     GlobalXRSubscriber.Init();
 }
 public void GivenTheXtrasubreportEngineIsInitialized()
 {
     var facade = new XRRuntimeActionFacade(_action);
     _controller = new XRReportController(_report, facade);
 }
        public void Should_handle_detail_reports_with_subreport()
        {
            var textvalues = new List<Tuple<int,string>>();
            var report = new XtraReportWithSubReportInDetailReport();
            report.DataSource = new List<Person2>
                                    {
                                        new Person2
                                            {
                                                Name = "Douglas Sam",
                                                Age = 17,
                                                Dogs = new List<Dog> {new Dog {Name = "Rex"}, new Dog {Name = "Rudy"}}
                                            },
                                        new Person2
                                            {
                                                Name = "Fred Thomas",
                                                Age = 35,
                                                Dogs =
                                                    new List<Dog> {new Dog {Name = "Sally"}, new Dog {Name = "Stubert"}}
                                            },
                                        new Person2
                                            {
                                                Name = "Alex Matthew",
                                                Age = 100,
                                                Dogs =
                                                    new List<Dog>
                                                        {new Dog {Name = "Nibbles"}, new Dog {Name = "Norbert"}}
                                            }

                                    };
            int counter = 0;
            var action = ReportRuntimeAction<XRLabel>.WithNoPredicate(l =>
                                                              {
                                                                  counter++;
                                                                  textvalues.Add(new Tuple<int, string>(l.Report.GetHashCode(), l.Text));
                                                              });
            var facade = new XRRuntimeActionFacade(action);

            var c = new XRReportController(report, facade);
            var newReport = c.Print(a=> a.ExportToMemory());
            //Not safe for batch test runs GlobalXRSubscriber.Singleton.Visitors.Count.Should().Be(2);
            counter.Should().Be(6);
        }
        public override IReportController GetController(XtraReport report)
        {
            var runtimeActions = GetRuntimeActions(_additionalReportActions);
            var facade = new XRRuntimeActionFacade(runtimeActions);

            return new XRReportController(report, facade);
        }