Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Visualization/HeuristicLab.Visualization/3.3/ChartMode.cs @ 13717

Last change on this file since 13717 was 13717, checked in by bburlacu, 8 years ago

#1265: Updated license year to 2016.

File size: 3.5 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Drawing;
24using System.Windows.Forms;
25
26namespace HeuristicLab.Visualization {
27  public abstract class ChartMode {
28    protected readonly ChartControl chartControl;
29    protected Cursor cursor;
30    protected Point buttonDownPoint;
31    protected Point previousLocation;
32    protected int mouseClickCount;
33
34    public abstract Image Image { get; }
35    public abstract string Text { get; }
36
37    public virtual string ToolTipText { get { return Text; } }
38
39    public virtual Cursor Cursor {
40      get { return cursor ?? (cursor = Cursors.Default); }
41    }
42
43    private bool selected;
44    public bool Selected {
45      get { return selected; }
46      set {
47        if (selected == value) return;
48        selected = value;
49        if (selected) {
50          chartControl.Mode = this;
51          OnSelected();
52        } else {
53          if (chartControl.Mode == this)
54            chartControl.Mode = null;
55          OnDeselected();
56        }
57        OnSelectedChanged();
58      }
59    }
60
61    protected ChartMode(ChartControl control) {
62      chartControl = control;
63      chartControl.ModeChanged += (sender, args) => Selected = chartControl.Mode == this;
64    }
65
66    public void Select() { Selected = true; }
67    public void Deselect() { Selected = false; }
68
69    protected virtual void OnSelected() { }
70    protected virtual void OnDeselected() { }
71
72    public virtual void HandleOnKeyDown(object sender, KeyEventArgs e) {
73      switch (e.KeyCode) {
74        case Keys.Escape:
75          Deselect();
76          break;
77      }
78    }
79
80    public virtual void HandleOnKeyUp(object sender, KeyEventArgs e) { }
81    public virtual void HandleOnMouseClick(object sender, MouseEventArgs e) { }
82    public virtual void HandleOnMouseDoubleClick(object sender, MouseEventArgs e) { }
83
84    public virtual void HandleOnMouseDown(object sender, MouseEventArgs e) {
85      buttonDownPoint = e.Location;
86      mouseClickCount = e.Clicks;
87    }
88
89    public virtual void HandleOnMouseUp(object sender, MouseEventArgs e) { }
90
91    public virtual void HandleOnMouseMove(object sender, MouseEventArgs e) {
92      previousLocation = e.Location;
93    }
94
95    public virtual void HandleOnMouseWheel(object sender, MouseEventArgs e) { }
96    public virtual void HandleOnMouseEnter(object sender, EventArgs e) { }
97    public virtual void HandleOnMouseLeave(object sender, EventArgs e) { }
98    public virtual void HandleOnClick(object sender, EventArgs e) { }
99
100    public event EventHandler SelectedChanged;
101    protected virtual void OnSelectedChanged() {
102      var handler = SelectedChanged;
103      if (handler != null) handler(this, EventArgs.Empty);
104    }
105  }
106}
Note: See TracBrowser for help on using the repository browser.