Ejemplo n.º 1
0
 public override Boolean CanResetValue(Object component)
 {
     //Cannot reset key property (this would create a new instance)
     if (WmiHelper.IsKeyProperty(prop))
     {
         return(false);
     }
     else
     {
         return(!IsReadOnly);
     }
 }
        /// <summary>
        /// Creates and adds to grid a single row corresponding to a single property. Can be called recursively for embedded
        /// objects.
        /// </summary>
        /// <param name="prop"> </param>
        /// <param name="namePrefix">This is used for embedded objects, so that the propertyof an embedded object
        /// appears to have name of form "Parent.Child" </param>
        private DataRow CreatePropertyRow(Property prop, string namePrefix)
        {
            if (prop == null)
            {
                return(null);
            }

            if (propFilters.HideInherited && !prop.IsLocal)
            {
                return(null);                   //skip this property
            }


            DataRow propRow = NewRow();

            propRow[propNameColumn] = namePrefix + prop.Name;

            propRow[propTypeColumn] = CimTypeMapper.ToString(prop.Type);

            if (showOperators)
            {
                //TODO: initialize drop-down. How: in Beta2, a DataGridColumnStyle derived class
                //can be added, DataGridComboBoxColumn. Ask urtuser if they are planning to
                //to add one themselves

                propRow[operatorColumn] = string.Empty;
            }

            if (prop.Type == CimType.Object)
            {
                if ((showValues || showEmbeddedObjValue) &&
                    prop.Value is ManagementBaseObject)
                {
                    if (showOperators)
                    {
                        propRow[operatorColumn] = "ISA";
                    }
                    propRow[propValueColumn] = ((ManagementBaseObject)prop.Value).SystemProperties["__CLASS"].Value.ToString();
                }
                else
                {
                    propRow[propValueColumn] = string.Empty;
                }
            }
            else
            {
                if (showValues)
                {
                    propRow[propValueColumn] = prop.Value;
                }
                else
                {
                    propRow[propValueColumn] = string.Empty;
                }
            }
            //propRow[propDescrColumn] = WmiHelper.GetPropertyDescription(prop, wmiObj);


            //set property origin column

            if (showOrigin)
            {
                if (prop.IsLocal)
                {
                    propRow[propOrigin] = true;
                }
                else
                {
                    propRow[propOrigin] = false;
                }
            }

            if (showKeys)
            {
                propRow[propIsKey] = WmiHelper.IsKeyProperty(prop);
            }

            //grey selectionBoxColumn for expanded embedded object properties:
            if (propRow[propNameColumn].ToString().IndexOf(".") > 0)
            {
                //NOTE: this doesn't work!!! is there a way to disable input on an individual cell?
                propRow.SetUnspecified(selectionBoxColumn);
            }


            Rows.Add(propRow);

            if (prop.Type == CimType.Object && expandEmbedded)
            {
                if (prop.Value != null && prop.Value is ManagementBaseObject)
                {
                    ManagementBaseObject embeddedObj = (ManagementBaseObject)prop.Value;
                    foreach (Property embeddedProp in embeddedObj.Properties)
                    {
                        CreatePropertyRow(embeddedProp, prop.Name + ".");
                    }
                }
            }

            rowPropertyMap.Add(propRow, prop);

            return(propRow);
        }
Ejemplo n.º 3
0
        void SetLabel()
        {
            ManagementPath mgmtPath = mgmtObj.Path;

            if (mgmtPath.IsSingleton)
            {
                label = mgmtPath.ClassName;
            }
            else
            {
                //this is not a singleton.  Construct label to consist of comma-separated
                //key property values and caption value.
                bool   needCaption = true;
                string keyVals     = string.Empty;
                string caption     = string.Empty;

                PropertyCollection props = mgmtObj.Properties;
                try
                {
                    caption = props["Caption"].Value.ToString();
                }
                catch (Exception)
                {
                    //no "Caption" property
                    needCaption = false;
                }

                if (caption == string.Empty)
                {
                    needCaption = false;
                }

                //get key property values
                PropertyCollection.PropertyEnumerator propEnum = mgmtObj.Properties.GetEnumerator();

                while (propEnum.MoveNext())
                {
                    if (WmiHelper.IsKeyProperty(propEnum.Current))
                    {
                        string keyval = propEnum.Current.Value.ToString();
                        if (needCaption && (string.Compare(keyval, caption, true) == 0))
                        {
                            needCaption = false;
                        }
                        keyVals += keyval + ",";
                    }
                }


                if (keyVals != string.Empty)
                {
                    //get rid of last character (a comma)
                    keyVals = keyVals.Substring(0, keyVals.Length - 1);
                }

                if (needCaption)
                {
                    label = caption + "(" + keyVals + ")";
                }
                else
                {
                    label = keyVals;
                }

                if (label == string.Empty)
                {
                    label = className;
                }
            }
        }
