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
285 .getString("label.colourScheme_zappo"));
286 zappoColour.addActionListener(new ActionListener()
289 public void actionPerformed(ActionEvent actionEvent)
291 zappoColour_actionPerformed(actionEvent);
294 taylorColour = new JRadioButtonMenuItem();
295 taylorColour.setText(MessageManager
296 .getString("label.colourScheme_taylor"));
297 taylorColour.addActionListener(new ActionListener()
300 public void actionPerformed(ActionEvent actionEvent)
302 taylorColour_actionPerformed(actionEvent);
305 hydroColour = new JRadioButtonMenuItem();
306 hydroColour.setText(MessageManager
307 .getString("label.colourScheme_hydrophobic"));
308 hydroColour.addActionListener(new ActionListener()
311 public void actionPerformed(ActionEvent actionEvent)
313 hydroColour_actionPerformed(actionEvent);
316 strandColour = new JRadioButtonMenuItem();
317 strandColour.setText(MessageManager
318 .getString("label.colourScheme_strand_propensity"));
319 strandColour.addActionListener(new ActionListener()
322 public void actionPerformed(ActionEvent actionEvent)
324 strandColour_actionPerformed(actionEvent);
327 helixColour = new JRadioButtonMenuItem();
328 helixColour.setText(MessageManager
329 .getString("label.colourScheme_helix_propensity"));
330 helixColour.addActionListener(new ActionListener()
333 public void actionPerformed(ActionEvent actionEvent)
335 helixColour_actionPerformed(actionEvent);
338 turnColour = new JRadioButtonMenuItem();
339 turnColour.setText(MessageManager
340 .getString("label.colourScheme_turn_propensity"));
341 turnColour.addActionListener(new ActionListener()
344 public void actionPerformed(ActionEvent actionEvent)
346 turnColour_actionPerformed(actionEvent);
349 buriedColour = new JRadioButtonMenuItem();
350 buriedColour.setText(MessageManager
351 .getString("label.colourScheme_buried_index"));
352 buriedColour.addActionListener(new ActionListener()
355 public void actionPerformed(ActionEvent actionEvent)
357 buriedColour_actionPerformed(actionEvent);
360 nucleotideColour = new JRadioButtonMenuItem();
361 nucleotideColour.setText(MessageManager
362 .getString("label.colourScheme_nucleotide"));
363 nucleotideColour.addActionListener(new ActionListener()
366 public void actionPerformed(ActionEvent actionEvent)
368 nucleotideColour_actionPerformed(actionEvent);
371 purinePyrimidineColour = new JRadioButtonMenuItem();
372 purinePyrimidineColour.setText(MessageManager
373 .getString("label.colourScheme_purine/pyrimidine"));
374 purinePyrimidineColour.addActionListener(new ActionListener()
377 public void actionPerformed(ActionEvent actionEvent)
379 purinePyrimidineColour_actionPerformed(actionEvent);
382 userColour = new JRadioButtonMenuItem();
383 userColour.setText(MessageManager.getString("action.user_defined"));
384 userColour.addActionListener(new ActionListener()
387 public void actionPerformed(ActionEvent actionEvent)
389 userColour_actionPerformed(actionEvent);
392 viewerColour = new JRadioButtonMenuItem();
393 viewerColour.setSelected(false);
395 .setText(MessageManager.getString("label.colour_with_jmol"));
396 viewerColour.setToolTipText(MessageManager
397 .getString("label.let_jmol_manage_structure_colours"));
398 viewerColour.addActionListener(new ActionListener()
401 public void actionPerformed(ActionEvent actionEvent)
403 viewerColour_actionPerformed(actionEvent);
408 * add colour buttons to a group so their selection
409 * is mutually exclusive
411 ButtonGroup colourButtons = new ButtonGroup();
413 colourMenu.add(seqColour);
414 colourMenu.add(chainColour);
415 colourMenu.add(chargeColour);
416 colourMenu.add(zappoColour);
417 colourMenu.add(taylorColour);
418 colourMenu.add(hydroColour);
419 colourMenu.add(helixColour);
420 colourMenu.add(strandColour);
421 colourMenu.add(turnColour);
422 colourMenu.add(buriedColour);
423 colourMenu.add(purinePyrimidineColour);
426 * add any user-defined colours that are loaded
428 Map<String, UserColourScheme> userColourSchemes = UserDefinedColours
429 .getUserColourSchemes();
430 if (userColourSchemes != null)
432 for (String schemeName : userColourSchemes.keySet())
434 final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
436 radioItem.addActionListener(new ActionListener()
439 public void actionPerformed(ActionEvent evt)
441 userColour_actionPerformed(evt);
444 colourMenu.add(radioItem);
445 colourButtons.add(radioItem);
448 colourMenu.add(userColour);
449 colourMenu.add(viewerColour);
450 colourMenu.add(backGround);
452 colourButtons.add(seqColour);
453 colourButtons.add(chainColour);
454 colourButtons.add(chargeColour);
455 colourButtons.add(zappoColour);
456 colourButtons.add(taylorColour);
457 colourButtons.add(hydroColour);
458 colourButtons.add(helixColour);
459 colourButtons.add(strandColour);
460 colourButtons.add(turnColour);
461 colourButtons.add(buriedColour);
462 colourButtons.add(purinePyrimidineColour);
463 colourButtons.add(userColour);
464 colourButtons.add(viewerColour);
467 protected void fitToWindow_actionPerformed()
471 protected void highlightSelection_actionPerformed()
475 protected void viewerColour_actionPerformed(ActionEvent actionEvent)
479 protected void alignStructs_actionPerformed(ActionEvent actionEvent)
483 public void pdbFile_actionPerformed(ActionEvent actionEvent)
488 public void png_actionPerformed(ActionEvent actionEvent)
493 public void eps_actionPerformed(ActionEvent actionEvent)
498 public void viewMapping_actionPerformed(ActionEvent actionEvent)
503 public void seqColour_actionPerformed(ActionEvent actionEvent)
508 public void chainColour_actionPerformed(ActionEvent actionEvent)
513 public void chargeColour_actionPerformed(ActionEvent actionEvent)
518 public void zappoColour_actionPerformed(ActionEvent actionEvent)
523 public void taylorColour_actionPerformed(ActionEvent actionEvent)
528 public void hydroColour_actionPerformed(ActionEvent actionEvent)
533 public void helixColour_actionPerformed(ActionEvent actionEvent)
538 public void strandColour_actionPerformed(ActionEvent actionEvent)
543 public void turnColour_actionPerformed(ActionEvent actionEvent)
548 public void buriedColour_actionPerformed(ActionEvent actionEvent)
553 public void nucleotideColour_actionPerformed(ActionEvent actionEvent)
558 public void purinePyrimidineColour_actionPerformed(ActionEvent actionEvent)
563 public void userColour_actionPerformed(ActionEvent actionEvent)
568 public void backGround_actionPerformed(ActionEvent actionEvent)
573 public void showHelp_actionPerformed(ActionEvent actionEvent)
579 // return bindingModel;
582 // public void setBindingModel(AAStructureBindingModel bindingModel)
584 // this.bindingModel = bindingModel;