示例#1
0
        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());
        }
示例#2
0
        /// <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);
                }
            }
        }
示例#3
0
        /// <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);
                }
            }
        }