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