halfway to wrap alignment
[jalview.git] / src / jalview / gui / AlignmentPanel.java
1 package jalview.gui;\r
2 \r
3 import jalview.jbgui.GAlignmentPanel;\r
4 import java.awt.*;\r
5 import java.awt.event.*;\r
6 \r
7 public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListener\r
8 {\r
9 \r
10   AlignViewport     av;\r
11   OverviewPanel overviewPanel;\r
12   SeqPanel   seqPanel;\r
13   IdPanel    idPanel;\r
14   public AlignFrame alignFrame;\r
15   ScalePanel scalePanel;\r
16   ScorePanel scorePanel;\r
17 \r
18   public boolean    groupEdit = false;\r
19 \r
20   public AlignmentPanel(AlignFrame af, AlignViewport av)\r
21   {\r
22     alignFrame = af;\r
23     this.av         = av;\r
24     seqPanel        = new SeqPanel  (av, this);\r
25     idPanel         = new IdPanel   (av, this);\r
26     scalePanel = new ScalePanel(av);\r
27     scorePanel = new ScorePanel(av);\r
28 \r
29     idPanelHolder.add(idPanel, BorderLayout.CENTER);\r
30     idPanel.addNotify();\r
31     scalePanelHolder.add(scalePanel, BorderLayout.CENTER);\r
32     scorePanelHolder.add(scorePanel, BorderLayout.CENTER);\r
33     seqPanelHolder.add(seqPanel, BorderLayout.CENTER);\r
34     setScrollValues(0,0);\r
35 \r
36     hscroll.addAdjustmentListener(this);\r
37     vscroll.addAdjustmentListener(this);\r
38     selectAll(false);\r
39 \r
40     addComponentListener(new ComponentAdapter()\r
41    {\r
42        public void componentResized(ComponentEvent evt)\r
43      {\r
44           RefreshPanels();\r
45      }\r
46    });\r
47 \r
48   }\r
49 \r
50   public int countSelected()\r
51   {\r
52     return av.getSelection().size();\r
53   }\r
54 \r
55   public void selectAll(boolean flag) {\r
56     int i = 0;\r
57     if (flag) {\r
58       while (i < av.getAlignment().getHeight()) {\r
59         if (! av.getSelection().contains(av.getAlignment().getSequenceAt(i))) {\r
60           av.getSelection().addElement(av.getAlignment().getSequenceAt(i));\r
61         }\r
62         i++;\r
63       }\r
64     } else {\r
65       av.getSelection().clear();\r
66     }\r
67   }\r
68 \r
69  public OverviewPanel getOverviewPanel()\r
70  {\r
71    return overviewPanel;\r
72  }\r
73 \r
74  public void setOverviewPanel(OverviewPanel op)\r
75  {\r
76    overviewPanel = op;\r
77  }\r
78 \r
79 \r
80   public void setGraphPanelVisible(boolean b)\r
81   {\r
82     scorePanelHolder.setVisible(b);\r
83     idSpaceFillerPanel.setVisible(b);\r
84     RefreshPanels();\r
85   }\r
86 \r
87   public void setWrapAlignment(boolean wrap)\r
88   {\r
89 \r
90       scalePanelHolder.setVisible(!wrap);\r
91       scorePanelHolder.setVisible(!wrap);\r
92 \r
93       hscroll.setVisible(!wrap);\r
94       idSpaceFillerPanel.setVisible(!wrap);\r
95       idSpaceFillerPanel1.setVisible(!wrap);\r
96 \r
97   }\r
98 \r
99 \r
100   public void setColourScheme(jalview.schemes.ColourSchemeI cs, boolean conservation)\r
101   {\r
102     seqPanel.setColourScheme(cs, conservation);\r
103     if(overviewPanel!=null)\r
104       overviewPanel.updateOverviewImage();\r
105   }\r
106 \r
107 \r
108   public void RefreshPanels()\r
109   {\r
110     invalidate();\r
111     validate();\r
112     idPanel.idCanvas.paintFlag = true;\r
113     idPanelHolder.setPreferredSize( idPanel.idCanvas.getPreferredSize() );\r
114     seqPanel.seqCanvas.paintFlag = true;\r
115     setScrollValues(av.getStartRes(), av.getStartSeq());\r
116     av.getConsensus(true);\r
117     repaint();\r
118 \r
119     if(overviewPanel!=null)\r
120       overviewPanel.updateOverviewImage();\r
121 \r
122   }\r
123 \r
124   int hextent = 0;\r
125   int vextent = 0;\r
126 \r
127   public void setScrollValues(int x, int y)\r
128   {\r
129     hextent = (int)(seqPanel.seqCanvas.getWidth()/av.getCharWidth());\r
130     vextent = seqPanel.seqCanvas.getHeight()/av.getCharHeight();\r
131 \r
132     if(hextent+x  >  av.getAlignment().getWidth())\r
133       x =  av.getAlignment().getWidth()- hextent;\r
134 \r
135     if(vextent+y > av.getAlignment().getHeight())\r
136       y = av.getAlignment().getHeight() - vextent;\r
137 \r
138     if(y<0)\r
139       y = 0;\r
140 \r
141     if(x<0)\r
142       x=0;\r
143 \r
144     hscroll.setValues(x,hextent,0,av.getAlignment().getWidth());\r
145     vscroll.setValues(y,vextent,0,av.getAlignment().getHeight() );\r
146     seqPanel.seqCanvas.paintFlag = true;\r
147     repaint();\r
148 \r
149   }\r
150 \r
151 \r
152   public void adjustmentValueChanged(AdjustmentEvent evt)\r
153   {\r
154 \r
155     if (evt.getSource() == hscroll)\r
156     {\r
157       int x = hscroll.getValue();\r
158       av.setStartRes(x);\r
159       av.setEndRes(x + (int)(seqPanel.seqCanvas.getWidth()/av.getCharWidth()-1));\r
160     }\r
161 \r
162     if (evt.getSource() == vscroll)\r
163     {\r
164         int offy = vscroll.getValue();\r
165         av.setStartSeq(offy);\r
166         av.setEndSeq(offy + seqPanel.seqCanvas.getHeight()/av.getCharHeight());\r
167     }\r
168 \r
169 \r
170     if(overviewPanel!=null)\r
171       overviewPanel.setBoxPosition();\r
172 \r
173 \r
174     repaint();\r
175   }\r
176 \r
177 \r
178 \r
179 }\r