Jalview Imported Sources
[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 javax.swing.*;\r
6 import java.awt.event.*;\r
7 \r
8 public class AlignmentPanel extends GAlignmentPanel implements AdjustmentListener\r
9 {\r
10 \r
11   AlignViewport     av;\r
12   public SeqPanel   seqPanel;\r
13   public IdPanel    idPanel;\r
14   public AlignFrame alignFrame;\r
15   public ScalePanel scalePanel;\r
16   public 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     scalePanelHolder.add(scalePanel, BorderLayout.CENTER);\r
31     scorePanelHolder.add(scorePanel, BorderLayout.CENTER);\r
32     seqPanelHolder.add(seqPanel, BorderLayout.CENTER);\r
33     setScrollValues(0,0);\r
34 \r
35     hscroll.addAdjustmentListener(this);\r
36     vscroll.addAdjustmentListener(this);\r
37     selectAll(false);\r
38 \r
39     addComponentListener(new ComponentAdapter()\r
40    {\r
41        public void componentResized(ComponentEvent evt)\r
42      {      RefreshPanels();    }\r
43    });\r
44 \r
45   }\r
46 \r
47   public int countSelected()\r
48   {\r
49     return av.getSelection().size();\r
50   }\r
51 \r
52   public void selectAll(boolean flag) {\r
53     int i = 0;\r
54     if (flag) {\r
55       while (i < seqPanel.align.getHeight()) {\r
56         if (! av.getSelection().contains(av.getAlignment().getSequenceAt(i))) {\r
57           av.getSelection().addElement(av.getAlignment().getSequenceAt(i));\r
58         }\r
59         i++;\r
60       }\r
61     } else {\r
62       av.getSelection().clear();\r
63     }\r
64   }\r
65 \r
66 \r
67 \r
68   public void setGraphPanelVisible(boolean b)\r
69   {\r
70     scorePanelHolder.setVisible(b);\r
71     idSpaceFillerPanel.setVisible(b);\r
72     RefreshPanels();\r
73   }\r
74 \r
75 \r
76 \r
77   public void RefreshPanels()\r
78   {\r
79     invalidate();\r
80     idPanelHolder.setPreferredSize( idPanel.idCanvas.getPreferredSize() );\r
81     validate();\r
82     idPanel.idCanvas.paintFlag = true;\r
83     seqPanel.seqCanvas.paintFlag = true;\r
84     setScrollValues(av.getStartRes(), av.getStartSeq());\r
85     av.getConsensus(true);\r
86     repaint();\r
87   }\r
88 \r
89   int hextent = 0;\r
90   int vextent = 0;\r
91 \r
92   public void setScrollValues(int x, int y)\r
93   {\r
94     hextent = (int)(seqPanel.seqCanvas.getWidth()/av.getCharWidth());\r
95     vextent = seqPanel.seqCanvas.getHeight()/av.getCharHeight();\r
96 \r
97     if(hextent+x  >  av.getAlignment().getWidth())\r
98       x =  av.getAlignment().getWidth()- hextent;\r
99 \r
100     if(vextent+y > av.getAlignment().getHeight())\r
101       y = av.getAlignment().getHeight() - vextent;\r
102 \r
103     if(y<0)\r
104       y = 0;\r
105 \r
106     if(x<0)\r
107       x=0;\r
108 \r
109     hscroll.setValues(x,hextent,0,av.getAlignment().getWidth());\r
110     vscroll.setValues(y,vextent,0,av.getAlignment().getHeight() );\r
111 \r
112   }\r
113 \r
114 \r
115   public void adjustmentValueChanged(AdjustmentEvent evt) {\r
116 \r
117     if (evt.getSource() == hscroll)\r
118     {\r
119       int x = hscroll.getValue();\r
120       av.setStartRes(x);\r
121       av.setEndRes(x + (int)(seqPanel.seqCanvas.getWidth()/av.getCharWidth()-1));\r
122     }\r
123 \r
124     if (evt.getSource() == vscroll)\r
125     {\r
126         int offy = vscroll.getValue();\r
127         av.setStartSeq(offy);\r
128         av.setEndSeq(offy + seqPanel.seqCanvas.getHeight()/av.getCharHeight());\r
129     }\r
130 \r
131     repaint();\r
132   }\r
133 \r
134 \r
135 \r
136 }\r