⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fieldsexplorer.cs

📁 c#源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
//------------------------------------------------------------------------------
// <autogenerated>
//     This code was generated by a tool.
//     Runtime Version: 1.1.4322.2032
//
//     Changes to this file may cause incorrect behavior and will be lost if 
//     the code is regenerated.
// </autogenerated>
//------------------------------------------------------------------------------


using System;
using System.Data;
using System.Drawing;
using System.Resources;
using System.Windows.Forms;
using System.ComponentModel;

using ICSharpCode.Core.Services;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Services;

using SharpReport;
using SharpReportCore;

	/// <summary>
	/// This Pad shows the Available Fields from a report and is used to handel sorting /grouping
	/// </summary>
	/// <remarks>
	/// 	created by - Forstmeier Peter
	/// 	created on - 12.06.2005 18:17:46
	/// </remarks>
	/// 
namespace SharpReportAddin {
	public class FieldsExplorer : TreeView, IPadContent {
		Panel contentPanel = new Panel();
		
		private SectionTreeNode nodeAvailableFields;
		private SectionTreeNode nodeSorting;
		private SectionTreeNode nodeGrouping;
		private TreeNode nodeFunction;
		private TreeNode nodeParams;
		
		private ResourceService resourceService;
		private bool firstTime;

		#region Publics
		/// <summary>
		/// called from SharpreportView to Update the Explorer
		/// </summary>
		public void UpdateExplorer() {
			this.firstTime = true;
			this.RedrawContent();
			this.FillTree();
		}
		
		///<summary>
		/// Clear the selected Section
		/// </summary>
		public void ClearNodeSection () {
			if (this.SelectedNode is SectionTreeNode) {
				if (this.SelectedNode.Nodes.Count > 0) {
					this.SelectedNode.Nodes.Clear();
					NotifyReportView();
				}
			} 
		}
		
		/// <summary>
		/// Remove the selected Node from Sorting or Grouping Collection
		/// </summary>
		public void ClearSelectedNode() {
			if (this.SelectedNode != null) {
				TreeNode parent = this.SelectedNode.Parent;
				this.SelectedNode.Remove();
				this.SelectedNode = parent;
				NotifyReportView();
			}
		}
		
		/// <summary>
		/// Toggle the SortDirection
		/// </summary>
		public void ToogleSortDirection () {
			if (this.SelectedNode is ColumnsTreeNode) {
				ColumnsTreeNode cn = (ColumnsTreeNode)this.SelectedNode;
				if (cn.SortDirection ==  ListSortDirection.Ascending) {
					cn.SortDirection = ListSortDirection.Descending;
					cn.ImageIndex = 5;
					cn.SelectedImageIndex = 5;
				} else {
					cn.SortDirection = ListSortDirection.Ascending;
					cn.ImageIndex = 4;
					cn.SelectedImageIndex = 4;
				}
				this.NotifyReportView();
			}
		}
		#endregion
		
		#region TreeView Events
		
		void TreeViewItemDrag (object sender,ItemDragEventArgs e) {
			if (e.Item is ColumnsTreeNode) {
				ColumnsTreeNode node = (ColumnsTreeNode)e.Item;
			this.SelectedNode = node;
				if (node != null) {
					this.DoDragDrop(node.DragDropDataObject,
					                DragDropEffects.Copy | DragDropEffects.Scroll);
				}
			}
		}
		
		
		void TreeViewDragOver (object sender,DragEventArgs e) {
			TreeNode node  = this.GetNodeAt(PointToClient(new Point (e.X,e.Y)));
			node.EnsureVisible();
			if (node.Nodes.Count > 0) {
				node.Expand();
			}
			if(e.Data.GetDataPresent("SharpReportAddin.ColumnsTreeNode", false)){
				//If we are in the AvailableFields Section we can't drop
				if (node is SectionTreeNode){
					e.Effect = DragDropEffects.Copy | DragDropEffects.Scroll;
				} else {
					e.Effect = DragDropEffects.None;
				}
			} else {
				e.Effect = DragDropEffects.None;
			}
		}
		
		
		void TreeViewDragDrop (object sender,DragEventArgs e) {

			if(e.Data.GetDataPresent("SharpReportAddin.ColumnsTreeNode", false)){
				
				Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
				SectionTreeNode node = (SectionTreeNode)((TreeView)sender).GetNodeAt(pt);

				if (node != null) {
					
					ColumnsTreeNode t = (ColumnsTreeNode)e.Data.GetData("SharpReportAddin.ColumnsTreeNode", true);
					ColumnsTreeNode dest = new ColumnsTreeNode (t.Text);

					// Useless to add a node twice
					if (!CheckForExist (node,dest)) {
						dest.SortDirection = ListSortDirection.Ascending;
						dest.ImageIndex = 4;
						dest.SelectedImageIndex = 4;
						this.SelectedNode = (TreeNode)dest;
						CheckNode (dest);
						node.Nodes.Add(dest);
						NotifyReportView();
					} 
				}
			}
		}
		
		
		private bool CheckForExist (SectionTreeNode sec,ColumnsTreeNode col) {
			if (sec.Nodes.Count > 0) {
				for (int i = 0;i < sec.Nodes.Count ;i++ ) {
					if (sec.Nodes[i].Text == col.Text) {
						return true;
					}
				}
			} else {
				return false;
			}
			return false;
		}
		
		
		
