JAL-3032 adds Java 8 functionality (2/2)
[jalview.git] / src2 / fr / orsay / lri / varna / controlers / ControleurDraggedMolette.java
1 /*
2  VARNA is a tool for the automated drawing, visualization and annotation of the secondary structure of RNA, designed as a companion software for web servers and databases.
3  Copyright (C) 2008  Kevin Darty, Alain Denise and Yann Ponty.
4  electronic mail : Yann.Ponty@lri.fr
5  paper mail : LRI, bat 490 Université Paris-Sud 91405 Orsay Cedex France
6
7  This file is part of VARNA version 3.1.
8  VARNA version 3.1 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
9  as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
10
11  VARNA version 3.1 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13  See the GNU General Public License for more details.
14
15  You should have received a copy of the GNU General Public License along with VARNA version 3.1.
16  If not, see http://www.gnu.org/licenses.
17  */
18 package fr.orsay.lri.varna.controlers;
19
20 import java.awt.Point;
21 import java.awt.event.MouseEvent;
22 import java.awt.event.MouseListener;
23 import java.awt.event.MouseMotionListener;
24
25 import fr.orsay.lri.varna.VARNAPanel;
26
27
28 /**
29  * Controller of the mouse for scroll wheel click and dragged events
30  * 
31  * @author darty
32  * 
33  */
34 public class ControleurDraggedMolette implements MouseListener,
35                 MouseMotionListener {
36         private VARNAPanel _vp;
37         /**
38          * <code>true</code> if the right button is pressed<br>
39          * <code>false</code> if not
40          */
41         private static Boolean _rightButtonClick;
42         /**
43          * The vector which contains the direction of the mouse movement
44          */
45         private static Point _direction;
46         /**
47          * The position of the cursor before the mouse drag
48          */
49         private static Point _avant;
50         /**
51          * The position of the cursor after the mouse drag
52          */
53         private static Point _apres;
54
55         public ControleurDraggedMolette(VARNAPanel vp) {
56                 _vp = vp;
57                 _rightButtonClick = false;
58                 _avant = _apres = _direction = new Point();
59         }
60
61         public void mouseDragged(MouseEvent e) {
62                 // si le bon boutton a été pressé
63                 if (_rightButtonClick) {
64                         _apres = e.getPoint();
65                         _direction = new Point(_apres.x - _avant.x, _apres.y - _avant.y);
66                         _vp.setTranslation(new Point(_vp.getTranslation().x + _direction.x,
67                                         _vp.getTranslation().y + _direction.y));
68                         _avant = _apres;
69                         _vp.checkTranslation();
70                         _vp.repaint();
71                 }
72         }
73
74         public void mouseMoved(MouseEvent e) {
75         }
76
77         public void mouseClicked(MouseEvent e) {
78         }
79
80         public void mouseEntered(MouseEvent e) {
81         }
82
83         public void mouseExited(MouseEvent e) {
84         }
85
86         public void mousePressed(MouseEvent e) {
87                 // lors du clic, la position du curseur est enregistrée
88                 _avant = e.getPoint();
89                 // si le boutton molette est pressé ou si le boutton gauche et shift
90                 // sont pressés
91                 if (e.getButton() == MouseEvent.BUTTON2)
92                 {
93                         _rightButtonClick = true;
94                 }
95                 else
96                 {
97                         _rightButtonClick = false;
98                 }
99                         
100                         
101         }
102
103         public void mouseReleased(MouseEvent e) {
104                 // si le boutton molette est relaché ou si le boutton gauche et shift
105                 // sont relachés
106                 if (e.getButton() == MouseEvent.BUTTON2)
107                         _rightButtonClick = false;
108         }
109 }