193 lines
5.3 KiB
C#
193 lines
5.3 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.ComponentModel.Design;
|
|
using System.Drawing;
|
|
using System.Drawing.Design;
|
|
using System.Windows.Forms;
|
|
using System.Windows.Forms.Design;
|
|
using DevComponents.DotNetBar.Charts;
|
|
|
|
namespace DevComponents.Charts.Design
|
|
{
|
|
public class ChartControlActionList : DesignerActionList,
|
|
ITypeDescriptorContext, IWindowsFormsEditorService, IServiceProvider
|
|
{
|
|
#region Private variables
|
|
|
|
private ChartControl _ChartControl;
|
|
private PropertyDescriptor _PropertyDescriptor;
|
|
private IComponentChangeService _ChangeService;
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// ChartControlActionList
|
|
/// </summary>
|
|
/// <param name="chartControl">Associated ChartControl</param>
|
|
public ChartControlActionList(ChartControl chartControl)
|
|
: base(chartControl)
|
|
{
|
|
_ChartControl = chartControl;
|
|
|
|
_ChangeService = Component.Site.GetService(typeof(IComponentChangeService)) as IComponentChangeService;
|
|
}
|
|
|
|
#region Public properties
|
|
|
|
/// <summary>
|
|
/// Gets or sets the GridPanel DataSource
|
|
/// </summary>
|
|
[AttributeProvider(typeof(IListSource))]
|
|
public object DataSource
|
|
{
|
|
get { return (_ChartControl.DataSource); }
|
|
set { SetValue("DataSource", value); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the GridPanel DataMember
|
|
/// </summary>
|
|
public string DataMember
|
|
{
|
|
get { return (_ChartControl.DataMember); }
|
|
set { SetValue("DataMember", value); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetSortedActionItems
|
|
|
|
public override DesignerActionItemCollection GetSortedActionItems()
|
|
{
|
|
DesignerActionItemCollection items = new DesignerActionItemCollection();
|
|
|
|
items.Add(new DesignerActionHeaderItem("Data"));
|
|
|
|
items.Add(new DesignerActionPropertyItem("DataSource",
|
|
"DataSource", "Data",
|
|
"Sets the default Chart DataSource."));
|
|
|
|
items.Add(new DesignerActionPropertyItem("DataMember",
|
|
"DataMember", "Data",
|
|
"Sets the default Chart DataMamber."));
|
|
return items;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region SetValue
|
|
|
|
private void SetValue(string property, object value)
|
|
{
|
|
_ChangeService.OnComponentChanging(_ChartControl, null);
|
|
|
|
GetPropertyByName(property).SetValue(_ChartControl, value);
|
|
|
|
_ChangeService.OnComponentChanged(_ChartControl, null, null, null);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetPropertyByName
|
|
|
|
/// <summary>
|
|
/// Gets the property via the given name
|
|
/// </summary>
|
|
/// <param name="propName">Property name</param>
|
|
/// <returns>PropertyDescriptor</returns>
|
|
private PropertyDescriptor GetPropertyByName(string propName)
|
|
{
|
|
PropertyDescriptor prop =
|
|
TypeDescriptor.GetProperties(_ChartControl)[propName];
|
|
|
|
if (prop == null)
|
|
throw new ArgumentException("Matching property not found.", propName);
|
|
|
|
return (prop);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region EditChartContainers
|
|
|
|
/// <summary>
|
|
/// EditChartContainers
|
|
/// </summary>
|
|
private void EditChartContainers()
|
|
{
|
|
_PropertyDescriptor = TypeDescriptor.GetProperties(_ChartControl.ChartPanel)["ChartContainers"];
|
|
|
|
UITypeEditor editor = (UITypeEditor)_PropertyDescriptor.GetEditor(typeof(UITypeEditor));
|
|
|
|
if (editor != null)
|
|
editor.EditValue(this, this, _ChartControl.ChartPanel.ChartContainers);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ITypeDescriptorContext Members
|
|
|
|
public IContainer Container
|
|
{
|
|
get { return (Component.Site.Container); }
|
|
}
|
|
|
|
public object Instance
|
|
{
|
|
get { return (Component); }
|
|
}
|
|
|
|
public void OnComponentChanged()
|
|
{
|
|
object value = _ChartControl.ChartPanel.ChartContainers;
|
|
|
|
_ChangeService.OnComponentChanged(Component, _PropertyDescriptor, value, value);
|
|
}
|
|
|
|
public bool OnComponentChanging()
|
|
{
|
|
_ChangeService.OnComponentChanging(Component, _PropertyDescriptor);
|
|
|
|
return true;
|
|
}
|
|
|
|
public PropertyDescriptor PropertyDescriptor
|
|
{
|
|
get { return (_PropertyDescriptor); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IWindowsFormsEditorService Members
|
|
|
|
public void CloseDropDown()
|
|
{
|
|
throw new Exception("The method or operation is not implemented.");
|
|
}
|
|
|
|
public void DropDownControl(Control control)
|
|
{
|
|
throw new Exception("The method or operation is not implemented.");
|
|
}
|
|
|
|
public DialogResult ShowDialog(Form dialog)
|
|
{
|
|
return (dialog.ShowDialog());
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region IServiceProvider
|
|
|
|
object IServiceProvider.GetService(Type serviceType)
|
|
{
|
|
if (serviceType.Equals(typeof(IWindowsFormsEditorService)))
|
|
return (this);
|
|
|
|
return GetService(serviceType);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|