Free cookie consent management tool by TermsFeed Policy Generator

source: branches/Trunk/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/Tools/ConnectorMoverTool.cs @ 6832

Last change on this file since 6832 was 4068, checked in by swagner, 14 years ago

Sorted usings and removed unused usings in entire solution (#1094)

File size: 3.4 KB
Line 
1using System;
2using System.Drawing;
3using System.Windows.Forms;
4
5namespace Netron.Diagramming.Core {
6  /// <summary>
7  /// This tool implement the action of moving shape connectors on the canvas.     
8  /// </summary>
9  class ConnectorMoverTool : AbstractTool, IMouseListener {
10
11    #region Fields
12    /// <summary>
13    /// the location of the mouse when the motion starts
14    /// </summary>
15    private Point initialPoint;
16    /// <summary>
17    /// the intermediate location of the mouse during the motion
18    /// </summary>
19    private Point lastPoint;
20    /// <summary>
21    /// the connector being moved
22    /// </summary>
23    private IConnector fetchedConnector;
24    /// <summary>
25    /// whether we are currently moving something
26    /// </summary>
27    private bool motionStarted;
28
29    #endregion
30
31    #region Constructor
32    /// <summary>
33    /// Initializes a new instance of the <see cref="T:ConnectorMoverTool"/> class.
34    /// </summary>
35    /// <param name="name">The name of the tool.</param>
36    public ConnectorMoverTool(string name)
37      : base(name) {
38    }
39    #endregion
40
41    #region Methods
42
43    /// <summary>
44    /// Called when the tool is activated.
45    /// </summary>
46    protected override void OnActivateTool() {
47      Controller.View.CurrentCursor = CursorPalette.Select;
48      motionStarted = false;
49      fetchedConnector = null;
50    }
51
52    /// <summary>
53    /// Handles the mouse down event
54    /// </summary>
55    /// <param name="e">The <see cref="T:System.Windows.Forms.MouseEventArgs"/> instance containing the event data.</param>
56    public bool MouseDown(MouseEventArgs e) {
57      if (e == null)
58        throw new ArgumentNullException("The argument object is 'null'");
59      if (e.Button == MouseButtons.Left && Enabled && !IsSuspended) {
60        fetchedConnector = this.Controller.Model.Selection.FindShapeConnector(e.Location);
61        if (fetchedConnector != null) {
62
63          initialPoint = e.Location;
64          lastPoint = initialPoint;
65          motionStarted = true;
66          return true;
67        }
68      }
69      return false;
70    }
71
72    /// <summary>
73    /// Handles the mouse move event
74    /// </summary>
75    /// <param name="e">The <see cref="T:System.Windows.Forms.MouseEventArgs"/> instance containing the event data.</param>
76    public void MouseMove(MouseEventArgs e) {
77      if (e == null)
78        throw new ArgumentNullException("The argument object is 'null'");
79      Point point = e.Location;
80      if (IsActive && motionStarted) {
81
82        fetchedConnector.MoveBy(new Point(point.X - lastPoint.X, point.Y - lastPoint.Y));
83
84        lastPoint = point;
85      }
86    }
87    /// <summary>
88    /// Handles the mouse up event
89    /// </summary>
90    /// <param name="e">The <see cref="T:System.Windows.Forms.MouseEventArgs"/> instance containing the event data.</param>
91    public void MouseUp(MouseEventArgs e) {
92      if (IsActive) {
93        DeactivateTool();
94        if (fetchedConnector == null)
95          return;
96        Bundle bundle = new Bundle(Controller.Model);
97        bundle.Entities.Add(fetchedConnector);
98        MoveCommand cmd = new MoveCommand(this.Controller, bundle, new Point(lastPoint.X - initialPoint.X, lastPoint.Y - initialPoint.Y));
99        Controller.UndoManager.AddUndoCommand(cmd);
100        //not necessary to perform the Redo action of the command since the mouse-move already moved the bundle!
101      }
102    }
103    #endregion
104  }
105
106}
Note: See TracBrowser for help on using the repository browser.