/// <summary>User has clicked the legend.</summary> /// <param name="sender">Sender of event</param> /// <param name="e">Event arguments</param> private void OnLegendClick(object sender, LegendClickArgs e) { LegendPresenter presenter = new LegendPresenter(this); currentPresenter = presenter; LegendView view = new LegendView(); graphView.ShowEditorPanel(view); presenter.Attach(graph, view, explorerPresenter); }
/// <summary>User has clicked the legend.</summary> /// <param name="sender">Sender of event</param> /// <param name="e">Event arguments</param> private void OnLegendClick(object sender, LegendClickArgs e) { if (currentPresenter != null) { currentPresenter.Detach(); } LegendPresenter presenter = new LegendPresenter(this); currentPresenter = presenter; LegendView view = new LegendView(graphView as GraphView); graphView.ShowEditorPanel(view.MainWidget, "Legend options"); presenter.Attach(graph, view, explorerPresenter); }
/// <summary> /// User has double clicked somewhere on a graph. /// </summary> /// <param name="sender">Event sender</param> /// <param name="e">Event arguments</param> private void OnMouseDoubleClick(object sender, MouseEventArgs e) { Rectangle plotArea = this.plot1.Model.PlotArea.ToRect(false); if (plotArea.Contains(e.Location)) { if (this.plot1.Model.LegendArea.ToRect(true).Contains(e.Location)) { int margin = Convert.ToInt32(this.plot1.Model.LegendMargin); int y = Convert.ToInt32(e.Location.Y - this.plot1.Model.LegendArea.Top); int itemHeight = Convert.ToInt32(this.plot1.Model.LegendArea.Height) / this.plot1.Model.Series.Count; int seriesIndex = y / itemHeight; if (this.OnLegendClick != null) { LegendClickArgs args = new LegendClickArgs(); args.seriesIndex = seriesIndex; args.controlKeyPressed = ModifierKeys == Keys.Control; this.OnLegendClick.Invoke(sender, args ); } } else { if (this.OnPlotClick != null) { this.OnPlotClick.Invoke(sender, e); } } } else { Rectangle leftAxisArea = new Rectangle(0, plotArea.Y, plotArea.X, plotArea.Height); Rectangle titleArea = new Rectangle(plotArea.X, 0, plotArea.Width, plotArea.Y); Rectangle topAxisArea = new Rectangle(plotArea.X, 0, plotArea.Width, 0); if (this.GetAxis(Models.Graph.Axis.AxisType.Top) != null) { titleArea = new Rectangle(plotArea.X, 0, plotArea.Width, plotArea.Y / 2); topAxisArea = new Rectangle(plotArea.X, plotArea.Y / 2, plotArea.Width, plotArea.Y / 2); } Rectangle rightAxisArea = new Rectangle(plotArea.Right, plotArea.Top, this.Width - plotArea.Right, plotArea.Height); Rectangle bottomAxisArea = new Rectangle(plotArea.Left, plotArea.Bottom, plotArea.Width, this.Height - plotArea.Bottom); if (titleArea.Contains(e.Location)) { if (this.OnTitleClick != null) { this.OnTitleClick(sender, e); } } if (this.OnAxisClick != null) { if (leftAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Left); } else if (topAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Top); } else if (rightAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Right); } else if (bottomAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Bottom); } } } }
/// <summary> /// User has double clicked somewhere on a graph. /// </summary> /// <param name="sender">Event sender</param> /// <param name="e">Event arguments</param> private void OnMouseDoubleClick(object sender, OxyMouseDownEventArgs e) { Point Location = new Point((int)e.Position.X, (int)e.Position.Y); Cairo.Rectangle plotRect = this.plot1.Model.PlotArea.ToRect(false); Rectangle plotArea = new Rectangle((int)plotRect.X, (int)plotRect.Y, (int)plotRect.Width, (int)plotRect.Height); if (plotArea.Contains(Location)) { Cairo.Rectangle legendRect = this.plot1.Model.LegendArea.ToRect(true); Rectangle legendArea = new Rectangle((int)legendRect.X, (int)legendRect.Y, (int)legendRect.Width, (int)legendRect.Height); if (legendArea.Contains(Location)) { int y = Convert.ToInt32(Location.Y - this.plot1.Model.LegendArea.Top); int itemHeight = Convert.ToInt32(this.plot1.Model.LegendArea.Height) / this.plot1.Model.Series.Count; int seriesIndex = y / itemHeight; if (this.OnLegendClick != null) { LegendClickArgs args = new LegendClickArgs(); args.seriesIndex = seriesIndex; args.controlKeyPressed = e.IsControlDown; this.OnLegendClick.Invoke(sender, args); } } else { if (this.OnPlotClick != null) { this.OnPlotClick.Invoke(sender, e); } } } else { Rectangle leftAxisArea = new Rectangle(0, plotArea.Y, plotArea.X, plotArea.Height); Rectangle titleArea = new Rectangle(plotArea.X, 0, plotArea.Width, plotArea.Y); Rectangle topAxisArea = new Rectangle(plotArea.X, 0, plotArea.Width, 0); if (this.GetAxis(Models.Graph.Axis.AxisType.Top) != null) { titleArea = new Rectangle(plotArea.X, 0, plotArea.Width, plotArea.Y / 2); topAxisArea = new Rectangle(plotArea.X, plotArea.Y / 2, plotArea.Width, plotArea.Y / 2); } Rectangle rightAxisArea = new Rectangle(plotArea.Right, plotArea.Top, MainWidget.Allocation.Width - plotArea.Right, plotArea.Height); Rectangle bottomAxisArea = new Rectangle(plotArea.Left, plotArea.Bottom, plotArea.Width, MainWidget.Allocation.Height - plotArea.Bottom); if (titleArea.Contains(Location)) { if (this.OnTitleClick != null) { this.OnTitleClick(sender, e); } } if (this.OnAxisClick != null) { if (leftAxisArea.Contains(Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Left); } else if (topAxisArea.Contains(Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Top); } else if (rightAxisArea.Contains(Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Right); } else if (bottomAxisArea.Contains(Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Bottom); } } } }
/// <summary> /// User has double clicked somewhere on a graph. /// </summary> /// <param name="sender">Event sender</param> /// <param name="e">Event arguments</param> private void OnMouseDoubleClick(object sender, MouseEventArgs e) { Rectangle plotArea = this.plot1.Model.PlotArea.ToRect(false); if (plotArea.Contains(e.Location)) { if (this.plot1.Model.LegendArea.ToRect(true).Contains(e.Location)) { int margin = Convert.ToInt32(this.plot1.Model.LegendMargin); int y = Convert.ToInt32(e.Location.Y - this.plot1.Model.LegendArea.Top); int itemHeight = Convert.ToInt32(this.plot1.Model.LegendArea.Height) / this.plot1.Model.Series.Count; int seriesIndex = y / itemHeight; if (this.OnLegendClick != null) { LegendClickArgs args = new LegendClickArgs(); args.seriesIndex = seriesIndex; args.controlKeyPressed = ModifierKeys == Keys.Control; this.OnLegendClick.Invoke(sender, args); } } else { if (this.OnPlotClick != null) { this.OnPlotClick.Invoke(sender, e); } } } else { Rectangle leftAxisArea = new Rectangle(0, plotArea.Y, plotArea.X, plotArea.Height); Rectangle titleArea = new Rectangle(plotArea.X, 0, plotArea.Width, plotArea.Y); Rectangle topAxisArea = new Rectangle(plotArea.X, 0, plotArea.Width, 0); if (this.GetAxis(Models.Graph.Axis.AxisType.Top) != null) { titleArea = new Rectangle(plotArea.X, 0, plotArea.Width, plotArea.Y / 2); topAxisArea = new Rectangle(plotArea.X, plotArea.Y / 2, plotArea.Width, plotArea.Y / 2); } Rectangle rightAxisArea = new Rectangle(plotArea.Right, plotArea.Top, this.Width - plotArea.Right, plotArea.Height); Rectangle bottomAxisArea = new Rectangle(plotArea.Left, plotArea.Bottom, plotArea.Width, this.Height - plotArea.Bottom); if (titleArea.Contains(e.Location)) { if (this.OnTitleClick != null) { this.OnTitleClick(sender, e); } } if (this.OnAxisClick != null) { if (leftAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Left); } else if (topAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Top); } else if (rightAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Right); } else if (bottomAxisArea.Contains(e.Location)) { this.OnAxisClick.Invoke(Models.Graph.Axis.AxisType.Bottom); } } } }