update author list in license for (JAL-826)
[jalview.git] / src / jalview / gui / IdwidthAdjuster.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
3  * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * 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  * Jalview is distributed in the hope that it will be useful, but 
12  * WITHOUT ANY WARRANTY; without even the implied warranty 
13  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14  * PURPOSE.  See the GNU General Public License for more details.
15  * 
16  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 package jalview.gui;
19
20 import java.awt.*;
21 import java.awt.event.*;
22 import javax.swing.*;
23
24 /**
25  * DOCUMENT ME!
26  * 
27  * @author $author$
28  * @version $Revision$
29  */
30 public class IdwidthAdjuster extends JPanel implements MouseListener,
31         MouseMotionListener
32 {
33   boolean active = false;
34
35   int oldX = 0;
36
37   Image image;
38
39   AlignmentPanel ap;
40
41   /**
42    * Creates a new IdwidthAdjuster object.
43    * 
44    * @param ap
45    *          DOCUMENT ME!
46    */
47   public IdwidthAdjuster(AlignmentPanel ap)
48   {
49     this.ap = ap;
50
51     java.net.URL url = getClass().getResource("/images/idwidth.gif");
52
53     if (url != null)
54     {
55       image = java.awt.Toolkit.getDefaultToolkit().createImage(url);
56     }
57
58     addMouseListener(this);
59     addMouseMotionListener(this);
60   }
61
62   /**
63    * DOCUMENT ME!
64    * 
65    * @param evt
66    *          DOCUMENT ME!
67    */
68   public void mousePressed(MouseEvent evt)
69   {
70     oldX = evt.getX();
71   }
72
73   /**
74    * DOCUMENT ME!
75    * 
76    * @param evt
77    *          DOCUMENT ME!
78    */
79   public void mouseReleased(MouseEvent evt)
80   {
81     active = false;
82     repaint();
83   }
84
85   /**
86    * DOCUMENT ME!
87    * 
88    * @param evt
89    *          DOCUMENT ME!
90    */
91   public void mouseEntered(MouseEvent evt)
92   {
93     active = true;
94     repaint();
95   }
96
97   /**
98    * DOCUMENT ME!
99    * 
100    * @param evt
101    *          DOCUMENT ME!
102    */
103   public void mouseExited(MouseEvent evt)
104   {
105     active = false;
106     repaint();
107   }
108
109   /**
110    * DOCUMENT ME!
111    * 
112    * @param evt
113    *          DOCUMENT ME!
114    */
115   public void mouseDragged(MouseEvent evt)
116   {
117     active = true;
118
119     Dimension d = ap.idPanel.idCanvas.getPreferredSize();
120     int dif = evt.getX() - oldX;
121
122     if (((d.width + dif) > 20) || (dif > 0))
123     {
124       ap.idPanel.idCanvas.setPreferredSize(new Dimension(d.width + dif,
125               d.height));
126       ap.paintAlignment(true);
127     }
128
129     oldX = evt.getX();
130   }
131
132   /**
133    * DOCUMENT ME!
134    * 
135    * @param evt
136    *          DOCUMENT ME!
137    */
138   public void mouseMoved(MouseEvent evt)
139   {
140   }
141
142   /**
143    * DOCUMENT ME!
144    * 
145    * @param evt
146    *          DOCUMENT ME!
147    */
148   public void mouseClicked(MouseEvent evt)
149   {
150   }
151
152   /**
153    * DOCUMENT ME!
154    * 
155    * @param g
156    *          DOCUMENT ME!
157    */
158   public void paintComponent(Graphics g)
159   {
160     g.setColor(Color.white);
161     g.fillRect(0, 0, getWidth(), getHeight());
162
163     if (active)
164     {
165       if (image != null)
166       {
167         g.drawImage(image, getWidth() - 20, 2, this);
168       }
169     }
170   }
171 }