sharpquerytree.cs

来自「SharpDevelop2.0.0 c#开发免费工具」· CS 代码 · 共 175 行

CS
175
字号
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Luc Morin" email=""/>
//     <version>$Revision: 993 $</version>
// </file>

// created on 04/11/2003 at 16:05
using System;
using System.Windows.Forms;
using System.Xml;
using System.Collections.Generic;
using System.Collections;
using SharpQuery.Gui;
using SharpQuery.Collections;
using ICSharpCode.Core;

namespace SharpQuery.Gui.TreeView
{
	///<summary>
	/// This class shows all databases connections in a treeview.
	///</summary>
	public class SharpQueryTree : System.Windows.Forms.TreeView
	{
		private System.Windows.Forms.ImageList pNodeImages;

		public static SharpQueryStringDictionary SchemaClassDict;

		///<summary>
		/// Create a SharpQueryTree objec
		///</summary>
		public SharpQueryTree()
			: base()
		{
			this.pNodeImages = new ImageList();
			this.pNodeImages.ColorDepth = System.Windows.Forms.ColorDepth.Depth24Bit;
			this.pNodeImages.ImageSize = new System.Drawing.Size(16, 16);
			this.pNodeImages.TransparentColor = System.Drawing.Color.DarkCyan;

			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.DataBaseRoot"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.DatabaseConnectionClose"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.DatabaseConnection"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.TablesRoot"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.ViewsRoot"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.ProceduresRoot"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.Table"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.View"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.Procedure"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.Column"));
			this.pNodeImages.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.NodeError"));

			this.ImageList = this.pNodeImages;

			SchemaClassDict = new SharpQueryStringDictionary();

			LoadSharpQueryConnectionCodon();

			//Add the Root Node.
			this.Nodes.Add(new SharpQueryNodeDatabaseRoot());
		}

		protected void LoadSharpQueryConnectionCodon()
		{
			AddInTreeNode AddinNode = AddInTree.GetTreeNode("/SharpQuery/Connection");
			LoggingService.Info("Building SharpQuery Codons...");
			foreach (Codon c in AddinNode.Codons)
			{
				if (c.Properties["schema"] != null && c.Properties["schema"] != string.Empty)
				{
					if (SchemaClassDict.ContainsKey(c.Properties["schema"]))
					{
						SchemaClassDict[c.Properties["schema"]] = c.Properties["node"];
					}
					else
					{
						SchemaClassDict.Add(c.Properties["schema"], c.Properties["node"]);
					}
				}
			}
		}

		///<summary>
		/// Select the node under the mouse cursor
		///</summary>
		protected override void OnMouseDown(MouseEventArgs e)
		{
			if (e.Button == MouseButtons.Right || e.Button == MouseButtons.Left)
			{
				this.SelectedNode = this.GetNodeAt(e.X, e.Y);
			}


			base.OnMouseDown(e);
		}

		///<summary>
		/// Display the context menu associated with a node type
		///</summary>
		protected override void OnMouseUp(MouseEventArgs e)
		{
			if (e.Button == MouseButtons.Right && this.SelectedNode != null && SelectedNode is ISharpQueryNode)
			{
				ISharpQueryNode selectedBrowserNode = SelectedNode as ISharpQueryNode;
				if (selectedBrowserNode.AddinContextMenu != "")
				{
					MenuService.ShowContextMenu(this, selectedBrowserNode.AddinContextMenu, this, e.X, e.Y);
				}
			}

			base.OnMouseUp(e);
		}

		protected override void OnItemDrag(ItemDragEventArgs e)
		{
			base.OnItemDrag(e);
			AbstractSharpQueryNode node = e.Item as AbstractSharpQueryNode;
			if (node != null)
			{
				DataObject dataObject = null;

				if (node.SchemaClass != null)
				{
					dataObject = node.SchemaClass.DragObject;

					if (dataObject != null)
					{
						dataObject.SetData(node.GetType(), node);
						DoDragDrop(dataObject, DragDropEffects.All);
					}
				}
			}
		}

		protected override void OnBeforeExpand(TreeViewCancelEventArgs e)
		{
			SharpQueryNodeConnection node = e.Node as SharpQueryNodeConnection;

			if (node != null)
			{
				if (node.IsConnected == false)
				{
					node.Connect();
				}
			}

			base.OnBeforeExpand(e);
		}


		protected override void OnAfterExpand(TreeViewEventArgs e)
		{
			ISharpQueryNode node = e.Node as ISharpQueryNode;

			if (node != null)
			{
				node.Refresh();
			}

			base.OnAfterExpand(e);
		}

		protected override void OnAfterCollapse(TreeViewEventArgs e)
		{
			ISharpQueryNode node = e.Node as ISharpQueryNode;

			if (node != null)
			{
				node.Clear();
			}

			base.OnAfterCollapse(e);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?