Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Services / Messaging / System / Messaging / Design / QueuePathDialog.cs / 1305376 / QueuePathDialog.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging.Design { using System.Messaging; using System.Threading; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.Design; using System.Windows.Forms.ComponentModel; using System.Messaging.Interop; using System.Collections; using System.Text; using System.Globalization; ////// /// /// public class QueuePathDialog : Form { private static readonly string HELP_KEYWORD = "System.Messaging.Design.QueuePathDialog"; private System.Windows.Forms.ImageList icons; private System.Windows.Forms.Button okButton; private System.Windows.Forms.ComboBox pathType; private System.Windows.Forms.TreeView enterprise; private System.Windows.Forms.Button helpButton; private System.Windows.Forms.Label selectLabel; private System.Windows.Forms.Label referenceLabel; private System.Windows.Forms.Button cancelButton; private string path = String.Empty; private string queuePath = String.Empty; private int lastPathType = 0; private bool exit; private MessageQueue selectedQueue; private delegate void FinishPopulateDelegate(MessageQueue[] queues); private delegate void SelectQueueDelegate(MessageQueue queue, int pathTypeIndex); private delegate void ShowErrorDelegate(); private IUIService uiService; private IServiceProvider provider; private Hashtable machinesTable = new Hashtable(); private Thread populateThread = null; private bool closed = false; private bool populateThreadRan = false; //Path prefixes private static readonly string PREFIX_LABEL = "LABEL:"; private static readonly string PREFIX_FORMAT_NAME = "FORMATNAME:"; ////// /// Creates a path editor control. /// This will create also a tree view control, and an ImageList with /// the icons. /// public QueuePathDialog(IServiceProvider provider) : base() { this.uiService = (IUIService)provider.GetService(typeof(IUIService)); this.provider = provider; this.InitializeComponent(); } ////// /// Creates a path editor control. /// This will create also a tree view control, and an ImageList with /// the icons. /// public QueuePathDialog(IUIService uiService) : base() { this.uiService = uiService; this.InitializeComponent(); } ////// /// public string Path { get { return this.queuePath; } } private void AfterSelect(object source, TreeViewEventArgs e) { TreeNode node = (TreeNode)e.Node; string[] nodeTexts = node.FullPath.Split(new char[]{'\\'}); if (nodeTexts.Length == 2) { StringBuilder path = new StringBuilder(); path.Append(node.Parent.Text); path.Append("\\"); path.Append(nodeTexts[1]); this.path = path.ToString(); ChoosePath(); exit = true; } } private void BeforeSelect(object source, TreeViewCancelEventArgs e) { TreeNode node = e.Node; string[] nodeTexts = node.FullPath.Split(new char[]{'\\'}); node.SelectedImageIndex = nodeTexts.Length - 1; exit = false; } ///[To be supplied.] ////// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2102:CatchNonClsCompliantExceptionsInGeneralHandlers")] public void ChoosePath() { if (this.path != null && this.path != String.Empty) { if (pathType.Text.CompareTo(Res.GetString(Res.RefByPath)) == 0) { this.queuePath = this.path; this.lastPathType = this.pathType.SelectedIndex; } else if (pathType.Text.CompareTo(Res.GetString(Res.RefByFormatName)) == 0) { MessageQueue queue = new MessageQueue(this.path); this.queuePath = PREFIX_FORMAT_NAME + queue.FormatName; this.lastPathType = this.pathType.SelectedIndex; } else { MessageQueue queue = new MessageQueue(this.path); string tempPath = PREFIX_LABEL + queue.Label; try { MessageQueue validate = new MessageQueue(tempPath); string stringValidate = validate.FormatName; this.queuePath = tempPath; this.lastPathType = this.pathType.SelectedIndex; } // validate.FormatName can result in a deep stack, making it diffucult // to enumerate all exception types that can be thrown. At the same time, // we dont want to catch non-CLS exceptions to make users aware of them // (since this is design time). Hence, SuppressMessage above catch (Exception e) { if (this.queuePath != null && String.Compare(this.queuePath, tempPath, true, CultureInfo.InvariantCulture) != 0) { exit = false; if (uiService != null) uiService.ShowError(e.Message); else MessageBox.Show(e.Message, String.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error); if (this.queuePath == String.Empty) { this.queuePath = this.path; this.lastPathType = 0; } OnSelectQueue(new MessageQueue(this.queuePath), this.lastPathType); } } } } } ///[To be supplied.] ////// /// // Supressing FxCop violations since it is breaking change [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")] public void DoubleClicked(object source, EventArgs e) { if (exit) { this.Close(); this.DialogResult = DialogResult.OK; } } private void IndexChanged(object source, EventArgs e) { ChoosePath(); } private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(QueuePathDialog)); this.icons = new ImageList(); this.okButton = new System.Windows.Forms.Button(); this.pathType = new System.Windows.Forms.ComboBox(); this.enterprise = new System.Windows.Forms.TreeView(); this.helpButton = new System.Windows.Forms.Button(); this.selectLabel = new System.Windows.Forms.Label(); this.referenceLabel = new System.Windows.Forms.Label(); this.cancelButton = new System.Windows.Forms.Button(); this.okButton.Location = ((System.Drawing.Point)(resources.GetObject("okButton.Location"))); this.okButton.Size = ((System.Drawing.Size)(resources.GetObject("okButton.Size"))); this.okButton.TabIndex = ((int)(resources.GetObject("okButton.TabIndex"))); this.okButton.Text = resources.GetString("okButton.Text"); this.okButton.DialogResult = DialogResult.OK; this.pathType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.pathType.DropDownWidth = 264; this.pathType.Items.Add(Res.GetString(Res.RefByPath)); this.pathType.Items.Add(Res.GetString(Res.RefByFormatName)); this.pathType.Items.Add(Res.GetString(Res.RefByLabel)); this.pathType.SelectedIndex = 0; this.pathType.Location = ((System.Drawing.Point)(resources.GetObject("pathType.Location"))); this.pathType.Size = ((System.Drawing.Size)(resources.GetObject("pathType.Size"))); this.pathType.TabIndex = ((int)(resources.GetObject("pathType.TabIndex"))); this.pathType.SelectedIndexChanged += new System.EventHandler(this.IndexChanged); this.enterprise.HideSelection = false; this.enterprise.ImageIndex = -1; this.enterprise.Location = ((System.Drawing.Point)(resources.GetObject("enterprise.Location"))); this.enterprise.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {new System.Windows.Forms.TreeNode(Res.GetString(Res.PleaseWait))}); this.enterprise.SelectedImageIndex = -1; this.enterprise.Size = ((System.Drawing.Size)(resources.GetObject("enterprise.Size"))); this.enterprise.Sorted = true; this.enterprise.TabIndex = ((int)(resources.GetObject("enterprise.TabIndex"))); this.enterprise.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.AfterSelect); this.enterprise.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.BeforeSelect); this.enterprise.DoubleClick += new System.EventHandler(this.DoubleClicked); this.enterprise.ImageList = icons; this.helpButton.Location = ((System.Drawing.Point)(resources.GetObject("helpButton.Location"))); this.helpButton.Size = ((System.Drawing.Size)(resources.GetObject("helpButton.Size"))); this.helpButton.TabIndex = ((int)(resources.GetObject("helpButton.TabIndex"))); this.helpButton.Text = resources.GetString("helpButton.Text"); this.helpButton.Click += new System.EventHandler(this.OnClickHelpButton); this.icons.Images.Add(new Bitmap(typeof(MessageQueue), "Machine.bmp")); this.icons.Images.Add(new Bitmap(typeof(MessageQueue), "PublicQueue.bmp")); this.selectLabel.Location = ((System.Drawing.Point)(resources.GetObject("selectLabel.Location"))); this.selectLabel.Size = ((System.Drawing.Size)(resources.GetObject("selectLabel.Size"))); this.selectLabel.TabIndex = ((int)(resources.GetObject("selectLabel.TabIndex"))); this.selectLabel.Text = resources.GetString("selectLabel.Text"); this.referenceLabel.Location = ((System.Drawing.Point)(resources.GetObject("referenceLabel.Location"))); this.referenceLabel.Size = ((System.Drawing.Size)(resources.GetObject("referenceLabel.Size"))); this.referenceLabel.TabIndex = ((int)(resources.GetObject("referenceLabel.TabIndex"))); this.referenceLabel.Text = resources.GetString("referenceLabel.Text"); this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.Location = ((System.Drawing.Point)(resources.GetObject("cancelButton.Location"))); this.cancelButton.Size = ((System.Drawing.Size)(resources.GetObject("cancelButton.Size"))); this.cancelButton.TabIndex = ((int)(resources.GetObject("cancelButton.TabIndex"))); this.cancelButton.Text = resources.GetString("cancelButton.Text"); this.cancelButton.DialogResult = DialogResult.Cancel; this.HelpRequested += new HelpEventHandler(this.OnHelpRequested); this.AcceptButton = this.okButton; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleDimensions = new System.Drawing.SizeF(6.0F, 14.0F); this.CancelButton = this.cancelButton; this.ClientSize = ((System.Drawing.Size)(resources.GetObject("$this.ClientSize"))); this.Controls.AddRange(new System.Windows.Forms.Control[] {this.helpButton, this.cancelButton, this.okButton, this.pathType, this.referenceLabel, this.enterprise, this.selectLabel}); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "Win32Form1"; this.ShowInTaskbar = false; this.StartPosition = FormStartPosition.CenterParent; this.Text = resources.GetString("$this.Text"); this.lastPathType = 0; this.Icon = null; } // PopulateThread calls BeginInvoke in case of failure. BeginInvoke requires window handle // to exist for this Form. Therefore, PopulateThread can be called safely only after handle is created // Call it in OnHandleCreated event handler private void PopulateThread() { try { IEnumerator messageQueues = MessageQueue.GetMessageQueueEnumerator(); bool locate = true; while (locate) { MessageQueue[] queues = new MessageQueue[100]; for (int index = 0; index < queues.Length; ++index) { if (messageQueues.MoveNext()) queues[index] = (MessageQueue)messageQueues.Current; else { queues[index] = null; locate = false; } } this.BeginInvoke(new FinishPopulateDelegate(this.OnPopulateTreeview), new object[]{queues}); } } catch { if (!this.closed) this.BeginInvoke(new ShowErrorDelegate(this.OnShowError), null); } if (!this.closed) this.BeginInvoke(new SelectQueueDelegate(this.OnSelectQueue), new object[]{this.selectedQueue, 0}); } ///[To be supplied.] ////// /// public void SelectQueue(MessageQueue queue) { this.selectedQueue = queue; } private void OnHelpRequested(object sender, HelpEventArgs e) { OnClickHelpButton(null, null); } private void OnClickHelpButton(object source, EventArgs e) { if (this.provider != null) { IHelpService helpService = (IHelpService)provider.GetService(typeof(IHelpService)); if (helpService != null) { helpService.ShowHelpFromKeyword(HELP_KEYWORD); } } } protected override void OnFormClosing(FormClosingEventArgs e) { this.closed = true; if (populateThread != null) { populateThread.Abort(); } base.OnFormClosing(e); } protected override void OnHandleCreated(EventArgs e) { // Window handle has been created, so it's safe to call PopulateThread now. // However, OnHandleCreated can be called multiple times during Form's life-time. // So we need to ensure that PopulateThread runs only once. // ( [....] May 27 2005. Whidbey 463310 ) if (!populateThreadRan) { populateThreadRan = true; populateThread = new Thread(new ThreadStart(this.PopulateThread)); populateThread.Start(); } base.OnHandleCreated(e); } private void OnPopulateTreeview(MessageQueue[] queues) { if (queues == null || queues.Length == 0) { return; } if (machinesTable.Count == 0) enterprise.Nodes.Clear(); for (int index = 0; index < queues.Length; ++ index) { if (queues[index] != null) { string machineName = queues[index].MachineName; TreeNode machineNode = null; if (machinesTable.ContainsKey(machineName)) machineNode = (TreeNode)machinesTable[machineName]; else { machineNode = enterprise.Nodes.Add(machineName); machinesTable[machineName] = machineNode; } machineNode.Nodes.Add(queues[index].QueueName).ImageIndex = 1; } } } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")] private void OnShowError() { if (uiService != null) uiService.ShowError(Res.GetString(Res.QueueNetworkProblems)); else MessageBox.Show(Res.GetString(Res.QueueNetworkProblems), String.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.Cancel; this.Close(); } private void OnSelectQueue(MessageQueue queue, int pathTypeIndex) { try { pathType.SelectedIndex = pathTypeIndex; string machineName = queue.MachineName; string queueName = queue.QueueName; TreeNodeCollection machines = enterprise.Nodes; for (int index = 0; index < machines.Count; ++ index) { TreeNode machine = machines[index]; if ( String.Compare(machineName, machine.Text, true, CultureInfo.InvariantCulture) == 0) { machine.Expand(); //Need to flush all events so that the children nodes get added. Application.DoEvents(); TreeNodeCollection queues = machine.Nodes; for (int index2 = 0; index2 < queues.Count; ++ index2) { TreeNode queueNode = queues[index2]; if (queueNode.Text != null && String.Compare(queueName, queueNode.Text, true, CultureInfo.InvariantCulture) == 0) { enterprise.SelectedNode = queueNode; return; } } return; } } } catch { //Ignore all Exceptions. } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //[To be supplied.] ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Messaging.Design { using System.Messaging; using System.Threading; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.Design; using System.Windows.Forms.ComponentModel; using System.Messaging.Interop; using System.Collections; using System.Text; using System.Globalization; ////// /// /// public class QueuePathDialog : Form { private static readonly string HELP_KEYWORD = "System.Messaging.Design.QueuePathDialog"; private System.Windows.Forms.ImageList icons; private System.Windows.Forms.Button okButton; private System.Windows.Forms.ComboBox pathType; private System.Windows.Forms.TreeView enterprise; private System.Windows.Forms.Button helpButton; private System.Windows.Forms.Label selectLabel; private System.Windows.Forms.Label referenceLabel; private System.Windows.Forms.Button cancelButton; private string path = String.Empty; private string queuePath = String.Empty; private int lastPathType = 0; private bool exit; private MessageQueue selectedQueue; private delegate void FinishPopulateDelegate(MessageQueue[] queues); private delegate void SelectQueueDelegate(MessageQueue queue, int pathTypeIndex); private delegate void ShowErrorDelegate(); private IUIService uiService; private IServiceProvider provider; private Hashtable machinesTable = new Hashtable(); private Thread populateThread = null; private bool closed = false; private bool populateThreadRan = false; //Path prefixes private static readonly string PREFIX_LABEL = "LABEL:"; private static readonly string PREFIX_FORMAT_NAME = "FORMATNAME:"; ////// /// Creates a path editor control. /// This will create also a tree view control, and an ImageList with /// the icons. /// public QueuePathDialog(IServiceProvider provider) : base() { this.uiService = (IUIService)provider.GetService(typeof(IUIService)); this.provider = provider; this.InitializeComponent(); } ////// /// Creates a path editor control. /// This will create also a tree view control, and an ImageList with /// the icons. /// public QueuePathDialog(IUIService uiService) : base() { this.uiService = uiService; this.InitializeComponent(); } ////// /// public string Path { get { return this.queuePath; } } private void AfterSelect(object source, TreeViewEventArgs e) { TreeNode node = (TreeNode)e.Node; string[] nodeTexts = node.FullPath.Split(new char[]{'\\'}); if (nodeTexts.Length == 2) { StringBuilder path = new StringBuilder(); path.Append(node.Parent.Text); path.Append("\\"); path.Append(nodeTexts[1]); this.path = path.ToString(); ChoosePath(); exit = true; } } private void BeforeSelect(object source, TreeViewCancelEventArgs e) { TreeNode node = e.Node; string[] nodeTexts = node.FullPath.Split(new char[]{'\\'}); node.SelectedImageIndex = nodeTexts.Length - 1; exit = false; } ///[To be supplied.] ////// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2102:CatchNonClsCompliantExceptionsInGeneralHandlers")] public void ChoosePath() { if (this.path != null && this.path != String.Empty) { if (pathType.Text.CompareTo(Res.GetString(Res.RefByPath)) == 0) { this.queuePath = this.path; this.lastPathType = this.pathType.SelectedIndex; } else if (pathType.Text.CompareTo(Res.GetString(Res.RefByFormatName)) == 0) { MessageQueue queue = new MessageQueue(this.path); this.queuePath = PREFIX_FORMAT_NAME + queue.FormatName; this.lastPathType = this.pathType.SelectedIndex; } else { MessageQueue queue = new MessageQueue(this.path); string tempPath = PREFIX_LABEL + queue.Label; try { MessageQueue validate = new MessageQueue(tempPath); string stringValidate = validate.FormatName; this.queuePath = tempPath; this.lastPathType = this.pathType.SelectedIndex; } // validate.FormatName can result in a deep stack, making it diffucult // to enumerate all exception types that can be thrown. At the same time, // we dont want to catch non-CLS exceptions to make users aware of them // (since this is design time). Hence, SuppressMessage above catch (Exception e) { if (this.queuePath != null && String.Compare(this.queuePath, tempPath, true, CultureInfo.InvariantCulture) != 0) { exit = false; if (uiService != null) uiService.ShowError(e.Message); else MessageBox.Show(e.Message, String.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error); if (this.queuePath == String.Empty) { this.queuePath = this.path; this.lastPathType = 0; } OnSelectQueue(new MessageQueue(this.queuePath), this.lastPathType); } } } } } ///[To be supplied.] ////// /// // Supressing FxCop violations since it is breaking change [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")] public void DoubleClicked(object source, EventArgs e) { if (exit) { this.Close(); this.DialogResult = DialogResult.OK; } } private void IndexChanged(object source, EventArgs e) { ChoosePath(); } private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(QueuePathDialog)); this.icons = new ImageList(); this.okButton = new System.Windows.Forms.Button(); this.pathType = new System.Windows.Forms.ComboBox(); this.enterprise = new System.Windows.Forms.TreeView(); this.helpButton = new System.Windows.Forms.Button(); this.selectLabel = new System.Windows.Forms.Label(); this.referenceLabel = new System.Windows.Forms.Label(); this.cancelButton = new System.Windows.Forms.Button(); this.okButton.Location = ((System.Drawing.Point)(resources.GetObject("okButton.Location"))); this.okButton.Size = ((System.Drawing.Size)(resources.GetObject("okButton.Size"))); this.okButton.TabIndex = ((int)(resources.GetObject("okButton.TabIndex"))); this.okButton.Text = resources.GetString("okButton.Text"); this.okButton.DialogResult = DialogResult.OK; this.pathType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.pathType.DropDownWidth = 264; this.pathType.Items.Add(Res.GetString(Res.RefByPath)); this.pathType.Items.Add(Res.GetString(Res.RefByFormatName)); this.pathType.Items.Add(Res.GetString(Res.RefByLabel)); this.pathType.SelectedIndex = 0; this.pathType.Location = ((System.Drawing.Point)(resources.GetObject("pathType.Location"))); this.pathType.Size = ((System.Drawing.Size)(resources.GetObject("pathType.Size"))); this.pathType.TabIndex = ((int)(resources.GetObject("pathType.TabIndex"))); this.pathType.SelectedIndexChanged += new System.EventHandler(this.IndexChanged); this.enterprise.HideSelection = false; this.enterprise.ImageIndex = -1; this.enterprise.Location = ((System.Drawing.Point)(resources.GetObject("enterprise.Location"))); this.enterprise.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {new System.Windows.Forms.TreeNode(Res.GetString(Res.PleaseWait))}); this.enterprise.SelectedImageIndex = -1; this.enterprise.Size = ((System.Drawing.Size)(resources.GetObject("enterprise.Size"))); this.enterprise.Sorted = true; this.enterprise.TabIndex = ((int)(resources.GetObject("enterprise.TabIndex"))); this.enterprise.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.AfterSelect); this.enterprise.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.BeforeSelect); this.enterprise.DoubleClick += new System.EventHandler(this.DoubleClicked); this.enterprise.ImageList = icons; this.helpButton.Location = ((System.Drawing.Point)(resources.GetObject("helpButton.Location"))); this.helpButton.Size = ((System.Drawing.Size)(resources.GetObject("helpButton.Size"))); this.helpButton.TabIndex = ((int)(resources.GetObject("helpButton.TabIndex"))); this.helpButton.Text = resources.GetString("helpButton.Text"); this.helpButton.Click += new System.EventHandler(this.OnClickHelpButton); this.icons.Images.Add(new Bitmap(typeof(MessageQueue), "Machine.bmp")); this.icons.Images.Add(new Bitmap(typeof(MessageQueue), "PublicQueue.bmp")); this.selectLabel.Location = ((System.Drawing.Point)(resources.GetObject("selectLabel.Location"))); this.selectLabel.Size = ((System.Drawing.Size)(resources.GetObject("selectLabel.Size"))); this.selectLabel.TabIndex = ((int)(resources.GetObject("selectLabel.TabIndex"))); this.selectLabel.Text = resources.GetString("selectLabel.Text"); this.referenceLabel.Location = ((System.Drawing.Point)(resources.GetObject("referenceLabel.Location"))); this.referenceLabel.Size = ((System.Drawing.Size)(resources.GetObject("referenceLabel.Size"))); this.referenceLabel.TabIndex = ((int)(resources.GetObject("referenceLabel.TabIndex"))); this.referenceLabel.Text = resources.GetString("referenceLabel.Text"); this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.cancelButton.Location = ((System.Drawing.Point)(resources.GetObject("cancelButton.Location"))); this.cancelButton.Size = ((System.Drawing.Size)(resources.GetObject("cancelButton.Size"))); this.cancelButton.TabIndex = ((int)(resources.GetObject("cancelButton.TabIndex"))); this.cancelButton.Text = resources.GetString("cancelButton.Text"); this.cancelButton.DialogResult = DialogResult.Cancel; this.HelpRequested += new HelpEventHandler(this.OnHelpRequested); this.AcceptButton = this.okButton; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleDimensions = new System.Drawing.SizeF(6.0F, 14.0F); this.CancelButton = this.cancelButton; this.ClientSize = ((System.Drawing.Size)(resources.GetObject("$this.ClientSize"))); this.Controls.AddRange(new System.Windows.Forms.Control[] {this.helpButton, this.cancelButton, this.okButton, this.pathType, this.referenceLabel, this.enterprise, this.selectLabel}); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "Win32Form1"; this.ShowInTaskbar = false; this.StartPosition = FormStartPosition.CenterParent; this.Text = resources.GetString("$this.Text"); this.lastPathType = 0; this.Icon = null; } // PopulateThread calls BeginInvoke in case of failure. BeginInvoke requires window handle // to exist for this Form. Therefore, PopulateThread can be called safely only after handle is created // Call it in OnHandleCreated event handler private void PopulateThread() { try { IEnumerator messageQueues = MessageQueue.GetMessageQueueEnumerator(); bool locate = true; while (locate) { MessageQueue[] queues = new MessageQueue[100]; for (int index = 0; index < queues.Length; ++index) { if (messageQueues.MoveNext()) queues[index] = (MessageQueue)messageQueues.Current; else { queues[index] = null; locate = false; } } this.BeginInvoke(new FinishPopulateDelegate(this.OnPopulateTreeview), new object[]{queues}); } } catch { if (!this.closed) this.BeginInvoke(new ShowErrorDelegate(this.OnShowError), null); } if (!this.closed) this.BeginInvoke(new SelectQueueDelegate(this.OnSelectQueue), new object[]{this.selectedQueue, 0}); } ///[To be supplied.] ////// /// public void SelectQueue(MessageQueue queue) { this.selectedQueue = queue; } private void OnHelpRequested(object sender, HelpEventArgs e) { OnClickHelpButton(null, null); } private void OnClickHelpButton(object source, EventArgs e) { if (this.provider != null) { IHelpService helpService = (IHelpService)provider.GetService(typeof(IHelpService)); if (helpService != null) { helpService.ShowHelpFromKeyword(HELP_KEYWORD); } } } protected override void OnFormClosing(FormClosingEventArgs e) { this.closed = true; if (populateThread != null) { populateThread.Abort(); } base.OnFormClosing(e); } protected override void OnHandleCreated(EventArgs e) { // Window handle has been created, so it's safe to call PopulateThread now. // However, OnHandleCreated can be called multiple times during Form's life-time. // So we need to ensure that PopulateThread runs only once. // ( [....] May 27 2005. Whidbey 463310 ) if (!populateThreadRan) { populateThreadRan = true; populateThread = new Thread(new ThreadStart(this.PopulateThread)); populateThread.Start(); } base.OnHandleCreated(e); } private void OnPopulateTreeview(MessageQueue[] queues) { if (queues == null || queues.Length == 0) { return; } if (machinesTable.Count == 0) enterprise.Nodes.Clear(); for (int index = 0; index < queues.Length; ++ index) { if (queues[index] != null) { string machineName = queues[index].MachineName; TreeNode machineNode = null; if (machinesTable.ContainsKey(machineName)) machineNode = (TreeNode)machinesTable[machineName]; else { machineNode = enterprise.Nodes.Add(machineName); machinesTable[machineName] = machineNode; } machineNode.Nodes.Add(queues[index].QueueName).ImageIndex = 1; } } } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1300:SpecifyMessageBoxOptions")] private void OnShowError() { if (uiService != null) uiService.ShowError(Res.GetString(Res.QueueNetworkProblems)); else MessageBox.Show(Res.GetString(Res.QueueNetworkProblems), String.Empty, MessageBoxButtons.OK, MessageBoxIcon.Error); this.DialogResult = DialogResult.Cancel; this.Close(); } private void OnSelectQueue(MessageQueue queue, int pathTypeIndex) { try { pathType.SelectedIndex = pathTypeIndex; string machineName = queue.MachineName; string queueName = queue.QueueName; TreeNodeCollection machines = enterprise.Nodes; for (int index = 0; index < machines.Count; ++ index) { TreeNode machine = machines[index]; if ( String.Compare(machineName, machine.Text, true, CultureInfo.InvariantCulture) == 0) { machine.Expand(); //Need to flush all events so that the children nodes get added. Application.DoEvents(); TreeNodeCollection queues = machine.Nodes; for (int index2 = 0; index2 < queues.Count; ++ index2) { TreeNode queueNode = queues[index2]; if (queueNode.Text != null && String.Compare(queueName, queueNode.Text, true, CultureInfo.InvariantCulture) == 0) { enterprise.SelectedNode = queueNode; return; } } return; } } } catch { //Ignore all Exceptions. } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.[To be supplied.] ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ProcessHostMapPath.cs
- FileEnumerator.cs
- TraceSection.cs
- ModelTypeConverter.cs
- FileDialog.cs
- LinqToSqlWrapper.cs
- WorkflowRuntimeServiceElement.cs
- UntrustedRecipientException.cs
- CharacterBuffer.cs
- MailWebEventProvider.cs
- ListViewItem.cs
- Point3DIndependentAnimationStorage.cs
- BaseInfoTable.cs
- DebuggerAttributes.cs
- GestureRecognizer.cs
- AsyncSerializedWorker.cs
- XmlSchemaSet.cs
- FontStretch.cs
- AvTraceDetails.cs
- HyperLinkField.cs
- xmlfixedPageInfo.cs
- HtmlInputCheckBox.cs
- CompositeCollection.cs
- ClientScriptManager.cs
- HttpFileCollection.cs
- DbInsertCommandTree.cs
- PhysicalFontFamily.cs
- EntityReference.cs
- AnnouncementClient.cs
- HybridCollection.cs
- ProcessModelSection.cs
- NativeCppClassAttribute.cs
- Rect3D.cs
- QuaternionAnimationBase.cs
- Color.cs
- HtmlEncodedRawTextWriter.cs
- Int64AnimationBase.cs
- PackWebRequestFactory.cs
- ListViewInsertEventArgs.cs
- ToolboxItem.cs
- ScriptMethodAttribute.cs
- PageWrapper.cs
- SqlVersion.cs
- SystemWebExtensionsSectionGroup.cs
- ThicknessAnimationBase.cs
- SchemaImporterExtensionElementCollection.cs
- TypeReference.cs
- ProcessInputEventArgs.cs
- ReadOnlyAttribute.cs
- DataGridGeneralPage.cs
- FormView.cs
- SortDescription.cs
- RawStylusInputCustomData.cs
- AppearanceEditorPart.cs
- HtmlTextArea.cs
- VideoDrawing.cs
- EventListener.cs
- Int64AnimationBase.cs
- ADRole.cs
- PasswordBox.cs
- UnmanagedHandle.cs
- TouchEventArgs.cs
- ProtocolsConfiguration.cs
- DataSourceCacheDurationConverter.cs
- DetailsViewUpdateEventArgs.cs
- VisualBasicSettings.cs
- SafeWaitHandle.cs
- EntityCollection.cs
- CodeSubDirectory.cs
- SizeChangedInfo.cs
- KeyedCollection.cs
- PageBuildProvider.cs
- MessageHeaderT.cs
- JavaScriptSerializer.cs
- ComplexLine.cs
- Properties.cs
- SafePointer.cs
- ToolBarTray.cs
- Assembly.cs
- CompositionAdorner.cs
- DataViewListener.cs
- BitmapEffectInputData.cs
- VirtualPath.cs
- DeflateStream.cs
- ContractTypeNameElement.cs
- ManipulationStartingEventArgs.cs
- NamespaceListProperty.cs
- SystemIcmpV4Statistics.cs
- EnvelopedSignatureTransform.cs
- DBSqlParserColumn.cs
- SrgsToken.cs
- KeysConverter.cs
- RemotingAttributes.cs
- EmptyStringExpandableObjectConverter.cs
- SessionStateModule.cs
- TransactionBridgeSection.cs
- XmlChildNodes.cs
- CompoundFileReference.cs
- ListBox.cs
- SizeKeyFrameCollection.cs