namespace Microsoft.VSDesigner.WMI
{
using System;
using System.ComponentModel;
//using System.Core;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Collections;
using System.Data;
using System.Management;
//using System.Web.UI.WebControls;
internal class QueryConditionDialog : Form
{
private WMIObjectGrid grid = null;
private TextBox QueryText = new TextBox ();
private Button okBtn = new Button();
private Button cancelBtn = new Button();
private string serverName = string.Empty;
private string queryString = string.Empty;
private string connectAs = null;
private string password = null;
private string className = string.Empty;
private string nsName = string.Empty;
private Label gridLabel = new Label();
private CheckBox inheritedBox = new CheckBox();
private CheckBox systemBox = new CheckBox();
private Label queryLabel = new Label();
private void InitializeComponent ()
{
this.Text = "Select Query Conditions and Properties";
this.AcceptButton = okBtn;
this.AutoScaleBaseSize = new Size(5, 13);
this.BorderStyle = FormBorderStyle.FixedDialog;
int dlgWidth = 500;
int dlgHeight = 420;
this.ClientSize = new Size(dlgWidth, dlgHeight);
this.ShowInTaskbar = false;
this.MinimizeBox = false;
this.MaximizeBox = false;
inheritedBox.Location = new Point(16, 215);
inheritedBox.Size = new Size (250, 20);
inheritedBox.Checked = false;
inheritedBox.Text = "Show inherited properties";
inheritedBox.CheckedChanged += new EventHandler (OnInheritedCheckedChanged);
systemBox.Location = new Point(16, 235);
systemBox.Size = new Size (250, 20);
systemBox.Checked = false;
systemBox.Text = "Show system properties";
systemBox.CheckedChanged += new EventHandler (OnSystemCheckedChanged);
queryLabel.Location = new Point(16, 275);
queryLabel.Text = "WQL Query:";
queryLabel.Size = new Size(250, 20);
QueryText.Text = queryString;
QueryText.Location = new Point(16, 305);
QueryText.Size = (Size)new Point(468, 30);
QueryText.Multiline = true;
QueryText.ReadOnly = true;
QueryText.WordWrap = true;
//QueryText.ScrollBars = ScrollBars.Vertical;
okBtn.Text = WMISys.GetString("WMISE_OK");
okBtn.TabIndex = 5;
okBtn.Location = new Point(325, 380);
okBtn.DialogResult = System.Windows.Forms.DialogResult.OK;
cancelBtn.Text = WMISys.GetString("WMISE_Cancel");
cancelBtn.TabIndex = 6;
cancelBtn.Location = new Point(410, 380);
cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
Controls.Add(gridLabel);
Controls.Add(inheritedBox);
Controls.Add(systemBox);
Controls.Add(queryLabel);
Controls.Add(QueryText);
Controls.Add(okBtn);
Controls.Add(cancelBtn );
}
public QueryConditionDialog(ManagementObject mgmtObj, string queryIn)
{
serverName = mgmtObj.Path.Server;
className = mgmtObj.Path.ClassName;
nsName = mgmtObj.Path.NamespacePath;
queryString = queryIn;
InitializeComponent();
gridLabel.Location = new Point(16, 16);
gridLabel.Text = "Set query conditions:";
gridLabel.Size = new Size (250, 20);
grid = new WMIObjectGrid(mgmtObj,
new PropertyFilters(true, true),
GridMode.LocalEditMode,
true, false, false, true, false, true, true);
grid.Location = new Point(16, 40);
grid.Size = (Size)new Point(468, 160);
grid.Anchor = AnchorStyles.Top; //.All;
grid.PreferredColumnWidth = 90;
grid.PreferredRowHeight = 19;
grid.TabIndex = 3;
((DataTable)grid.DataSource).RowChanging += new DataRowChangeEventHandler(this.GridRowChanging);
Controls.Add(grid);
}
public QueryConditionDialog(ManagementObject mgmtObj,
string serverIn,
string nsIn,
string classNameIn,
string queryIn)
{
serverName = serverIn;
className = classNameIn;
nsName = nsIn;
queryString = queryIn;
InitializeComponent();
gridLabel.Location = new Point(16, 16);
gridLabel.Text = "Set query conditions:";
gridLabel.Size = new Size (250, 20);
grid = new WMIObjectGrid(mgmtObj,
new PropertyFilters(true, true),
GridMode.LocalEditMode,
true, false, false, true, false, true, true);
grid.Location = new Point(16, 40);
grid.Size = (Size)new Point(468, 160);
grid.Anchor = AnchorStyles.Top; //.All;
grid.PreferredColumnWidth = 90;
grid.PreferredRowHeight = 19;
grid.TabIndex = 3;
((DataTable)grid.DataSource).RowChanging += new DataRowChangeEventHandler(this.GridRowChanging);
Controls.Add(grid);
}
public QueryConditionDialog(string serverIn,
string user,
string pw,
string NS,
string clsName,
string queryIn)
{
try
{
if (serverIn == string.Empty ||
NS == string.Empty ||
clsName == string.Empty)
{
throw new ArgumentException();
}
serverName = serverIn;
connectAs = user;
password = pw;
className = clsName;
nsName = NS;
queryString = queryIn;
InitializeComponent();
gridLabel.Location = new Point(16, 16);
gridLabel.Text = "Set query conditions:";
gridLabel.Size = new Size (250, 20);
grid = new WMIObjectGrid(WmiHelper.GetClassObject(serverName, nsName, className, connectAs, password),
new PropertyFilters(true, true),
GridMode.LocalEditMode,
true, false, false, true, false, true, true);
grid.Location = new Point(16, 40);
grid.Size = (Size)new Point(468, 160);
grid.Anchor = AnchorStyles.Top; //.All;
grid.PreferredColumnWidth = 90;
grid.PreferredRowHeight = 19;
grid.TabIndex = 3;
((DataTable)grid.DataSource).RowChanging += new DataRowChangeEventHandler(this.GridRowChanging);
Controls.Add(grid);
}
catch (Exception exc)
{
throw (exc);
}
}
public String QueryString
{
get
{
return QueryText.Text;
}
}
private String ClassName
{
get
{
return this.className;
}
}
public String NS
{
get
{
return this.nsName;
}
}
///
/// This updates the "where" clause of the query text
///
///
///
protected void GridRowChanging(object sender,
DataRowChangeEventArgs e)
{
try
{
if (grid == null || grid.DataSource == null)
{
return;
}
//get rid of current "where" clause, if any
string phrase = QueryString;
phrase.ToUpper();
int nWhere = phrase.IndexOf("WHERE");
if (nWhere >= 0)
{
phrase = QueryString.Substring(0, nWhere);
}
QueryText.Text = phrase +
((WMIObjectPropertyTable)grid.DataSource).WhereClause;
}
catch (Exception exc)
{
MessageBox.Show(WMISys.GetString("WMISE_Exception", exc.Message, exc.StackTrace));
}
}
private void OnInheritedCheckedChanged(object sender,
EventArgs args)
{
//grid.CurrentPropertyFilters = new PropertyFilters(!systemBox.Checked,
// !inheritedBox.Checked);
grid.ShowInherited = inheritedBox.Checked;
}
private void OnSystemCheckedChanged(object sender,
EventArgs args)
{
//grid.CurrentPropertyFilters = new PropertyFilters(!systemBox.Checked,
// !inheritedBox.Checked);
grid.ShowSystem = systemBox.Checked;
}
}
}