public MainWindow()
        {
            InitializeComponent();

            // Define the application's look-and-feel.
            // (Don't forget to add a corresponding assembly to the project).
            ThemeManager.ApplicationThemeName = "Office1020blue";

            // Create a new string builder.
            var builder = new OleDbConnectionStringBuilder()
            {
                Provider   = "Microsoft.Jet.OLEDB.4.0",
                DataSource = "nwind.mdb"
            };

            // Register the string builder in the current data provider repository.
            DataProviderRepository.Current.Register("nwind", "Northwind", builder.ToString());

            // Create a new client factory and view model for the Designer.
            var factory = new LocalReportDesignerClientFactory();
            var model   = new ReportDesignerViewModel()
            {
                ReportName           = "WpfReportDesigner_local.SampleReport",
                ServiceClientFactory = factory
            };

            // Assign the model to the Report Designer,
            // and start a design session.
            reportDesigner.Model = model;
            reportDesigner.Model.StartDesign();
            LocalReportDesignerClient qw = new LocalReportDesignerClient();
        }
示例#2
0
        /// <summary>
        /// Returns an instance of <see cref="ReportDesignerRibbonViewModel"/>
        /// </summary>
        /// <param name="iteration">The associated <see cref="Iteration"/></param>
        /// <param name="session">The <see cref="ISession"/></param>
        /// <param name="thingDialogNavigationService">The <see cref="IThingDialogNavigationService"/></param>
        /// <param name="panelNavigationService">The <see cref="IPanelNavigationService"/></param>
        /// <param name="dialogNavigationService">The <see cref="IDialogNavigationService"/></param>
        /// <param name="pluginSettingsService">
        /// The <see cref="IPluginSettingsService"/> used to read and write plugin setting files.
        /// </param>
        /// <returns>An instance of <see cref="ReportDesignerRibbonViewModel"/></returns>
        public static ReportDesignerViewModel InstantiatePanelViewModel(
            Iteration iteration,
            ISession session,
            IThingDialogNavigationService thingDialogNavigationService,
            IPanelNavigationService panelNavigationService,
            IDialogNavigationService dialogNavigationService,
            IPluginSettingsService pluginSettingsService)
        {
            if (!(iteration.Container is EngineeringModel model))
            {
                throw new InvalidOperationException("The container of an Iteration cannot be anything else than an Engineering Model.");
            }

            var participant = model.GetActiveParticipant(session.ActivePerson);

            if (participant == null)
            {
                throw new InvalidOperationException("The Participant in an engineering model cannot be null");
            }

            var stopWatch = Stopwatch.StartNew();
            var viewModel = new ReportDesignerViewModel(iteration, session, thingDialogNavigationService, panelNavigationService, dialogNavigationService, pluginSettingsService);

            stopWatch.Stop();
            Logger.Info("The Report Designer opened in {0}", stopWatch.Elapsed.ToString("hh':'mm':'ss'.'fff"));

            return(viewModel);
        }
        public void SetUp()
        {
            this.CleanupExistingFiles();

            RxApp.MainThreadScheduler = Scheduler.CurrentThread;

            this.session = new Mock <ISession>();
            this.thingDialogNavigationService        = new Mock <IThingDialogNavigationService>();
            this.panelNavigationService              = new Mock <IPanelNavigationService>();
            this.dialogNavigationService             = new Mock <IDialogNavigationService>();
            this.pluginSettingsService               = new Mock <IPluginSettingsService>();
            this.openSaveFileDialogService           = new Mock <IOpenSaveFileDialogService>();
            this.submittableParameterValuesCollector = new Mock <ISubmittableParameterValuesCollector>();
            this.permissionService   = new Mock <IPermissionService>();
            this.dynamicTableChecker = new Mock <IDynamicTableChecker>();
            this.messageBoxService   = new Mock <IMessageBoxService>();

            this.serviceLocator = new Mock <IServiceLocator>();
            ServiceLocator.SetLocatorProvider(() => this.serviceLocator.Object);

            this.serviceLocator.Setup(x => x.GetInstance <IOpenSaveFileDialogService>()).Returns(this.openSaveFileDialogService.Object);
            this.serviceLocator.Setup(x => x.GetInstance <ISubmittableParameterValuesCollector>()).Returns(this.submittableParameterValuesCollector.Object);
            this.serviceLocator.Setup(x => x.GetInstance <IDynamicTableChecker>()).Returns(this.dynamicTableChecker.Object);
            this.serviceLocator.Setup(x => x.GetInstance <IMessageBoxService>()).Returns(this.messageBoxService.Object);

            this.assembler = new Assembler(this.uri);
            this.cache     = this.assembler.Cache;

            this.sitedir    = new SiteDirectory(Guid.NewGuid(), this.cache, this.uri);
            this.modelsetup = new EngineeringModelSetup(Guid.NewGuid(), this.cache, this.uri)
            {
                Name = "model"
            };
            this.iterationsetup = new IterationSetup(Guid.NewGuid(), this.cache, this.uri);
            this.person         = new Person(Guid.NewGuid(), this.cache, this.uri);

            this.participant = new Participant(Guid.NewGuid(), this.cache, this.uri)
            {
                Person = this.person, SelectedDomain = domainOfExpertise
            };

            this.sitedir.Model.Add(this.modelsetup);
            this.sitedir.Person.Add(this.person);
            this.sitedir.Domain.Add(domainOfExpertise);
            this.sitedir.Domain.Add(domainOfExpertise_2);
            this.sitedir.Domain.Add(domainOfExpertise_3);
            this.modelsetup.IterationSetup.Add(this.iterationsetup);
            this.modelsetup.Participant.Add(this.participant);

            this.model = new EngineeringModel(Guid.NewGuid(), this.cache, this.uri)
            {
                EngineeringModelSetup = this.modelsetup
            };
            this.iteration = new Iteration(Guid.NewGuid(), this.cache, this.uri)
            {
                IterationSetup = this.iterationsetup
            };
            this.model.Iteration.Add(this.iteration);

            this.elementDefinition_1 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "Sat",
                Name      = "Satellite"
            };

            this.elementDefinition_2 = new ElementDefinition(Guid.NewGuid(), this.cache, this.uri)
            {
                ShortName = "Bat",
                Name      = "Battery"
            };

            this.elementUsage_1 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDefinition_2,
                ShortName         = "bat_a",
                Name = "battery a"
            };

            this.elementUsage_2 = new ElementUsage(Guid.NewGuid(), this.cache, this.uri)
            {
                ElementDefinition = this.elementDefinition_2,
                ShortName         = "bat_b",
                Name = "battery b"
            };

            var simpleQuantityKind = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                ShortName = "m"
            };

            var simpleQuantityKind2 = new SimpleQuantityKind(Guid.NewGuid(), null, null)
            {
                ShortName = "v"
            };

            var ratioScale = new RatioScale(Guid.NewGuid(), null, null);

            simpleQuantityKind.PossibleScale.Add(ratioScale);
            simpleQuantityKind.DefaultScale = ratioScale;

            simpleQuantityKind2.PossibleScale.Add(ratioScale);
            simpleQuantityKind2.DefaultScale = ratioScale;

            var actualList = new ActualFiniteStateList(Guid.NewGuid(), null, null);

            actualList.Owner = domainOfExpertise;

            var possibleList1 = new PossibleFiniteStateList(Guid.NewGuid(), null, null);

            var possibleState1 = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                Name = "possiblestate1", ShortName = "1"
            };
            var possibleState2 = new PossibleFiniteState(Guid.NewGuid(), null, null)
            {
                Name = "possiblestate2", ShortName = "2"
            };

            possibleList1.PossibleState.Add(possibleState1);
            possibleList1.PossibleState.Add(possibleState2);

            actualList.PossibleFiniteStateList.Add(possibleList1);

            this.actualState_3 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);

            this.actualState_3.PossibleState.Add(possibleState1);

            this.actualState_4 = new ActualFiniteState(Guid.NewGuid(), this.cache, this.uri);

            this.actualState_4.PossibleState.Add(possibleState2);

            this.parameter = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner             = domainOfExpertise,
                ParameterType     = simpleQuantityKind,
                IsOptionDependent = true,
                Scale             = ratioScale
            };

            var parameterSubscription = new ParameterSubscription(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner = domainOfExpertise_3
            };

            this.parameter.ParameterSubscription.Add(parameterSubscription);

            this.parameter2 = new Parameter(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner           = domainOfExpertise_2,
                ParameterType   = simpleQuantityKind2,
                StateDependence = actualList,
                Scale           = ratioScale
            };

            this.parameterOverride = new ParameterOverride(Guid.NewGuid(), this.cache, this.uri)
            {
                Owner     = domainOfExpertise,
                Parameter = this.parameter
            };

            var parameterValueset_1 = new ParameterValueSet
            {
                ActualOption = option_B,
                Iid          = Guid.NewGuid()
            };

            var parameterValueset_2 = new ParameterValueSet
            {
                ActualOption = option_A,
                Iid          = Guid.NewGuid()
            };

            var parameterValueset_3 = new ParameterValueSet
            {
                ActualState = this.actualState_3,
                Iid         = Guid.NewGuid()
            };

            var parameterValueset_4 = new ParameterValueSet
            {
                ActualState = this.actualState_4,
                Iid         = Guid.NewGuid()
            };

            var parameterSubscriptionValueSetA = new ParameterSubscriptionValueSet
            {
                Iid = Guid.NewGuid()
            };

            var parameterSubscriptionValueSetB = new ParameterSubscriptionValueSet
            {
                Iid = Guid.NewGuid()
            };

            var values_1 = new List <string> {
                "2"
            };
            var values_2 = new List <string> {
                "3"
            };
            var values_3 = new List <string> {
                "220"
            };
            var emptyValues = new List <string> {
                "-"
            };
            var publishedValues = new List <string> {
                "123"
            };
            var subscriptionValues = new List <string> {
                "456"
            };

            var overrideValueset = new ParameterOverrideValueSet()
            {
                ParameterValueSet = parameterValueset_1,
                Iid = Guid.NewGuid()
            };

            this.iteration.Option.Add(option_A);
            this.iteration.Option.Add(option_B);
            this.iteration.DefaultOption = option_A;

            parameterValueset_1.Manual      = new ValueArray <string>(values_1);
            parameterValueset_1.Reference   = new ValueArray <string>(values_1);
            parameterValueset_1.Computed    = new ValueArray <string>(values_1);
            parameterValueset_1.Formula     = new ValueArray <string>(values_1);
            parameterValueset_1.Published   = new ValueArray <string>(publishedValues);
            parameterValueset_1.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_2.Manual      = new ValueArray <string>(values_2);
            parameterValueset_2.Reference   = new ValueArray <string>(values_2);
            parameterValueset_2.Computed    = new ValueArray <string>(values_2);
            parameterValueset_2.Formula     = new ValueArray <string>(values_2);
            parameterValueset_2.Published   = new ValueArray <string>(publishedValues);
            parameterValueset_2.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_3.Manual      = new ValueArray <string>(values_3);
            parameterValueset_3.Reference   = new ValueArray <string>(values_3);
            parameterValueset_3.Computed    = new ValueArray <string>(values_3);
            parameterValueset_3.Formula     = new ValueArray <string>(values_3);
            parameterValueset_3.Published   = new ValueArray <string>(emptyValues);
            parameterValueset_3.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterValueset_4.Manual      = new ValueArray <string>(emptyValues);
            parameterValueset_4.Reference   = new ValueArray <string>(emptyValues);
            parameterValueset_4.Computed    = new ValueArray <string>(emptyValues);
            parameterValueset_4.Formula     = new ValueArray <string>(emptyValues);
            parameterValueset_4.Published   = new ValueArray <string>(publishedValues);
            parameterValueset_4.ValueSwitch = ParameterSwitchKind.MANUAL;

            overrideValueset.Manual      = new ValueArray <string>(values_1);
            overrideValueset.Reference   = new ValueArray <string>(values_1);
            overrideValueset.Computed    = new ValueArray <string>(values_1);
            overrideValueset.Formula     = new ValueArray <string>(values_1);
            overrideValueset.Published   = new ValueArray <string>(publishedValues);
            overrideValueset.ValueSwitch = ParameterSwitchKind.MANUAL;

            parameterSubscriptionValueSetA.Manual             = new ValueArray <string>(subscriptionValues);
            parameterSubscriptionValueSetA.ValueSwitch        = ParameterSwitchKind.MANUAL;
            parameterSubscriptionValueSetA.SubscribedValueSet = parameterValueset_1;

            parameterSubscriptionValueSetB.Manual             = new ValueArray <string>(subscriptionValues);
            parameterSubscriptionValueSetB.ValueSwitch        = ParameterSwitchKind.COMPUTED;
            parameterSubscriptionValueSetB.SubscribedValueSet = parameterValueset_2;

            this.parameter.ValueSet.Add(parameterValueset_1);
            this.parameter.ValueSet.Add(parameterValueset_2);

            this.parameterOverride.ValueSet.Add(overrideValueset);

            this.parameter2.ValueSet.Add(parameterValueset_3);
            this.parameter2.ValueSet.Add(parameterValueset_4);

            parameterSubscription.ValueSet.Add(parameterSubscriptionValueSetA);
            parameterSubscription.ValueSet.Add(parameterSubscriptionValueSetB);

            this.elementUsage_1.ExcludeOption.Add(option_A);
            this.elementUsage_1.ParameterOverride.Add(this.parameterOverride);

            this.elementDefinition_1.Parameter.Add(this.parameter);
            this.elementDefinition_1.ContainedElement.Add(this.elementUsage_1);
            this.elementDefinition_1.ContainedElement.Add(this.elementUsage_2);

            this.elementDefinition_2.Parameter.Add(this.parameter);
            this.elementDefinition_2.Parameter.Add(this.parameter2);

            this.iteration.Element.Add(this.elementDefinition_1);
            this.iteration.Element.Add(this.elementDefinition_2);
            this.iteration.TopElement = this.elementDefinition_1;

            this.iteration.ActualFiniteStateList.Add(actualList);
            this.iteration.PossibleFiniteStateList.Add(possibleList1);
            actualList.ActualState.Add(this.actualState_3);
            actualList.ActualState.Add(this.actualState_4);

            this.session.Setup(x => x.RetrieveSiteDirectory()).Returns(this.sitedir);
            this.session.Setup(x => x.ActivePerson).Returns(this.person);
            this.session.Setup(x => x.DataSourceUri).Returns(this.uri.ToString);
            this.session.Setup(x => x.Assembler).Returns(this.assembler);
            this.session.Setup(x => x.IsVersionSupported(It.IsAny <Version>())).Returns(true);
            this.session.Setup(x => x.OpenIterations).Returns(new Dictionary <Iteration, Tuple <DomainOfExpertise, Participant> >());
            this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object);

            this.cache.TryAdd(new CacheKey(this.iteration.Iid, null), new Lazy <Thing>(() => this.iteration));

            this.reportDesignerViewModel = new ReportDesignerViewModel(this.iteration, this.session.Object, this.thingDialogNavigationService.Object, this.panelNavigationService.Object, this.dialogNavigationService.Object, this.pluginSettingsService.Object);
        }
 public MainPageViewModel(ReportDesignerViewModel reportDesignerViewModel)
 {
     this.reportDesignerViewModel = reportDesignerViewModel;
 }