/* * Jalview - A Sequence Alignment Editor and Viewer * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.gui; import MCview.*; import jalview.analysis.*; import jalview.datamodel.*; import jalview.schemes.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; /** * DOCUMENT ME! * * @author $author$ * @version $Revision$ */ public class PopupMenu extends JPopupMenu { JMenu groupMenu = new JMenu(); JMenuItem groupName = new JMenuItem(); protected JRadioButtonMenuItem clustalColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem zappoColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem taylorColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem hydrophobicityColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem helixColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem strandColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem turnColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem buriedColour = new JRadioButtonMenuItem(); protected JCheckBoxMenuItem abovePIDColour = new JCheckBoxMenuItem(); protected JRadioButtonMenuItem userDefinedColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem PIDColour = new JRadioButtonMenuItem(); protected JRadioButtonMenuItem BLOSUM62Colour = new JRadioButtonMenuItem(); JRadioButtonMenuItem noColourmenuItem = new JRadioButtonMenuItem(); protected JCheckBoxMenuItem conservationMenuItem = new JCheckBoxMenuItem(); AlignmentPanel ap; JMenu sequenceMenu = new JMenu(); JMenuItem sequenceName = new JMenuItem(); Sequence sequence; JMenuItem unGroupMenuItem = new JMenuItem(); JMenuItem outline = new JMenuItem(); JRadioButtonMenuItem nucleotideMenuItem = new JRadioButtonMenuItem(); JMenu colourMenu = new JMenu(); JCheckBoxMenuItem showBoxes = new JCheckBoxMenuItem(); JCheckBoxMenuItem showText = new JCheckBoxMenuItem(); JCheckBoxMenuItem showColourText = new JCheckBoxMenuItem(); /** * Creates a new PopupMenu object. * * @param ap DOCUMENT ME! * @param seq DOCUMENT ME! */ public PopupMenu(final AlignmentPanel ap, Sequence seq) { /////////////////////////////////////////////////////////// // If this is activated from the sequence panel, the user may want to // edit or annotate a particular residue. Therefore display the residue menu // // If from the IDPanel, we must display the sequence menu ////////////////////////////////////////////////////////// this.ap = ap; sequence = seq; ButtonGroup colours = new ButtonGroup(); colours.add(noColourmenuItem); colours.add(clustalColour); colours.add(zappoColour); colours.add(taylorColour); colours.add(hydrophobicityColour); colours.add(helixColour); colours.add(strandColour); colours.add(turnColour); colours.add(buriedColour); colours.add(abovePIDColour); colours.add(userDefinedColour); colours.add(PIDColour); colours.add(BLOSUM62Colour); try { jbInit(); } catch (Exception e) { e.printStackTrace(); } if ((seq != null) && seq.getDatasetSequence().getPDBId() != null) { java.util.Enumeration e = seq.getDatasetSequence().getPDBId().elements(); while(e.hasMoreElements()) { final PDBEntry pdb = (PDBEntry)e.nextElement(); JMenuItem pdbMenuItem = new JMenuItem(); pdbMenuItem.setText("View PDB entry: "+pdb.getId()); pdbMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { new PDBViewer(pdb, sequence, ap.seqPanel.seqCanvas); } }); sequenceMenu.add(pdbMenuItem); } } SequenceGroup sg = ap.av.getSelectionGroup(); if (sg != null) { groupName.setText(sg.getName()); if (sg.cs instanceof ZappoColourScheme) { zappoColour.setSelected(true); } else if (sg.cs instanceof TaylorColourScheme) { taylorColour.setSelected(true); } else if (sg.cs instanceof PIDColourScheme) { PIDColour.setSelected(true); } else if (sg.cs instanceof Blosum62ColourScheme) { BLOSUM62Colour.setSelected(true); } else if (sg.cs instanceof UserColourScheme) { userDefinedColour.setSelected(true); } else if (sg.cs instanceof HydrophobicColourScheme) { hydrophobicityColour.setSelected(true); } else if (sg.cs instanceof HelixColourScheme) { helixColour.setSelected(true); } else if (sg.cs instanceof StrandColourScheme) { strandColour.setSelected(true); } else if (sg.cs instanceof TurnColourScheme) { turnColour.setSelected(true); } else if (sg.cs instanceof BuriedColourScheme) { buriedColour.setSelected(true); } else if (sg.cs instanceof ClustalxColourScheme) { clustalColour.setSelected(true); } else { noColourmenuItem.setSelected(true); } if (sg.cs!=null && sg.cs.conservationApplied()) { conservationMenuItem.setSelected(true); } showText.setSelected(sg.getDisplayText()); showColourText.setSelected(sg.getColourText()); showBoxes.setSelected(sg.getDisplayBoxes()); } if (!ap.av.alignment.getGroups().contains(sg)) { unGroupMenuItem.setVisible(false); } else { groupMenu.insertSeparator(3); } if (seq == null) { sequenceMenu.setVisible(false); } else { java.util.Vector links = Preferences.sequenceURLLinks; JMenu linkMenu = new JMenu("Link"); JMenuItem item; for(int i=0; i -1) { JOptionPane.showMessageDialog(ap, "Spaces have been converted to \"_\"", "No spaces allowed in Sequence Name", JOptionPane.WARNING_MESSAGE); } s = s.replace(' ', '_'); sequence.setName(s); ap.repaint(); } } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ void unGroupMenuItem_actionPerformed(ActionEvent e) { SequenceGroup sg = ap.av.getSelectionGroup(); ap.av.alignment.deleteGroup(sg); ap.av.setSelectionGroup(null); refresh(); } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ protected void outline_actionPerformed(ActionEvent e) { SequenceGroup sg = getGroup(); Color col = JColorChooser.showDialog(this, "Select Outline Colour", Color.BLUE); if (col != null) { sg.setOutlineColour(col); } refresh(); } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void showBoxes_actionPerformed(ActionEvent e) { getGroup().setDisplayBoxes(showBoxes.isSelected()); refresh(); } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void showText_actionPerformed(ActionEvent e) { getGroup().setDisplayText(showText.isSelected()); refresh(); } /** * DOCUMENT ME! * * @param e DOCUMENT ME! */ public void showColourText_actionPerformed(ActionEvent e) { getGroup().setColourText(showColourText.isSelected()); refresh(); } public void showLink(String url) { try { jalview.util.BrowserLauncher.openURL(url); } catch (Exception ex) { JOptionPane.showInternalMessageDialog(Desktop.desktop, "Unixers: Couldn't find default web browser." +"\nAdd the full path to your browser in Preferences.", "Web browser not found", JOptionPane.WARNING_MESSAGE ); ex.printStackTrace(); } } }