/// <summary> /// Adds a widget to the UI /// </summary> /// <typeparam name="TThing">The <see cref="ParameterOrOverrideBase"/></typeparam> /// <typeparam name="TValueSet">The <see cref="ParameterValueSetBase"/></typeparam> /// <param name="iterationTrackParameter">The <see cref="IterationTrackParameter"/></param> private void AddWidget <TThing, TValueSet>(IterationTrackParameter iterationTrackParameter) where TThing : ParameterOrOverrideBase where TValueSet : ParameterValueSetBase { var iterationTrackParameterViewModel = new IterationTrackParameterViewModel <TThing, TValueSet>(this.Session, this.Thing, iterationTrackParameter); iterationTrackParameterViewModel.WhenAnyValue(x => x.ChartVisible) .Subscribe(x => { if (this.currentMaximizedViewModel == iterationTrackParameterViewModel && x == Visibility.Collapsed) { this.MinimizeCurrentMaximizedWidget(); } if (this.currentMaximizedViewModel != iterationTrackParameterViewModel && x == Visibility.Visible) { this.MaximizeWidget(iterationTrackParameterViewModel); } this.ResizeControls(); }); this.Disposables.Add(iterationTrackParameterViewModel.OnDeleteCommand.Subscribe(x => this.RemoveWidget(iterationTrackParameterViewModel))); this.Widgets.Insert(Math.Max(this.Widgets.Count - 1, 0), this.GetIterationTrackWidget(iterationTrackParameterViewModel)); this.ResizeControls(); }
/// <summary> /// Remove a widget from the UI /// </summary> /// <typeparam name="TThing">The <see cref="ParameterOrOverrideBase"/></typeparam> /// <typeparam name="TValueSet">The <see cref="ParameterValueSetBase"/></typeparam> /// <param name="iterationTrackParameterViewModel">The Widgets's ViewModel</param> private void RemoveWidget <TThing, TValueSet>(IterationTrackParameterViewModel <TThing, TValueSet> iterationTrackParameterViewModel) where TThing : ParameterOrOverrideBase where TValueSet : ParameterValueSetBase { var widget = this.Widgets.SingleOrDefault(x => x.DataContext == iterationTrackParameterViewModel); if (widget != null) { this.Widgets.Remove(widget); } }
public void Setup() { this.assembler = new Assembler(this.uri); RxApp.MainThreadScheduler = Scheduler.CurrentThread; this.session = new Mock <ISession>(); this.permissionService = new Mock <IPermissionService>(); this.permissionService.Setup(x => x.CanRead(It.IsAny <Thing>())).Returns(true); this.permissionService.Setup(x => x.CanWrite(It.IsAny <Thing>())).Returns(true); this.session.Setup(x => x.PermissionService).Returns(this.permissionService.Object); this.session.Setup(x => x.DataSourceUri).Returns(this.uri.ToString); this.session.Setup(x => x.Assembler).Returns(this.assembler); this.cache = this.assembler.Cache; this.domain = new DomainOfExpertise(Guid.NewGuid(), this.assembler.Cache, this.uri) { Name = "test" }; this.iteration = new Iteration(Guid.NewGuid(), null, null); var iterationTrackParameterTestFixture = new IterationTrackParameterTestFixture(); iterationTrackParameterTestFixture.Setup(); this.iterationTrackParameterForParameter = iterationTrackParameterTestFixture.iterationTrackParameterForParameter; this.iterationTrackParameterForParameterOverride = iterationTrackParameterTestFixture.iterationTrackParameterForParameterOverride; var parameterValueArray = new ValueArray <string>(new[] { "10" }); this.parameterValueSet = new ParameterValueSet(Guid.NewGuid(), null, null) { Published = parameterValueArray, Manual = parameterValueArray, ValueSwitch = ParameterSwitchKind.MANUAL }; ((Parameter)this.iterationTrackParameterForParameter.ParameterOrOverride).ValueSet.Add(this.parameterValueSet); var parameterOverrideValueArray = new ValueArray <string>(new[] { "20" }); this.parameterOverrideValueSet = new ParameterOverrideValueSet(Guid.NewGuid(), null, null) { Published = parameterOverrideValueArray, Manual = parameterOverrideValueArray, ValueSwitch = ParameterSwitchKind.MANUAL }; ((ParameterOverride)this.iterationTrackParameterForParameterOverride.ParameterOrOverride).ValueSet.Add(this.parameterOverrideValueSet); this.cache.AddOrUpdate(new CacheKey(this.parameterValueSet.Iid, this.iteration.Iid), new Lazy <Thing>(() => this.parameterValueSet), (key, value) => value); this.cache.AddOrUpdate(new CacheKey(this.parameterOverrideValueSet.Iid, this.iteration.Iid), new Lazy <Thing>(() => this.parameterOverrideValueSet), (key, value) => value); this.cache.AddOrUpdate(new CacheKey(this.iterationTrackParameterForParameter.ParameterOrOverride.Iid, this.iteration.Iid), new Lazy <Thing>(() => this.iterationTrackParameterForParameter.ParameterOrOverride), (key, value) => value); this.cache.AddOrUpdate(new CacheKey(this.iterationTrackParameterForParameterOverride.ParameterOrOverride.Iid, this.iteration.Iid), new Lazy <Thing>(() => this.iterationTrackParameterForParameterOverride.ParameterOrOverride), (key, value) => value); this.iterationTrackParameterViewModel = new IterationTrackParameterViewModel <Parameter, ParameterValueSet>(this.session.Object, this.iteration, this.iterationTrackParameterForParameter); }
/// <summary> /// Maximized the Widget /// </summary> /// <typeparam name="TThing">The <see cref="ParameterOrOverrideBase"/></typeparam> /// <typeparam name="TValueSet">The <see cref="ParameterValueSetBase"/></typeparam> /// <param name="newMaximizedIterationTrackParameterViewModel"> The ViewModel of the widget to be maximized</param> private void MaximizeWidget <TThing, TValueSet>(IterationTrackParameterViewModel <TThing, TValueSet> newMaximizedIterationTrackParameterViewModel) where TThing : ParameterOrOverrideBase where TValueSet : ParameterValueSetBase { this.MinimizeCurrentMaximizedWidget(); var tile = this.Widgets.SingleOrDefault(x => x.DataContext == newMaximizedIterationTrackParameterViewModel); if (tile != null) { this.MaximizedElement = tile; } }