From 3c1cb596a8b702cbc8e865b212edd91c29dc58dd Mon Sep 17 00:00:00 2001 From: Dickon Field Date: Sun, 26 Nov 2006 23:38:36 +0000 Subject: [PATCH] git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2081 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../SharpDbTools/SharpDbTools.csproj | 12 ++ .../Src/Forms/DatabaseExplorerTreeNode.cs | 5 + .../Src/Forms/DbModelInfoTreeNode.cs | 15 +- .../Src/Forms/SQLTool.Designer.cs | 136 ++++++++++++++++++ .../SharpDbTools/Src/Forms/SQLTool.cs | 68 +++++++++ .../SharpDbTools/Src/Forms/SQLTool.resx | 120 ++++++++++++++++ .../Src/Forms/SQLToolViewContent.cs | 49 +++++++ .../SharpDbTools/Src/Forms/TableTreeNode.cs | 9 +- 8 files changed, 411 insertions(+), 3 deletions(-) create mode 100644 src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.Designer.cs create mode 100644 src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.cs create mode 100644 src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.resx create mode 100644 src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLToolViewContent.cs diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj b/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj index 11eaf31a3d..d3a19e0234 100644 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/SharpDbTools.csproj @@ -33,6 +33,11 @@ + + + SQLTool.cs + + @@ -43,6 +48,9 @@ ConnectionStringDefinitionDialog.cs + + SQLTool.cs + @@ -55,6 +63,10 @@ + + {2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} + ICSharpCode.TextEditor + {35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} ICSharpCode.Core diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DatabaseExplorerTreeNode.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DatabaseExplorerTreeNode.cs index 1607c69190..6717a5d1fb 100644 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DatabaseExplorerTreeNode.cs +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DatabaseExplorerTreeNode.cs @@ -10,7 +10,10 @@ using System.Collections.Generic; using System.Windows.Forms; using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + using SharpDbTools.Data; + using SharpServerTools.Forms; namespace SharpDbTools.Forms @@ -36,6 +39,8 @@ namespace SharpDbTools.Forms new ToolStripMenuItem("Save All"); saveMetadataMenuItem.Click += new EventHandler(SaveDbModelInfoClickHandler); + + cMenu.Items.AddRange(new ToolStripMenuItem[] { diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs index 1fa363f9fd..e7f2895ddb 100644 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/DbModelInfoTreeNode.cs @@ -11,6 +11,8 @@ using System.Data.Common; using System.Windows.Forms; using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Gui; + using SharpDbTools.Data; using SharpServerTools.Forms; @@ -56,12 +58,15 @@ namespace SharpDbTools.Forms new ToolStripMenuItem("Load Metadata from File"); loadMetadataFromFileMenuItem.Click += new EventHandler(LoadMetadataFromFileClickHandler); + ToolStripMenuItem openSQLToolMenuItem = new ToolStripMenuItem("Open SQL Tool"); + openSQLToolMenuItem.Click += new EventHandler(OpenSQLToolClickHandler); cMenu.Items.AddRange(new ToolStripMenuItem[] { setConnectionStringMenuItem, loadMetadataFromConnectionMenuItem, - loadMetadataFromFileMenuItem + loadMetadataFromFileMenuItem, + openSQLToolMenuItem }); this.ContextMenuStrip = cMenu; @@ -168,7 +173,7 @@ namespace SharpDbTools.Forms private void SetConnectionStringOnDbModelInfoClickHandler(object sender, EventArgs e) { - string connectionLogicalName = this.Text; + string connectionLogicalName = (string)this.Tag; LoggingService.Debug("add connection string clicked for item with name: " + connectionLogicalName); // use the ConnectionStringDefinitionDialog to get a connection string and invariant name @@ -213,6 +218,12 @@ namespace SharpDbTools.Forms this.backgroundWorker.RunWorkerAsync(logicalConnectionName); } + private void OpenSQLToolClickHandler(object sender, EventArgs e) + { + SQLToolViewContent sqlToolViewContent = new SQLToolViewContent((string)this.Tag); + WorkbenchSingleton.Workbench.ShowView(sqlToolViewContent); + } + private void TimerClick(object sender, EventArgs eventArgs) { string ellipsis = progress.Text; diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.Designer.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.Designer.cs new file mode 100644 index 0000000000..1b23f95836 --- /dev/null +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.Designer.cs @@ -0,0 +1,136 @@ +/* + * User: dickon + * Date: 21/11/2006 + * Time: 19:12 + * + */ +namespace SharpDbTools.Forms +{ + partial class SQLTool : System.Windows.Forms.UserControl + { + /// + /// Designer variable used to keep track of non-visual components. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Disposes resources used by the control. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing) { + if (components != null) { + components.Dispose(); + } + } + base.Dispose(disposing); + } + + /// + /// This method is required for Windows Forms designer support. + /// Do not change the method contents inside the source code editor. The Forms designer might + /// not be able to load this method if it was changed manually. + /// + private void InitializeComponent() + { + this.sqlToolTabControl = new System.Windows.Forms.TabControl(); + this.editorTab = new System.Windows.Forms.TabPage(); + this.resultTab = new System.Windows.Forms.TabPage(); + this.messageTab = new System.Windows.Forms.TabPage(); + this.resultDataGridView = new System.Windows.Forms.DataGridView(); + this.messageTextBox = new System.Windows.Forms.TextBox(); + this.sqlToolTabControl.SuspendLayout(); + this.resultTab.SuspendLayout(); + this.messageTab.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.resultDataGridView)).BeginInit(); + this.SuspendLayout(); + // + // sqlToolTabControl + // + this.sqlToolTabControl.Controls.Add(this.editorTab); + this.sqlToolTabControl.Controls.Add(this.resultTab); + this.sqlToolTabControl.Controls.Add(this.messageTab); + this.sqlToolTabControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.sqlToolTabControl.Location = new System.Drawing.Point(0, 0); + this.sqlToolTabControl.Name = "sqlToolTabControl"; + this.sqlToolTabControl.SelectedIndex = 0; + this.sqlToolTabControl.Size = new System.Drawing.Size(885, 522); + this.sqlToolTabControl.TabIndex = 0; + this.sqlToolTabControl.UseWaitCursor = true; + // + // editorTab + // + this.editorTab.Location = new System.Drawing.Point(4, 24); + this.editorTab.Name = "editorTab"; + this.editorTab.Padding = new System.Windows.Forms.Padding(3); + this.editorTab.Size = new System.Drawing.Size(877, 494); + this.editorTab.TabIndex = 0; + this.editorTab.Text = "Editor"; + this.editorTab.UseVisualStyleBackColor = true; + this.editorTab.UseWaitCursor = true; + // + // resultTab + // + this.resultTab.Controls.Add(this.resultDataGridView); + this.resultTab.Location = new System.Drawing.Point(4, 24); + this.resultTab.Name = "resultTab"; + this.resultTab.Padding = new System.Windows.Forms.Padding(3); + this.resultTab.Size = new System.Drawing.Size(877, 494); + this.resultTab.TabIndex = 1; + this.resultTab.Text = "Results"; + this.resultTab.UseVisualStyleBackColor = true; + this.resultTab.UseWaitCursor = true; + // + // messageTab + // + this.messageTab.Controls.Add(this.messageTextBox); + this.messageTab.Location = new System.Drawing.Point(4, 24); + this.messageTab.Name = "messageTab"; + this.messageTab.Padding = new System.Windows.Forms.Padding(3); + this.messageTab.Size = new System.Drawing.Size(877, 494); + this.messageTab.TabIndex = 2; + this.messageTab.Text = "Messages"; + this.messageTab.UseVisualStyleBackColor = true; + this.messageTab.UseWaitCursor = true; + // + // dataGridView1 + // + this.resultDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.resultDataGridView.Dock = System.Windows.Forms.DockStyle.Fill; + this.resultDataGridView.Location = new System.Drawing.Point(3, 3); + this.resultDataGridView.Name = "resultDataGridView"; + this.resultDataGridView.Size = new System.Drawing.Size(871, 488); + this.resultDataGridView.TabIndex = 0; + // + // textBox1 + // + this.messageTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.messageTextBox.Location = new System.Drawing.Point(3, 3); + this.messageTextBox.Multiline = true; + this.messageTextBox.Name = "messages"; + this.messageTextBox.Size = new System.Drawing.Size(871, 488); + this.messageTextBox.TabIndex = 0; + // + // SQLTool + // + this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.sqlToolTabControl); + this.Name = "SQLTool"; + this.Size = new System.Drawing.Size(885, 522); + this.sqlToolTabControl.ResumeLayout(false); + this.resultTab.ResumeLayout(false); + this.messageTab.ResumeLayout(false); + this.messageTab.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.resultDataGridView)).EndInit(); + this.ResumeLayout(false); + } + private System.Windows.Forms.TextBox messageTextBox; + private System.Windows.Forms.DataGridView resultDataGridView; + private System.Windows.Forms.TabControl sqlToolTabControl; + private System.Windows.Forms.TabPage messageTab; + private System.Windows.Forms.TabPage resultTab; + private System.Windows.Forms.TabPage editorTab; + } +} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.cs new file mode 100644 index 0000000000..0adbed7099 --- /dev/null +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.cs @@ -0,0 +1,68 @@ +/* + * User: dickon + * Date: 21/11/2006 + * Time: 19:12 + * + */ + +using System; +using System.ComponentModel; +using System.Drawing; +using System.Windows.Forms; + +using ICSharpCode.TextEditor; +using ICSharpCode.Core; + +namespace SharpDbTools.Forms +{ + /// + /// Description of SQLEditorQueryTool. + /// + public partial class SQLTool + { + private string logicalConnectionName = null; + private TextEditorControl sqlEditorControl = null; + + public SQLTool(string logicalConnectionName) + { + this.logicalConnectionName = logicalConnectionName; + + // + // The InitializeComponent() call is required for Windows Forms designer support. + // + InitializeComponent(); + + // add sqlEditor to the editor panel + + sqlEditorControl = new TextEditorControl(); + sqlEditorControl.Dock = DockStyle.Fill; + sqlEditorControl.SetHighlighting("SQL"); + this.editorTab.Controls.Add(sqlEditorControl); + + // add context behaviour to the editor control + + ContextMenuStrip contextMenu = new ContextMenuStrip(); + + ToolStripMenuItem executeSQLMenuItem = new ToolStripMenuItem("Execute SQL"); + executeSQLMenuItem.Click += new EventHandler(ExecuteSQLClickHandler); + + contextMenu.Items.AddRange(new ToolStripMenuItem[] + { + executeSQLMenuItem + }); + sqlEditorControl.ContextMenuStrip = contextMenu; + } + + private void ExecuteSQLClickHandler(object sender, EventArgs args) + { + // 1. get a connection from the the logical connection name + // 2. attempt to execute any SQL currently contained in the editor + // 3. display either a result set in the result DataGridView, or + // messages in the messages textbox in the message tab. + LoggingService.Debug(this.GetType().Name + "-> ExecuteSQLClickHandler"); + + // TODO: hand off the execution of the query to a background thread... + + } + } +} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.resx b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.resx new file mode 100644 index 0000000000..7080a7d118 --- /dev/null +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLTool.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLToolViewContent.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLToolViewContent.cs new file mode 100644 index 0000000000..8b00634ac7 --- /dev/null +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/SQLToolViewContent.cs @@ -0,0 +1,49 @@ +/* + * User: dickon + * Date: 21/11/2006 + * Time: 22:46 + * + */ + +using System; +using System.Data; +using System.Windows.Forms; + +using ICSharpCode.SharpDevelop.Gui; + +namespace SharpDbTools.Forms +{ + /// + /// Description of SQLEditorQueryToolViewContent. + /// + public class SQLToolViewContent : AbstractViewContent + { + string logicalConnectionName; + SQLTool sqlTool; + + public SQLToolViewContent(string logicalConnectionName): + base("SQL Tool: " + logicalConnectionName) + { + this.logicalConnectionName = logicalConnectionName; + sqlTool = new SQLTool(this.logicalConnectionName); + } + + public override System.Windows.Forms.Control Control { + get { + return this.sqlTool; + } + } + + public override bool IsReadOnly { + get { + return false; + } + } + + public override bool IsViewOnly { + get { + return false; + } + } + } +} diff --git a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableTreeNode.cs b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableTreeNode.cs index 1b53d96bb9..44e99cf972 100644 --- a/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableTreeNode.cs +++ b/src/AddIns/Misc/SharpServerTools/SharpDbTools/Src/Forms/TableTreeNode.cs @@ -29,9 +29,16 @@ namespace SharpDbTools.Forms { this.logicalConnectionName = logicalConnectionName; NodeAwareContextMenuStrip cMenu = new NodeAwareContextMenuStrip(this); + ToolStripMenuItem invokeDescriberMenuItem = new ToolStripMenuItem("Describe"); invokeDescriberMenuItem.Click += new EventHandler(DescribeTableClickHandler); - cMenu.Items.Add(invokeDescriberMenuItem); + + + + cMenu.Items.AddRange(new ToolStripMenuItem[] + { + invokeDescriberMenuItem + }); this.ContextMenuStrip = cMenu; }