Ejemplo n.º 4
0
        private void Initialize()
        {
            try
            {
                this.TableName = wmiObj.Path_.Class;

                propNameColumn = new DataColumn(WMISys.GetString("WMISE_PropTable_ColumnName"));

                propNameColumn.AllowNull = false;
                propNameColumn.Unique    = true;
                propNameColumn.DataType  = typeof(string);

                propTypeColumn           = new DataColumn(WMISys.GetString("WMISE_PropTable_ColumnType"));
                propTypeColumn.AllowNull = false;
                propTypeColumn.DataType  = typeof(string);

                propValueColumn = new DataColumn(WMISys.GetString("WMISE_PropTable_ColumnValue"));
                propValueColumn.DefaultValue = null;

                propDescrColumn              = new DataColumn(WMISys.GetString("WMISE_PropTable_ColumnDescription"));
                propDescrColumn.ReadOnly     = true;
                propDescrColumn.DefaultValue = string.Empty;
                propDescrColumn.DataType     = typeof(string);

                if (showOperators)
                {
                    operatorColumn = new DataColumn(WMISys.GetString("WMISE_PropTable_ColumnComparison"),
                                                    typeof(ComparisonOperators));
                }
                //operatorColumn.AllowNull = false;

                /*
                 * ValueEditor dropDownEditor = new ValueEditor();
                 * dropDownEditor.Style = ValueEditorStyles.DropdownArrow;
                 * operatorColumn.DataValueEditorType = dropDownEditor.GetType();
                 */


                if (showKeys)
                {
                    propIsKey              = new DataColumn(WMISys.GetString("WMISE_PropTable_ColumnIsKey"), typeof(Boolean));
                    propIsKey.AllowNull    = false;
                    propIsKey.DefaultValue = false;
                }

                if (showOrigin)
                {
                    propOrigin              = new DataColumn(WMISys.GetString("WMISE_PropTable_ColumnIsLocal"), typeof(Boolean));
                    propOrigin.AllowNull    = false;
                    propOrigin.DefaultValue = true;
                }

                //set read/write permissions on columns
                //Note that DefaultView takes care of the rest of the restrictions
                //(see below)
                if (gridMode == GridMode.EditMode)
                {
                    propNameColumn.ReadOnly  = true;
                    propTypeColumn.ReadOnly  = true;
                    propValueColumn.ReadOnly = false;

                    if (showOrigin)
                    {
                        propOrigin.ReadOnly = true;
                    }
                    if (showKeys)
                    {
                        propIsKey.ReadOnly = true;
                    }
                }

                if (gridMode == GridMode.DesignMode && showOrigin)
                {
                    propOrigin.ReadOnly = true;
                }

                Columns.Add(propNameColumn);
                Columns.Add(propTypeColumn);
                if (showOperators)
                {
                    //operatorColumn.DataValueEditorType = typeof(OperatroDataColumnEditor);
                    operatorColumn.ReadOnly = false;
                    Columns.Add(operatorColumn);
                }

                Columns.Add(propValueColumn);
                //Columns.Add(propDescrColumn);

                if (showOrigin)
                {
                    Columns.Add(propOrigin);
                }
                if (showKeys)
                {
                    Columns.Add(propIsKey);
                }


                ISWbemPropertySet props = wmiObj.Properties_;

                IEnumerator propEnum = ((IEnumerable)props).GetEnumerator();

                while (propEnum.MoveNext())
                {
                    ISWbemProperty prop = (ISWbemProperty)propEnum.Current;


                    if (propFilters == PropertyFilters.NoInherited &&
                        !prop.IsLocal)
                    {
                        continue;                               //skip this property
                    }

                    DataRow propRow = NewRow();

                    propRow[propNameColumn]  = prop.Name;
                    propRow[propTypeColumn]  = CIMTypeMapper.ToString(prop.CIMType);
                    propRow[propValueColumn] = prop.get_Value();
                    //propRow[propDescrColumn] = WmiHelper.GetPropertyDescription(prop, wmiObj);
                    if (showOperators)
                    {
                        propRow[operatorColumn] = "=";
                    }

                    //set property origin column

                    if (showOrigin)
                    {
                        if (prop.IsLocal)
                        {
                            propRow[propOrigin] = true;
                        }
                        else
                        {
                            propRow[propOrigin] = false;
                        }
                    }

                    if (showKeys)
                    {
                        propRow[propIsKey] = WmiHelper.IsKeyProperty(prop);
                    }


                    Rows.Add(propRow);
                }
                //TODO: add system properties here (if PropertyFilters.ShowAll)

                this.CaseSensitive = false;
                this.RowChanged   += new DataRowChangeEventHandler(this.RowChangedEventHandler);
                this.RowChanging  += new DataRowChangeEventHandler(this.RowChangingEventHandler);


                DataView view = this.DefaultView;
                switch (gridMode)
                {
                case (GridMode.ViewMode):
                {
                    view.AllowEdit   = false;                                   //wmi raid 2866?
                    view.AllowDelete = false;
                    view.AllowNew    = false;
                    break;
                }

                case (GridMode.EditMode):
                {
                    view.AllowEdit   = true;
                    view.AllowDelete = false;
                    view.AllowNew    = false;
                    break;
                }

                case (GridMode.DesignMode):
                {
                    view.AllowEdit   = true;
                    view.AllowDelete = true;
                    view.AllowNew    = true;
                    break;
                }
                }
            }

            catch (Exception exc)
            {
                MessageBox.Show(WMISys.GetString("WMISE_Exception", exc.Message, exc.StackTrace));
            }
        }