		private void TreeMouseDown(object sender, System.Windows.Forms.MouseEventArgs e){
			TreeNode node = this.GetNodeAt(PointToClient(Cursor.Position));
			if (node != null) {
				this.SelectedNode = node;
				CheckNode (node);
				if (e.Button == MouseButtons.Right) {
					if (node is AbstractFieldsNode) {
						AbstractFieldsNode abstrNode = (AbstractFieldsNode)node;
						if (abstrNode.ContextmenuAddinTreePath.Length > 0) {
							MenuService menuService = (MenuService)ICSharpCode.Core.Services.ServiceManager.Services.GetService(typeof(MenuService));
							ContextMenu ctMen = menuService.CreateContextMenu (this,abstrNode.ContextmenuAddinTreePath);
							ctMen.Show (this,new Point (e.X,e.Y));
						}
					}
				}
			}
		}
		

		private void CheckNode (TreeNode node) {
			if (node.Parent == nodeSorting) {
				ColumnsTreeNode cn = (ColumnsTreeNode)node;

				if (cn.SortDirection ==  ListSortDirection.Ascending) {
					cn.ImageIndex = 4;
				} else {
					cn.ImageIndex = 5;
				}
			} else if (node.Parent == this.nodeGrouping) {
				ColumnsTreeNode cn = (ColumnsTreeNode)node;
				cn.ImageIndex = 2;
				cn.SelectedImageIndex = 2;
			}
		}
		
		#endregion
		
		private void NotifyReportView() {
			if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is SharpReportView) {
				WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.IsDirty = true;
			}
		}
		
		
		private void OnWindowChange (object sender,EventArgs e) {
			
			try {
				if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == null || WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent == null) {
					return;
				}
				
				IWorkbenchLayout layoutView = (IWorkbenchLayout)WorkbenchSingleton.Workbench.WorkbenchLayout;
				Type type = this.GetType();
				IPadContent pad = (IPadContent)WorkbenchSingleton.Workbench.GetPad(type);
				
				//If we found an SharpReport, we Activate the pad
				if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is SharpReportView) {
					ActivatePad(layoutView,pad);
					pad.RedrawContent();
					FillTree();
					this.ExpandAll();
				} else {
					//otherwise, we Hide it
					layoutView.HidePad(pad);
				}
			} catch (Exception) {
				
			}
		}
		
		
		private void OnViewSaving (object sender, EventArgs e) {
			
			SharpReportView view = (SharpReportView)WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent;
			if (view != null) {
				SharpReportManager manager = view.ReportManager;
				if (manager != null) {
					if (this.nodeSorting.Nodes.Count > 0) {
						UpdateSorting(manager);
					}
					if (this.nodeGrouping.Nodes.Count > 0) {
						UpdateGrouping(manager);
					}

				} else {
					throw new NullReferenceException("FieldsExplorer:OnViewSaving : No ReportManager");
				}
				
			}
		}
		void ActivatePad (IWorkbenchLayout layout, IPadContent pad) {
			if (this.firstTime) {
				WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.Saving -= new EventHandler (OnViewSaving);
				WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.Saving += new EventHandler (OnViewSaving);
				FillTree();
				this.firstTime = false;
			}	
			layout.ActivatePad(pad);
		}
		
		
		
		#region Build TreeControl
		private void UpdateSorting (SharpReportManager reportManager) {
			reportManager.SortColumnCollection.Clear();
			SortColumn sc;
			AbstractColumn af;	
			for (int i = 0;i < this.nodeSorting.Nodes.Count ;i++ ) {
				ColumnsTreeNode cn = (ColumnsTreeNode)this.nodeSorting.Nodes[i];
				af = reportManager.AvailableFieldsCollection[cn.Text];
				if (af != null) {
					sc = new SortColumn (cn.Text,
					                     cn.SortDirection,
					                     af.DataType);
				} else {
					sc = new SortColumn (cn.Text,

⌨️ 快捷键说明

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