Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
12/21/08 18:42:03 (15 years ago)
Author:
bspisic
Message:

#424
Did some code refactoring (created concrete MouseEventListeners)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Visualization/MouseEventListener.cs

    r863 r1045  
    11using System.Drawing;
     2using System.Windows.Forms;
    23
    34namespace HeuristicLab.Visualization {
    4   /// <summary>
    5   /// Helper class for different OnMouseMove and OnMouseUp implementations.
    6   /// </summary>
    7   public class MouseEventListener {
    8     /// <summary>
    9     /// Fired when the MouseMove method was called.
    10     /// </summary>
    11     public event MouseEventListenerHandler OnMouseMove;
     5  public interface IMouseEventListener {
     6    void MouseMove(object sender, MouseEventArgs e);
     7    void MouseUp(object sender, MouseEventArgs e);
    128
    13     /// <summary>
    14     /// Fired when the MouseUp method was called.
    15     /// </summary>
    16     public event MouseEventListenerHandler OnMouseUp;
     9    event MouseEventHandler OnMouseMove;
     10    event MouseEventHandler OnMouseUp;
     11  }
    1712
    18     private Point startPoint;
     13  public delegate void SetNewClippingAreaHandler(RectangleD newClippingArea);
    1914
    20     /// <summary>
    21     /// Call this method to fire the OnMouseMove event.
    22     /// </summary>
    23     /// <param name="actualPoint"></param>
    24     public void MouseMove(Point actualPoint) {
     15  public delegate void DrawRectangleHandler(Rectangle rectangle);
     16
     17  public class PanListener : IMouseEventListener {
     18    private readonly Rectangle viewPort;
     19    private readonly RectangleD clippingArea;
     20    private readonly Point startPoint;
     21
     22    public PanListener(Rectangle viewPort, RectangleD clippingArea, Point startPoint) {
     23      this.viewPort = viewPort;
     24      this.clippingArea = clippingArea;
     25      this.startPoint = startPoint;
     26    }
     27
     28    #region IMouseEventListener Members
     29
     30    public event SetNewClippingAreaHandler SetNewClippingArea;
     31    public event MouseEventHandler OnMouseMove;
     32    public event MouseEventHandler OnMouseUp;
     33
     34    public void MouseMove(object sender, MouseEventArgs e) {
     35      PointD worldStartPoint = Transform.ToWorld(startPoint, viewPort, clippingArea);
     36      PointD worldActualPoint = Transform.ToWorld(e.Location, viewPort, clippingArea);
     37
     38      double xDiff = worldActualPoint.X - worldStartPoint.X;
     39      double yDiff = worldActualPoint.Y - worldStartPoint.Y;
     40
     41      RectangleD newClippingArea = new RectangleD();
     42      newClippingArea.X1 = clippingArea.X1 - xDiff;
     43      newClippingArea.X2 = clippingArea.X2 - xDiff;
     44      newClippingArea.Y1 = clippingArea.Y1 - yDiff;
     45      newClippingArea.Y2 = clippingArea.Y2 - yDiff;
     46
     47      if (SetNewClippingArea != null) {
     48        SetNewClippingArea(newClippingArea);
     49      }
     50
    2551      if (OnMouseMove != null) {
    26         OnMouseMove(startPoint, actualPoint);
     52        OnMouseMove(sender, e);
    2753      }
    2854    }
    2955
    30     /// <summary>
    31     /// Call this method to fire the OnMouseUp event.
    32     /// </summary>
    33     /// <param name="actualPoint">Actual point of the mouse</param>
    34     public void MouseUp(Point actualPoint) {
     56    public void MouseUp(object sender, MouseEventArgs e) {
    3557      if (OnMouseUp != null) {
    36         OnMouseUp(startPoint, actualPoint);
     58        OnMouseUp(sender, e);
    3759      }
    3860    }
    3961
    40     /// <summary>
    41     /// Gets or sets the starting point of the mouse.
    42     /// </summary>
    43     public Point StartPoint {
    44       get { return startPoint; }
    45       set { startPoint = value; }
    46     }
     62    #endregion
    4763  }
    4864
    49   /// <summary>
    50   /// Handler for the MouseEventListener events.
    51   /// </summary>
    52   /// <param name="startPoint">Starting point of the mouse.</param>
    53   /// <param name="actualPoint">Actual point of the mouse.</param>
    54   public delegate void MouseEventListenerHandler(Point startPoint, Point actualPoint);
     65  public class ZoomListener : IMouseEventListener {
     66    private readonly Point startPoint;
     67
     68    public event DrawRectangleHandler DrawRectangle;
     69
     70    public ZoomListener(Point startPoint) {
     71      this.startPoint = startPoint;
     72    }
     73
     74    #region IMouseEventListener Members
     75
     76    public event MouseEventHandler OnMouseMove;
     77    public event MouseEventHandler OnMouseUp;
     78
     79    public void MouseMove(object sender, MouseEventArgs e) {
     80      Rectangle r = new Rectangle();
     81      Point actualPoint = e.Location;
     82
     83      if (startPoint.X < actualPoint.X) {
     84        r.X = startPoint.X;
     85        r.Width = actualPoint.X - startPoint.X;
     86      } else {
     87        r.X = actualPoint.X;
     88        r.Width = startPoint.X - actualPoint.X;
     89      }
     90
     91      if (startPoint.Y < actualPoint.Y) {
     92        r.Y = startPoint.Y;
     93        r.Height = actualPoint.Y - startPoint.Y;
     94      } else {
     95        r.Y = actualPoint.Y;
     96        r.Height = startPoint.Y - actualPoint.Y;
     97      }
     98
     99      if(DrawRectangle != null) {
     100        DrawRectangle(r);
     101      }
     102
     103      if (OnMouseMove != null) {
     104        OnMouseMove(sender, e);
     105      }
     106    }
     107
     108    public void MouseUp(object sender, MouseEventArgs e) {
     109      if (OnMouseUp != null) {
     110        OnMouseUp(sender, e);
     111      }
     112    }
     113
     114    #endregion
     115  }
    55116}
Note: See TracChangeset for help on using the changeset viewer.