Can now select groups using column selection
[jalview.git] / src / jalview / gui / ScalePanel.java
1 package jalview.gui;\r
2 \r
3 import jalview.datamodel.*;\r
4 import java.awt.*;\r
5 import java.awt.event.*;\r
6 import javax.swing.*;\r
7 \r
8 public class ScalePanel extends JPanel\r
9 {\r
10 \r
11   protected ScaleCanvas scaleCanvas;\r
12 \r
13   protected int offy;\r
14   public    int width;\r
15 \r
16   protected AlignViewport av;\r
17   AlignmentPanel ap;\r
18 \r
19   public ScalePanel(AlignViewport av, AlignmentPanel ap)\r
20   {\r
21     this.av         = av;\r
22     this.ap = ap;\r
23 \r
24     scaleCanvas = new ScaleCanvas(av);\r
25     setLayout(new BorderLayout());\r
26     add(scaleCanvas, BorderLayout.CENTER);\r
27     addMouseListener(new MouseAdapter()\r
28     {\r
29       public void mousePressed(MouseEvent evt)\r
30       {\r
31         doMousePressed(evt);\r
32       }\r
33       public void mouseReleased(MouseEvent evt)\r
34       {\r
35         doMouseReleased(evt);\r
36       }\r
37 \r
38     });\r
39     addMouseMotionListener(new MouseMotionAdapter()\r
40     {\r
41       public void mouseDragged(MouseEvent evt)\r
42       {\r
43         doMouseDragged(evt);\r
44       }\r
45     });\r
46 \r
47   }\r
48 \r
49   public Dimension getMinimumSize() {\r
50     return scaleCanvas.getMinimumSize();\r
51   }\r
52 \r
53   public Dimension getPreferredSize() {\r
54     return scaleCanvas.getPreferredSize();\r
55   }\r
56 \r
57   public void doMousePressed(MouseEvent evt) {\r
58     int x = evt.getX();\r
59     int res = x/av.getCharWidth() + av.getStartRes();\r
60 \r
61     if (! av.getColumnSelection().contains(res))\r
62       av.getColumnSelection().addElement(res);\r
63     else\r
64       return;\r
65 \r
66     SequenceGroup sg = new SequenceGroup();\r
67     for(int i=0; i<av.alignment.getSequences().size(); i++)\r
68         sg.addSequence(av.alignment.getSequenceAt(i));\r
69 \r
70     sg.setStartRes(res);\r
71     sg.setEndRes(res);\r
72     av.setRubberbandGroup(sg);\r
73     ap.RefreshPanels();\r
74   }\r
75 \r
76   public void doMouseReleased(MouseEvent evt)\r
77   {\r
78     int x = evt.getX();\r
79     int res = x/av.getCharWidth() + av.getStartRes();\r
80 \r
81    if (! av.getColumnSelection().contains(res))\r
82      av.getColumnSelection().addElement(res);\r
83 \r
84    SequenceGroup sg = av.getRubberbandGroup();\r
85 \r
86    if(res>sg.getStartRes())\r
87      sg.setEndRes(res);\r
88    else if(res<sg.getStartRes())\r
89      sg.setStartRes(res);\r
90 \r
91    ap.RefreshPanels();\r
92   }\r
93 \r
94   public void doMouseDragged(MouseEvent evt)\r
95   {\r
96     int x = evt.getX();\r
97     int res = x/av.getCharWidth() + av.getStartRes();\r
98 \r
99     SequenceGroup sg = av.getRubberbandGroup();\r
100 \r
101     if(res>sg.getStartRes())\r
102       sg.setEndRes(res);\r
103     else if(res<sg.getStartRes())\r
104       sg.setStartRes(res);\r
105 \r
106 \r
107     ap.RefreshPanels();\r
108 \r
109   }\r
110 }\r