public IPathValue NewItem(IProviderContext context, string path, string itemTypeName, object newItemValue)
        {
            IScaleDescriptor descriptor = null;

            if (null == newItemValue)
            {
                throw new ArgumentNullException("newItemValue");
            }
            newItemValue = PSObject.AsPSObject(newItemValue).BaseObject;
            if (newItemValue is string)
            {
                descriptor = new ScaleDescriptor(newItemValue as string);
            }
            else if (newItemValue is object[])
            {
                descriptor = new ScaleDescriptor(newItemValue as object[]);
            }
            else
            {
                throw new ArgumentException("the new range value must be specified as a valid range descriptor", "newItemValue");
            }

            _dataSource.Scales.Add(new ScaleDescriptorAssignment {
                PropertyName = path, Scale = descriptor
            });

            return(Resolve(context, path).First().GetNodeValue());
        }
        public static Color?GetColorOfScaleValue(this IScaleDescriptor _this, double value)
        {
            var colors = (from r in _this.Ranges
                          where r.Maximum >= value && r.Minimum <= value
                          select r.Color);

            return(colors.FirstOrDefault());
        }
        public static Color GetColorOfScaleValueOrScaleDefault(this IScaleDescriptor _this, double value)
        {
            var color = (from r in _this.Ranges
                         where r.Maximum >= value && r.Minimum <= value
                         select r.Color).FirstOrDefault();

            if (!color.HasValue)
            {
                return(_this.Color);
            }

            return(color.Value);
        }
Exemple #4
0
        private IDictionary <Regex, IScaleDescriptor> AdaptHashtableToDescriptorTable(Hashtable specs)
        {
            if (null == specs)
            {
                return(new Dictionary <Regex, IScaleDescriptor>());
            }

            var table = new Dictionary <Regex, IScaleDescriptor>();

            foreach (object key in specs.Keys)
            {
                var              value      = specs[key];
                Regex            re         = key as Regex;
                IScaleDescriptor descriptor = value as IScaleDescriptor;

                if (null == re)
                {
                    re = new Regex("^" + Regex.Escape(key.ToString()) + "$",
                                   RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace |
                                   RegexOptions.Singleline);
                }

                if (null == descriptor)
                {
                    Array array = value as Array;
                    if (null != array)
                    {
                        if (1 != array.Length)
                        {
                            descriptor = new ScaleDescriptor((object[])value);
                        }
                        else
                        {
                            value = array.GetValue(0);
                        }
                    }

                    if (null == descriptor)
                    {
                        descriptor = new ScaleDescriptor(value.ToString());
                    }
                }

                table.Add(re, descriptor);
            }

            return(table);
        }
Exemple #5
0
 private void SafeAddScaleDescriptorAssignment(DynamicMemberDescriptor m)
 {
     using (_log.PushContext("SafeAddScaleDescriptorAssignment"))
     {
         IScaleDescriptor sd = m.ScaleDescriptor;
         if (null == sd)
         {
             _log.DebugFormat("getting/creating scale descriptor for {0}", m.MemberInfo.Name);
             GetOrCreateScaleAssignment(m.MemberInfo.Name, m.MemberInfo);
         }
         else
         {
             _log.DebugFormat("adding scale descriptor assignment for {0} to {1}", m.MemberInfo.Name,
                              m.ScaleDescriptor.Name);
             Scales.Add(new ScaleDescriptorAssignment
             {
                 PropertyName = m.MemberInfo.Name, Scale = m.ScaleDescriptor
             });
         }
     }
 }
 public DynamicMemberDescriptor(PSPropertyInfo memberinfo, IScaleDescriptor scaleDescriptor, object indexValue)
 {
     _memberinfo = memberinfo;
     _scaleDescriptor = scaleDescriptor;
     _indexValue = indexValue;
 }
 public DynamicMemberDescriptor( PSPropertyInfo memberinfo, IScaleDescriptor scaleDescriptor)
     : this(memberinfo, scaleDescriptor, null)
 {
 }
 ScaleDescriptor(IScaleDescriptor descriptors, Color color)
 {
     Name   = descriptors.Name;
     Color  = color;
     Ranges = descriptors.Ranges;
 }
Exemple #9
0
        public IPathValue NewItem(IProviderContext context, string path, string itemTypeName, object newItemValue)
        {
            var parameters = context.DynamicParameters as DataSourceNewItemParameters;
            var name       = path;
            var script     = ConvertToScript(newItemValue);

            if (null == script)
            {
                throw new ArgumentException("new item value must be a script block or string", "newItemValue");
            }

            var dataSource = new PowerShellDataSource {
                Name = name, ScriptBlock = script, UseDispatcher = true
            };

            if (null != parameters)
            {
                if (parameters.MaxItemCount.HasValue)
                {
                    dataSource.DataCollectionMaxSize = parameters.MaxItemCount.Value;
                }

                if (parameters.NoDispatcher.IsPresent)
                {
                    dataSource.UseDispatcher = false;
                }


                if (null != parameters.Args)
                {
                    string propertyName = null;

                    var specs = parameters.Args.ToHashtable();

                    foreach (object key in specs.Keys)
                    {
                        var value = specs[key];
                        IScaleDescriptor descriptor = value as IScaleDescriptor;


                        if (null == descriptor)
                        {
                            if (value is Array)
                            {
                                descriptor = new ScaleDescriptor((object[])value);
                            }
                            else
                            {
                                descriptor = new ScaleDescriptor(value.ToString());
                            }
                        }

                        dataSource.Scales.Add(
                            new ScaleDescriptorAssignment
                        {
                            Scale        = descriptor,
                            PropertyName = key.ToString()
                        }
                            );
                    }
                }
            }

            ITrigger trigger = Singleton <ImmediateTrigger> .Instance;

            if (null != parameters && null != parameters.Trigger)
            {
                trigger = parameters.Trigger;
            }
            dataSource.Trigger = trigger;
            _drive.Add(dataSource);

            return(new PathValue(dataSource, name, true));
        }
Exemple #10
0
 ScaleDescriptor(IScaleDescriptor descriptors, Color color)
 {
     Name = descriptors.Name;
     Color = color;
     Ranges = descriptors.Ranges;
 }
Exemple #11
0
 public DynamicMemberDescriptor(PSPropertyInfo memberinfo, IScaleDescriptor scaleDescriptor, object indexValue)
 {
     _memberinfo      = memberinfo;
     _scaleDescriptor = scaleDescriptor;
     _indexValue      = indexValue;
 }
Exemple #12
0
 public DynamicMemberDescriptor(PSPropertyInfo memberinfo, IScaleDescriptor scaleDescriptor)
     : this(memberinfo, scaleDescriptor, null)
 {
 }
 public RangeNodeFactory( IScaleDescriptor owner, IRangeDescriptor range )
 {
     _owner = owner;
     _range = range;
 }
Exemple #14
0
 public RangeNodeFactory(IScaleDescriptor owner, IRangeDescriptor range)
 {
     _owner = owner;
     _range = range;
 }