Browse Source

Better usage for ReportExplorer

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@1652 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Peter Forstmeier 19 years ago
parent
commit
36b7685c62
  1. 2
      src/AddIns/Misc/SharpReport/SharpReport.sln
  2. 26
      src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs
  3. 12
      src/AddIns/Misc/SharpReport/SharpReport/Designer/SideTab/BuildSideTab.cs
  4. 1
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRowControl.cs
  5. 76
      src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTableControl.cs
  6. 23
      src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/AbstractCommand/AbstractExplorerCommand.cs
  7. 121
      src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ExplorerCommands.cs
  8. 423
      src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/ExplorerTree.cs
  9. 32
      src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs
  10. 202
      src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/ReportExplorer.cs
  11. 24
      src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportAddin.addin
  12. 2
      src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportAddin.csproj
  13. 66
      src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs
  14. 1
      src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs

2
src/AddIns/Misc/SharpReport/SharpReport.sln

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1414
# SharpDevelop 2.1.0.1626
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpReportCore", "SharpReportCore\SharpReportCore.csproj", "{4B2239FF-8FD6-431D-9D22-1B8049BA6917}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpReport", "SharpReport\SharpReport.csproj", "{F5563727-8309-4AC3-BACA-EB28EFD8A1D0}"

26
src/AddIns/Misc/SharpReport/SharpReport/Designer/Report.cs

