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); }
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; } } }
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)); } }