using System; using Core.Common.Controls.TreeView; using Core.Components.Charting.Data; using Core.Plugins.OxyPlot.Properties; namespace Core.Plugins.OxyPlot.Legend { /// /// This class describes the presentation of in a . /// public class ChartDataNodePresenter : TreeViewNodePresenterBase { public override DragOperations CanDrag(ChartData nodeData) { return DragOperations.Move; } public override void UpdateNode(TreeNode parentNode, TreeNode node, ChartData nodeData) { if (nodeData is AreaData) { node.Text = Resources.ChartDataNodePresenter_Area_data_label; node.Image = Resources.AreaIcon; node.Checked = ((AreaData)nodeData).IsVisible; } else if (nodeData is LineData) { node.Text = Resources.ChartDataNodePresenter_Line_data_label; node.Image = Resources.LineIcon; node.Checked = ((LineData)nodeData).IsVisible; } else if (nodeData is PointData) { node.Text = Resources.ChartDataNodePresenter_Point_data_label; node.Image = Resources.PointsIcon; node.Checked = ((PointData)nodeData).IsVisible; } else { throw new NotSupportedException("Cannot add chart data of type other than points, lines or area."); } node.ShowCheckBox = true; } public override void OnNodeChecked(TreeNode node) { var chartData = (ChartData)node.Parent.Tag; var lineData = node.Tag as LineData; var pointData = node.Tag as PointData; var areaData = node.Tag as AreaData; if (lineData != null) { lineData.IsVisible = node.Checked; } if (pointData != null) { pointData.IsVisible = node.Checked; } if (areaData != null) { areaData.IsVisible = node.Checked; } chartData.NotifyObservers(); } } }