X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=92316b3e1dc3474b63715a80ffbe8b7836da028a;hb=47168f025aefdaa044802bd5f8f510ffe43a4808;hp=57ff660e9f41a71548537f2b25ac4390e2e52064;hpb=2f4f1d8fb6878271b64f327bc58c895f458137af;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 57ff660..92316b3 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1,31 +1,36 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2) * 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. + * 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 . + * 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; @@ -84,7 +89,6 @@ 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; @@ -116,6 +120,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; @@ -136,7 +141,7 @@ import javax.swing.SwingUtilities; * @version $Revision$ */ public class AlignFrame extends GAlignFrame implements DropTargetListener, - IProgressIndicator + IProgressIndicator, AlignViewControllerGuiI { /** DOCUMENT ME!! */ @@ -294,7 +299,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, */ void init() { - avc = new jalview.controller.AlignViewController(viewport, alignPanel); + avc = new jalview.controller.AlignViewController(this, viewport, alignPanel); if (viewport.getAlignmentConservationAnnotation() == null) { BLOSUM62Colour.setEnabled(false); @@ -326,6 +331,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, setMenusFromViewport(viewport); buildSortByAnnotationScoresMenu(); + buildTreeMenu(); if (viewport.wrapAlignment) { wrapMenuItem_actionPerformed(null); @@ -564,7 +570,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void addAlignmentPanel(final AlignmentPanel ap, boolean newPanel) { ap.alignFrame = this; - avc = new jalview.controller.AlignViewController(viewport, alignPanel); + avc = new jalview.controller.AlignViewController(this, viewport, alignPanel); alignPanels.addElement(ap); @@ -848,6 +854,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 */ @@ -985,7 +995,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); @@ -1154,7 +1164,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); @@ -1250,8 +1260,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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); @@ -2055,7 +2065,59 @@ 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! * @@ -2958,8 +3020,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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); } /** @@ -2979,7 +3040,7 @@ 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); @@ -3176,10 +3237,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { threshold = SliderPanel.setPIDSliderSource(alignPanel, cs, "Background"); - cs.setThreshold(threshold, viewport.getIgnoreGapsConsensus()); - - viewport.setGlobalColourScheme(cs); } else { @@ -3365,7 +3423,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @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); } @@ -3574,7 +3632,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { 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); } } @@ -3884,6 +3942,35 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @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 @@ -4028,8 +4115,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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); @@ -4336,12 +4423,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); - } } /* @@ -4558,7 +4639,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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); } } @@ -4601,7 +4682,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, 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); } } @@ -5114,12 +5195,23 @@ 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() { @@ -5223,8 +5315,7 @@ 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 @@ -5299,7 +5390,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, ++i; if (++icomp >= mcomp || i == (otherdb.size())) { - ifetch.setText(MessageManager.formatMessage("label.source_to_target",new String[]{imname,sname})); + ifetch.setText(MessageManager.formatMessage("label.source_to_target",imname,sname)); dfetch.add(ifetch); ifetch = new JMenu(); imname = null; @@ -5311,7 +5402,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, ++dbi; if (comp >= mcomp || dbi >= (dbclasses.length)) { - dfetch.setText(MessageManager.formatMessage("label.source_to_target",new String[]{mname,dbclass})); + dfetch.setText(MessageManager.formatMessage("label.source_to_target",mname,dbclass)); rfetch.add(dfetch); dfetch = new JMenu(); mname = null;