Modified for wrappingAlignment
[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   boolean stretchingGroup = false;\r
20 \r
21   public ScalePanel(AlignViewport av, AlignmentPanel ap)\r
22   {\r
23     this.av         = av;\r
24     this.ap = ap;\r
25 \r
26     scaleCanvas = new ScaleCanvas(av);\r
27     setLayout(new BorderLayout());\r
28     add(scaleCanvas, BorderLayout.CENTER);\r
29     addMouseListener(new MouseAdapter()\r
30     {\r
31       public void mousePressed(MouseEvent evt)\r
32       {\r
33         doMousePressed(evt);\r
34       }\r
35       public void mouseReleased(MouseEvent evt)\r
36       {\r
37         doMouseReleased(evt);\r
38       }\r
39 \r
40     });\r
41     addMouseMotionListener(new MouseMotionAdapter()\r
42     {\r
43       public void mouseDragged(MouseEvent evt)\r
44       {\r
45         doMouseDragged(evt);\r
46       }\r
47     });\r
48 \r
49   }\r
50 \r
51   public Dimension getMinimumSize() {\r
52     return scaleCanvas.getMinimumSize();\r
53   }\r
54 \r
55   public Dimension getPreferredSize() {\r
56     return scaleCanvas.getPreferredSize();\r
57   }\r
58 \r
59   public void doMousePressed(MouseEvent evt) {\r
60     int x = evt.getX();\r
61     int res = x/av.getCharWidth() + av.getStartRes();\r
62     SequenceGroup sg = null;\r
63 \r
64     if (av.getColumnSelection().contains(res))\r
65       av.getColumnSelection().removeElement(res);\r
66     else\r
67     {\r
68       av.getColumnSelection().addElement(res);\r
69 \r
70       sg = new SequenceGroup();\r
71       for (int i = 0; i < av.alignment.getSequences().size(); i++)\r
72         sg.addSequence(av.alignment.getSequenceAt(i));\r
73 \r
74       sg.setStartRes(res);\r
75       sg.setEndRes(res);\r
76     }\r
77     av.setRubberbandGroup(sg);\r
78     ap.RefreshPanels();\r
79   }\r
80 \r
81   public void doMouseReleased(MouseEvent evt)\r
82   {\r
83     if(!stretchingGroup)\r
84       return;\r
85 \r
86     int x = evt.getX();\r
87     int res = x/av.getCharWidth() + av.getStartRes();\r
88 \r
89    if (! av.getColumnSelection().contains(res))\r
90      av.getColumnSelection().addElement(res);\r
91 \r
92    SequenceGroup sg = av.getRubberbandGroup();\r
93 \r
94    if(res>sg.getStartRes())\r
95      sg.setEndRes(res);\r
96    else if(res<sg.getStartRes())\r
97      sg.setStartRes(res);\r
98 \r
99    stretchingGroup = false;\r
100    ap.RefreshPanels();\r
101   }\r
102 \r
103   public void doMouseDragged(MouseEvent evt)\r
104   {\r
105     int x = evt.getX();\r
106     int res = x/av.getCharWidth() + av.getStartRes();\r
107 \r
108     SequenceGroup sg = av.getRubberbandGroup();\r
109     if(sg!=null)\r
110     {\r
111       stretchingGroup = true;\r
112       if (res > sg.getStartRes())\r
113         sg.setEndRes(res);\r
114       else if (res < sg.getStartRes())\r
115         sg.setStartRes(res);\r
116 \r
117       ap.RefreshPanels();\r
118     }\r
119 \r
120   }\r
121 }\r