X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=d992233ce52d93580dd71bbe150e21d8cddca11b;hb=b2f9a8d7bce642ff4011bc6d49e02bb0569fbb11;hp=3a0e3f504396c0839d55e5e136d8ee19bd97cfd5;hpb=0b9d0f8eba1cec46c0b31fdd402a826e26244ff5;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java old mode 100755 new mode 100644 index 3a0e3f5..d992233 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1,29 +1,34 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) - * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.1) + * Copyright (C) 2014 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 . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.gui; import jalview.analysis.AAFrequency; import jalview.analysis.AlignmentSorter; +import jalview.analysis.AlignmentUtils; import jalview.analysis.Conservation; import jalview.analysis.CrossRef; import jalview.analysis.NJTree; import jalview.analysis.ParseProperties; import jalview.analysis.SequenceIdMatcher; +import jalview.api.AlignViewControllerGuiI; +import jalview.api.AlignViewControllerI; +import jalview.api.analysis.ScoreModelI; import jalview.bin.Cache; import jalview.commands.CommandI; import jalview.commands.EditCommand; @@ -75,12 +80,13 @@ import jalview.schemes.TaylorColourScheme; import jalview.schemes.TurnColourScheme; import jalview.schemes.UserColourScheme; import jalview.schemes.ZappoColourScheme; +import jalview.util.MessageManager; import jalview.ws.jws1.Discoverer; import jalview.ws.jws2.Jws2Discoverer; +import jalview.ws.jws2.jabaws2.Jws2Instance; import jalview.ws.seqfetcher.DbSourceProxy; import java.awt.BorderLayout; -import java.awt.Color; import java.awt.Component; import java.awt.GridLayout; import java.awt.Rectangle; @@ -112,6 +118,7 @@ import java.util.List; import java.util.Vector; import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; import javax.swing.JEditorPane; import javax.swing.JInternalFrame; import javax.swing.JLabel; @@ -132,7 +139,7 @@ import javax.swing.SwingUtilities; * @version $Revision$ */ public class AlignFrame extends GAlignFrame implements DropTargetListener, - IProgressIndicator + IProgressIndicator, AlignViewControllerGuiI { /** DOCUMENT ME!! */ @@ -144,9 +151,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public AlignmentPanel alignPanel; AlignViewport viewport; + + public AlignViewControllerI avc; + Vector alignPanels = new Vector(); - + /** * Last format used to load or save alignments in this window */ @@ -287,6 +297,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ void init() { + avc = new jalview.controller.AlignViewController(this, viewport, alignPanel); if (viewport.getAlignmentConservationAnnotation() == null) { BLOSUM62Colour.setEnabled(false); @@ -318,6 +329,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, setMenusFromViewport(viewport); buildSortByAnnotationScoresMenu(); + buildTreeMenu(); if (viewport.wrapAlignment) { wrapMenuItem_actionPerformed(null); @@ -329,7 +341,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } addKeyListener(); - + } /** @@ -352,6 +364,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { addKeyListener(new KeyAdapter() { + @Override public void keyPressed(KeyEvent evt) { if (viewport.cursorMode @@ -474,8 +487,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, case KeyEvent.VK_F2: viewport.cursorMode = !viewport.cursorMode; - statusBar.setText("Keyboard editing mode is " - + (viewport.cursorMode ? "on" : "off")); + statusBar.setText(MessageManager.formatMessage("label.keyboard_editing_mode", new String[]{(viewport.cursorMode ? "on" : "off")})); if (viewport.cursorMode) { alignPanel.seqPanel.seqCanvas.cursorX = viewport.startRes; @@ -532,6 +544,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void keyReleased(KeyEvent evt) { switch (evt.getKeyCode()) @@ -555,6 +568,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void addAlignmentPanel(final AlignmentPanel ap, boolean newPanel) { ap.alignFrame = this; + avc = new jalview.controller.AlignViewController(this, viewport, alignPanel); alignPanels.addElement(ap); @@ -616,6 +630,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Desktop.instance.addJalviewPropertyChangeListener("services", thisListener = new java.beans.PropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent evt) { // // System.out.println("Discoverer property change."); @@ -624,6 +639,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { System.err @@ -637,6 +653,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, }); addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() { + @Override public void internalFrameClosed( javax.swing.event.InternalFrameEvent evt) { @@ -649,6 +666,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // Finally, build the menu once to get current service state new Thread(new Runnable() { + @Override public void run() { BuildWebServiceMenu(); @@ -728,10 +746,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, rnahelicesColour .setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); setShowProductsEnabled(); - updateEditMenuBar(); } + // methods for implementing IProgressIndicator + // need to refactor to a reusable stub class Hashtable progressBars, progressBarHandlers; /* @@ -739,6 +758,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * * @see jalview.gui.IProgressIndicator#setProgressBar(java.lang.String, long) */ + @Override public void setProgressBar(String message, long id) { if (progressBars == null) @@ -786,6 +806,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, validate(); } + @Override public void registerHandler(final long id, final IProgressIndicatorHandler handler) { @@ -798,11 +819,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final JPanel progressPanel = (JPanel) progressBars.get(new Long(id)); if (handler.canCancel()) { - JButton cancel = new JButton("Cancel"); + JButton cancel = new JButton(MessageManager.getString("action.cancel")); final IProgressIndicator us = this; cancel.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { handler.cancelActivity(id); @@ -820,6 +842,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * * @return true if any progress bars are still active */ + @Override public boolean operationInProgress() { if (progressBars != null && progressBars.size() > 0) @@ -829,6 +852,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return false; } + @Override + public void setStatus(String text) { + statusBar.setText(text); + }; /* * Added so Castor Mapping file can obtain Jalview Version */ @@ -842,16 +869,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return alignPanel.seqPanel.seqCanvas.getFeatureRenderer(); } + @Override public void fetchSequence_actionPerformed(ActionEvent e) { new SequenceFetcher(this); } + @Override public void addFromFile_actionPerformed(ActionEvent e) { Desktop.instance.inputLocalFileMenuItem_actionPerformed(viewport); } + @Override public void reload_actionPerformed(ActionEvent e) { if (fileName != null) @@ -866,6 +896,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, for (int i = 0; i < frames.length; i++) { if (frames[i] instanceof AlignFrame && frames[i] != this + && ((AlignFrame) frames[i]).fileName != null && ((AlignFrame) frames[i]).fileName.equals(fileName)) { try @@ -903,6 +934,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final FeatureSettings nfs = newframe.featureSettings; SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { nfs.frame.setBounds(fspos); @@ -916,16 +948,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void addFromText_actionPerformed(ActionEvent e) { Desktop.instance.inputTextboxMenuItem_actionPerformed(viewport); } + @Override public void addFromURL_actionPerformed(ActionEvent e) { Desktop.instance.inputURLMenuItem_actionPerformed(viewport); } + @Override public void save_actionPerformed(ActionEvent e) { if (fileName == null @@ -947,6 +982,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void saveAs_actionPerformed(ActionEvent e) { JalviewFileChooser chooser = new JalviewFileChooser( @@ -957,7 +993,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, chooser.setFileView(new JalviewFileView()); chooser.setDialogTitle("Save Alignment to file"); - chooser.setToolTipText("Save"); + chooser.setToolTipText(MessageManager.getString("action.save")); int value = chooser.showSaveDialog(this); @@ -967,8 +1003,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (currentFileFormat == null) { JOptionPane.showInternalMessageDialog(Desktop.desktop, - "You must select a file format before saving!", - "File format not specified", JOptionPane.WARNING_MESSAGE); + MessageManager.getString("label.select_file_format_before_saving"), + MessageManager.getString("label.file_format_not_specified"), JOptionPane.WARNING_MESSAGE); value = chooser.showSaveDialog(this); return; } @@ -1004,8 +1040,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, success = new Jalview2XML().SaveAlignment(this, file, shortName); - statusBar.setText("Successfully saved to file: " + fileName + " in " - + format + " format."); + statusBar.setText(MessageManager.formatMessage("label.successfully_saved_to_file_in_format",new String[]{fileName, format})); + } else @@ -1026,9 +1062,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, int reply = JOptionPane .showInternalConfirmDialog( Desktop.desktop, - "The Alignment contains hidden columns." - + "\nDo you want to save only the visible alignment?", - "Save / Omit Hidden Columns", + MessageManager.getString("label.alignment_contains_hidden_columns"), + MessageManager.getString("action.save_omit_hidden_columns"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); @@ -1038,9 +1073,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } FormatAdapter f = new FormatAdapter(); - String output = f.formatSequences( - format, - (Alignment) viewport.getAlignment(), // class cast exceptions will + String output = f.formatSequences(format, + viewport.getAlignment(), // class cast exceptions will // occur in the distant future omitHidden, f.getCacheSuffixDefault(format), viewport.getColumnSelection()); @@ -1059,8 +1093,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, out.print(output); out.close(); this.setTitle(file); - statusBar.setText("Successfully saved to file: " + fileName - + " in " + format + " format."); + statusBar.setText(MessageManager.formatMessage("label.successfully_saved_to_file_in_format",new String[]{fileName, format})); } catch (Exception ex) { success = false; @@ -1071,8 +1104,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (!success) { - JOptionPane.showInternalMessageDialog(this, "Couldn't save file: " - + fileName, "Error Saving File", JOptionPane.WARNING_MESSAGE); + JOptionPane.showInternalMessageDialog(this, MessageManager.formatMessage("label.couldnt_save_file", new String[]{fileName}), + MessageManager.getString("label.error_saving_file"), JOptionPane.WARNING_MESSAGE); } return success; @@ -1099,6 +1132,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void outputText_actionPerformed(ActionEvent e) { String[] omitHidden = null; @@ -1108,9 +1142,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, int reply = JOptionPane .showInternalConfirmDialog( Desktop.desktop, - "The Alignment contains hidden columns." - + "\nDo you want to output only the visible alignment?", - "Save / Omit Hidden Columns", + MessageManager.getString("label.alignment_contains_hidden_columns"), + MessageManager.getString("action.save_omit_hidden_columns"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); @@ -1129,7 +1162,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.getAlignment(), omitHidden, viewport.getColumnSelection())); Desktop.addInternalFrame(cap, - "Alignment output - " + e.getActionCommand(), 600, 500); + MessageManager.formatMessage("label.alignment_output_command", new String[]{e.getActionCommand()}), 600, 500); } catch (OutOfMemoryError oom) { new OOMWarning("Outputting alignment as " + e.getActionCommand(), oom); @@ -1144,6 +1177,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void htmlMenuItem_actionPerformed(ActionEvent e) { new HTMLOutput(alignPanel, @@ -1162,6 +1196,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void createPNG(File f) { alignPanel.makePNG(f); @@ -1173,11 +1208,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void createEPS(File f) { alignPanel.makeEPS(f); } + @Override public void pageSetup_actionPerformed(ActionEvent e) { PrinterJob printJob = PrinterJob.getPrinterJob(); @@ -1190,6 +1227,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void printMenuItem_actionPerformed(ActionEvent e) { // Putting in a thread avoids Swing painting problems @@ -1197,11 +1235,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, thread.start(); } + @Override public void exportFeatures_actionPerformed(ActionEvent e) { new AnnotationExporter().exportFeatures(alignPanel); } + @Override public void exportAnnotations_actionPerformed(ActionEvent e) { new AnnotationExporter().exportAnnotations(alignPanel, @@ -1211,14 +1251,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .getAlignment()).alignmentProperties); } + @Override public void associatedData_actionPerformed(ActionEvent e) { // Pick the tree file JalviewFileChooser chooser = new JalviewFileChooser( jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle("Load Jalview Annotations or Features File"); - chooser.setToolTipText("Load Jalview Annotations / Features file"); + chooser.setDialogTitle(MessageManager.getString("label.load_jalview_annotations")); + chooser.setToolTipText(MessageManager.getString("label.load_jalview_annotations")); int value = chooser.showOpenDialog(null); @@ -1237,6 +1278,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * * @param closeAllTabs */ + @Override public void closeMenuItem_actionPerformed(boolean closeAllTabs) { if (alignPanels != null && alignPanels.size() < 2) @@ -1317,12 +1359,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { undoMenuItem.setEnabled(true); CommandI command = (CommandI) viewport.historyList.peek(); - undoMenuItem.setText("Undo " + command.getDescription()); + undoMenuItem.setText(MessageManager.formatMessage("label.undo_command", new String[]{command.getDescription()})); } else { undoMenuItem.setEnabled(false); - undoMenuItem.setText("Undo"); + undoMenuItem.setText(MessageManager.getString("action.undo")); } if (viewport.redoList.size() > 0) @@ -1330,12 +1372,12 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, redoMenuItem.setEnabled(true); CommandI command = (CommandI) viewport.redoList.peek(); - redoMenuItem.setText("Redo " + command.getDescription()); + redoMenuItem.setText(MessageManager.formatMessage("label.redo_command", new String[]{command.getDescription()})); } else { redoMenuItem.setEnabled(false); - redoMenuItem.setText("Redo"); + redoMenuItem.setText(MessageManager.getString("action.redo")); } } @@ -1384,6 +1426,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void undoMenuItem_actionPerformed(ActionEvent e) { if (viewport.historyList.empty()) @@ -1419,6 +1462,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void redoMenuItem_actionPerformed(ActionEvent e) { if (viewport.redoList.size() < 1) @@ -1508,52 +1552,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { return; } - - if (up) - { - for (int i = 1; i < viewport.getAlignment().getHeight(); i++) - { - SequenceI seq = viewport.getAlignment().getSequenceAt(i); - - if (!sg.getSequences(null).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.getAlignment().getSequenceAt(i - 1); - - if (sg.getSequences(null).contains(temp)) - { - continue; - } - - viewport.getAlignment().getSequences().setElementAt(temp, i); - viewport.getAlignment().getSequences().setElementAt(seq, i - 1); - } - } - else - { - for (int i = viewport.getAlignment().getHeight() - 2; i > -1; i--) - { - SequenceI seq = viewport.getAlignment().getSequenceAt(i); - - if (!sg.getSequences(null).contains(seq)) - { - continue; - } - - SequenceI temp = viewport.getAlignment().getSequenceAt(i + 1); - - if (sg.getSequences(null).contains(temp)) - { - continue; - } - - viewport.getAlignment().getSequences().setElementAt(temp, i); - viewport.getAlignment().getSequences().setElementAt(seq, i + 1); - } - } - + viewport.getAlignment().moveSelectedSequencesByOne(sg, + viewport.getHiddenRepSequences(), up); alignPanel.paintAlignment(true); } @@ -1587,7 +1587,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } SequenceI[] seqs1 = sg.toArray(new SequenceI[0]); - + SequenceI[] seqs2 = new SequenceI[invertGroup.size()]; for (int i = 0; i < invertGroup.size(); i++) seqs2[i] = (SequenceI) invertGroup.elementAt(i); @@ -1645,6 +1645,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void copy_actionPerformed(ActionEvent e) { System.gc(); @@ -1704,7 +1705,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Desktop.jalviewClipboard = new Object[] { seqs, viewport.getAlignment().getDataset(), hiddenColumns }; - statusBar.setText("Copied " + seqs.length + " sequences to clipboard."); + statusBar.setText(MessageManager.formatMessage("label.copied_sequences_to_clipboard", new String[]{Integer.valueOf(seqs.length).toString()})); } /** @@ -1713,6 +1714,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void pasteNew_actionPerformed(ActionEvent e) { paste(true); @@ -1724,6 +1726,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void pasteThis_actionPerformed(ActionEvent e) { paste(false); @@ -1792,6 +1795,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } int alwidth = 0; + ArrayList newGraphGroups = new ArrayList(); + int fgroup = -1; if (newAlignment) { @@ -1859,6 +1864,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { newDs.clear(); // tidy up } + if (alignment.getAlignmentAnnotation() != null) + { + for (AlignmentAnnotation alan : alignment + .getAlignmentAnnotation()) + { + if (alan.graphGroup > fgroup) + { + fgroup = alan.graphGroup; + } + } + } if (pastedal.getAlignmentAnnotation() != null) { // Add any annotation attached to alignment. @@ -1869,6 +1885,22 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (alann[i].sequenceRef == null && !alann[i].autoCalculated) { AlignmentAnnotation newann = new AlignmentAnnotation(alann[i]); + if (newann.graphGroup > -1) + { + if (newGraphGroups.size() <= newann.graphGroup + || newGraphGroups.get(newann.graphGroup) == null) + { + for (int q = newGraphGroups.size(); q <= newann.graphGroup; q++) + { + newGraphGroups.add(q, null); + } + newGraphGroups.set(newann.graphGroup, new Integer( + ++fgroup)); + } + newann.graphGroup = newGraphGroups.get(newann.graphGroup) + .intValue(); + } + newann.padAnnotation(alwidth); alignment.addAnnotation(newann); } @@ -1888,11 +1920,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (sequences[i].getAnnotation() != null) { + AlignmentAnnotation newann; for (int a = 0; a < sequences[i].getAnnotation().length; a++) { annotationAdded = true; - sequences[i].getAnnotation()[a].adjustForAlignment(); - sequences[i].getAnnotation()[a].padAnnotation(alwidth); + newann = sequences[i].getAnnotation()[a]; + newann.adjustForAlignment(); + newann.padAnnotation(alwidth); + if (newann.graphGroup > -1) + { + if (newann.graphGroup > -1) + { + if (newGraphGroups.size() <= newann.graphGroup + || newGraphGroups.get(newann.graphGroup) == null) + { + for (int q = newGraphGroups.size(); q <= newann.graphGroup; q++) + { + newGraphGroups.add(q, null); + } + newGraphGroups.set(newann.graphGroup, new Integer( + ++fgroup)); + } + newann.graphGroup = newGraphGroups.get(newann.graphGroup) + .intValue(); + } + } alignment.addAnnotation(sequences[i].getAnnotation()[a]); // annotation // was // duplicated @@ -1932,6 +1984,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, newann.padAnnotation(avwidth); alview[avnum].addAnnotation(newann); // annotation was // duplicated earlier + // TODO JAL-1145 graphGroups are not updated for sequence + // annotation added to several views. This may cause + // strangeness alview[avnum].setAnnotationIndex(newann, a); } } @@ -1941,6 +1996,17 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } viewport.firePropertyChange("alignment", null, alignment.getSequences()); + if (alignPanels != null) + { + for (AlignmentPanel ap : ((Vector) alignPanels)) + { + ap.validateAnnotationDimensions(false); + } + } + else + { + alignPanel.validateAnnotationDimensions(false); + } } else @@ -1997,13 +2063,66 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override + protected void expand_newalign(ActionEvent e) + { + try { + AlignmentI alignment = AlignmentUtils.expandContext(getViewport().getAlignment(), -1); + AlignFrame af = new AlignFrame(alignment, DEFAULT_WIDTH, + DEFAULT_HEIGHT); + String newtitle = new String("Flanking alignment"); + if (Desktop.jalviewClipboard != null + && Desktop.jalviewClipboard[2] != null) + { + Vector hc = (Vector) Desktop.jalviewClipboard[2]; + for (int i = 0; i < hc.size(); i++) + { + int[] region = (int[]) hc.elementAt(i); + af.viewport.hideColumns(region[0], region[1]); + } + } + + // >>>This is a fix for the moment, until a better solution is + // found!!<<< + af.alignPanel.seqPanel.seqCanvas.getFeatureRenderer() + .transferSettings( + alignPanel.seqPanel.seqCanvas.getFeatureRenderer()); + + // TODO: maintain provenance of an alignment, rather than just make the + // title a concatenation of operations. + { + if (title.startsWith("Copied sequences")) + { + newtitle = title; + } + else + { + newtitle = newtitle.concat("- from " + title); + } + } + + Desktop.addInternalFrame(af, newtitle, DEFAULT_WIDTH, + DEFAULT_HEIGHT); + + } catch (Exception ex) + { + ex.printStackTrace(); + System.out.println("Exception whilst pasting: " + ex); + // could be anything being pasted in here + } + catch (OutOfMemoryError oom) + { + new OOMWarning("Viewing flanking region of alignment", oom); + } + } /** * DOCUMENT ME! * * @param e * DOCUMENT ME! */ + @Override protected void cut_actionPerformed(ActionEvent e) { copy_actionPerformed(null); @@ -2016,6 +2135,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void delete_actionPerformed(ActionEvent evt) { @@ -2076,14 +2196,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void deleteGroups_actionPerformed(ActionEvent e) { - viewport.getAlignment().deleteAllGroups(); - viewport.sequenceColours = null; - viewport.setSelectionGroup(null); - PaintRefresher.Refresh(this, viewport.getSequenceSetId()); - alignPanel.updateAnnotation(); - alignPanel.paintAlignment(true); + if (avc.deleteGroups()) { + PaintRefresher.Refresh(this, viewport.getSequenceSetId()); + alignPanel.updateAnnotation(); + alignPanel.paintAlignment(true); + } } /** @@ -2092,6 +2212,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void selectAllSequenceMenuItem_actionPerformed(ActionEvent e) { SequenceGroup sg = new SequenceGroup(); @@ -2114,6 +2235,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void deselectAllSequenceMenuItem_actionPerformed(ActionEvent e) { if (viewport.cursorMode) @@ -2137,6 +2259,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void invertSequenceMenuItem_actionPerformed(ActionEvent e) { SequenceGroup sg = viewport.getSelectionGroup(); @@ -2158,6 +2281,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.sendSelection(); } + @Override public void invertColSel_actionPerformed(ActionEvent e) { viewport.invertColumnSelection(); @@ -2171,6 +2295,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void remove2LeftMenuItem_actionPerformed(ActionEvent e) { trimAlignment(true); @@ -2182,6 +2307,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void remove2RightMenuItem_actionPerformed(ActionEvent e) { trimAlignment(false); @@ -2231,11 +2357,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, viewport.getSelectionGroup()); } - statusBar.setText("Removed " + trimRegion.getSize() + " columns."); + statusBar.setText(MessageManager.formatMessage("label.removed_columns", new String[]{Integer.valueOf(trimRegion.getSize()).toString()})); addHistoryItem(trimRegion); - for (SequenceGroup sg :viewport.getAlignment().getGroups()) + for (SequenceGroup sg : viewport.getAlignment().getGroups()) { if ((trimLeft && !sg.adjustForRemoveLeft(column)) || (!trimLeft && !sg.adjustForRemoveRight(column))) @@ -2255,6 +2381,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void removeGappedColumnMenuItem_actionPerformed(ActionEvent e) { int start = 0, end = viewport.getAlignment().getWidth() - 1; @@ -2278,8 +2405,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, addHistoryItem(removeGapCols); - statusBar.setText("Removed " + removeGapCols.getSize() - + " empty columns."); + statusBar.setText(MessageManager.formatMessage("label.removed_empty_columns", new String[]{Integer.valueOf(removeGapCols.getSize()).toString()})); // This is to maintain viewport position on first residue // of first sequence @@ -2302,6 +2428,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void removeAllGapsMenuItem_actionPerformed(ActionEvent e) { int start = 0, end = viewport.getAlignment().getWidth() - 1; @@ -2340,6 +2467,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void padGapsMenuitem_actionPerformed(ActionEvent e) { viewport.setPadGaps(padGapsMenuitem.isSelected()); @@ -2363,11 +2491,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void findMenuItem_actionPerformed(ActionEvent e) { new Finder(); } + @Override public void newView_actionPerformed(ActionEvent e) { newView(true); @@ -2469,7 +2599,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, newap.av.viewName = newViewName; addAlignmentPanel(newap, true); - + newap.alignmentChanged(); + if (alignPanels.size() == 2) { viewport.gatherViewsHere = true; @@ -2478,11 +2609,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return newap; } + @Override public void expandViews_actionPerformed(ActionEvent e) { Desktop.instance.explodeViews(this); } + @Override public void gatherViews_actionPerformed(ActionEvent e) { Desktop.instance.gatherViews(this); @@ -2494,6 +2627,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void font_actionPerformed(ActionEvent e) { new FontChooser(alignPanel); @@ -2505,6 +2639,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void seqLimit_actionPerformed(ActionEvent e) { viewport.setShowJVSuffix(seqLimits.isSelected()); @@ -2514,12 +2649,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.paintAlignment(true); } + @Override public void idRightAlign_actionPerformed(ActionEvent e) { viewport.rightAlignIds = idRightAlign.isSelected(); alignPanel.paintAlignment(true); } + @Override public void centreColumnLabels_actionPerformed(ActionEvent e) { viewport.centreColumnLabels = centreColumnLabelsMenuItem.getState(); @@ -2531,6 +2668,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * * @see jalview.jbgui.GAlignFrame#followHighlight_actionPerformed() */ + @Override protected void followHighlight_actionPerformed() { if (viewport.followHighlight = this.followHighlightMenuItem.getState()) @@ -2546,6 +2684,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void colourTextMenuItem_actionPerformed(ActionEvent e) { viewport.setColourText(colourTextMenuItem.isSelected()); @@ -2558,6 +2697,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void wrapMenuItem_actionPerformed(ActionEvent e) { scaleAbove.setVisible(wrapMenuItem.isSelected()); @@ -2567,17 +2707,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.setWrapAlignment(wrapMenuItem.isSelected()); } + @Override public void showAllSeqs_actionPerformed(ActionEvent e) { viewport.showAllHiddenSeqs(); } + @Override public void showAllColumns_actionPerformed(ActionEvent e) { viewport.showAllHiddenColumns(); repaint(); } + @Override public void hideSelSequences_actionPerformed(ActionEvent e) { viewport.hideAllSelectedSeqs(); @@ -2661,6 +2804,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#hideAllButSelection_actionPerformed(java.awt. * event.ActionEvent) */ + @Override public void hideAllButSelection_actionPerformed(ActionEvent e) { toggleHiddenRegions(false, false); @@ -2673,6 +2817,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#hideAllSelection_actionPerformed(java.awt.event * .ActionEvent) */ + @Override public void hideAllSelection_actionPerformed(ActionEvent e) { SequenceGroup sg = viewport.getSelectionGroup(); @@ -2689,6 +2834,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#showAllhidden_actionPerformed(java.awt.event. * ActionEvent) */ + @Override public void showAllhidden_actionPerformed(ActionEvent e) { viewport.showAllHiddenColumns(); @@ -2696,12 +2842,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.paintAlignment(true); } + @Override public void hideSelColumns_actionPerformed(ActionEvent e) { viewport.hideSelectedColumns(); alignPanel.paintAlignment(true); } + @Override public void hiddenMarkers_actionPerformed(ActionEvent e) { viewport.setShowHiddenMarkers(hiddenMarkers.isSelected()); @@ -2714,6 +2862,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void scaleAbove_actionPerformed(ActionEvent e) { viewport.setScaleAboveWrapped(scaleAbove.isSelected()); @@ -2726,6 +2875,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void scaleLeft_actionPerformed(ActionEvent e) { viewport.setScaleLeftWrapped(scaleLeft.isSelected()); @@ -2738,6 +2888,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void scaleRight_actionPerformed(ActionEvent e) { viewport.setScaleRightWrapped(scaleRight.isSelected()); @@ -2750,6 +2901,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void viewBoxesMenuItem_actionPerformed(ActionEvent e) { viewport.setShowBoxes(viewBoxesMenuItem.isSelected()); @@ -2762,6 +2914,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void viewTextMenuItem_actionPerformed(ActionEvent e) { viewport.setShowText(viewTextMenuItem.isSelected()); @@ -2774,6 +2927,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void renderGapsMenuItem_actionPerformed(ActionEvent e) { viewport.setRenderGaps(renderGapsMenuItem.isSelected()); @@ -2782,6 +2936,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public FeatureSettings featureSettings; + @Override public void featureSettings_actionPerformed(ActionEvent e) { if (featureSettings != null) @@ -2804,6 +2959,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param evt * DOCUMENT ME! */ + @Override public void showSeqFeatures_actionPerformed(ActionEvent evt) { viewport.setShowSequenceFeatures(showSeqFeatures.isSelected()); @@ -2820,6 +2976,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param evt * DOCUMENT ME! */ + @Override public void showSeqFeaturesHeight_actionPerformed(ActionEvent evt) { viewport.setShowSequenceFeaturesHeight(showSeqFeaturesHeight @@ -2843,24 +3000,25 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void annotationPanelMenuItem_actionPerformed(ActionEvent e) { viewport.setShowAnnotation(annotationPanelMenuItem.isSelected()); alignPanel.setAnnotationVisible(annotationPanelMenuItem.isSelected()); } + @Override public void alignmentProperties() { JEditorPane editPane = new JEditorPane("text/html", ""); editPane.setEditable(false); StringBuffer contents = new AlignmentProperties(viewport.getAlignment()) .formatAsHtml(); - editPane.setText("" + contents.toString() + ""); + editPane.setText(MessageManager.formatMessage("label.html_content", new String[]{contents.toString()})); JInternalFrame frame = new JInternalFrame(); frame.getContentPane().add(new JScrollPane(editPane)); - Desktop.instance.addInternalFrame(frame, "Alignment Properties: " - + getTitle(), 500, 400); + Desktop.instance.addInternalFrame(frame, MessageManager.formatMessage("label.alignment_properties", new String[]{getTitle()}), 500, 400); } /** @@ -2869,6 +3027,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void overviewMenuItem_actionPerformed(ActionEvent e) { if (alignPanel.overviewPanel != null) @@ -2879,12 +3038,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, JInternalFrame frame = new JInternalFrame(); OverviewPanel overview = new OverviewPanel(alignPanel); frame.setContentPane(overview); - Desktop.addInternalFrame(frame, "Overview " + this.getTitle(), + Desktop.addInternalFrame(frame, MessageManager.formatMessage("label.overview_params", new String[]{this.getTitle()}), frame.getWidth(), frame.getHeight()); frame.pack(); frame.setLayer(JLayeredPane.PALETTE_LAYER); frame.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() { + @Override public void internalFrameClosed( javax.swing.event.InternalFrameEvent evt) { @@ -2895,6 +3055,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel.setOverviewPanel(overview); } + @Override public void textColour_actionPerformed(ActionEvent e) { new TextColourChooser().chooseColour(alignPanel, null); @@ -2906,6 +3067,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void noColourmenuItem_actionPerformed(ActionEvent e) { changeColour(null); @@ -2917,9 +3079,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void clustalColour_actionPerformed(ActionEvent e) { - changeColour(new ClustalxColourScheme(viewport.getAlignment(), viewport.getHiddenRepSequences())); + changeColour(new ClustalxColourScheme(viewport.getAlignment(), + viewport.getHiddenRepSequences())); } /** @@ -2928,6 +3092,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void zappoColour_actionPerformed(ActionEvent e) { changeColour(new ZappoColourScheme()); @@ -2939,6 +3104,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void taylorColour_actionPerformed(ActionEvent e) { changeColour(new TaylorColourScheme()); @@ -2950,6 +3116,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void hydrophobicityColour_actionPerformed(ActionEvent e) { changeColour(new HydrophobicColourScheme()); @@ -2961,6 +3128,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void helixColour_actionPerformed(ActionEvent e) { changeColour(new HelixColourScheme()); @@ -2972,6 +3140,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void strandColour_actionPerformed(ActionEvent e) { changeColour(new StrandColourScheme()); @@ -2983,6 +3152,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void turnColour_actionPerformed(ActionEvent e) { changeColour(new TurnColourScheme()); @@ -2994,6 +3164,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void buriedColour_actionPerformed(ActionEvent e) { changeColour(new BuriedColourScheme()); @@ -3005,11 +3176,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void nucleotideColour_actionPerformed(ActionEvent e) { changeColour(new NucleotideColourScheme()); } + @Override public void purinePyrimidineColour_actionPerformed(ActionEvent e) { changeColour(new PurinePyrimidineColourScheme()); @@ -3021,11 +3194,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * CovariationColourScheme(viewport.getAlignment().getAlignmentAnnotation * ()[0])); } */ + @Override public void annotationColour_actionPerformed(ActionEvent e) { new AnnotationColourChooser(viewport, alignPanel); } + @Override public void rnahelicesColour_actionPerformed(ActionEvent e) { new RNAHelicesColourChooser(viewport, alignPanel); @@ -3037,6 +3212,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void applyToAllGroups_actionPerformed(ActionEvent e) { viewport.setColourAppliesToAllGroups(applyToAllGroups.isSelected()); @@ -3059,10 +3235,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { threshold = SliderPanel.setPIDSliderSource(alignPanel, cs, "Background"); - cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); - - viewport.setGlobalColourScheme(cs); } else { @@ -3098,8 +3271,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (viewport.getColourAppliesToAllGroups()) { - - for (SequenceGroup sg:viewport.getAlignment().getGroups()) + for (SequenceGroup sg : viewport.getAlignment().getGroups()) { if (cs == null) { @@ -3109,8 +3281,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (cs instanceof ClustalxColourScheme) { - sg.cs = new ClustalxColourScheme(sg, viewport - .getHiddenRepSequences()); + sg.cs = new ClustalxColourScheme(sg, + viewport.getHiddenRepSequences()); } else if (cs instanceof UserColourScheme) { @@ -3172,6 +3344,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void modifyPID_actionPerformed(ActionEvent e) { if (viewport.getAbovePIDThreshold() @@ -3189,6 +3362,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void modifyConservation_actionPerformed(ActionEvent e) { if (viewport.getConservationSelected() @@ -3206,6 +3380,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void conservationMenuItem_actionPerformed(ActionEvent e) { viewport.setConservationSelected(conservationMenuItem.isSelected()); @@ -3224,6 +3399,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void abovePIDThreshold_actionPerformed(ActionEvent e) { viewport.setAbovePIDThreshold(abovePIDThreshold.isSelected()); @@ -3242,9 +3418,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void userDefinedColour_actionPerformed(ActionEvent e) { - if (e.getActionCommand().equals("User Defined...")) + if (e.getActionCommand().equals(MessageManager.getString("action.user_defined"))) { new UserDefinedColours(alignPanel, null); } @@ -3283,6 +3460,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, radioItem.setName("USER_DEFINED"); radioItem.addMouseListener(new MouseAdapter() { + @Override public void mousePressed(MouseEvent evt) { if (evt.isControlDown() @@ -3292,8 +3470,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, int option = JOptionPane.showInternalConfirmDialog( jalview.gui.Desktop.desktop, - "Remove from default list?", - "Remove user defined colour", + MessageManager.getString("label.remove_from_default_list"), + MessageManager.getString("label.remove_user_defined_colour"), JOptionPane.YES_NO_OPTION); if (option == JOptionPane.YES_OPTION) { @@ -3305,6 +3483,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { radioItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { userDefinedColour_actionPerformed(evt); @@ -3316,6 +3495,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, }); radioItem.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent evt) { userDefinedColour_actionPerformed(evt); @@ -3334,6 +3514,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void PIDColour_actionPerformed(ActionEvent e) { changeColour(new PIDColourScheme()); @@ -3345,6 +3526,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void BLOSUM62Colour_actionPerformed(ActionEvent e) { changeColour(new Blosum62ColourScheme()); @@ -3356,6 +3538,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void sortPairwiseMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -3372,6 +3555,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void sortIDMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -3387,6 +3571,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void sortLengthMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -3402,6 +3587,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void sortGroupMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -3418,6 +3604,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void removeRedundancyMenuItem_actionPerformed(ActionEvent e) { new RedundancyPanel(alignPanel, this); @@ -3429,20 +3616,21 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void pairwiseAlignmentMenuItem_actionPerformed(ActionEvent e) { if ((viewport.getSelectionGroup() == null) || (viewport.getSelectionGroup().getSize() < 2)) { JOptionPane.showInternalMessageDialog(this, - "You must select at least 2 sequences.", "Invalid Selection", + MessageManager.getString("label.you_must_select_least_two_sequences"), MessageManager.getString("label.invalid_selection"), JOptionPane.WARNING_MESSAGE); } else { JInternalFrame frame = new JInternalFrame(); frame.setContentPane(new PairwiseAlignPanel(viewport)); - Desktop.addInternalFrame(frame, "Pairwise Alignment", 600, 500); + Desktop.addInternalFrame(frame, MessageManager.getString("action.pairwise_alignment"), 600, 500); } } @@ -3452,6 +3640,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void PCAMenuItem_actionPerformed(ActionEvent e) { if (((viewport.getSelectionGroup() != null) @@ -3460,9 +3649,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, || (viewport.getAlignment().getHeight() < 4)) { JOptionPane.showInternalMessageDialog(this, - "Principal component analysis must take\n" - + "at least 4 input sequences.", - "Sequence selection insufficient", + MessageManager.getString("label.principal_component_analysis_must_take_least_four_input_sequences"), + MessageManager.getString("label.sequence_selection_insufficient"), JOptionPane.WARNING_MESSAGE); return; @@ -3471,6 +3659,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, new PCAPanel(alignPanel); } + @Override public void autoCalculate_actionPerformed(ActionEvent e) { viewport.autoCalculateConsensus = autoCalculate.isSelected(); @@ -3481,6 +3670,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void sortByTreeOption_actionPerformed(ActionEvent e) { viewport.sortByTree = sortByTree.isSelected(); @@ -3498,6 +3688,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void averageDistanceTreeMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("AV", "PID", "Average distance tree using PID"); @@ -3509,6 +3700,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override public void neighbourTreeMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("NJ", "PID", "Neighbour joining tree using PID"); @@ -3520,6 +3712,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void njTreeBlosumMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("NJ", "BL", "Neighbour joining tree using BLOSUM62"); @@ -3531,6 +3724,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void avTreeBlosumMenuItem_actionPerformed(ActionEvent e) { NewTreePanel("AV", "BL", "Average distance tree using BLOSUM62"); @@ -3550,33 +3744,31 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { TreePanel tp; - if (viewport.getSelectionGroup() != null) + if (viewport.getSelectionGroup() != null + && viewport.getSelectionGroup().getSize() > 0) { if (viewport.getSelectionGroup().getSize() < 3) { JOptionPane .showMessageDialog( Desktop.desktop, - "You need to have more than two sequences selected to build a tree!", - "Not enough sequences", JOptionPane.WARNING_MESSAGE); + MessageManager.getString("label.you_need_more_two_sequences_selected_build_tree"), + MessageManager.getString("label.not_enough_sequences"), JOptionPane.WARNING_MESSAGE); return; } SequenceGroup sg = viewport.getSelectionGroup(); /* Decide if the selection is a column region */ - for (SequenceI _s:sg.getSequences()) + for (SequenceI _s : sg.getSequences()) { - if (_s.getLength() < sg - .getEndRes()) + if (_s.getLength() < sg.getEndRes()) { JOptionPane .showMessageDialog( Desktop.desktop, - "The selected region to create a tree may\nonly contain residues or gaps.\n" - + "Try using the Pad function in the edit menu,\n" - + "or one of the multiple sequence alignment web services.", - "Sequences in selection are not aligned", + MessageManager.getString("label.selected_region_to_tree_may_only_contain_residues_or_gaps"), + MessageManager.getString("label.sequences_selection_not_aligned"), JOptionPane.WARNING_MESSAGE); return; @@ -3594,10 +3786,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, JOptionPane .showMessageDialog( Desktop.desktop, - "The sequences must be aligned before creating a tree.\n" - + "Try using the Pad function in the edit menu,\n" - + "or one of the multiple sequence alignment web services.", - "Sequences not aligned", + MessageManager.getString("label.sequences_must_be_aligned_before_creating_tree"), + MessageManager.getString("label.sequences_not_aligned"), JOptionPane.WARNING_MESSAGE); return; @@ -3638,6 +3828,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sort.add(item); item.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -3670,6 +3861,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sort.add(item); item.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -3694,6 +3886,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * rebuilding in subsequence calls. * */ + @Override public void buildSortByAnnotationScoresMenu() { if (viewport.getAlignment().getAlignmentAnnotation() == null) @@ -3707,10 +3900,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // almost certainly a quicker way to do this - but we keep it simple Hashtable scoreSorts = new Hashtable(); AlignmentAnnotation aann[]; - Enumeration sq = viewport.getAlignment().getSequences().elements(); - while (sq.hasMoreElements()) + for (SequenceI sqa : viewport.getAlignment().getSequences()) { - aann = ((SequenceI) sq.nextElement()).getAnnotation(); + aann = sqa.getAnnotation(); for (int i = 0; aann != null && i < aann.length; i++) { if (aann[i].hasScore() && aann[i].sequenceRef != null) @@ -3745,8 +3937,38 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param title * SortBy menu item title. */ + @Override public void buildTreeMenu() { + calculateTree.removeAll(); + // build the calculate menu + + for (final String type:new String[] {"NJ", "AV"}) + { + String treecalcnm = MessageManager.getString("label.tree_calc_"+type.toLowerCase()); + for (final Object pwtype: ResidueProperties.scoreMatrices.keySet()) + { + JMenuItem tm = new JMenuItem(); + ScoreModelI sm = ResidueProperties.scoreMatrices.get(pwtype); + if (sm.isProtein()==!viewport.getAlignment().isNucleotide()) + { + String smn = MessageManager.getStringOrReturn( + "label.score_model_", sm.getName()); + final String title = MessageManager.formatMessage( + "label.treecalc_title", treecalcnm, smn); + tm.setText(title);// + tm.addActionListener(new java.awt.event.ActionListener() + { + public void actionPerformed(ActionEvent e) + { + NewTreePanel(type, (String) pwtype, title); + } + }); + calculateTree.add(tm); + } + + } + } sortByTreeMenu.removeAll(); Vector comps = (Vector) PaintRefresher.components.get(viewport @@ -3778,6 +4000,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final NJTree tree = ((TreePanel) treePanels.elementAt(i)).getTree(); item.addActionListener(new java.awt.event.ActionListener() { + @Override public void actionPerformed(ActionEvent e) { tp.sortByTree_actionPerformed(null); @@ -3883,14 +4106,15 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @param e * DOCUMENT ME! */ + @Override protected void LoadtreeMenuItem_actionPerformed(ActionEvent e) { // Pick the tree file JalviewFileChooser chooser = new JalviewFileChooser( jalview.bin.Cache.getProperty("LAST_DIRECTORY")); chooser.setFileView(new JalviewFileView()); - chooser.setDialogTitle("Select a newick-like tree file"); - chooser.setToolTipText("Load a tree file"); + chooser.setDialogTitle(MessageManager.getString("label.select_newick_like_tree_file")); + chooser.setToolTipText(MessageManager.getString("label.load_tree_file")); int value = chooser.showOpenDialog(null); @@ -3906,13 +4130,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } catch (Exception ex) { JOptionPane.showMessageDialog(Desktop.desktop, ex.getMessage(), - "Problem reading tree file", JOptionPane.WARNING_MESSAGE); + MessageManager.getString("label.problem_reading_tree_file"), JOptionPane.WARNING_MESSAGE); ex.printStackTrace(); } if (fin != null && fin.hasWarningMessage()) { JOptionPane.showMessageDialog(Desktop.desktop, - fin.getWarningMessage(), "Possible problem with tree file", + fin.getWarningMessage(), MessageManager.getString("label.possible_problem_with_tree_file"), JOptionPane.WARNING_MESSAGE); } } @@ -4014,8 +4238,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, buildingMenu = true; new Thread(new Runnable() { + @Override public void run() { + final List legacyItems=new ArrayList(); try { System.err.println("Building ws menu again " @@ -4037,7 +4263,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, "Secondary Structure Prediction"); final JMenu seqsrchmenu = new JMenu("Sequence Database Search"); final JMenu analymenu = new JMenu("Analysis"); - final JMenu dismenu = new JMenu("Disorder"); + final JMenu dismenu = new JMenu("Protein Disorder"); // JAL-940 - only show secondary structure prediction services from // the legacy server if (// Cache.getDefault("SHOW_JWS1_SERVICES", true) @@ -4047,28 +4273,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // TODO: refactor to allow list of AbstractName/Handler bindings to // be // stored or retrieved from elsewhere - Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS"); + // No MSAWS used any more: + // Vector msaws = null; // (Vector) Discoverer.services.get("MsaWS"); Vector secstrpr = (Vector) Discoverer.services .get("SecStrPred"); - Vector seqsrch = null; // (Vector) - // Discoverer.services.get("SeqSearch"); - // TODO: move GUI generation code onto service implementation - so a - // client instance attaches itself to the GUI with method call like - // jalview.ws.MsaWSClient.bind(servicehandle, Desktop.instance, - // alignframe) - if (msaws != null) - { - // Add any Multiple Sequence Alignment Services - for (int i = 0, j = msaws.size(); i < j; i++) - { - final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws - .get(i); - jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer - .getServiceClient(sh); - impl.attachWSMenuEntry(msawsmenu, me); - - } - } if (secstrpr != null) { // Add any secondary structure prediction services @@ -4078,40 +4286,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .get(i); jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer .getServiceClient(sh); + int p=secstrmenu.getItemCount(); impl.attachWSMenuEntry(secstrmenu, me); - } - } - if (seqsrch != null) - { - // Add any sequence search services - for (int i = 0, j = seqsrch.size(); i < j; i++) - { - final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) seqsrch - .elementAt(i); - jalview.ws.WSMenuEntryProviderI impl = jalview.ws.jws1.Discoverer - .getServiceClient(sh); - impl.attachWSMenuEntry(seqsrchmenu, me); + int q=secstrmenu.getItemCount(); + for (int litm=p;litm submens=new ArrayList(); - // submens.add(msawsmenu); - // submens.add(secstrmenu); - // submens.add(dismenu); - // submens.add(analymenu); - // No search services yet // wsmenu.add(seqsrchmenu); javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { try @@ -4122,7 +4319,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { for (int i = 0, j = wsmenu.size(); i < j; i++) { - webService.add((JMenu) wsmenu.get(i)); + webService.add(wsmenu.get(i)); } } else @@ -4130,6 +4327,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, webService.add(me.webServiceNoServices); } // TODO: move into separate menu builder class. + boolean new_sspred=false; if (Cache.getDefault("SHOW_JWS2_SERVICES", true)) { Jws2Discoverer jws2servs = Jws2Discoverer.getDiscoverer(); @@ -4138,6 +4336,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (jws2servs.hasServices()) { jws2servs.attachWSMenuEntry(webService, me); + for (Jws2Instance sv:jws2servs.getServices()) { + if (sv.description.toLowerCase().contains("jpred")) + { + for (JMenuItem jmi:legacyItems) + { + jmi.setVisible(false); + } + } + } + } if (jws2servs.isRunning()) { @@ -4148,7 +4356,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } } - build_urlServiceMenu(me.webService); build_fetchdbmenu(webService); for (JMenu item : wsmenu) @@ -4164,6 +4371,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } catch (Exception e) { + Cache.log + .debug("Exception during web service menu building process.", + e); } ; } @@ -4211,12 +4421,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, JvSwingUtils.findOrCreateMenu(webService, client.getAction()), this); } - - if (Cache.getDefault("SHOW_ENFIN_SERVICES", true)) - { - jalview.ws.EnfinEnvision2OneWay.getInstance().attachWSMenuEntry( - webService, this); - } } /* @@ -4286,6 +4490,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, xtype.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { // TODO: new thread for this call with vis-delay @@ -4319,6 +4524,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, Runnable foo = new Runnable() { + @Override public void run() { final long sttime = System.currentTimeMillis(); @@ -4402,6 +4608,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } + @Override public void showProducts_actionPerformed(ActionEvent e) { // ///////////////////////////// @@ -4424,17 +4631,18 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, JOptionPane .showMessageDialog( Desktop.desktop, - "Please select at least three bases in at least one sequence in order to perform a cDNA translation.", - "Translation Failed", JOptionPane.WARNING_MESSAGE); + MessageManager.getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation"), + MessageManager.getString("label.translation_failed"), JOptionPane.WARNING_MESSAGE); } else { AlignFrame af = new AlignFrame(al, DEFAULT_WIDTH, DEFAULT_HEIGHT); - Desktop.addInternalFrame(af, "Translation of " + this.getTitle(), + Desktop.addInternalFrame(af, MessageManager.formatMessage("label.translation_of_params", new String[]{this.getTitle()}), DEFAULT_WIDTH, DEFAULT_HEIGHT); } } + @Override public void showTranslation_actionPerformed(ActionEvent e) { // ///////////////////////////// @@ -4453,20 +4661,26 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } catch (Exception ex) { al = null; - jalview.bin.Cache.log.debug("Exception during translation.", ex); + jalview.bin.Cache.log.error("Exception during translation. Please report this !", ex); + JOptionPane + .showMessageDialog( + Desktop.desktop, + MessageManager.getString("label.error_when_translating_sequences_submit_bug_report"), + MessageManager.getString("label.implementation_error") + MessageManager.getString("translation_failed"), JOptionPane.ERROR_MESSAGE); + return; } if (al == null) { JOptionPane .showMessageDialog( Desktop.desktop, - "Please select at least three bases in at least one sequence in order to perform a cDNA translation.", - "Translation Failed", JOptionPane.WARNING_MESSAGE); + MessageManager.getString("label.select_at_least_three_bases_in_at_least_one_sequence_to_cDNA_translation"), + MessageManager.getString("label.translation_failed"), JOptionPane.WARNING_MESSAGE); } else { AlignFrame af = new AlignFrame(al, DEFAULT_WIDTH, DEFAULT_HEIGHT); - Desktop.addInternalFrame(af, "Translation of " + this.getTitle(), + Desktop.addInternalFrame(af, MessageManager.formatMessage("label.translation_of_params", new String[]{this.getTitle()}), DEFAULT_WIDTH, DEFAULT_HEIGHT); } } @@ -4513,22 +4727,27 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, return featuresFile; } + @Override public void dragEnter(DropTargetDragEvent evt) { } + @Override public void dragExit(DropTargetEvent evt) { } + @Override public void dragOver(DropTargetDragEvent evt) { } + @Override public void dropActionChanged(DropTargetDragEvent evt) { } + @Override public void drop(DropTargetDropEvent evt) { Transferable t = evt.getTransferable(); @@ -4655,10 +4874,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, || JOptionPane .showConfirmDialog( this, - "Do you want to automatically associate the " - + filesmatched.size() - + " PDB files with sequences in the alignment that have the same name ?", - "Automatically Associate PDB files by name", + MessageManager.formatMessage("label.automatically_associate_pdb_files_with_sequences_same_name", + new String[]{Integer.valueOf(filesmatched.size()).toString()}), + MessageManager.getString("label.automatically_associate_pdb_files_by_name"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { @@ -4691,10 +4909,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, "AUTOASSOCIATE_PDBANDSEQS_IGNOREOTHERS", false) || JOptionPane .showConfirmDialog( this, - "Do you want to ignore the " - + filesnotmatched.size() - + " files whose names did not match any sequence IDs ?", - "Ignore unmatched dropped files ?", + MessageManager.formatMessage("label.ignore_unmatched_dropped_files_info", new String[]{Integer.valueOf(filesnotmatched.size()).toString()}), + MessageManager.getString("label.ignore_unmatched_dropped_files"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION)) { return; @@ -4753,16 +4969,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, tcoffeeColour.setSelected(true); changeColour(new TCoffeeColourScheme(viewport.getAlignment())); isAnnotation = true; - statusBar - .setText("Successfully pasted T-Coffee scores to alignment."); + statusBar.setText(MessageManager.getString("label.successfully_pasted_tcoffee_scores_to_alignment")); } else { - // some problem - if no warning its probable that the ID matching process didn't work - JOptionPane.showMessageDialog(Desktop.desktop, - tcf.getWarningMessage()==null ? "Check that the file matches sequence IDs in the alignment." : tcf.getWarningMessage(), - "Problem reading T-COFFEE score file", - JOptionPane.WARNING_MESSAGE); + // some problem - if no warning its probable that the ID matching + // process didn't work + JOptionPane + .showMessageDialog( + Desktop.desktop, + tcf.getWarningMessage() == null ? MessageManager.getString("label.check_file_matches_sequence_ids_alignment") + : tcf.getWarningMessage(), + MessageManager.getString("label.problem_reading_tcoffee_score_file"), + JOptionPane.WARNING_MESSAGE); } } else @@ -4771,7 +4990,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } catch (Exception x) { - Cache.log.debug("Exception when processing data source as T-COFFEE score file",x); + Cache.log + .debug("Exception when processing data source as T-COFFEE score file", + x); tcf = null; } if (tcf == null) @@ -4840,25 +5061,44 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } catch (Exception ex) { ex.printStackTrace(); + } catch (OutOfMemoryError oom) + { + try + { + System.gc(); + } catch (Exception x) + { + } + ; + new OOMWarning( + "loading data " + + (protocol != null ? (protocol.equals(FormatAdapter.PASTE) ? "from clipboard." + : "using " + protocol + " from " + file) + : ".") + + (format != null ? "(parsing as '" + format + + "' file)" : ""), oom, Desktop.desktop); } } + @Override public void tabSelectionChanged(int index) { if (index > -1) { alignPanel = (AlignmentPanel) alignPanels.elementAt(index); viewport = alignPanel.av; + avc.setViewportAndAlignmentPanel(viewport, alignPanel); setMenusFromViewport(viewport); } } + @Override public void tabbedPane_mousePressed(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) { String reply = JOptionPane.showInternalInputDialog(this, - "Enter View Name", "Edit View Name", + MessageManager.getString("label.enter_view_name"), MessageManager.getString("label.enter_view_name"), JOptionPane.QUESTION_MESSAGE); if (reply != null) @@ -4877,6 +5117,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Open the dialog for regex description parsing. */ + @Override protected void extractScores_actionPerformed(ActionEvent e) { ParseProperties pp = new jalview.analysis.ParseProperties( @@ -4899,6 +5140,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#showDbRefs_actionPerformed(java.awt.event.ActionEvent * ) */ + @Override protected void showDbRefs_actionPerformed(ActionEvent e) { viewport.setShowDbRefs(showDbRefsMenuitem.isSelected()); @@ -4910,6 +5152,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * @seejalview.jbgui.GAlignFrame#showNpFeats_actionPerformed(java.awt.event. * ActionEvent) */ + @Override protected void showNpFeats_actionPerformed(ActionEvent e) { viewport.setShowNpFeats(showNpFeatsMenuitem.isSelected()); @@ -4950,20 +5193,33 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, // TODO We probably want to store a sequence database checklist in // preferences and have checkboxes.. rather than individual sources selected // here - final JMenu rfetch = new JMenu("Fetch DB References"); - rfetch.setToolTipText("Retrieve and parse sequence database records for the alignment or the currently selected sequences"); + final JMenu rfetch = new JMenu(MessageManager.getString("action.fetch_db_references")); + rfetch.setToolTipText(MessageManager.getString("label.retrieve_parse_sequence_database_records_alignment_or_selected_sequences")); webService.add(rfetch); - JMenuItem fetchr = new JMenuItem("Standard Databases"); - fetchr.setToolTipText("Fetch from EMBL/EMBLCDS or Uniprot/PDB and any selected DAS sources"); + final JCheckBoxMenuItem trimrs = new JCheckBoxMenuItem(MessageManager.getString("option.trim_retrieved_seqs")); + trimrs.setToolTipText(MessageManager.getString("label.trim_retrieved_sequences")); + trimrs.setSelected(Cache.getDefault("TRIM_FETCHED_DATASET_SEQS", true)); + trimrs.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { + trimrs.setSelected(trimrs.isSelected()); + Cache.setProperty("TRIM_FETCHED_DATASET_SEQS", Boolean.valueOf(trimrs.isSelected()).toString()); + }; + }); + rfetch.add(trimrs); + JMenuItem fetchr = new JMenuItem(MessageManager.getString("label.standard_databases")); + fetchr.setToolTipText(MessageManager.getString("label.fetch_embl_uniprot")); fetchr.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { + @Override public void run() { new jalview.ws.DBRefFetcher(alignPanel.av @@ -4979,12 +5235,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, final AlignFrame me = this; new Thread(new Runnable() { + @Override public void run() { final jalview.ws.SequenceFetcher sf = SequenceFetcher .getSequenceFetcherSingleton(me); javax.swing.SwingUtilities.invokeLater(new Runnable() { + @Override public void run() { String[] dbclasses = sf.getOrderedSupportedSources(); @@ -5025,11 +5283,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, fetchr.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { + @Override public void run() { new jalview.ws.DBRefFetcher(alignPanel.av @@ -5053,15 +5313,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, .toArray(new DbSourceProxy[0]); // fetch all entry DbSourceProxy src = otherdb.get(0); - fetchr = new JMenuItem("Fetch All '" + src.getDbSource() - + "'"); + fetchr = new JMenuItem(MessageManager.formatMessage("label.fetch_all_param", new String[]{src.getDbSource()})); fetchr.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { + @Override public void run() { new jalview.ws.DBRefFetcher(alignPanel.av @@ -5102,11 +5363,13 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, fetchr.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { new Thread(new Runnable() { + @Override public void run() { new jalview.ws.DBRefFetcher(alignPanel.av @@ -5125,7 +5388,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, ++i; if (++icomp >= mcomp || i == (otherdb.size())) { - ifetch.setText(imname + " to '" + sname + "'"); + ifetch.setText(MessageManager.formatMessage("label.source_to_target",imname,sname)); dfetch.add(ifetch); ifetch = new JMenu(); imname = null; @@ -5137,7 +5400,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, ++dbi; if (comp >= mcomp || dbi >= (dbclasses.length)) { - dfetch.setText(mname + " to '" + dbclass + "'"); + dfetch.setText(MessageManager.formatMessage("label.source_to_target",mname,dbclass)); rfetch.add(dfetch); dfetch = new JMenu(); mname = null; @@ -5154,6 +5417,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Left justify the whole alignment. */ + @Override protected void justifyLeftMenuItem_actionPerformed(ActionEvent e) { AlignmentI al = viewport.getAlignment(); @@ -5164,6 +5428,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Right justify the whole alignment. */ + @Override protected void justifyRightMenuItem_actionPerformed(ActionEvent e) { AlignmentI al = viewport.getAlignment(); @@ -5184,6 +5449,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#showUnconservedMenuItem_actionPerformed(java. * awt.event.ActionEvent) */ + @Override protected void showUnconservedMenuItem_actionPerformed(ActionEvent e) { viewport.setShowUnconserved(showNonconservedMenuItem.getState()); @@ -5197,6 +5463,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#showGroupConsensus_actionPerformed(java.awt.event * .ActionEvent) */ + @Override protected void showGroupConsensus_actionPerformed(ActionEvent e) { viewport.setShowGroupConsensus(showGroupConsensus.getState()); @@ -5211,6 +5478,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#showGroupConservation_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void showGroupConservation_actionPerformed(ActionEvent e) { viewport.setShowGroupConservation(showGroupConservation.getState()); @@ -5224,6 +5492,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#showConsensusHistogram_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void showConsensusHistogram_actionPerformed(ActionEvent e) { viewport.setShowConsensusHistogram(showConsensusHistogram.getState()); @@ -5237,18 +5506,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#showConsensusProfile_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void showSequenceLogo_actionPerformed(ActionEvent e) { viewport.setShowSequenceLogo(showSequenceLogo.getState()); alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState()); } + @Override protected void normaliseSequenceLogo_actionPerformed(ActionEvent e) { + showSequenceLogo.setState(true); + viewport.setShowSequenceLogo(true); viewport.setNormaliseSequenceLogo(normaliseSequenceLogo.getState()); alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState()); } + @Override protected void applyAutoAnnotationSettings_actionPerformed(ActionEvent e) { alignPanel.updateAnnotation(applyAutoAnnotationSettings.getState()); @@ -5261,38 +5535,34 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * jalview.jbgui.GAlignFrame#makeGrpsFromSelection_actionPerformed(java.awt * .event.ActionEvent) */ + @Override protected void makeGrpsFromSelection_actionPerformed(ActionEvent e) { - if (viewport.getSelectionGroup() != null) - { - SequenceGroup[] gps = jalview.analysis.Grouping.makeGroupsFrom( - viewport.getSequenceSelection(), - viewport.getAlignmentView(true).getSequenceStrings( - viewport.getGapCharacter()), viewport.getAlignment() - .getGroups()); - viewport.getAlignment().deleteAllGroups(); - viewport.sequenceColours = null; - viewport.setSelectionGroup(null); - // set view properties for each group - for (int g = 0; g < gps.length; g++) - { - gps[g].setShowNonconserved(viewport.getShowUnconserved()); - gps[g].setshowSequenceLogo(viewport.isShowSequenceLogo()); - viewport.getAlignment().addGroup(gps[g]); - Color col = new Color((int) (Math.random() * 255), - (int) (Math.random() * 255), (int) (Math.random() * 255)); - col = col.brighter(); - for (SequenceI s:gps[g].getSequences()) - viewport.setSequenceColour( - s, col) - ; - } + if (avc.makeGroupsFromSelection()) { PaintRefresher.Refresh(this, viewport.getSequenceSetId()); alignPanel.updateAnnotation(); alignPanel.paintAlignment(true); } } + @Override + protected void createGroup_actionPerformed(ActionEvent e) + { + if (avc.createGroup()) + { + alignPanel.alignmentChanged(); + } + } + + @Override + protected void unGroup_actionPerformed(ActionEvent e) + { + if (avc.unGroup()) + { + alignPanel.alignmentChanged(); + } + } + /** * make the given alignmentPanel the currently selected tab * @@ -5326,6 +5596,7 @@ class PrintThread extends Thread static PageFormat pf; + @Override public void run() { PrinterJob printJob = PrinterJob.getPrinterJob();