@ -189,24 +189,18 @@ namespace SharpReport.Designer{ @@ -189,24 +189,18 @@ namespace SharpReport.Designer{
baseReportItem.Name);
baseReportItem.Font = this.reportSettings.DefaultFont;
// System.ComponentModel.TypeConverter converter =
// System.ComponentModel.TypeDescriptor.GetConverter( typeof(Font));
// string s1 = (string)converter.ConvertTo((this.reportSettings.DefaultFont),typeof(string));
// string s2 = converter.ConvertToInvariantString(this.reportSettings.DefaultFont);
// System.Console.WriteLine("ConvertTo - {0}",s1);
// System.Console.WriteLine("ConvertToInvariantString {0}",s2);
// Font f1 = (Font)converter.ConvertFromString(s1);
// Font f2 = (Font)converter.ConvertFromInvariantString(s2);
// Font f3 = new Font (f1, FontStyle.Bold |FontStyle.Underline);
// string s3 = converter.ConvertToInvariantString(f3);
// System.Console.WriteLine("ConvertToInvariantString {0}",s3);
IContainerItem ic = baseReportItem as IContainerItem;
// System.Console.WriteLine("!!");
// System.Console.WriteLine("{0} / {1}",f1.Name,f2.Size);
// System.Console.WriteLine("{0} / {1}",f2.Name,f2.Size);
if (ic != null) {
ic.Padding = this.reportSettings.Padding;
System.Console.WriteLine("CustomizeItem: Padding set to {0}",ic.Padding);
// System.Console.WriteLine("1)item size = {0}",baseReportItem.Size);
// baseReportItem.Size = new Size(baseReportItem.Size.Width,
// ic.Padding.Top + ic.Padding.Bottom + baseReportItem.Font.Height + 2);
//
// System.Console.WriteLine("2)item size = {0}",baseReportItem.Size);
}
if (baseReportItem.Parent == this.selectedSection) {
baseReportItem.Location = new Point(iddea.ItemAtPoint.X,iddea.ItemAtPoint.Y);

12
src/AddIns/Misc/SharpReport/SharpReport/Designer/SideTab/BuildSideTab.cs

@ -109,12 +109,12 @@ namespace SharpReport @@ -109,12 +109,12 @@ namespace SharpReport
tab.Items.Add (t);
//Test
/*
t = sideTab.SideTabItemFactory.CreateSideTabItem( "Table",
GlobalEnums.ReportItemType.ReportTableItem.ToString(),
ResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"));
tab.Items.Add (t);
*/
//
// t = sideTab.SideTabItemFactory.CreateSideTabItem( "Table",
// GlobalEnums.ReportItemType.ReportTableItem.ToString(),
// ResourceService.GetBitmap("Icons.16x16.SharpQuery.Table"));
// tab.Items.Add (t);
//
}

1
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportRowControl.cs

@ -41,6 +41,7 @@ namespace SharpReport.Designer{ @@ -41,6 +41,7 @@ namespace SharpReport.Designer{
#region overrides
protected override void OnPaint(System.Windows.Forms.PaintEventArgs pea){
System.Console.WriteLine("Row:OnPaint");
base.OnPaint(pea);
base.DrawEdges (pea,
new Rectangle(0,5,this.ClientSize.Width - 1,this.ClientSize.Height - 6) );

76
src/AddIns/Misc/SharpReport/SharpReport/Designer/VisualControls/ReportTableControl.cs

@ -23,9 +23,10 @@ namespace SharpReport.Designer @@ -23,9 +23,10 @@ namespace SharpReport.Designer
{
private RectangleShape shape = new RectangleShape();
private bool drawBorder;
private Padding padding = new Padding (5);
private ReportRowControl row1;
private Padding padding = new Padding (5,12,5,5);
private ReportRowControl headerRow;
private ReportRowControl detailRow;
private ReportRowControl footerRow;
public ReportTableControl()
{
//
@ -38,39 +39,80 @@ namespace SharpReport.Designer @@ -38,39 +39,80 @@ namespace SharpReport.Designer
ControlStyles.ResizeRedraw,
true);
this.UpdateStyles();
this.Padding = padding;
this.headerRow = new ReportRowControl();
this.headerRow.Location = new Point (this.Padding.Left,this.Padding.Top);
this.headerRow.Size = new Size (this.Width - this.Padding.Left - this.Padding.Right,this.headerRow.Size.Height);
this.headerRow.BackColor = Color.LightGray;
this.headerRow.Dock = DockStyle.Top;
this.Controls.Add(headerRow);
System.Console.WriteLine("\tHeader Location {0}",this.headerRow.Location);
this.detailRow = new ReportRowControl();
this.detailRow.Location = new Point (this.Padding.Left,
this.Padding.Top + this.headerRow.Size.Height + this.padding.Top);
this.detailRow.Size = new Size (this.Width - this.Padding.Left - this.Padding.Right,this.detailRow.Size.Height);
this.detailRow.BackColor = Color.Azure;
// this.Controls.Add(detailRow);
System.Console.WriteLine("\tDetail Location {0}",this.detailRow.Location);
this.footerRow = new ReportRowControl();
this.footerRow.Location = new Point (this.Padding.Left,
this.Padding.Top + this.detailRow.Location.Y + this.detailRow.Size.Height + this.padding.Top);
this.footerRow.Size = new Size (this.Width - this.Padding.Left - this.Padding.Right,this.footerRow.Size.Height);
this.footerRow.BackColor = Color.LightBlue;
this.footerRow.Parent = this;
// this.footerRow.Anchor = AnchorStyles.Bottom;
this.footerRow.Dock = DockStyle.Bottom;
this.Controls.Add(footerRow);
System.Console.WriteLine("\tfooter Location {0}",this.footerRow.Location);
int h,w;
h = GlobalValues.PreferedSize.Height * 3 + 30;
h = this.headerRow.Size.Height + this.detailRow.Size.Height + this.footerRow.Size.Height;
h = h + (3 * this.padding.Top) + this.padding.Bottom;
w = (GlobalValues.PreferedSize.Width * 2) + 10;
this.Size = new Size(w,h);
this.row1 = new ReportRowControl();
this.row1.Location = new Point (this.Padding.Left,this.Padding.Top);
this.row1.Size = new Size (this.Width - this.Padding.Left - this.Padding.Right,this.row1.Size.Height);
this.row1.BackColor = Color.AliceBlue;
this.Controls.Add(row1);
this.Resize += new EventHandler(OnResize);
}
private void OnResize (object sender, EventArgs e) {
System.Console.WriteLine("");
System.Console.WriteLine("TabaleControl:Resize");
System.Console.WriteLine("");
this.row1.Location = new Point (this.Padding.Left,this.Padding.Top);
this.row1.Size = new Size (this.Width - this.Padding.Left - this.Padding.Right,this.row1.Size.Height);
// System.Console.WriteLine("TabaleControl:Resize");
// System.Console.WriteLine("");
//
// int h,w;
// h = this.headerRow.Size.Height + this.detailRow.Size.Height + this.footerRow.Size.Height;
// h = h + (3 * this.padding.Top) + this.padding.Bottom;
// w = (GlobalValues.PreferedSize.Width * 2) + 10;
//
// this.Size = new Size(w,h);
}
#region overrides
protected override void OnPaint(PaintEventArgs pea){
System.Console.WriteLine("");
System.Console.WriteLine("TableOnPaint");
base.OnPaint(pea);
this.headerRow.Invalidate();
this.detailRow.Invalidate();
this.footerRow.Invalidate();
base.DrawEdges (pea,
new Rectangle(0,5,
this.ClientSize.Width - 1,this.ClientSize.Height - 6) );
ControlHelper.DrawHeadLine(this,pea);
// ControlHelper.DrawHeadLine(this,pea);
pea.Graphics.DrawString("Table",new Font("Microsoft Sans Serif",
6),
new SolidBrush(Color.Gray),
new RectangleF(this.padding.Left,1,pea.ClipRectangle.Width,12) );
}

23
src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/AbstractCommand/AbstractExplorerCommand.cs

@ -7,24 +7,22 @@ @@ -7,24 +7,22 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using SharpReportAddin;
/// <summary>
/// Description of AbstractExplorerCommand
/// </summary>
namespace SharpReportAddin.Commands{
public abstract class AbstractExplorerCommand : AbstractMenuCommand{
FieldsExplorer fieldsExplorer = null;
ReportExplorer reportExplorer = null;
protected AbstractExplorerCommand(){
Type type = typeof(FieldsExplorer);
fieldsExplorer = (SharpReportAddin.FieldsExplorer)WorkbenchSingleton.Workbench.GetPad(type).PadContent;
if (fieldsExplorer == null) {
// Type type = typeof(ReportExplorer);
// this.reportExplorer = (SharpReportAddin.ReportExplorer)WorkbenchSingleton.Workbench.GetPad(type).PadContent;
this.reportExplorer = (SharpReportAddin.ReportExplorer)WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorer)).PadContent;
if (reportExplorer == null) {
throw new NullReferenceException ("AbstractExplorerCommand : No FieldExplorer Pad available");
}
}
@ -34,7 +32,7 @@ namespace SharpReportAddin.Commands{ @@ -34,7 +32,7 @@ namespace SharpReportAddin.Commands{
/// </summary>
public override bool IsEnabled {
get{
if (fieldsExplorer != null) {
if (reportExplorer != null) {
return true;
}
return false;
@ -42,11 +40,10 @@ namespace SharpReportAddin.Commands{ @@ -42,11 +40,10 @@ namespace SharpReportAddin.Commands{
set{}
}
public FieldsExplorer FieldsExplorer {
public ReportExplorer ReportExplorer {
get {
return fieldsExplorer;
return reportExplorer;
}
}
}
}

121
src/AddIns/Misc/SharpReport/SharpReportAddin/Commands/ExplorerCommands.cs

@ -8,68 +8,85 @@ @@ -8,68 +8,85 @@
// </autogenerated>
//------------------------------------------------------------------------------
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
/// <summary>
/// This class'es handles all the commands used by the
/// <see cref="ReportExplorer"></see>
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 07.06.2005 11:49:54
/// </remarks>
namespace SharpReportAddin.Commands {
using System;
using System.Windows.Forms;
/// <summary>
/// This class'es handles all the commands used by the
/// FieldsExplorer
/// Clear and rebuild the ExplorerTree
/// </summary>
/// <remarks>
/// created by - Forstmeier Peter
/// created on - 07.06.2005 11:49:54
/// </remarks>
public class ClearAndRebuildExplorer : AbstractExplorerCommand{
public override void Run()
{
base.ReportExplorer.ClearAndRebuildTree();
}
}
///<summary>
/// Clear the selected Section (Grouping/Sorting)
/// </summary>
public class ClearNodes : AbstractExplorerCommand{
public ClearNodes() {
}
public override void Run() {
try {
base.FieldsExplorer.ClearNodeSection();
} catch (Exception) {
throw;
}
}
} // End
public class ClearNodes : AbstractExplorerCommand{
public ClearNodes() {
}
public override void Run() {
try {
base.ReportExplorer.ClearNodes();
} catch (Exception) {
throw;
}
}
}
/// <summary>
/// Toggle the SortOrder
/// </summary>
public class ToogleOrder : AbstractExplorerCommand{
public ToogleOrder() {
}
public override void Run() {
try {
base.ReportExplorer.ToggleOrder();
} catch (Exception) {
throw;
}
}
}
/// <summary>
/// Remove the Selected Node from the Collection
/// </summary>
public class RemoveNode : AbstractExplorerCommand{
public RemoveNode() {
}
public override void Run() {
try {
base.FieldsExplorer.ClearSelectedNode();
} catch (Exception) {
throw;
}
}
} // End
public class RemoveNode : AbstractExplorerCommand{
public RemoveNode() {
}
public override void Run() {
try {
base.ReportExplorer.RemoveNode();
} catch (Exception) {
throw;
}
}
} // End
/// <summary>
/// Toggle the SortOrder
/// </summary>
public class ToogleOrder : AbstractExplorerCommand{
public ToogleOrder() {
}
public override void Run() {
try {
base.FieldsExplorer.ToogleSortDirection();
} catch (Exception) {
throw;
}
}
} // End
}

423
src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/ExplorerTree.cs

@ -0,0 +1,423 @@ @@ -0,0 +1,423 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Peter
* Date: 01.08.2006
* Time: 15:48
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Data;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using ICSharpCode.Core;
using SharpReportCore;
namespace SharpReportAddin{
/// <summary>
/// Description of ExplorerTree.
/// </summary>
internal class ExplorerTree:TreeView{
private SectionTreeNode nodeRoot;
private SectionTreeNode nodeModel;
private SectionTreeNode nodeLayout;
private SectionTreeNode nodeAvailableFields;
private SectionTreeNode nodeSorting;
private SectionTreeNode nodeGrouping;
private TreeNode nodeFunction;
private TreeNode nodeParams;
private const int folderClosed = 0;
private const int folderOpen = 1;
private const int clearIcon = 2;
private const int ascendingIcon = 4;
private const int descendingIcon = 5;
private const int storedprocIcon = 7;
private const int columnIcon = 8;
private const int functionIcon = 9;
public ExplorerTree():base(){
LabelEdit = true;
AllowDrop = true;
HideSelection = false;
Dock = DockStyle.Fill;
Scrollable = true;
this.MouseDown += new MouseEventHandler(TreeMouseDown );
this.InitImageList();
BuildNodes();
}
#region Contextmenu
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) {
AbstractFieldsNode abstrNode = node as AbstractFieldsNode;
if (abstrNode != null) {
if (abstrNode.ContextmenuAddinTreePath.Length > 0) {
ContextMenuStrip ctMen = MenuService.CreateContextMenu (this,abstrNode.ContextmenuAddinTreePath);
ctMen.Show (this,new Point (e.X,e.Y));
}
}
}
}
}
public 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;
}
public void CheckNode (TreeNode node) {
ColumnsTreeNode cn = node as ColumnsTreeNode;
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;
}
}
}
#endregion
#region Update ReportModel
private void UpdateSorting (ReportModel model) {
model.ReportSettings.SortColumnCollection.Clear();
if (this.nodeSorting.Nodes.Count > 0) {
SortColumn sc;
AbstractColumn af;
foreach (ColumnsTreeNode cn in this.nodeSorting.Nodes) {
af = model.ReportSettings.AvailableFieldsCollection.Find(cn.Text);
if (af != null) {
sc = new SortColumn (cn.Text,
cn.SortDirection,
af.DataType);
} else {
sc = new SortColumn (cn.Text,
cn.SortDirection,
typeof(System.String));
}
model.ReportSettings.SortColumnCollection.Add(sc);
}
}
}
private void UpdateGrouping (ReportModel model) {
model.ReportSettings.GroupColumnsCollection.Clear();
if (this.nodeGrouping.Nodes.Count > 0) {
GroupColumn gc;
for (int i = 0;i < this.nodeGrouping.Nodes.Count ;i++ ) {
ColumnsTreeNode cn = (ColumnsTreeNode)this.nodeGrouping.Nodes[i];
gc = new GroupColumn (cn.Text,i,cn.SortDirection);
model.ReportSettings.GroupColumnsCollection.Add(gc);
}
}
}
#endregion
#region Commands
public void CollectModel (ReportModel model) {
UpdateSorting(model);
UpdateGrouping(model);
MessageBox.Show (model.DetailSection.Items.Count.ToString());
}
public void ClearAndFill() {
this.Nodes.Clear();
this.BuildNodes();
}
public void ToggleOrder() {
if (this.SelectedNode is ColumnsTreeNode) {
ColumnsTreeNode cn = (ColumnsTreeNode)this.SelectedNode;
if (cn.SortDirection == ListSortDirection.Ascending) {
cn.SortDirection = ListSortDirection.Descending;
cn.ImageIndex = descendingIcon;
cn.SelectedImageIndex = descendingIcon;
} else {
cn.SortDirection = ListSortDirection.Ascending;
cn.ImageIndex = ascendingIcon;
cn.SelectedImageIndex = ascendingIcon;
}
}
}
#endregion
public int FolderClosed {
get {
return folderClosed;
}
}
public int FolderOpen {
get {
return folderOpen;
}
}
public int ClearIcon {
get {
return clearIcon;
}
}
public int AscendingIcon {
get {
return ascendingIcon;
}
}
public int DescendingIcon {
get {
return descendingIcon;
}
}
public int StoredprocIcon {
get {
return storedprocIcon;
}
}
public int ColumnIcon {
get {
return columnIcon;
}
}
public int FunctionIcon {
get {
return functionIcon;
}
}
#region FillTree
private void SetAvailableFields (ReportModel model) {
this.nodeAvailableFields.Nodes.Clear();
foreach (AbstractColumn af in model.ReportSettings.AvailableFieldsCollection){
ColumnsTreeNode node = new ColumnsTreeNode(af.ColumnName);
node.Tag = this.nodeAvailableFields;
//we don't like ContextMenu here
node.ContextmenuAddinTreePath = "";
switch (model.ReportSettings.CommandType) {
case CommandType.Text:{
node.ImageIndex = columnIcon;
node.SelectedImageIndex = columnIcon;
break;
}
case CommandType.StoredProcedure: {
node.ImageIndex = storedprocIcon ;
node.SelectedImageIndex = storedprocIcon ;
break;
}
default:{
node.ImageIndex = columnIcon;
node.SelectedImageIndex = columnIcon;
break;
}
}
this.nodeAvailableFields.Nodes.Add(node);
}
}
void SetSortFields(ColumnCollection collection){
ColumnsTreeNode node;
this.nodeSorting.Nodes.Clear();
foreach (SortColumn sc in collection) {
node = new ColumnsTreeNode(sc.ColumnName,sc.SortDirection);
if (node.SortDirection == ListSortDirection.Ascending) {
node.ImageIndex = 4;
node.SelectedImageIndex = 4;
} else {
node.ImageIndex = descendingIcon;
node.SelectedImageIndex = descendingIcon;
}
this.nodeSorting.Nodes.Add(node);
}
}
private void SetGroupFields(ColumnCollection collection){
ColumnsTreeNode node;
this.nodeGrouping.Nodes.Clear();
foreach (GroupColumn gc in collection) {
node = new ColumnsTreeNode(gc.ColumnName);
if (node.SortDirection == ListSortDirection.Ascending) {
node.ImageIndex = ascendingIcon;
node.SelectedImageIndex = ascendingIcon;
} else {
node.ImageIndex = descendingIcon;
node.SelectedImageIndex = descendingIcon;
}
this.nodeGrouping.Nodes.Add(node);
}
}
private void SetParamFields (AbstractParametersCollection collection){
ColumnsTreeNode node;
this.nodeParams.Nodes.Clear();
foreach (SqlParameter par in collection) {
node = new ColumnsTreeNode(par.ParameterName);
node.Tag = par;
// No ContextMenu for Parameters
node.ContextmenuAddinTreePath = String.Empty;
node.SelectedImageIndex = columnIcon;
node.ImageIndex = columnIcon;
this.nodeParams.Nodes.Add (node);
}
}
void SetFunctions(ReportSectionCollection collection){
AbstractFieldsNode node;
this.nodeFunction.Nodes.Clear();
foreach (SharpReport.ReportSection section in collection) {
foreach (BaseReportObject item in section.Items) {
BaseFunction func = item as BaseFunction;
if (func != null) {
node = new ColumnsTreeNode (ResourceService.GetString(func.LocalisedName));
// No ContextMenu for Functions included in the Report
node.ContextmenuAddinTreePath = String.Empty;
node.SelectedImageIndex = functionIcon;
node.ImageIndex = functionIcon;
this.nodeFunction.Nodes.Add(node);
}
}
}
}
public void FillTree (ReportModel model) {
this.BeginUpdate();
try {
SetAvailableFields(model);
SetGroupFields(model.ReportSettings.GroupColumnsCollection);
SetSortFields(model.ReportSettings.SortColumnCollection);
SetParamFields (model.ReportSettings.SqlParametersCollection);
SetFunctions(model.SectionCollection);
this.EndUpdate();
} catch (Exception ) {
throw;
}
}
#endregion
#region Build Basic Tree
private void BuildNodes() {
BeginUpdate();
this.Nodes.Clear();
this.nodeRoot = new SectionTreeNode("Report");
this.nodeModel = new SectionTreeNode("Model");
nodeAvailableFields = new SectionTreeNode(ResourceService.GetString("SharpReport.FieldsExplorer.AvailableFields"));
nodeAvailableFields.ImageIndex = folderClosed;
nodeAvailableFields.SelectedImageIndex = folderOpen;
// we don't like a ContextMenu here
nodeAvailableFields.ContextmenuAddinTreePath = "";
this.nodeModel.Nodes.Add(this.nodeAvailableFields);
nodeSorting = new SectionTreeNode (ResourceService.GetString("SharpReport.FieldsExplorer.Sorting"));
nodeSorting.ImageIndex = folderClosed;
nodeSorting.SelectedImageIndex = folderOpen;
this.nodeModel.Nodes.Add(this.nodeSorting);
nodeGrouping = new SectionTreeNode (ResourceService.GetString("SharpReport.FieldsExplorer.Grouping"));
nodeGrouping.ImageIndex = folderClosed;
nodeGrouping.SelectedImageIndex = folderOpen;
this.nodeModel.Nodes.Add(this.nodeGrouping);
nodeFunction = new TreeNode(ResourceService.GetString("SharpReport.FieldsExplorer.Functions"));
nodeFunction.ImageIndex = folderClosed;
nodeFunction.SelectedImageIndex = folderOpen;
this.nodeModel.Nodes.Add(this.nodeFunction);
nodeParams = new TreeNode(ResourceService.GetString("SharpReport.FieldsExplorer.Parameters"));
nodeParams.ImageIndex = folderClosed;
nodeParams.SelectedImageIndex = folderOpen;
this.nodeModel.Nodes.Add(this.nodeParams);
this.nodeRoot.Nodes.Add(nodeModel);
this.nodeLayout = new SectionTreeNode("Layout");
this.nodeRoot.Nodes.Add(nodeLayout);
Nodes.Add (this.nodeRoot);
this.EndUpdate();
}
void InitImageList() {
ImageList imageList = new ImageList();
imageList.ColorDepth = ColorDepth.Depth32Bit;
imageList.ImageSize = new System.Drawing.Size(16, 16);
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.ClosedFolderBitmap"));
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.OpenFolderBitmap"));
imageList.Images.Add(new Bitmap(1, 1));
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.SelectionArrow"));
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.SharpReport.Ascending"));
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.SharpReport.Descending"));
//Table's or procedure
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.Table"));
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.Procedure"));
//Parameters
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.SharpQuery.Column"));
//Function
imageList.Images.Add(ResourceService.GetIcon("Icons.16x16.SharpReport.Function"));
this.ImageList = imageList;
}
#endregion
}
}

32
src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/FieldsExplorer.cs

@ -10,18 +10,13 @@ @@ -10,18 +10,13 @@
using System;
using System.IO;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Reflection;
using System.Windows.Forms;
using System.ComponentModel;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using SharpReport;
using SharpReportCore;
@ -118,6 +113,7 @@ namespace SharpReportAddin { @@ -118,6 +113,7 @@ namespace SharpReportAddin {
}
}
}
void TreeViewItemDrag (object sender,ItemDragEventArgs e) {
if (e.Item is ColumnsTreeNode) {
@ -182,6 +178,7 @@ namespace SharpReportAddin { @@ -182,6 +178,7 @@ namespace SharpReportAddin {
private void FillExplorer () {
System.Console.WriteLine("FillExplorer");
this.FillTree();
this.ExpandAll();
isFilled = true;
@ -221,6 +218,7 @@ namespace SharpReportAddin { @@ -221,6 +218,7 @@ namespace SharpReportAddin {
#endregion
private void NotifyReportView() {
System.Console.WriteLine("NotifyReportView");
if (this.isFilled) {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is SharpReportView) {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.IsDirty = true;
@ -229,8 +227,8 @@ namespace SharpReportAddin { @@ -229,8 +227,8 @@ namespace SharpReportAddin {
}
#region PadEvents
private void OnUpdateExplorerWindow (object sender,EventArgs e) {
private void old_OnUpdateExplorerWindow (object sender,EventArgs e) {
System.Console.WriteLine("FieldsExplorer:OnUpdateExplorerWindow");
if (WorkbenchSingleton.Workbench.ActiveContent != null) {
Type type = WorkbenchSingleton.Workbench.ActiveContent.GetType();
@ -242,10 +240,11 @@ namespace SharpReportAddin { @@ -242,10 +240,11 @@ namespace SharpReportAddin {
}
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.Saving -= OnViewSaving;
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.Saving += OnViewSaving;
System.Console.WriteLine("\tget Explorerpad");
PadDescriptor pad =
WorkbenchSingleton.Workbench.GetPad(typeof(FieldsExplorer));
if (pad != null) {
System.Console.WriteLine("\tget View");
SharpReportView view =
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ActiveViewContent
as SharpReportView;
@ -254,6 +253,7 @@ namespace SharpReportAddin { @@ -254,6 +253,7 @@ namespace SharpReportAddin {
this.reportModel = view.ReportManager.BaseDesignControl.ReportModel;
if (this.reportModel != null) {
this.FillExplorer();
System.Console.WriteLine("\tShow The Pad");
WorkbenchSingleton.Workbench.ShowPad(pad);
pad.BringPadToFront();
}
@ -272,6 +272,7 @@ namespace SharpReportAddin { @@ -272,6 +272,7 @@ namespace SharpReportAddin {
private void OnViewSaving (object sender, EventArgs e) {
System.Console.WriteLine("FiedlsExplorer:OnViewSaving");
if (this.isFilled) {
UpdateSorting();
UpdateGrouping();
@ -419,6 +420,7 @@ namespace SharpReportAddin { @@ -419,6 +420,7 @@ namespace SharpReportAddin {
}
private void FillTree () {
System.Console.WriteLine("FillTree");
this.BeginUpdate();
SetAvailableFields();
SetGroupFields();
@ -431,7 +433,7 @@ namespace SharpReportAddin { @@ -431,7 +433,7 @@ namespace SharpReportAddin {
void BuildNodes() {
System.Console.WriteLine("BuildNodes");
BeginUpdate();
this.Nodes.Clear();
TreeNode root = new TreeNode(ResourceService.GetString("SharpReport.FieldsExplorer.Title"));
@ -512,13 +514,13 @@ namespace SharpReportAddin { @@ -512,13 +514,13 @@ namespace SharpReportAddin {
}
}
public string Icon {
public string s_Icon {
get {
return "FileIcons.XmlIcon";
}
}
public string Category {
public string s_Category {
get {
return String.Empty;
}
@ -569,8 +571,10 @@ namespace SharpReportAddin { @@ -569,8 +571,10 @@ namespace SharpReportAddin {
public FieldsExplorer() {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += OnUpdateExplorerWindow;
// WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += OnUpdateExplorerWindow;
// WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.DirtyChanged += old_OnUpdateExplorerWindow;
System.Console.WriteLine("");
System.Console.WriteLine("Init FieldsExplorer");
LabelEdit = true;
AllowDrop = true;
HideSelection = false;

202
src/AddIns/Misc/SharpReport/SharpReportAddin/FieldsExplorer/ReportExplorer.cs

@ -0,0 +1,202 @@ @@ -0,0 +1,202 @@
/*
* Created by SharpDevelop.
* User: Forstmeier Helmut
* Date: 01.08.2006
* Time: 13:09
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Gui;
using SharpReportCore;
namespace SharpReportAddin
{
/// <summary>
/// Description of the pad content
/// </summary>
public class ReportExplorer : AbstractPadContent{
Panel contentPanel = new Panel();
ExplorerTree treeView = new ExplorerTree();
/// <summary>
/// Creates a new ReportExplorer object
/// </summary>
public ReportExplorer():base(){
this.contentPanel.Controls.Add(this.treeView);
this.treeView.ItemDrag += TreeViewItemDrag;
this.treeView.DragDrop += TreeViewDragDrop;
this.treeView.DragOver += TreeViewDragOver;
}
#region DragDrop
void TreeViewItemDrag (object sender,ItemDragEventArgs e) {
if (e.Item is ColumnsTreeNode) {
ColumnsTreeNode node = (ColumnsTreeNode)e.Item;
// for now, only dragging of Columns is allowed
if (node.ImageIndex == this.treeView.ColumnIcon) {
this.treeView.SelectedNode = node;
if (node != null) {
this.treeView.DoDragDrop(node.DragDropDataObject,
DragDropEffects.Copy | DragDropEffects.Scroll);
}
}
}
}
void TreeViewDragOver (object sender,DragEventArgs e) {
TreeNode node = this.treeView.GetNodeAt(this.treeView.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 = this.treeView.PointToClient (new Point( e.X,e.Y));
SectionTreeNode node = this.treeView.GetNodeAt (pt) as SectionTreeNode;
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 (!this.treeView.CheckForExist (node,dest)) {
dest.SortDirection = ListSortDirection.Ascending;
dest.ImageIndex = this.treeView.AscendingIcon;
dest.SelectedImageIndex = this.treeView.AscendingIcon;
this.treeView.SelectedNode = (TreeNode)dest;
this.treeView.CheckNode (dest);
node.Nodes.Add(dest);
NotifyReportView();
}
}
}
}
// private static 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;
// }
#endregion
#region publics for Commands
// These public methods are all called from ExplorerCommands
public void ClearAndRebuildTree() {
this.treeView.ClearAndFill();
}
public void ClearNodes () {
if (this.treeView.SelectedNode is SectionTreeNode) {
if (this.treeView.SelectedNode.Nodes.Count > 0) {
this.treeView.SelectedNode.Nodes.Clear();
NotifyReportView();
}
}
}
public void ToggleOrder () {
this.treeView.ToggleOrder();
this.NotifyReportView();
}
public void RemoveNode() {
if (this.treeView.SelectedNode != null) {
TreeNode parent = this.treeView.SelectedNode.Parent;
this.treeView.SelectedNode.Remove();
this.treeView.SelectedNode = parent;
NotifyReportView();
}
}
private void NotifyReportView() {
if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent is SharpReportView) {
WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.IsDirty = true;
}
}
#endregion
public void Update (ReportModel model){
this.treeView.CollectModel(model);
}
#region properties
public ReportModel ReportModel {
set {
this.treeView.FillTree(value);
}
}
#endregion
#region AbstractPadContent
/// <summary>
/// The <see cref="System.Windows.Forms.Control"/> representing the pad
/// </summary>
public override Control Control {
get {
return this.contentPanel;
}
}
/// <summary>
/// Refreshes the pad
/// </summary>
public override void RedrawContent(){
}
/// <summary>
/// Cleans up all used resources
/// </summary>
public override void Dispose(){
this.contentPanel.Dispose();
}
#endregion
}
}

24
src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportAddin.addin

@ -32,16 +32,18 @@ @@ -32,16 +32,18 @@
extensions="*.srd"/>
</Path>
<!-- FieldsExplorer -->
<Path name ="/SharpDevelop/Workbench/Pads">
<Pad id="fieldsexplorer"
<!-- ReportExplorer -->
<Path name = "/SharpDevelop/Workbench/Pads">
<Pad id="pad1"
category = "Tools"
icon="Icons.16x16.SharpQuery.Refresh"
title = "${res:SharpReport.FieldsExplorer.Title}"
title = "ReportExplorer"
shortcut = "Control|Alt|F"
class="SharpReportAddin.FieldsExplorer"/>
class="SharpReportAddin.ReportExplorer"/>
</Path>
<!-- ContectMenu Section -->
<!-- DesignerContectMenu Section -->
<Path name ="/SharpReport/ContextMenu/Section">
<MenuItem id="settings" label="${res:SharpReport.ContextMenu.Settings}" class="SharpReportAddin.Commands.ShowSettings"/>
<MenuItem id="preview" label="${res:SharpReport.ContextMenu.Preview}" class="SharpReportAddin.Commands.RunPreview"/>
@ -54,7 +56,7 @@ @@ -54,7 +56,7 @@
-->
</Path>
<!-- ContextMenu Items -->
<!-- DesignerContextMenu Items -->
<Path name ="/SharpReport/ContextMenu/Items">
<MenuItem id="cut" label="${res:SharpReport.ContextMenu.Cut}" class="SharpReportAddin.Commands.CutReportItem"/>
<!--
@ -62,7 +64,7 @@ @@ -62,7 +64,7 @@
-->
</Path>
<!-- Fields Explorer ContextMenu's -->
<!-- ReportExplorer ContextMenu's -->
<Path name ="/SharpReport/ContextMenu/ContextMenu/FieldsExplorer/SectionTreeNode">
<MenuItem id="removenodes"
label="${res:SharpReport.FieldsExplorer.ContextMenu.Section.Clear}"
@ -77,7 +79,9 @@ @@ -77,7 +79,9 @@
label="${res:SharpReport.FieldsExplorer.ContextMenu.Columns.ToggleSort}"
class="SharpReportAddin.Commands.ToogleOrder"/>
</Path>
<!-- Start SharpReport from MainMenu -->
<Path name = "/Workspace/Tools">
<MenuItem id = "ReportGeneratorPad"
label = "${res:SharpReport.ReportGenerator}"
@ -85,4 +89,6 @@ @@ -85,4 +89,6 @@
shortcut = "Control|Alt|T"
class = "SharpReportAddin.Commands.RunSharpReport"/>
</Path>
</AddIn>

2
src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportAddin.csproj

@ -59,6 +59,8 @@ @@ -59,6 +59,8 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Configuration\GlobalAssemblyInfo.cs</Link>
</Compile>
<Compile Include="FieldsExplorer\ReportExplorer.cs" />
<Compile Include="FieldsExplorer\ExplorerTree.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Commands" />

66
src/AddIns/Misc/SharpReport/SharpReportAddin/SharpReportView.cs

@ -19,9 +19,9 @@ using ICSharpCode.Core; @@ -19,9 +19,9 @@ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using SharpReport;
using SharpReport.Designer;
using SharpReportAddin.Commands;
using SharpReportCore;
namespace SharpReportAddin{
/// <summary>
/// Description of the view content
@ -56,12 +56,7 @@ namespace SharpReportAddin{ @@ -56,12 +56,7 @@ namespace SharpReportAddin{
PropertyPad.Grid.SelectedObject = designerControl.ReportModel.ReportSettings;
PropertyPad.Grid.Refresh();
}
//Activate the FieldsExplorer - Pad
PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(FieldsExplorer));
if (pad != null) {
pad.CreatePad();
}
} catch (Exception) {
throw;
}
@ -95,7 +90,7 @@ namespace SharpReportAddin{ @@ -95,7 +90,7 @@ namespace SharpReportAddin{
#region SideBar Handling
private static bool SharpReportIsRunning () {
// Did we already exist
foreach (IViewContent content in WorkbenchSingleton.Workbench.ViewContentCollection) {
SharpReportView view = content as SharpReportView;
if (view != null) {
@ -123,10 +118,8 @@ namespace SharpReportAddin{ @@ -123,10 +118,8 @@ namespace SharpReportAddin{
}
void RemoveSideBarItem() {
private void RemoveSideBarItem() {
if (!SharpReportView.SharpReportIsRunning()) {
if (sideTabItem != null) {
SharpDevelopSideBar sideBar = SharpReportView.GetSideBar();
@ -148,9 +141,26 @@ namespace SharpReportAddin{ @@ -148,9 +141,26 @@ namespace SharpReportAddin{
}
}
sb.Refresh();
}
}
void ShutDownView (object sender,ViewContentEventArgs e) {
if (e.Content is SharpReportView) {
WorkbenchSingleton.Workbench.ViewClosed -= new ViewContentEventHandler(ShutDownView);
}
//Allways hide the pad
PadDescriptor pad =
WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorer));
if (pad != null) {
WorkbenchSingleton.Workbench.WorkbenchLayout.HidePad(pad);
ClearAndRebuildExplorer cmd = new ClearAndRebuildExplorer();
cmd.Run();
}
}
#endregion
@ -349,12 +359,22 @@ namespace SharpReportAddin{ @@ -349,12 +359,22 @@ namespace SharpReportAddin{
//Something was dropped on the designer
private void OnItemDragDrop (object sender,ItemDragDropEventArgs e) {
base.IsDirty = true;
System.Console.WriteLine("View ItemDragDrop");
System.Console.WriteLine("\tcall OnPropertyChanged");
this.OnPropertyChanged (this,new System.ComponentModel.PropertyChangedEventArgs("Item Dragged"));
}
private void OnPropertyChanged (object sender,
System.ComponentModel.PropertyChangedEventArgs e) {
base.IsDirty = true;
OnObjectSelected (this,EventArgs.Empty);
System.Console.WriteLine("View:ProperytChanged");
PadDescriptor pad =
WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorer));
if (pad != null) {
System.Console.WriteLine("\tpad is loaded - call üad:RedrawContent");
pad.RedrawContent();
}
}
private void OnModelFileNameChanged (object sender,EventArgs e) {
@ -427,7 +447,6 @@ namespace SharpReportAddin{ @@ -427,7 +447,6 @@ namespace SharpReportAddin{
public void UpdateView(bool setViewDirty) {
this.tabControl.SelectedIndex = 0;
this.OnTabPageChanged(this,EventArgs.Empty);
// SetOnPropertyChangedEvents();
if (setViewDirty) {
this.OnPropertyChanged (this,new System.ComponentModel.PropertyChangedEventArgs("Fired from UpdateView"));
}
@ -494,6 +513,9 @@ namespace SharpReportAddin{ @@ -494,6 +513,9 @@ namespace SharpReportAddin{
/// <param name="fileName"></param>
public override void Save(string fileName) {
try {
ReportExplorer re = (SharpReportAddin.ReportExplorer)WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorer)).PadContent;
re.Update(designerControl.ReportModel);
designerControl.ReportModel.ReportSettings.FileName = fileName;
if (FileUtility.IsValidFileName(fileName)) {
@ -523,11 +545,17 @@ namespace SharpReportAddin{ @@ -523,11 +545,17 @@ namespace SharpReportAddin{
if (GlobalValues.IsValidPrinter()) {
InitView();
this.UpdateView(false);
if (!SharpReportView.SharpReportIsRunning()) {
WorkbenchSingleton.Workbench.ViewClosed += new ViewContentEventHandler(ShutDownView);
}
} else {
MessageService.ShowError(ResourceService.GetString("Sharpreport.Error.NoPrinter"));
}
}
/// <summary>
/// Loads a new file into View
/// </summary>
@ -543,9 +571,14 @@ namespace SharpReportAddin{ @@ -543,9 +571,14 @@ namespace SharpReportAddin{
PropertyPad.Grid.SelectedObject = designerControl.ReportModel.ReportSettings;
PropertyPad.Grid.Refresh();
}
this.designerControl.ReportModel.ReportSettings.AvailableFieldsCollection = reportManager.AvailableFieldsCollection;
// this.designerControl.RegisterEvents();
this.designerControl.ReportModel.ReportSettings.AvailableFieldsCollection = reportManager.AvailableFieldsCollection;
PadDescriptor pad = WorkbenchSingleton.Workbench.GetPad(typeof(ReportExplorer));
ReportExplorer re = (ReportExplorer)pad.PadContent;
pad.BringPadToFront();
re.ReportModel = this.designerControl.ReportModel;
} catch (Exception e) {
MessageService.ShowError(e,"SharpReportView:Load");
throw ;
@ -585,6 +618,7 @@ namespace SharpReportAddin{ @@ -585,6 +618,7 @@ namespace SharpReportAddin{
if (PropertyPad.Grid != null) {
PropertyPad.Grid.SelectedObject = null;
}
this.disposed = true;
RemoveSideBarItem();
this.Dispose(true);

1
src/AddIns/Misc/SharpReport/SharpReportCore/BaseItems/RowItem.cs

@ -35,6 +35,7 @@ namespace SharpReportCore{ @@ -35,6 +35,7 @@ namespace SharpReportCore{
public RowItem(string tableName){
this.tableName = tableName;
this.padding = new Padding(5);
// this.Items.Added += OnAdded;
}

Loading…
Cancel
Save