From 2067762ad68b5aa012a4c26f372dff792d789fe1 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Mon, 23 Aug 2010 18:18:53 +0000 Subject: [PATCH] DragDrop for GroupColumns in ExplorerTree git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/reports@6441 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/ReportExplorer/ExplorerTree.cs | 75 +++++++++---------- .../ReportExplorer/ReportExplorerPad.cs | 66 +--------------- 2 files changed, 39 insertions(+), 102 deletions(-) diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs index 5189f4ab87..4a23ee0a58 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ExplorerTree.cs @@ -118,28 +118,46 @@ namespace ICSharpCode.Reports.Addin ColumnNode node = (ColumnNode)drgevent.Data.GetData(typeof(ColumnNode)); Point pt = this.PointToClient (new Point( drgevent.X,drgevent.Y)); SectionNode sectionNode = this.GetNodeAt (pt) as SectionNode; - if (sectionNode != null) { + if ((sectionNode != null) && (!ExplorerTree.NodeExist (sectionNode,node.Text))) { if (sectionNode == this.nodeGrouping) { this.nodeSorting.Nodes.Clear(); - } - - if (!ExplorerTree.NodeExist (sectionNode,node.Text)) { - SortColumnNode newNode = new SortColumnNode (node.Text, - ExplorerTree.ascendingIcon, - ExplorerTree.sortColumnMenu); - - newNode.SortDirection = ListSortDirection.Ascending; - this.SelectedNode = newNode; - this.CheckNode (newNode); - sectionNode.Nodes.Add(newNode); - this.reportModel.ReportSettings.SortColumnsCollection.Add(new SortColumn(newNode.Text, - ListSortDirection.Ascending, - typeof(System.String),false)); - this.OnPropertyChanged ("Sort_Group"); + AddGrouping(sectionNode,node); + } else { + AddSorting (sectionNode,node); } } } + + private void AddSorting(SectionNode sectionNode, ColumnNode node) + { + SortColumnNode sortNode = new SortColumnNode (node.Text, + ExplorerTree.ascendingIcon, + ExplorerTree.sortColumnMenu); + + sortNode.SortDirection = ListSortDirection.Ascending; + this.SelectedNode = sortNode; + sectionNode.Nodes.Add(sortNode); + this.reportModel.ReportSettings.SortColumnsCollection.Add(new SortColumn(sortNode.Text, + ListSortDirection.Ascending, + typeof(System.String),false)); + this.OnPropertyChanged ("Sorting"); + + } + + + private void AddGrouping(SectionNode sectionNode,ColumnNode node) + { + this.nodeSorting.Nodes.Clear(); + GroupColumnNode groupNode = new GroupColumnNode(node.Text,ExplorerTree.ascendingIcon, + ExplorerTree.sortColumnMenu); + groupNode.SortDirection = ListSortDirection.Ascending; + this.SelectedNode = groupNode; + sectionNode.Nodes.Add(groupNode); + this.reportModel.ReportSettings.GroupColumnsCollection.Add(new GroupColumn(groupNode.Text, 1,ListSortDirection.Ascending)); + this.OnPropertyChanged ("Grouping"); + } + #endregion @@ -157,24 +175,6 @@ namespace ICSharpCode.Reports.Addin } - private void CheckNode (TreeNode node) - { - SortColumnNode cn = node as SortColumnNode; - if (cn != null) { - if (node.Parent == nodeSorting) { - if (cn.SortDirection == ListSortDirection.Ascending) { - cn.ImageIndex = ascendingIcon; - } else { - cn.ImageIndex = descendingIcon; - } - } else if (node.Parent == this.nodeGrouping) { - cn.ImageIndex = clearIcon; - cn.SelectedImageIndex = clearIcon; - } - } - } - - #region Update Sorting - Grouping private ColumnCollection CollectSortColumns() @@ -443,12 +443,7 @@ namespace ICSharpCode.Reports.Addin this.BuildTree(); } } - - - public ColumnCollection SortColumnCollection - { - get{return this.CollectSortColumns();} - } + #endregion diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs index d2d9310a43..816189e0de 100644 --- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs +++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportExplorer/ReportExplorerPad.cs @@ -73,7 +73,7 @@ namespace ICSharpCode.Reports.Addin } } - void ActiveViewClosed (object source, ViewContentEventArgs e) + private void ActiveViewClosed (object source, ViewContentEventArgs e) { if (e.Content is ReportDesignerView) { Console.WriteLine ("Designer closed"); @@ -81,6 +81,7 @@ namespace ICSharpCode.Reports.Addin } } + #region Mouse private void ReportExplorer_MouseDown (object sender, MouseEventArgs e) @@ -100,62 +101,6 @@ namespace ICSharpCode.Reports.Addin #endregion - #region DragDrop - /* - void TreeViewItemDrag (object sender,ItemDragEventArgs e) - { - - ColumnNode node = (ColumnNode)e.Item; - if (node != null) { - if (node.ImageIndex == ExplorerTree.ColumnIcon) { - this.treeView.SelectedNode = node; - if (node != null) { - this.treeView.DoDragDrop(node.DragDropDataObject, - DragDropEffects.Copy | DragDropEffects.Scroll); - } - } - } - - } - - */ - - - void TreeViewDragDrop (object sender,DragEventArgs e) - { - /* - if(e.Data.GetDataPresent(ReportExplorer.DragNodeDescription, false)){ - Point pt = this.treeView.PointToClient (new Point( e.X,e.Y)); - - SectionTreeNode sectionNode = this.treeView.GetNodeAt (pt) as SectionTreeNode; - - if (sectionNode != null) { - // If we dragdrop to GroupNode, remove all subnods in SortNode - if (this.treeView.IsGroupNode(sectionNode)) { - this.treeView.ClearSortNode(); - } - ColumnsTreeNode t = (ColumnsTreeNode)e.Data.GetData(ReportExplorer.DragNodeDescription, true); - ColumnsTreeNode newNode = new ColumnsTreeNode (t.FieldName); - - // Useless to add a node twice - if (!ExplorerTree.NodeExist (sectionNode,newNode)) { - newNode.SortDirection = ListSortDirection.Ascending; - newNode.ImageIndex = ExplorerTree.AscendingIcon; - newNode.SelectedImageIndex = ExplorerTree.AscendingIcon; - this.treeView.SelectedNode = (TreeNode)newNode; - this.treeView.CheckNode (newNode); - sectionNode.Nodes.Add(newNode); - ReportExplorer.NotifyReportView(); - } - } - } - */ - } - - - #endregion - - #region publics for Commands // These public methods are all called from ExplorerCommands @@ -211,13 +156,10 @@ namespace ICSharpCode.Reports.Addin public ReportModel ReportModel {get {return this.reportModel;}} - public ColumnCollection SortColumnCollection - { - get {return this.explorerTree.SortColumnCollection;} - } - + #region IPropertyChanged + public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; private void NotifyReportView(string property)