2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
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.
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.
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.
21 package jalview.jbgui;
23 import jalview.api.structures.JalviewStructureDisplayI;
24 import jalview.gui.UserDefinedColours;
25 import jalview.schemes.UserColourScheme;
26 import jalview.util.MessageManager;
28 import java.awt.BorderLayout;
29 import java.awt.GridLayout;
30 import java.awt.event.ActionEvent;
31 import java.awt.event.ActionListener;
34 import javax.swing.ButtonGroup;
35 import javax.swing.JInternalFrame;
36 import javax.swing.JLabel;
37 import javax.swing.JMenu;
38 import javax.swing.JMenuBar;
39 import javax.swing.JMenuItem;
40 import javax.swing.JPanel;
41 import javax.swing.JRadioButtonMenuItem;
43 public abstract class GStructureViewer extends JInternalFrame implements
44 JalviewStructureDisplayI
46 // private AAStructureBindingModel bindingModel;
48 protected JMenu savemenu;
50 protected JMenu viewMenu;
52 protected JMenu colourMenu;
54 protected JMenu chainMenu;
56 protected JMenu viewerActionMenu;
58 protected JMenuItem alignStructs;
60 protected JMenuItem fitToWindow;
62 protected JRadioButtonMenuItem seqColour;
64 protected JRadioButtonMenuItem chainColour;
66 protected JRadioButtonMenuItem chargeColour;
68 protected JRadioButtonMenuItem zappoColour;
70 protected JRadioButtonMenuItem taylorColour;
72 protected JRadioButtonMenuItem hydroColour;
74 protected JRadioButtonMenuItem strandColour;
76 protected JRadioButtonMenuItem helixColour;
78 protected JRadioButtonMenuItem turnColour;
80 protected JRadioButtonMenuItem buriedColour;
82 protected JRadioButtonMenuItem nucleotideColour;
84 protected JRadioButtonMenuItem purinePyrimidineColour;
86 protected JRadioButtonMenuItem userColour;
88 protected JRadioButtonMenuItem viewerColour;
90 protected JMenuItem helpItem;
92 protected JLabel statusBar;
94 protected JPanel statusPanel;
99 public GStructureViewer()
104 } catch (Exception ex)
106 ex.printStackTrace();
110 private void jbInit() throws Exception
112 JMenuBar menuBar = new JMenuBar();
113 this.setJMenuBar(menuBar);
115 JMenu fileMenu = new JMenu();
116 fileMenu.setText(MessageManager.getString("action.file"));
118 savemenu = new JMenu();
119 savemenu.setActionCommand(MessageManager.getString("action.save_image"));
120 savemenu.setText(MessageManager.getString("action.save_as"));
122 JMenuItem pdbFile = new JMenuItem();
123 pdbFile.setText(MessageManager.getString("label.pdb_file"));
124 pdbFile.addActionListener(new ActionListener()
127 public void actionPerformed(ActionEvent actionEvent)
129 pdbFile_actionPerformed(actionEvent);
133 JMenuItem png = new JMenuItem();
135 png.addActionListener(new ActionListener()
138 public void actionPerformed(ActionEvent actionEvent)
140 png_actionPerformed(actionEvent);
144 JMenuItem eps = new JMenuItem();
146 eps.addActionListener(new ActionListener()
149 public void actionPerformed(ActionEvent actionEvent)
151 eps_actionPerformed(actionEvent);
155 JMenuItem viewMapping = new JMenuItem();
156 viewMapping.setText(MessageManager.getString("label.view_mapping"));
157 viewMapping.addActionListener(new ActionListener()
160 public void actionPerformed(ActionEvent actionEvent)
162 viewMapping_actionPerformed(actionEvent);
166 viewMenu = new JMenu();
167 viewMenu.setText(MessageManager.getString("action.view"));
169 chainMenu = new JMenu();
170 chainMenu.setText(MessageManager.getString("action.show_chain"));
172 fitToWindow = new JMenuItem();
173 fitToWindow.setText(MessageManager.getString("label.fit_to_window"));
174 fitToWindow.addActionListener(new ActionListener()
177 public void actionPerformed(ActionEvent actionEvent)
179 fitToWindow_actionPerformed();
183 JMenu helpMenu = new JMenu();
184 helpMenu.setText(MessageManager.getString("action.help"));
185 helpItem = new JMenuItem();
186 helpItem.setText(MessageManager.getString("label.jmol_help"));
187 helpItem.addActionListener(new ActionListener()
190 public void actionPerformed(ActionEvent actionEvent)
192 showHelp_actionPerformed(actionEvent);
195 alignStructs = new JMenuItem();
197 .setText(MessageManager.getString("label.align_structures"));
198 alignStructs.addActionListener(new ActionListener()
201 public void actionPerformed(ActionEvent actionEvent)
203 alignStructs_actionPerformed(actionEvent);
207 viewerActionMenu = new JMenu(MessageManager.getString("label.jmol"));
208 viewerActionMenu.setVisible(false);
209 viewerActionMenu.add(alignStructs);
210 colourMenu = new JMenu();
212 fileMenu.add(savemenu);
213 fileMenu.add(viewMapping);
214 savemenu.add(pdbFile);
217 viewMenu.add(chainMenu);
218 helpMenu.add(helpItem);
220 menuBar.add(fileMenu);
221 menuBar.add(viewMenu);
222 menuBar.add(colourMenu);
223 menuBar.add(viewerActionMenu);
224 menuBar.add(helpMenu);
226 statusPanel = new JPanel();
227 statusPanel.setLayout(new GridLayout());
228 this.getContentPane().add(statusPanel, BorderLayout.SOUTH);
229 statusBar = new JLabel();
230 statusPanel.add(statusBar, null);
234 * Builds the colour menu
236 protected void buildColourMenu()
238 colourMenu.removeAll();
239 colourMenu.setText(MessageManager.getString("label.colours"));
241 JMenuItem backGround = new JMenuItem();
243 .setText(MessageManager.getString("action.background_colour"));
244 backGround.addActionListener(new ActionListener()
247 public void actionPerformed(ActionEvent actionEvent)
249 backGround_actionPerformed(actionEvent);
252 seqColour = new JRadioButtonMenuItem();
253 seqColour.setSelected(false);
254 seqColour.setText(MessageManager.getString("action.by_sequence"));
255 seqColour.addActionListener(new ActionListener()
258 public void actionPerformed(ActionEvent actionEvent)
260 seqColour_actionPerformed(actionEvent);
263 chainColour = new JRadioButtonMenuItem();
264 chainColour.setText(MessageManager.getString("action.by_chain"));
265 chainColour.addActionListener(new ActionListener()
268 public void actionPerformed(ActionEvent actionEvent)
270 chainColour_actionPerformed(actionEvent);
273 chargeColour = new JRadioButtonMenuItem();
274 chargeColour.setText(MessageManager.getString("label.charge_cysteine"));
275 chargeColour.addActionListener(new ActionListener()
278 public void actionPerformed(ActionEvent actionEvent)
280 chargeColour_actionPerformed(actionEvent);
283 zappoColour = new JRadioButtonMenuItem();
284 zappoColour.setText(MessageManager.getString("label.zappo"));
285 zappoColour.addActionListener(new ActionListener()
288 public void actionPerformed(ActionEvent actionEvent)
290 zappoColour_actionPerformed(actionEvent);
293 taylorColour = new JRadioButtonMenuItem();
294 taylorColour.setText(MessageManager.getString("label.taylor"));
295 taylorColour.addActionListener(new ActionListener()
298 public void actionPerformed(ActionEvent actionEvent)
300 taylorColour_actionPerformed(actionEvent);
303 hydroColour = new JRadioButtonMenuItem();
304 hydroColour.setText(MessageManager.getString("label.hydrophobicity"));
305 hydroColour.addActionListener(new ActionListener()
308 public void actionPerformed(ActionEvent actionEvent)
310 hydroColour_actionPerformed(actionEvent);
313 strandColour = new JRadioButtonMenuItem();
314 strandColour.setText(MessageManager
315 .getString("label.strand_propensity"));
316 strandColour.addActionListener(new ActionListener()
319 public void actionPerformed(ActionEvent actionEvent)
321 strandColour_actionPerformed(actionEvent);
324 helixColour = new JRadioButtonMenuItem();
325 helixColour.setText(MessageManager.getString("label.helix_propensity"));
326 helixColour.addActionListener(new ActionListener()
329 public void actionPerformed(ActionEvent actionEvent)
331 helixColour_actionPerformed(actionEvent);
334 turnColour = new JRadioButtonMenuItem();
335 turnColour.setText(MessageManager.getString("label.turn_propensity"));
336 turnColour.addActionListener(new ActionListener()
339 public void actionPerformed(ActionEvent actionEvent)
341 turnColour_actionPerformed(actionEvent);
344 buriedColour = new JRadioButtonMenuItem();
345 buriedColour.setText(MessageManager.getString("label.buried_index"));
346 buriedColour.addActionListener(new ActionListener()
349 public void actionPerformed(ActionEvent actionEvent)
351 buriedColour_actionPerformed(actionEvent);
354 nucleotideColour = new JRadioButtonMenuItem();
355 nucleotideColour.setText(MessageManager.getString("label.nucleotide"));
356 nucleotideColour.addActionListener(new ActionListener()
359 public void actionPerformed(ActionEvent actionEvent)
361 nucleotideColour_actionPerformed(actionEvent);
364 purinePyrimidineColour = new JRadioButtonMenuItem();
365 purinePyrimidineColour.setText(MessageManager
366 .getString("label.purine_pyrimidine"));
367 purinePyrimidineColour.addActionListener(new ActionListener()
370 public void actionPerformed(ActionEvent actionEvent)
372 purinePyrimidineColour_actionPerformed(actionEvent);
375 userColour = new JRadioButtonMenuItem();
376 userColour.setText(MessageManager.getString("action.user_defined"));
377 userColour.addActionListener(new ActionListener()
380 public void actionPerformed(ActionEvent actionEvent)
382 userColour_actionPerformed(actionEvent);
385 viewerColour = new JRadioButtonMenuItem();
386 viewerColour.setSelected(false);
388 .setText(MessageManager.getString("label.colour_with_jmol"));
389 viewerColour.setToolTipText(MessageManager
390 .getString("label.let_jmol_manage_structure_colours"));
391 viewerColour.addActionListener(new ActionListener()
394 public void actionPerformed(ActionEvent actionEvent)
396 viewerColour_actionPerformed(actionEvent);
401 * add colour buttons to a group so their selection
402 * is mutually exclusive
404 ButtonGroup colourButtons = new ButtonGroup();
406 colourMenu.add(seqColour);
407 colourMenu.add(chainColour);
408 colourMenu.add(chargeColour);
409 colourMenu.add(zappoColour);
410 colourMenu.add(taylorColour);
411 colourMenu.add(hydroColour);
412 colourMenu.add(helixColour);
413 colourMenu.add(strandColour);
414 colourMenu.add(turnColour);
415 colourMenu.add(buriedColour);
416 colourMenu.add(purinePyrimidineColour);
419 * add any user-defined colours that are loaded
421 Map<String, UserColourScheme> userColourSchemes = UserDefinedColours
422 .getUserColourSchemes();
423 if (userColourSchemes != null)
425 for (String schemeName : userColourSchemes.keySet())
427 final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
429 radioItem.addActionListener(new ActionListener()
432 public void actionPerformed(ActionEvent evt)
434 userColour_actionPerformed(evt);
437 colourMenu.add(radioItem);
438 colourButtons.add(radioItem);
441 colourMenu.add(userColour);
442 colourMenu.add(viewerColour);
443 colourMenu.add(backGround);
445 colourButtons.add(seqColour);
446 colourButtons.add(chainColour);
447 colourButtons.add(chargeColour);
448 colourButtons.add(zappoColour);
449 colourButtons.add(taylorColour);
450 colourButtons.add(hydroColour);
451 colourButtons.add(helixColour);
452 colourButtons.add(strandColour);
453 colourButtons.add(turnColour);
454 colourButtons.add(buriedColour);
455 colourButtons.add(purinePyrimidineColour);
456 colourButtons.add(userColour);
457 colourButtons.add(viewerColour);
460 protected void fitToWindow_actionPerformed()
464 protected void highlightSelection_actionPerformed()
468 protected void viewerColour_actionPerformed(ActionEvent actionEvent)
472 protected void alignStructs_actionPerformed(ActionEvent actionEvent)
476 public void pdbFile_actionPerformed(ActionEvent actionEvent)
481 public void png_actionPerformed(ActionEvent actionEvent)
486 public void eps_actionPerformed(ActionEvent actionEvent)
491 public void viewMapping_actionPerformed(ActionEvent actionEvent)
496 public void seqColour_actionPerformed(ActionEvent actionEvent)
501 public void chainColour_actionPerformed(ActionEvent actionEvent)
506 public void chargeColour_actionPerformed(ActionEvent actionEvent)
511 public void zappoColour_actionPerformed(ActionEvent actionEvent)
516 public void taylorColour_actionPerformed(ActionEvent actionEvent)
521 public void hydroColour_actionPerformed(ActionEvent actionEvent)
526 public void helixColour_actionPerformed(ActionEvent actionEvent)
531 public void strandColour_actionPerformed(ActionEvent actionEvent)
536 public void turnColour_actionPerformed(ActionEvent actionEvent)
541 public void buriedColour_actionPerformed(ActionEvent actionEvent)
546 public void nucleotideColour_actionPerformed(ActionEvent actionEvent)
551 public void purinePyrimidineColour_actionPerformed(ActionEvent actionEvent)
556 public void userColour_actionPerformed(ActionEvent actionEvent)
561 public void backGround_actionPerformed(ActionEvent actionEvent)
566 public void showHelp_actionPerformed(ActionEvent actionEvent)
572 // return bindingModel;
575 // public void setBindingModel(AAStructureBindingModel bindingModel)
577 // this.bindingModel = bindingModel;