X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=89534875d3e0fdff6de3f0461bac0f00ce75afdf;hb=470bdf4991a8cb9d47f2bc572a2bc13b09f7565a;hp=0d28a707d49c44dfef1cfccd1f4433f1aa50b4d4;hpb=9709ea1f5cfd18e119b0fdca9ead402fc53ddb8a;p=jalview.git diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index 0d28a70..8953487 100644 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -33,7 +33,6 @@ import jalview.datamodel.Annotation; import jalview.datamodel.ColumnSelection; import jalview.datamodel.DBRefEntry; import jalview.datamodel.PDBEntry; -import jalview.datamodel.Sequence; import jalview.datamodel.SequenceFeature; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; @@ -62,6 +61,7 @@ import jalview.util.UrlLink; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Hashtable; @@ -137,7 +137,7 @@ public class PopupMenu extends JPopupMenu JMenuItem sequenceDetails = new JMenuItem(); JMenuItem sequenceSelDetails = new JMenuItem(); - + JMenuItem makeReferenceSeq = new JMenuItem(); JMenuItem chooseAnnotations = new JMenuItem(); @@ -204,7 +204,7 @@ public class PopupMenu extends JPopupMenu JMenu jMenu1 = new JMenu(); - JMenuItem proteinStructureMenu = new JMenuItem(); + JMenuItem pdbStructureDialog = new JMenuItem(); JMenu rnaStructureMenu = new JMenu(); @@ -215,19 +215,6 @@ public class PopupMenu extends JPopupMenu JMenuItem hideInsertions = new JMenuItem(); /** - * Creates a new PopupMenu object. - * - * @param ap - * DOCUMENT ME! - * @param seq - * DOCUMENT ME! - */ - public PopupMenu(final AlignmentPanel ap, Sequence seq, Vector links) - { - this(ap, seq, links, null); - } - - /** * * @param ap * @param seq @@ -235,7 +222,7 @@ public class PopupMenu extends JPopupMenu * @param groupLinks */ public PopupMenu(final AlignmentPanel ap, final SequenceI seq, - Vector links, Vector groupLinks) + List links, List groupLinks) { // ///////////////////////////////////////////////////////// // If this is activated from the sequence panel, the user may want to @@ -317,75 +304,86 @@ public class PopupMenu extends JPopupMenu sequenceMenu.setText(sequence.getName()); if (seq == ap.av.getAlignment().getSeqrep()) { - makeReferenceSeq.setText("Unmark representative"); - } else { - makeReferenceSeq.setText("Mark as representative"); + makeReferenceSeq.setText(MessageManager + .getString("action.unmark_as_reference")); + } + else + { + makeReferenceSeq.setText(MessageManager + .getString("action.set_as_reference")); } - if (ap.av.getAlignment().isNucleotide() == false) + if (!ap.av.getAlignment().isNucleotide()) { remove(rnaStructureMenu); } - - if (ap.av.getAlignment().isNucleotide() == true) + else { - AlignmentAnnotation[] aa = ap.av.getAlignment() + int origCount = rnaStructureMenu.getItemCount(); + /* + * add menu items to 2D-render any alignment or sequence secondary + * structure annotation + */ + AlignmentAnnotation[] aas = ap.av.getAlignment() .getAlignmentAnnotation(); - for (int i = 0; aa != null && i < aa.length; i++) + if (aas != null) { - if (aa[i].isValidStruc() && aa[i].sequenceRef == null) + for (final AlignmentAnnotation aa : aas) { - final String rnastruc = aa[i].getRNAStruc(); - final String structureLine = aa[i].label + " (alignment)"; - menuItem = new JMenuItem(); - menuItem.setText(MessageManager.formatMessage( - "label.2d_rna_structure_line", new Object[] - { structureLine })); - menuItem.addActionListener(new java.awt.event.ActionListener() + if (aa.isValidStruc() && aa.sequenceRef == null) { - @Override - public void actionPerformed(ActionEvent e) + /* + * valid alignment RNA secondary structure annotation + */ + menuItem = new JMenuItem(); + menuItem.setText(MessageManager.formatMessage( + "label.2d_rna_structure_line", + new Object[] { aa.label })); + menuItem.addActionListener(new java.awt.event.ActionListener() { - new AppVarna(structureLine, seq, seq.getSequenceAsString(), - rnastruc, seq.getName(), ap); - System.out.println("end"); - } - }); - rnaStructureMenu.add(menuItem); + @Override + public void actionPerformed(ActionEvent e) + { + new AppVarna(seq, aa, ap); + } + }); + rnaStructureMenu.add(menuItem); + } } } - if (seq.getAnnotation() != null) { - AlignmentAnnotation seqAnno[] = seq.getAnnotation(); - for (int i = 0; i < seqAnno.length; i++) + AlignmentAnnotation seqAnns[] = seq.getAnnotation(); + for (final AlignmentAnnotation aa : seqAnns) { - if (seqAnno[i].isValidStruc()) + if (aa.isValidStruc()) { - final String rnastruc = seqAnno[i].getRNAStruc(); - + /* + * valid sequence RNA secondary structure annotation + */ // TODO: make rnastrucF a bit more nice menuItem = new JMenuItem(); menuItem.setText(MessageManager.formatMessage( - "label.2d_rna_sequence_name", new Object[] - { seq.getName() })); + "label.2d_rna_sequence_name", + new Object[] { seq.getName() })); menuItem.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO: VARNA does'nt print gaps in the sequence - - new AppVarna(seq.getName() + " structure", seq, seq - .getSequenceAsString(), rnastruc, seq.getName(), - ap); + new AppVarna(seq, aa, ap); } }); rnaStructureMenu.add(menuItem); } } } + if (rnaStructureMenu.getItemCount() == origCount) + { + remove(rnaStructureMenu); + } } menuItem = new JMenuItem( @@ -404,8 +402,8 @@ public class PopupMenu extends JPopupMenu && ap.av.getSelectionGroup().getSize() > 1) { menuItem = new JMenuItem(MessageManager.formatMessage( - "label.represent_group_with", new Object[] - { seq.getName() })); + "label.represent_group_with", + new Object[] { seq.getName() })); menuItem.addActionListener(new java.awt.event.ActionListener() { @Override @@ -473,8 +471,7 @@ public class PopupMenu extends JPopupMenu if (sg != null && sg.getSize() > 0) { groupName.setText(MessageManager.formatMessage("label.name_param", - new Object[] - { sg.getName() })); + new Object[] { sg.getName() })); groupName.setText(MessageManager .getString("label.edit_name_and_description_current_group")); @@ -554,7 +551,7 @@ public class PopupMenu extends JPopupMenu SequenceI sqass = null; for (SequenceI sq : ap.av.getSequenceSelection()) { - Vector pes = sq.getDatasetSequence().getPDBId(); + Vector pes = sq.getDatasetSequence().getAllPDBEntries(); if (pes != null && pes.size() > 0) { reppdb.put(pes.get(0).getId(), pes.get(0)); @@ -598,7 +595,7 @@ public class PopupMenu extends JPopupMenu if (seq == null) { sequenceMenu.setVisible(false); - proteinStructureMenu.setVisible(false); + pdbStructureDialog.setVisible(false); rnaStructureMenu.setVisible(false); } @@ -606,10 +603,10 @@ public class PopupMenu extends JPopupMenu { JMenu linkMenu = new JMenu(MessageManager.getString("action.link")); - Vector linkset = new Vector(); + List linkset = new ArrayList(); for (int i = 0; i < links.size(); i++) { - String link = links.elementAt(i).toString(); + String link = links.get(i); UrlLink urlLink = null; try { @@ -632,8 +629,7 @@ public class PopupMenu extends JPopupMenu // collect matching db-refs DBRefEntry[] dbr = jalview.util.DBRefUtils.selectRefs( - seq.getDBRef(), new String[] - { urlLink.getTarget() }); + seq.getDBRef(), new String[] { urlLink.getTarget() }); // collect id string too String id = seq.getName(); String descr = seq.getDescription(); @@ -661,7 +657,7 @@ public class PopupMenu extends JPopupMenu { if (!linkset.contains(urls[u] + "|" + urls[u + 1])) { - linkset.addElement(urls[u] + "|" + urls[u + 1]); + linkset.add(urls[u] + "|" + urls[u + 1]); addshowLink(linkMenu, label + "|" + urls[u], urls[u + 1]); } @@ -679,7 +675,7 @@ public class PopupMenu extends JPopupMenu { if (!linkset.contains(urls[u] + "|" + urls[u + 1])) { - linkset.addElement(urls[u] + "|" + urls[u + 1]); + linkset.add(urls[u] + "|" + urls[u + 1]); addshowLink(linkMenu, label, urls[u + 1]); } } @@ -697,7 +693,7 @@ public class PopupMenu extends JPopupMenu { if (!linkset.contains(urls[u] + "|" + urls[u + 1])) { - linkset.addElement(urls[u] + "|" + urls[u + 1]); + linkset.add(urls[u] + "|" + urls[u + 1]); addshowLink(linkMenu, label, urls[u + 1]); } } @@ -708,7 +704,7 @@ public class PopupMenu extends JPopupMenu { if (!linkset.contains(label + "|" + urlLink.getUrl_prefix())) { - linkset.addElement(label + "|" + urlLink.getUrl_prefix()); + linkset.add(label + "|" + urlLink.getUrl_prefix()); // Add a non-dynamic link addshowLink(linkMenu, label, urlLink.getUrl_prefix()); } @@ -764,17 +760,15 @@ public class PopupMenu extends JPopupMenu */ Map>> shownTypes = new LinkedHashMap>>(); Map>> hiddenTypes = new LinkedHashMap>>(); - AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes, - hiddenTypes, - AlignmentAnnotationUtils.asList(annotations), - forSequences); + AlignmentAnnotationUtils.getShownHiddenTypes(shownTypes, hiddenTypes, + AlignmentAnnotationUtils.asList(annotations), forSequences); for (String calcId : hiddenTypes.keySet()) { for (List type : hiddenTypes.get(calcId)) { - addAnnotationTypeToShowHide(showMenu, forSequences, - calcId, type, false, true); + addAnnotationTypeToShowHide(showMenu, forSequences, calcId, type, + false, true); } } // grey out 'show annotations' if none are hidden @@ -784,8 +778,8 @@ public class PopupMenu extends JPopupMenu { for (List type : shownTypes.get(calcId)) { - addAnnotationTypeToShowHide(hideMenu, forSequences, - calcId, type, false, false); + addAnnotationTypeToShowHide(hideMenu, forSequences, calcId, type, + false, false); } } // grey out 'hide annotations' if none are shown @@ -846,15 +840,15 @@ public class PopupMenu extends JPopupMenu @Override public void actionPerformed(ActionEvent e) { - AlignmentUtils.showOrHideSequenceAnnotations(ap.getAlignment(), types, - forSequences, allTypes, actionIsShow); + AlignmentUtils.showOrHideSequenceAnnotations(ap.getAlignment(), + types, forSequences, allTypes, actionIsShow); refresh(); } }); showOrHideMenu.add(item); } - private void buildGroupURLMenu(SequenceGroup sg, Vector groupLinks) + private void buildGroupURLMenu(SequenceGroup sg, List groupLinks) { // TODO: usability: thread off the generation of group url content so root @@ -863,8 +857,8 @@ public class PopupMenu extends JPopupMenu // ID/regex match URLs groupLinksMenu = new JMenu( MessageManager.getString("action.group_link")); - JMenu[] linkMenus = new JMenu[] - { null, new JMenu(MessageManager.getString("action.ids")), + JMenu[] linkMenus = new JMenu[] { null, + new JMenu(MessageManager.getString("action.ids")), new JMenu(MessageManager.getString("action.sequences")), new JMenu(MessageManager.getString("action.ids_sequences")) }; // three // types @@ -899,8 +893,7 @@ public class PopupMenu extends JPopupMenu if (sarray == null) { sarray = new Object[2]; - sarray[0] = new int[] - { 0 }; + sarray[0] = new int[] { 0 }; sarray[1] = new String[seqs.length]; commonDbrefs.put(src, sarray); @@ -923,7 +916,7 @@ public class PopupMenu extends JPopupMenu // to user for (int i = 0; i < groupLinks.size(); i++) { - String link = groupLinks.elementAt(i).toString(); + String link = groupLinks.get(i); GroupUrlLink urlLink = null; try { @@ -1020,8 +1013,7 @@ public class PopupMenu extends JPopupMenu { JMenuItem item = new JMenuItem(label); item.setToolTipText(MessageManager.formatMessage( - "label.open_url_param", new Object[] - { url })); + "label.open_url_param", new Object[] { url })); item.addActionListener(new java.awt.event.ActionListener() { @Override @@ -1060,8 +1052,7 @@ public class PopupMenu extends JPopupMenu JMenuItem item = new JMenuItem(label); item.setToolTipText(MessageManager.formatMessage( "label.open_url_seqs_param", - new Object[] - { urlgenerator.getUrl_prefix(), + new Object[] { urlgenerator.getUrl_prefix(), urlgenerator.getNumberInvolved(urlstub) })); // TODO: put in info about what is being sent. item.addActionListener(new java.awt.event.ActionListener() @@ -1121,7 +1112,7 @@ public class PopupMenu extends JPopupMenu } }); chooseAnnotations.setText(MessageManager - .getString("label.choose_annotations") + "..."); + .getString("action.choose_annotations")); chooseAnnotations.addActionListener(new java.awt.event.ActionListener() { @Override @@ -1131,7 +1122,7 @@ public class PopupMenu extends JPopupMenu } }); sequenceDetails.setText(MessageManager - .getString("label.sequence_details") + "..."); + .getString("label.sequence_details")); sequenceDetails.addActionListener(new java.awt.event.ActionListener() { @Override @@ -1141,7 +1132,7 @@ public class PopupMenu extends JPopupMenu } }); sequenceSelDetails.setText(MessageManager - .getString("label.sequence_details") + "..."); + .getString("label.sequence_details")); sequenceSelDetails .addActionListener(new java.awt.event.ActionListener() { @@ -1340,15 +1331,14 @@ public class PopupMenu extends JPopupMenu } }); jMenu1.setText(MessageManager.getString("label.group")); - proteinStructureMenu.setText(MessageManager - .getString("label.view_protein_structure")); - proteinStructureMenu.addActionListener(new ActionListener() + pdbStructureDialog.setText(MessageManager + .getString("label.show_pdbstruct_dialog")); + pdbStructureDialog.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionEvent) { - SequenceI[] selectedSeqs = new SequenceI[] - { sequence }; + SequenceI[] selectedSeqs = new SequenceI[] { sequence }; if (ap.av.getSelectionGroup() != null) { selectedSeqs = ap.av.getSequenceSelection(); @@ -1375,15 +1365,16 @@ public class PopupMenu extends JPopupMenu .getString("label.mark_as_representative")); makeReferenceSeq.addActionListener(new ActionListener() { - + @Override public void actionPerformed(ActionEvent actionEvent) { makeReferenceSeq_actionPerformed(actionEvent); - + } }); - hideInsertions.setText(MessageManager.getString("label.hide_insertions")); + hideInsertions.setText(MessageManager + .getString("label.hide_insertions")); hideInsertions.addActionListener(new ActionListener() { @@ -1403,8 +1394,8 @@ public class PopupMenu extends JPopupMenu add(groupMenu); add(sequenceMenu); add(rnaStructureMenu); - add(proteinStructureMenu); - if (sequence!=null) + add(pdbStructureDialog); + if (sequence != null) { add(hideInsertions); } @@ -1662,8 +1653,8 @@ public class PopupMenu extends JPopupMenu * @param menuItem * @param forSequences */ - protected void configureReferenceAnnotationsMenu( - JMenuItem menuItem, List forSequences) + protected void configureReferenceAnnotationsMenu(JMenuItem menuItem, + List forSequences) { menuItem.setEnabled(false); @@ -1759,6 +1750,7 @@ public class PopupMenu extends JPopupMenu } refresh(); } + protected void sequenceSelectionDetails_actionPerformed() { createSequenceDetailsReport(ap.av.getSequenceSelection()); @@ -1766,8 +1758,7 @@ public class PopupMenu extends JPopupMenu protected void sequenceDetails_actionPerformed() { - createSequenceDetailsReport(new SequenceI[] - { sequence }); + createSequenceDetailsReport(new SequenceI[] { sequence }); } public void createSequenceDetailsReport(SequenceI[] sequences) @@ -1780,8 +1771,8 @@ public class PopupMenu extends JPopupMenu + MessageManager .formatMessage( "label.create_sequence_details_report_annotation_for", - new Object[] - { seq.getDisplayId(true) }) + "

"); + new Object[] { seq.getDisplayId(true) }) + + "

"); new SequenceAnnotationReport(null) .createSequenceAnnotationReport( contents, @@ -1790,8 +1781,7 @@ public class PopupMenu extends JPopupMenu true, false, (ap.getSeqPanel().seqCanvas.fr != null) ? ap - .getSeqPanel().seqCanvas.fr - .getMinMax() + .getSeqPanel().seqCanvas.fr.getMinMax() : null); contents.append("

"); } @@ -1799,9 +1789,9 @@ public class PopupMenu extends JPopupMenu Desktop.addInternalFrame(cap, MessageManager.formatMessage( "label.sequence_details_for", - (sequences.length == 1 ? new Object[] - { sequences[0].getDisplayId(true) } : new Object[] - { MessageManager.getString("label.selection") })), 500, 400); + (sequences.length == 1 ? new Object[] { sequences[0] + .getDisplayId(true) } : new Object[] { MessageManager + .getString("label.selection") })), 500, 400); } @@ -2307,8 +2297,7 @@ public class PopupMenu extends JPopupMenu SequenceGroup sg = ap.av.getSelectionGroup(); if (sg == null || sg.getSize() < 1) { - ap.av.hideSequence(new SequenceI[] - { sequence }); + ap.av.hideSequence(new SequenceI[] { sequence }); return; } @@ -2347,8 +2336,7 @@ public class PopupMenu extends JPopupMenu if (sg != null) { List startEnd = ap.av.getVisibleRegionBoundaries( - sg.getStartRes(), - sg.getEndRes() + 1); + sg.getStartRes(), sg.getEndRes() + 1); String description; int caseChange; @@ -2386,8 +2374,8 @@ public class PopupMenu extends JPopupMenu CutAndPasteTransfer cap = new CutAndPasteTransfer(); cap.setForInput(null); Desktop.addInternalFrame(cap, MessageManager.formatMessage( - "label.alignment_output_command", new Object[] - { e.getActionCommand() }), 600, 500); + "label.alignment_output_command", + new Object[] { e.getActionCommand() }), 600, 500); String[] omitHidden = null; @@ -2395,8 +2383,8 @@ public class PopupMenu extends JPopupMenu // or we simply trust the user wants // wysiwig behaviour - cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), - ap.av, true)); + cap.setText(new FormatAdapter(ap).formatSequences(e.getActionCommand(), + ap, true)); } public void pdbFromFile_actionPerformed() @@ -2405,11 +2393,11 @@ public class PopupMenu extends JPopupMenu jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new jalview.io.JalviewFileView()); chooser.setDialogTitle(MessageManager.formatMessage( - "label.select_pdb_file_for", new Object[] - { sequence.getDisplayId(false) })); + "label.select_pdb_file_for", + new Object[] { sequence.getDisplayId(false) })); chooser.setToolTipText(MessageManager.formatMessage( - "label.load_pdb_file_associate_with_sequence", new Object[] - { sequence.getDisplayId(false) })); + "label.load_pdb_file_associate_with_sequence", + new Object[] { sequence.getDisplayId(false) })); int value = chooser.showOpenDialog(null); @@ -2424,7 +2412,6 @@ public class PopupMenu extends JPopupMenu } - public void enterPDB_actionPerformed() { String id = JOptionPane.showInternalInputDialog(Desktop.desktop,