7cf05de265bea83fd8cb04c9d43fefea8eb3637a
[jalview.git] / src / jalview / jbgui / GAlignmentPanel.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
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
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.jbgui;
22
23 import jalview.bin.Jalview;
24
25 import java.awt.BorderLayout;
26 import java.awt.Color;
27 import java.awt.Dimension;
28
29 import javax.swing.BorderFactory;
30 import javax.swing.ButtonGroup;
31 import javax.swing.JComponent;
32 import javax.swing.JPanel;
33 import javax.swing.JScrollBar;
34 import javax.swing.JScrollPane;
35 import javax.swing.border.Border;
36 import javax.swing.plaf.ScrollBarUI;
37
38 @SuppressWarnings("serial")
39 public class GAlignmentPanel extends JPanel
40 {
41   protected JScrollBar vscroll;// = new JScrollBar();
42
43   protected JScrollBar hscroll;// = new JScrollBar();
44
45   BorderLayout borderLayout1;// = new BorderLayout();
46
47   BorderLayout borderLayout3;// = new BorderLayout();
48
49   BorderLayout borderLayout5;// = new BorderLayout();
50
51   BorderLayout borderLayout6;// = new BorderLayout();
52
53   ButtonGroup buttonGroup1;// = new ButtonGroup();
54
55   BorderLayout borderLayout7;// = new BorderLayout();
56
57   BorderLayout borderLayout10;// = new BorderLayout();
58
59   BorderLayout borderLayout11;// = new BorderLayout();
60
61   public JScrollPane annotationScroller;// = new JScrollPane();
62
63           Border border1;
64
65   BorderLayout borderLayout4;// = new BorderLayout();
66
67           
68           static JPanel newJPanel() {  // BH 2019
69                   JPanel p = new JPanel();
70                   // leaving this in, as it prevents 
71                   // the checkerboard business, despite how
72                   // funky that looks. Remove if you want to.
73                   p.setBackground(Color.white);
74                         return p;
75           }
76
77   static
78   {
79     System.out.println("GAP 1 static ");
80   }
81
82   protected JPanel sequenceHolderPanel;// = new JPanel();
83
84   protected JPanel seqPanelHolder;// = new JPanel();
85
86   protected JPanel scalePanelHolder;// = new JPanel();
87
88   protected JPanel idPanelHolder;// = new JPanel();
89
90   protected JPanel idSpaceFillerPanel1;// = new JPanel();
91
92   public JPanel annotationSpaceFillerHolder;// = new JPanel();
93
94   protected JPanel hscrollFillerPanel;// = new JPanel();
95
96   JPanel hscrollHolder;// = new JPanel();
97
98   static
99   {
100     System.out.println("GAP 2 static ");
101   }
102
103
104   public GAlignmentPanel()
105   {
106
107     System.out.println("GAP 3a");
108
109     System.out.println(Jalview.isHeadlessMode());
110
111     try
112     {
113       vscroll = newScrollBar();
114     } catch (Throwable t)
115     {
116       t.printStackTrace();
117       System.exit(1);
118     }
119
120     hscroll = newScrollBar();
121
122     System.out.println("GAP 3b");
123
124     borderLayout1 = new BorderLayout();
125
126     borderLayout3 = new BorderLayout();
127
128     borderLayout5 = new BorderLayout();
129
130     borderLayout6 = new BorderLayout();
131
132     buttonGroup1 = new ButtonGroup();
133
134     borderLayout7 = new BorderLayout();
135
136     borderLayout10 = new BorderLayout();
137
138     borderLayout11 = new BorderLayout();
139
140     System.out.println("GAP 3c");
141     annotationScroller = new JScrollPane() {
142       
143       @Override
144       public void updateUI() { 
145         System.out.println("JScrollPane updateUI");
146       }
147
148       @Override
149       public JScrollBar createVerticalScrollBar()
150       {
151         return newScrollBar();
152       }
153
154       @Override
155       public JScrollBar createHorizontalScrollBar()
156       {
157         return newScrollBar();
158       }
159       
160
161     };
162     System.out.println("GAP 3d");
163
164     borderLayout4 = new BorderLayout();
165
166     System.out.println("GAP 3e");
167     sequenceHolderPanel = newJPanel();
168
169     seqPanelHolder = newJPanel();
170
171     scalePanelHolder = newJPanel();
172
173     idPanelHolder = newJPanel();
174
175     idSpaceFillerPanel1 = newJPanel();
176
177     annotationSpaceFillerHolder = newJPanel();
178
179     hscrollFillerPanel = newJPanel();
180
181     hscrollHolder = newJPanel();
182
183     System.out.println("GAP 3r");
184
185     try
186     {
187
188       System.out.println("GAP 3 ");
189
190       jbInit();
191
192       System.out.println("GAP 4 ");
193
194     } catch (Exception e)
195     {
196       e.printStackTrace();
197     }
198   }
199
200   private JScrollBar newScrollBar()
201   {
202     return new JScrollBar()
203     {
204
205       /**
206        * Overrides <code>JComponent.updateUI</code>.
207        * 
208        * @see JComponent#updateUI
209        */
210       @Override
211       public void updateUI()
212       {
213
214         System.out.println("JScrollBar.updateUI");
215         setUI(new ScrollBarUI()
216         {
217
218         });
219       }
220
221       @Override
222       public void setUI(ScrollBarUI ui)
223       {
224         System.out.println("JScrollBar.setUI");
225         // setUI(ui);
226       }
227     };
228   }
229
230   private void jbInit() throws Exception
231   {
232         //  annotationScroller.setBackground(Color.white);  // BH 2019
233           
234     border1 = BorderFactory.createLineBorder(Color.gray, 1);
235     idPanelHolder.setBorder(null);
236     idPanelHolder.setPreferredSize(new Dimension(70, 10));
237     this.setLayout(borderLayout7);
238     sequenceHolderPanel
239             .setMaximumSize(new Dimension(2147483647, 2147483647));
240     sequenceHolderPanel.setMinimumSize(new Dimension(150, 150));
241     sequenceHolderPanel.setPreferredSize(new Dimension(150, 150));
242     sequenceHolderPanel.setLayout(borderLayout3);
243     seqPanelHolder.setLayout(borderLayout1);
244     scalePanelHolder.setBackground(Color.white);
245     scalePanelHolder.setMinimumSize(new Dimension(10, 80));
246     scalePanelHolder.setPreferredSize(new Dimension(10, 30));
247     scalePanelHolder.setLayout(borderLayout6);
248     idPanelHolder.setLayout(borderLayout5);
249     idSpaceFillerPanel1.setBackground(Color.white);
250     idSpaceFillerPanel1.setPreferredSize(new Dimension(10, 30));
251     idSpaceFillerPanel1.setLayout(borderLayout11);
252     annotationSpaceFillerHolder.setBackground(Color.white);
253     annotationSpaceFillerHolder.setPreferredSize(new Dimension(10, 80));
254     annotationSpaceFillerHolder.setLayout(borderLayout4);
255     hscroll.setOrientation(JScrollBar.HORIZONTAL);
256     hscrollHolder.setLayout(borderLayout10);
257     hscrollFillerPanel.setBackground(Color.white);
258     hscrollFillerPanel.setPreferredSize(new Dimension(70, 10));
259     hscrollHolder.setBackground(Color.white);
260     annotationScroller.setBorder(null);
261     annotationScroller.setBackground(Color.BLUE);
262     annotationScroller.setPreferredSize(new Dimension(10, 80));
263     this.setPreferredSize(new Dimension(220, 166));
264
265     sequenceHolderPanel.add(scalePanelHolder, BorderLayout.NORTH);
266     sequenceHolderPanel.add(seqPanelHolder, BorderLayout.CENTER);
267     seqPanelHolder.add(vscroll, BorderLayout.EAST);
268     sequenceHolderPanel.add(annotationScroller, BorderLayout.SOUTH);
269
270     // jPanel3.add(secondaryPanelHolder, BorderLayout.SOUTH);
271     this.add(idPanelHolder, BorderLayout.WEST);
272     idPanelHolder.add(idSpaceFillerPanel1, BorderLayout.NORTH);
273     idPanelHolder.add(annotationSpaceFillerHolder, BorderLayout.SOUTH);
274     this.add(hscrollHolder, BorderLayout.SOUTH);
275     hscrollHolder.add(hscroll, BorderLayout.CENTER);
276     hscrollHolder.add(hscrollFillerPanel, BorderLayout.WEST);
277     this.add(sequenceHolderPanel, BorderLayout.CENTER);
278   }
279 }