📄 fieldsexplorer.cs
字号:
//------------------------------------------------------------------------------
// <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 + -