47df3ae7bef8725c3745e056c1f424ddabffc263
[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
32     extends JPanel implements MouseListener,
33     MouseMotionListener
34 {
35   boolean active = false;
36   int oldX = 0;
37   Image image;
38   AlignmentPanel ap;
39
40   /**
41    * Creates a new IdwidthAdjuster object.
42    *
43    * @param ap DOCUMENT ME!
44    */
45   public IdwidthAdjuster(AlignmentPanel ap)
46   {
47     this.ap = ap;
48
49     java.net.URL url = getClass().getResource("/images/idwidth.gif");
50
51     if (url != null)
52     {
53       image = java.awt.Toolkit.getDefaultToolkit().createImage(url);
54     }
55
56     addMouseListener(this);
57     addMouseMotionListener(this);
58   }
59
60   /**
61    * DOCUMENT ME!
62    *
63    * @param evt DOCUMENT ME!
64    */
65   public void mousePressed(MouseEvent evt)
66   {
67     oldX = evt.getX();
68   }
69
70   /**
71    * DOCUMENT ME!
72    *
73    * @param evt DOCUMENT ME!
74    */
75   public void mouseReleased(MouseEvent evt)
76   {
77     active = false;
78     repaint();
79   }
80
81   /**
82    * DOCUMENT ME!
83    *
84    * @param evt DOCUMENT ME!
85    */
86   public void mouseEntered(MouseEvent evt)
87   {
88     active = true;
89     repaint();
90   }
91
92   /**
93    * DOCUMENT ME!
94    *
95    * @param evt DOCUMENT ME!
96    */
97   public void mouseExited(MouseEvent evt)
98   {
99     active = false;
100     repaint();
101   }
102
103   /**
104    * DOCUMENT ME!
105    *
106    * @param evt DOCUMENT ME!
107    */
108   public void mouseDragged(MouseEvent evt)
109   {
110     active = true;
111
112     Dimension d = ap.idPanel.idCanvas.getPreferredSize();
113     int dif = evt.getX() - oldX;
114
115     if ( ( (d.width + dif) > 20) || (dif > 0))
116     {
117       ap.idPanel.idCanvas.setPreferredSize(new Dimension(d.width + dif,
118           d.height));
119       ap.paintAlignment(true);
120     }
121
122     oldX = evt.getX();
123   }
124
125   /**
126    * DOCUMENT ME!
127    *
128    * @param evt DOCUMENT ME!
129    */
130   public void mouseMoved(MouseEvent evt)
131   {
132   }
133
134   /**
135    * DOCUMENT ME!
136    *
137    * @param evt DOCUMENT ME!
138    */
139   public void mouseClicked(MouseEvent evt)
140   {
141   }
142
143   /**
144    * DOCUMENT ME!
145    *
146    * @param g DOCUMENT ME!
147    */
148   public void paintComponent(Graphics g)
149   {
150     g.setColor(Color.white);
151     g.fillRect(0, 0, getWidth(), getHeight());
152
153     if (active)
154     {
155       if (image != null)
156       {
157         g.drawImage(image, getWidth() - 20, 2, this);
158       }
159     }
160   }
161 }