public void VerifyThatConvertProvidesTheExpectedIcon() { if (Application.Current == null) { new Application(); } var row = new ParameterRowViewModel(this.parameter, this.option, this.session.Object, null); row.Usage = ParameterUsageKind.Unused; var unusedIcon = "pack://application:,,,/CDP4Composition;component/Resources/Images/orangeball.jpg"; var subscribedByOthersIcon = "pack://application:,,,/CDP4Composition;component/Resources/Images/blueball.gif"; var subscribedIcon = "pack://application:,,,/CDP4Composition;component/Resources/Images/whiteball.jpg"; var converterResult = (BitmapImage)this.converter.Convert(new object[] { row.ThingStatus, row.Usage }, null, null, null); Assert.AreEqual(unusedIcon, converterResult.UriSource.ToString()); row.Usage = ParameterUsageKind.SubscribedByOthers; converterResult = (BitmapImage)this.converter.Convert(new object[] { row.ThingStatus, row.Usage }, null, null, null); Assert.AreEqual(subscribedByOthersIcon, converterResult.UriSource.ToString()); row.Usage = ParameterUsageKind.Subscribed; converterResult = (BitmapImage)this.converter.Convert(new object[] { row.ThingStatus, row.Usage }, null, null, null); Assert.AreEqual(subscribedIcon, converterResult.UriSource.ToString()); }
/// <summary> /// Populate the <see cref="Parameter"/>s for this row /// </summary> private void PopulateParameter() { var definedParameters = this.Thing.Parameter; // remove deleted parameters var oldparameters = this.parameterCache.Keys.Except(definedParameters).ToList(); foreach (var parameter in oldparameters) { if (parameter.Group == null) { this.ContainedRows.Remove(this.parameterCache[parameter]); } else { this.parameterGroupCache[parameter.Group].ContainedRows.Remove(this.parameterCache[parameter]); } this.parameterCache[parameter].Dispose(); this.parameterCache.Remove(parameter); this.parameterContainerMap.Remove(parameter); } // create new parameters rows var newparameters = definedParameters.Except(this.parameterCache.Keys).ToList(); foreach (var parameter in newparameters) { var row = new ParameterRowViewModel(parameter, this.Option, this.Session, this); this.parameterCache.Add(parameter, row); this.parameterContainerMap.Add(parameter, parameter.Group); } // add the new parameter in the right position in the tree foreach (var parameter in newparameters) { if (parameter.Group == null) { this.ContainedRows.SortedInsert(this.parameterCache[parameter], ChildRowComparer); } else { var container = this.parameterGroupCache[parameter.Group]; container.ContainedRows.SortedInsert(this.parameterCache[parameter], ParameterGroupRowViewModel.ChildRowComparer); } } }
/// <summary> /// Populate the <see cref="Parameter"/>s for this row /// </summary> private void PopulateParameterOrOverride() { var definedParametersOverride = this.Thing.ParameterOverride; // parameters not overriden var overridenParameters = definedParametersOverride.Select(x => x.Parameter); var definedParameter = this.Thing.ElementDefinition.Parameter.Except(overridenParameters); var definedParameterOrOverride = new List <ParameterBase>(definedParametersOverride); definedParameterOrOverride.AddRange(definedParameter); // remove deleted ParameterOrOverride var oldParameterOrOverride = this.parameterOrOverrideBaseCache.Keys.Except(definedParameterOrOverride).ToList(); foreach (var parameterOrOverride in oldParameterOrOverride) { var group = this.parameterOrOverrideContainerMap[parameterOrOverride]; if (group == null) { this.ContainedRows.Remove(this.parameterOrOverrideBaseCache[parameterOrOverride]); } else { this.parameterGroupCache[group].ContainedRows.Remove(this.parameterOrOverrideBaseCache[parameterOrOverride]); } this.parameterOrOverrideBaseCache[parameterOrOverride].Dispose(); this.parameterOrOverrideBaseCache.Remove(parameterOrOverride); this.parameterOrOverrideContainerMap.Remove(parameterOrOverride); } // create new ParameterOrOverride rows var newparameterOrOverrides = definedParameterOrOverride.Except(this.parameterOrOverrideBaseCache.Keys).ToList(); foreach (var parameterOrOverride in newparameterOrOverrides) { IRowViewModelBase <ParameterOrOverrideBase> row; var parameterOverride = parameterOrOverride as ParameterOverride; if (parameterOverride != null) { row = new ParameterOverrideRowViewModel(parameterOverride, this.Option, this.Session, this); } else { row = new ParameterRowViewModel((Parameter)parameterOrOverride, this.Option, this.Session, this); } this.parameterOrOverrideBaseCache.Add(parameterOrOverride, row); this.parameterOrOverrideContainerMap.Add(parameterOrOverride, parameterOrOverride.Group); } // add the new ParameterOrOverride in the right position in the tree foreach (var parameterOrOverride in newparameterOrOverrides) { if (parameterOrOverride.Group == null) { this.ContainedRows.SortedInsert(this.parameterOrOverrideBaseCache[parameterOrOverride], ChildRowComparer); } else { var container = this.parameterGroupCache[parameterOrOverride.Group]; container.ContainedRows.SortedInsert(this.parameterOrOverrideBaseCache[parameterOrOverride], ParameterGroupRowViewModel.ChildRowComparer); } } }