JAL-535 refactored core code from PCA viewer to viewmodel.
[jalview.git] / src / jalview / appletgui / 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.appletgui;
19
20 import java.awt.*;
21 import java.awt.event.*;
22
23 public class IdwidthAdjuster extends Panel implements MouseListener,
24         MouseMotionListener
25 {
26   boolean active = false;
27
28   int oldX = 0;
29
30   Image image;
31
32   AlignmentPanel ap;
33
34   public IdwidthAdjuster(AlignmentPanel ap)
35   {
36     setLayout(null);
37     this.ap = ap;
38     java.net.URL url = getClass().getResource("/images/idwidth.gif");
39     if (url != null)
40     {
41       image = java.awt.Toolkit.getDefaultToolkit().getImage(url);
42     }
43
44     addMouseListener(this);
45     addMouseMotionListener(this);
46   }
47
48   public void mousePressed(MouseEvent evt)
49   {
50     oldX = evt.getX();
51   }
52
53   public void mouseReleased(MouseEvent evt)
54   {
55     active = false;
56     repaint();
57   }
58
59   public void mouseEntered(MouseEvent evt)
60   {
61     active = true;
62     repaint();
63   }
64
65   public void mouseExited(MouseEvent evt)
66   {
67     active = false;
68     repaint();
69   }
70
71   public void mouseDragged(MouseEvent evt)
72   {
73     active = true;
74     Dimension d = ap.idPanel.idCanvas.getSize();
75     int dif = evt.getX() - oldX;
76
77     if (d.width + dif > 20 || dif > 0)
78     {
79       ap.setIdWidth(d.width + dif, d.height);
80       this.setSize(d.width + dif, getSize().height);
81       oldX = evt.getX();
82     }
83
84   }
85
86   public void mouseMoved(MouseEvent evt)
87   {
88   }
89
90   public void mouseClicked(MouseEvent evt)
91   {
92   }
93
94   public void paint(Graphics g)
95   {
96     g.setColor(Color.white);
97     g.fillRect(0, 0, getSize().width, getSize().height);
98     if (active)
99     {
100       if (image != null)
101       {
102         g.drawImage(image, getSize().width - 20, 2, this);
103       }
104     }
105   }
106
107 }