JAL-1432 updated copyright notices
[jalview.git] / src / jalview / gui / IdwidthAdjuster.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
3  * Copyright (C) 2014 The Jalview Authors
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  * The Jalview Authors are detailed in the 'AUTHORS' file.
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 }