X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=846ba6447d583209193997b08639755b3da5a850;hb=90ae01c1c1504e0ae42817f78116f1d35b317c47;hp=a7f070dedc9433befb0a1a4aa50377bc00baf39b;hpb=4cea7a0328724b90a6a7c16ae8c926e0cc12cedd;p=jalview.git
diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java
index a7f070d..846ba64 100644
--- a/src/jalview/gui/PopupMenu.java
+++ b/src/jalview/gui/PopupMenu.java
@@ -1,2079 +1,2059 @@
-/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
- *
- * This file is part of Jalview.
- *
- * Jalview 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 3 of the License, or (at your option) any later version.
- *
- * Jalview 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 Jalview. If not, see " + MessageManager.formatMessage("label.create_sequence_details_report_annotation_for", new String[]{seq.getDisplayId(true)})
- + "
"); - new SequenceAnnotationReport(null) - .createSequenceAnnotationReport( - contents, - seq, - true, - true, - false, - (ap.seqPanel.seqCanvas.fr != null) ? ap.seqPanel.seqCanvas.fr.minmax - : null); - contents.append("
"); - } - cap.setText("" + contents.toString() + ""); - - Desktop.instance.addInternalFrame(cap, MessageManager.formatMessage("label.sequece_details_for", (sequences.length == 1 ? new String[]{sequences[0].getDisplayId(true)}: new String[]{MessageManager.getString("label.selection")})) - ,500, 400); - - } - - protected void showNonconserved_actionPerformed() - { - getGroup().setShowNonconserved(displayNonconserved.isSelected()); - refresh(); - } - - /** - * call to refresh view after settings change - */ - void refresh() - { - ap.updateAnnotation(); - ap.paintAlignment(true); - - PaintRefresher.Refresh(this, ap.av.getSequenceSetId()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void clustalColour_actionPerformed() - { - SequenceGroup sg = getGroup(); - sg.cs = new ClustalxColourScheme(sg, ap.av.getHiddenRepSequences()); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void zappoColour_actionPerformed() - { - getGroup().cs = new ZappoColourScheme(); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void taylorColour_actionPerformed() - { - getGroup().cs = new TaylorColourScheme(); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void hydrophobicityColour_actionPerformed() - { - getGroup().cs = new HydrophobicColourScheme(); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void helixColour_actionPerformed() - { - getGroup().cs = new HelixColourScheme(); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void strandColour_actionPerformed() - { - getGroup().cs = new StrandColourScheme(); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void turnColour_actionPerformed() - { - getGroup().cs = new TurnColourScheme(); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void buriedColour_actionPerformed() - { - getGroup().cs = new BuriedColourScheme(); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - public void nucleotideMenuItem_actionPerformed() - { - getGroup().cs = new NucleotideColourScheme(); - refresh(); - } - - protected void purinePyrimidineColour_actionPerformed() - { - getGroup().cs = new PurinePyrimidineColourScheme(); - refresh(); - } - - /* - * protected void covariationColour_actionPerformed() { getGroup().cs = new - * CovariationColourScheme(sequence.getAnnotation()[0]); refresh(); } - */ - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void abovePIDColour_actionPerformed() - { - SequenceGroup sg = getGroup(); - if (sg.cs == null) - { - return; - } - - if (abovePIDColour.isSelected()) - { - sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(ap.av.getHiddenRepSequences()), - sg.getStartRes(), sg.getEndRes() + 1)); - - int threshold = SliderPanel.setPIDSliderSource(ap, sg.cs, getGroup() - .getName()); - - sg.cs.setThreshold(threshold, ap.av.getIgnoreGapsConsensus()); - - SliderPanel.showPIDSlider(); - } - else - // remove PIDColouring - { - sg.cs.setThreshold(0, ap.av.getIgnoreGapsConsensus()); - } - - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void userDefinedColour_actionPerformed(ActionEvent e) - { - SequenceGroup sg = getGroup(); - - if (e.getSource().equals(userDefinedColour)) - { - new UserDefinedColours(ap, sg); - } - else - { - UserColourScheme udc = (UserColourScheme) UserDefinedColours - .getUserColourSchemes().get(e.getActionCommand()); - - sg.cs = udc; - } - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void PIDColour_actionPerformed() - { - SequenceGroup sg = getGroup(); - sg.cs = new PIDColourScheme(); - sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(ap.av.getHiddenRepSequences()), - sg.getStartRes(), sg.getEndRes() + 1)); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void BLOSUM62Colour_actionPerformed() - { - SequenceGroup sg = getGroup(); - - sg.cs = new Blosum62ColourScheme(); - - sg.cs.setConsensus(AAFrequency.calculate( - sg.getSequences(ap.av.getHiddenRepSequences()), - sg.getStartRes(), sg.getEndRes() + 1)); - - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void noColourmenuItem_actionPerformed() - { - getGroup().cs = null; - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void conservationMenuItem_actionPerformed() - { - SequenceGroup sg = getGroup(); - if (sg.cs == null) - { - return; - } - - if (conservationMenuItem.isSelected()) - { - Conservation c = new Conservation(MessageManager.getString("label.group"), - ResidueProperties.propHash, 3, sg.getSequences(ap.av - .getHiddenRepSequences()), sg.getStartRes(), - sg.getEndRes() + 1); - - c.calculate(); - c.verdict(false, ap.av.getConsPercGaps()); - - sg.cs.setConservation(c); - - SliderPanel.setConservationSlider(ap, sg.cs, sg.getName()); - SliderPanel.showConservationSlider(); - } - else - // remove ConservationColouring - { - sg.cs.setConservation(null); - } - - refresh(); - } - - public void annotationMenuItem_actionPerformed(ActionEvent actionEvent) - { - SequenceGroup sg = getGroup(); - if (sg == null) - { - return; - } - - AnnotationColourGradient acg = new AnnotationColourGradient( - sequence.getAnnotation()[0], null, - AnnotationColourGradient.NO_THRESHOLD); - - acg.setPredefinedColours(true); - sg.cs = acg; - - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void groupName_actionPerformed() - { - - SequenceGroup sg = getGroup(); - EditNameDialog dialog = new EditNameDialog(sg.getName(), - sg.getDescription(), " " + MessageManager.getString("label.group_name") + " ", - MessageManager.getString("label.group_description") + " ", MessageManager.getString("label.edit_group_name_description"), - ap.alignFrame); - - if (!dialog.accept) - { - return; - } - - sg.setName(dialog.getName()); - sg.setDescription(dialog.getDescription()); - refresh(); - } - - /** - * Get selection group - adding it to the alignment if necessary. - * - * @return sequence group to operate on - */ - SequenceGroup getGroup() - { - SequenceGroup sg = ap.av.getSelectionGroup(); - // this method won't add a new group if it already exists - if (sg != null) - { - ap.av.getAlignment().addGroup(sg); - } - - return sg; - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - void sequenceName_actionPerformed() - { - EditNameDialog dialog = new EditNameDialog(sequence.getName(), - sequence.getDescription(), " " + MessageManager.getString("label.sequence_name") + " ", - MessageManager.getString("label.sequence_description") + " ", MessageManager.getString("label.edit_sequence_name_description"), - ap.alignFrame); - - if (!dialog.accept) - { - return; - } - - if (dialog.getName() != null) - { - if (dialog.getName().indexOf(" ") > -1) - { - JOptionPane.showMessageDialog(ap, - MessageManager.getString("label.spaces_converted_to_backslashes"), - MessageManager.getString("label.no_spaces_allowed_sequence_name"), - JOptionPane.WARNING_MESSAGE); - } - - sequence.setName(dialog.getName().replace(' ', '_')); - ap.paintAlignment(false); - } - - sequence.setDescription(dialog.getDescription()); - - ap.av.firePropertyChange("alignment", null, ap.av.getAlignment() - .getSequences()); - - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - void unGroupMenuItem_actionPerformed() - { - SequenceGroup sg = ap.av.getSelectionGroup(); - ap.av.getAlignment().deleteGroup(sg); - ap.av.setSelectionGroup(null); - refresh(); - } - void createGroupMenuItem_actionPerformed() - { - getGroup(); // implicitly creates group - note - should apply defaults / use standard alignment window logic for this - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - protected void outline_actionPerformed() - { - SequenceGroup sg = getGroup(); - Color col = JColorChooser.showDialog(this, MessageManager.getString("label.select_outline_colour"), - Color.BLUE); - - if (col != null) - { - sg.setOutlineColour(col); - } - - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - public void showBoxes_actionPerformed() - { - getGroup().setDisplayBoxes(showBoxes.isSelected()); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - public void showText_actionPerformed() - { - getGroup().setDisplayText(showText.isSelected()); - refresh(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - public void showColourText_actionPerformed() - { - getGroup().setColourText(showColourText.isSelected()); - refresh(); - } - - public void showLink(String url) - { - try - { - jalview.util.BrowserLauncher.openURL(url); - } catch (Exception ex) - { - JOptionPane - .showInternalMessageDialog( - Desktop.desktop, - MessageManager.getString("label.web_browser_not_found_unix"), - MessageManager.getString("label.web_browser_not_found"), JOptionPane.WARNING_MESSAGE); - - ex.printStackTrace(); - } - } - - void hideSequences(boolean representGroup) - { - SequenceGroup sg = ap.av.getSelectionGroup(); - if (sg == null || sg.getSize() < 1) - { - ap.av.hideSequence(new SequenceI[] - { sequence }); - return; - } - - ap.av.setSelectionGroup(null); - - if (representGroup) - { - ap.av.hideRepSequences(sequence, sg); - - return; - } - - int gsize = sg.getSize(); - SequenceI[] hseqs; - - hseqs = new SequenceI[gsize]; - - int index = 0; - for (int i = 0; i < gsize; i++) - { - hseqs[index++] = sg.getSequenceAt(i); - } - - ap.av.hideSequence(hseqs); - // refresh(); TODO: ? needed ? - ap.av.sendSelection(); - } - - public void copy_actionPerformed() - { - ap.alignFrame.copy_actionPerformed(null); - } - - public void cut_actionPerformed() - { - ap.alignFrame.cut_actionPerformed(null); - } - - void changeCase(ActionEvent e) - { - Object source = e.getSource(); - SequenceGroup sg = ap.av.getSelectionGroup(); - - if (sg != null) - { - int[][] startEnd = ap.av.getVisibleRegionBoundaries(sg.getStartRes(), - sg.getEndRes() + 1); - - String description; - int caseChange; - - if (source == toggle) - { - description = MessageManager.getString("label.toggle_case"); - caseChange = ChangeCaseCommand.TOGGLE_CASE; - } - else if (source == upperCase) - { - description = MessageManager.getString("label.to_upper_case"); - caseChange = ChangeCaseCommand.TO_UPPER; - } - else - { - description = MessageManager.getString("label.to_lower_case"); - caseChange = ChangeCaseCommand.TO_LOWER; - } - - ChangeCaseCommand caseCommand = new ChangeCaseCommand(description, - sg.getSequencesAsArray(ap.av.getHiddenRepSequences()), - startEnd, caseChange); - - ap.alignFrame.addHistoryItem(caseCommand); - - ap.av.firePropertyChange("alignment", null, ap.av.getAlignment() - .getSequences()); - - } - } - - public void outputText_actionPerformed(ActionEvent e) - { - CutAndPasteTransfer cap = new CutAndPasteTransfer(); - cap.setForInput(null); - Desktop.addInternalFrame(cap, - MessageManager.formatMessage("label.alignment_output_command", new String[]{e.getActionCommand()}), 600, 500); - - String[] omitHidden = null; - - System.out.println("PROMPT USER HERE"); // TODO: decide if a prompt happens - // or we simply trust the user wants - // wysiwig behaviour - SequenceGroup sg = ap.av.getSelectionGroup(); - ColumnSelection csel = new ColumnSelection(ap.av.getColumnSelection()); - omitHidden = ap.av.getViewAsString(true); - Alignment oal = new Alignment(ap.av.getSequenceSelection()); - AlignmentAnnotation[] nala = ap.av.getAlignment() - .getAlignmentAnnotation(); - if (nala != null) - { - for (int i = 0; i < nala.length; i++) - { - AlignmentAnnotation na = nala[i]; - oal.addAnnotation(na); - } - } - cap.setText(new FormatAdapter().formatSequences(e.getActionCommand(), - oal, omitHidden, csel, sg)); - oal = null; - } - - public void pdbFromFile_actionPerformed() - { - jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser( - jalview.bin.Cache.getProperty("LAST_DIRECTORY")); - chooser.setFileView(new jalview.io.JalviewFileView()); - chooser.setDialogTitle(MessageManager.formatMessage("label.select_pdb_file_for", new String[]{sequence.getDisplayId(false)})); - chooser.setToolTipText(MessageManager.formatMessage("label.load_pdb_file_associate_with_sequence", new String[]{new Integer(sequence.getDisplayId(false)).toString()})); - - int value = chooser.showOpenDialog(null); - - if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION) - { - String choice = chooser.getSelectedFile().getPath(); - jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice); - new AssociatePdbFileWithSeq().associatePdbWithSeq(choice, - jalview.io.AppletFormatAdapter.FILE, sequence, true); - } - - } - - public void enterPDB_actionPerformed() - { - String id = JOptionPane.showInternalInputDialog(Desktop.desktop, - MessageManager.getString("label.enter_pdb_id"), MessageManager.getString("label.enter_pdb_id"), JOptionPane.QUESTION_MESSAGE); - - if (id != null && id.length() > 0) - { - PDBEntry entry = new PDBEntry(); - entry.setId(id.toUpperCase()); - sequence.getDatasetSequence().addPDBId(entry); - } - } - - public void discoverPDB_actionPerformed() - { - - final SequenceI[] sequences = ((ap.av.getSelectionGroup() == null) ? new SequenceI[] - { sequence } - : ap.av.getSequenceSelection()); - Thread discpdb = new Thread(new Runnable() - { - public void run() - { - - new jalview.ws.DBRefFetcher(sequences, ap.alignFrame) - .fetchDBRefs(false); - } - - }); - discpdb.start(); - } - - public void sequenceFeature_actionPerformed() - { - SequenceGroup sg = ap.av.getSelectionGroup(); - if (sg == null) - { - return; - } - - int rsize = 0, gSize = sg.getSize(); - SequenceI[] rseqs, seqs = new SequenceI[gSize]; - SequenceFeature[] tfeatures, features = new SequenceFeature[gSize]; - - for (int i = 0; i < gSize; i++) - { - int start = sg.getSequenceAt(i).findPosition(sg.getStartRes()); - int end = sg.findEndRes(sg.getSequenceAt(i)); - if (start <= end) - { - seqs[rsize] = sg.getSequenceAt(i).getDatasetSequence(); - features[rsize] = new SequenceFeature(null, null, null, start, end, - "Jalview"); - rsize++; - } - } - rseqs = new SequenceI[rsize]; - tfeatures = new SequenceFeature[rsize]; - System.arraycopy(seqs, 0, rseqs, 0, rsize); - System.arraycopy(features, 0, tfeatures, 0, rsize); - features = tfeatures; - seqs = rseqs; - if (ap.seqPanel.seqCanvas.getFeatureRenderer().amendFeatures(seqs, - features, true, ap)) - { - ap.alignFrame.setShowSeqFeatures(true); - ap.highlightSearchResults(null); - } - } - - public void textColour_actionPerformed() - { - SequenceGroup sg = getGroup(); - if (sg != null) - { - new TextColourChooser().chooseColour(ap, sg); - } - } - - public void colourByStructure(String pdbid) - { - Annotation[] anots = ap.av.getStructureSelectionManager() - .colourSequenceFromStructure(sequence, pdbid); - - AlignmentAnnotation an = new AlignmentAnnotation("Structure", - "Coloured by " + pdbid, anots); - - ap.av.getAlignment().addAnnotation(an); - an.createSequenceMapping(sequence, 0, true); - // an.adjustForAlignment(); - ap.av.getAlignment().setAnnotationIndex(an, 0); - - ap.adjustAnnotationHeight(); - - sequence.addAlignmentAnnotation(an); - - } - - public void editSequence_actionPerformed(ActionEvent actionEvent) - { - SequenceGroup sg = ap.av.getSelectionGroup(); - - if (sg != null) - { - if (sequence == null) - sequence = (Sequence) sg.getSequenceAt(0); - - EditNameDialog dialog = new EditNameDialog( - sequence.getSequenceAsString(sg.getStartRes(), - sg.getEndRes() + 1), null, MessageManager.getString("label.edit_sequence"), null, - MessageManager.getString("label.edit_sequence"), ap.alignFrame); - - if (dialog.accept) - { - EditCommand editCommand = new EditCommand(MessageManager.getString("label.edit_sequences"), - EditCommand.REPLACE, dialog.getName().replace(' ', - ap.av.getGapCharacter()), - sg.getSequencesAsArray(ap.av.getHiddenRepSequences()), - sg.getStartRes(), sg.getEndRes() + 1, ap.av.getAlignment()); - - ap.alignFrame.addHistoryItem(editCommand); - - ap.av.firePropertyChange("alignment", null, ap.av.getAlignment() - .getSequences()); - } - } - } - -} +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview 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 3 + * of the License, or (at your option) any later version. + * + * Jalview 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 Jalview. If not, see+ * Some annotation rows are always rendered together - these can be identified + * by a common graphGroup property > -1. Only one of each group will be marked + * as visible (to avoid duplication of the display). For such groups we add a + * composite type name, e.g. + *
+ * IUPredWS (Long), IUPredWS (Short)
+ *
+ * @param seq
+ */
+ protected void buildAnnotationTypesMenus(JMenu showMenu, JMenu hideMenu,
+ List> linkset)
+ {
+ for (List
" + calcId + "/" + tipEntries.get(calcId));
+ }
+ String tooltipText = JvSwingUtils.wrapTooltip(true,
+ tooltip.toString());
+ menuItem.setToolTipText(tooltipText);
+
+ menuItem.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ addReferenceAnnotations_actionPerformed(candidates);
+ }
+ });
+ }
+ }
+
+ /**
+ * Add annotations to the sequences and to the alignment.
+ *
+ * @param candidates
+ * a map whose keys are sequences on the alignment, and values a list
+ * of annotations to add to each sequence
+ */
+ protected void addReferenceAnnotations_actionPerformed(
+ Map" + MessageManager.formatMessage(
+ "label.create_sequence_details_report_annotation_for",
+ new Object[]
+ { seq.getDisplayId(true) }) + "
"); + new SequenceAnnotationReport(null).createSequenceAnnotationReport( + contents, seq, true, true, + (ap.getSeqPanel().seqCanvas.fr != null) + ? ap.getSeqPanel().seqCanvas.fr.getMinMax() + : null); + contents.append("
"); + } + cap.setText("" + contents.toString() + ""); + + 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); + + } + + protected void showNonconserved_actionPerformed() + { + getGroup().setShowNonconserved(displayNonconserved.isSelected()); + refresh(); + } + + /** + * call to refresh view after settings change + */ + void refresh() + { + ap.updateAnnotation(); + // removed paintAlignment(true) here: + // updateAnnotation calls paintAlignment already, so don't need to call + // again + + PaintRefresher.Refresh(this, ap.av.getSequenceSetId()); + } + + /* + * protected void covariationColour_actionPerformed() { getGroup().cs = new + * CovariationColourScheme(sequence.getAnnotation()[0]); refresh(); } + */ + /** + * DOCUMENT ME! + * + * @param selected + * + * @param e + * DOCUMENT ME! + */ + public void abovePIDColour_actionPerformed(boolean selected) + { + SequenceGroup sg = getGroup(); + if (sg.cs == null) + { + return; + } + + if (selected) + { + sg.cs.setConsensus(AAFrequency.calculate( + sg.getSequences(ap.av.getHiddenRepSequences()), + sg.getStartRes(), sg.getEndRes() + 1)); + + int threshold = SliderPanel.setPIDSliderSource(ap, + sg.getGroupColourScheme(), getGroup().getName()); + + sg.cs.setThreshold(threshold, ap.av.isIgnoreGapsConsensus()); + + SliderPanel.showPIDSlider(); + } + else + // remove PIDColouring + { + sg.cs.setThreshold(0, ap.av.isIgnoreGapsConsensus()); + SliderPanel.hidePIDSlider(); + } + modifyPID.setEnabled(selected); + + refresh(); + } + + /** + * Open a panel where the user can choose which types of sequence annotation + * to show or hide. + * + * @param e + */ + protected void chooseAnnotations_actionPerformed(ActionEvent e) + { + // todo correct way to guard against opening a duplicate panel? + new AnnotationChooser(ap); + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + public void conservationMenuItem_actionPerformed(boolean selected) + { + SequenceGroup sg = getGroup(); + if (sg.cs == null) + { + return; + } + + if (selected) + { + // JBPNote: Conservation name shouldn't be i18n translated + Conservation c = new Conservation("Group", + sg.getSequences(ap.av.getHiddenRepSequences()), + sg.getStartRes(), sg.getEndRes() + 1); + + c.calculate(); + c.verdict(false, ap.av.getConsPercGaps()); + sg.cs.setConservation(c); + + SliderPanel.setConservationSlider(ap, sg.getGroupColourScheme(), + sg.getName()); + SliderPanel.showConservationSlider(); + } + else + // remove ConservationColouring + { + sg.cs.setConservation(null); + SliderPanel.hideConservationSlider(); + } + modifyConservation.setEnabled(selected); + + refresh(); + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + protected void groupName_actionPerformed() + { + + SequenceGroup sg = getGroup(); + EditNameDialog dialog = new EditNameDialog(sg.getName(), + sg.getDescription(), + " " + MessageManager.getString("label.group_name") + " ", + MessageManager.getString("label.group_description") + " ", + MessageManager.getString("label.edit_group_name_description"), + ap.alignFrame); + + if (!dialog.accept) + { + return; + } + + sg.setName(dialog.getName()); + sg.setDescription(dialog.getDescription()); + refresh(); + } + + /** + * Get selection group - adding it to the alignment if necessary. + * + * @return sequence group to operate on + */ + SequenceGroup getGroup() + { + SequenceGroup sg = ap.av.getSelectionGroup(); + // this method won't add a new group if it already exists + if (sg != null) + { + ap.av.getAlignment().addGroup(sg); + } + + return sg; + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + void sequenceName_actionPerformed() + { + EditNameDialog dialog = new EditNameDialog(sequence.getName(), + sequence.getDescription(), + " " + MessageManager.getString("label.sequence_name") + + " ", + MessageManager.getString("label.sequence_description") + " ", + MessageManager.getString( + "label.edit_sequence_name_description"), + ap.alignFrame); + + if (!dialog.accept) + { + return; + } + + if (dialog.getName() != null) + { + if (dialog.getName().indexOf(" ") > -1) + { + JvOptionPane.showMessageDialog(ap, + MessageManager + .getString("label.spaces_converted_to_backslashes"), + MessageManager + .getString("label.no_spaces_allowed_sequence_name"), + JvOptionPane.WARNING_MESSAGE); + } + + sequence.setName(dialog.getName().replace(' ', '_')); + ap.paintAlignment(false); + } + + sequence.setDescription(dialog.getDescription()); + + ap.av.firePropertyChange("alignment", null, + ap.av.getAlignment().getSequences()); + + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + void unGroupMenuItem_actionPerformed() + { + SequenceGroup sg = ap.av.getSelectionGroup(); + ap.av.getAlignment().deleteGroup(sg); + ap.av.setSelectionGroup(null); + refresh(); + } + + void createGroupMenuItem_actionPerformed() + { + getGroup(); // implicitly creates group - note - should apply defaults / use + // standard alignment window logic for this + refresh(); + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + protected void outline_actionPerformed() + { + SequenceGroup sg = getGroup(); + Color col = JColorChooser.showDialog(this, + MessageManager.getString("label.select_outline_colour"), + Color.BLUE); + + if (col != null) + { + sg.setOutlineColour(col); + } + + refresh(); + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + public void showBoxes_actionPerformed() + { + getGroup().setDisplayBoxes(showBoxes.isSelected()); + refresh(); + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + public void showText_actionPerformed() + { + getGroup().setDisplayText(showText.isSelected()); + refresh(); + } + + /** + * DOCUMENT ME! + * + * @param e + * DOCUMENT ME! + */ + public void showColourText_actionPerformed() + { + getGroup().setColourText(showColourText.isSelected()); + refresh(); + } + + public void showLink(String url) + { + try + { + jalview.util.BrowserLauncher.openURL(url); + } catch (Exception ex) + { + JvOptionPane.showInternalMessageDialog(Desktop.desktop, + MessageManager.getString("label.web_browser_not_found_unix"), + MessageManager.getString("label.web_browser_not_found"), + JvOptionPane.WARNING_MESSAGE); + + ex.printStackTrace(); + } + } + + void hideSequences(boolean representGroup) + { + ap.av.hideSequences(sequence, representGroup); + } + + public void copy_actionPerformed() + { + ap.alignFrame.copy_actionPerformed(null); + } + + public void cut_actionPerformed() + { + ap.alignFrame.cut_actionPerformed(null); + } + + void changeCase(ActionEvent e) + { + Object source = e.getSource(); + SequenceGroup sg = ap.av.getSelectionGroup(); + + if (sg != null) + { + List