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