using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using Chart.Forms;
using Chart.Drawing.Interfaces;
using Chart.Drawing.Series;
namespace Chart.Panels
{
/// <summary>
/// Panel with chart
/// </summary>
public class PanelChart : Panel
{
private System.ComponentModel.IContainer components;
private ContextMenuStrip contextMenuStripChart;
private ToolStripMenuItem copyToolStripMenuItem;
private ToolStripMenuItem copySeriesToolStripMenuItem;
private ToolStripMenuItem pasteToolStripMenuItem;
private ToolStripMenuItem formatToolStripMenuItem;
/// <summary>
/// Performer for chart drawing
/// </summary>
protected ChartPerformer performer;
private ISeriesSetter setter;
private ISeriesGetter getter;
/// <summary>
/// Constructor
/// </summary>
/// <param name="insets">Insets</param>
public PanelChart(int[,] insets)
{
InitializeComponent();
performer = new ChartPerformer(this, insets, true);
Paint += new PaintEventHandler(onPaint);
Resize += new EventHandler(onResize);
BackColor = Color.White;
copyToolStripMenuItem.Click += copyToolStripMenuItem_Click;
copySeriesToolStripMenuItem.Click += copySeriesToolStripMenuItem_Click;
pasteToolStripMenuItem.Click += pasteToolStripMenuItem_Click;
formatToolStripMenuItem.Click += formatToolStripMenuItem_Click;
}
/// <summary>
/// Default constructor
/// </summary>
protected PanelChart()
{
}
/// <summary>
/// Performer of chart drawing
/// </summary>
public ChartPerformer Performer
{
get
{
return performer;
}
}
/// <summary>
/// Sets object
/// </summary>
/// <param name="o">The object</param>
public void SetObject(object o)
{
if (o is ISeriesSetter)
{
setter = o as ISeriesSetter;
pasteToolStripMenuItem.Visible = true;
}
if (o is ISeriesGetter)
{
getter = o as ISeriesGetter;
copySeriesToolStripMenuItem.Visible = true;
}
}
/// <summary>
/// On paint event handler
/// </summary>
/// <param name="sender">Sender</param>
/// <param name="e">Event arguments</param>
protected void onPaint(object sender, PaintEventArgs e)
{
if (performer.IsBlocked)
{
return;
}
performer.Paint(e.Graphics);
}
/// <summary>
/// On resize event handler
/// </summary>
/// <param name="sender">Sender</param>
/// <param name="e">Event arguments</param>
protected void onResize(object sender, EventArgs e)
{
if (performer.IsBlocked)
{
return;
}
performer.Resize();
performer.RefreshAll();
}
private void copy(object sender, EventArgs e)
{
copy();
}
private void copy()
{
Image im = performer.Image;
if (im != null)
{
Clipboard.SetImage(im);
}
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.contextMenuStripChart = new System.Windows.Forms.ContextMenuStrip(this.components);
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.copySeriesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pasteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.formatToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStripChart.SuspendLayout();
this.SuspendLayout();
//
// contextMenuStripChart
//
this.contextMenuStripChart.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.copyToolStripMenuItem,
this.copySeriesToolStripMenuItem,
this.pasteToolStripMenuItem,
this.formatToolStripMenuItem});
this.contextMenuStripChart.Name = "contextMenuStripChart";
this.contextMenuStripChart.Size = new System.Drawing.Size(153, 114);
//
// copyToolStripMenuItem
//
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
this.copyToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.copyToolStripMenuItem.Text = "Copy image";
//
// copySeriesToolStripMenuItem
//
this.copySeriesToolStripMenuItem.Name = "copySeriesToolStripMenuItem";
this.copySeriesToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.copySeriesToolStripMenuItem.Text = "Copy series";
this.copySeriesToolStripMenuItem.Visible = false;
//
// pasteToolStripMenuItem
//
this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.pasteToolStripMenuItem.Text = "Paste";
this.pasteToolStripMenuItem.Visible = false;
//
// formatToolStripMenuItem
//
this.formatToolStripMenuItem.Name = "formatToolStripMenuItem";
this.formatToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.formatToolStripMenuItem.Text = "Format";
//
// PanelChart
//
this.ContextMenuStrip = this.contextMenuStripChart;
this.contextMenuStripChart.ResumeLayout(false);
this.ResumeLayout(false);
}
private void copyToolStripMenuItem_Click(object sender, EventArgs e)
{
Image im = performer.Image;
if (im != null)
{
Clipboard.SetImage(im);
}
}
private void formatToolStripMenuItem_Click(object sender, EventArgs e)
{
FormTextStyleEditor f = new FormTextStyleEditor();
f.Performer = performer;
f.ShowDialog();
}
private void copySeriesToolStripMenuItem_Click(object sender, EventArgs e)
{
ISeries s = getter.Series;
if (s == null)
{
return;
}
PureSeries ps = new PureSeries();
ps.Copy(s);
Clipboard.SetDataObject(ps);
}
private void pasteToolStripMenuItem_Click(object sender, EventArgs e)
{
setter.LoadFromClipboard();
}
}
}