X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignFrame.java;h=40ab6bbe5693623afdc133f60a2d07c2c6463a8e;hb=06ce849ffedc7ab10a3c54cda96b9a7dec58c136;hp=9aed70d9cd937e71e11af5ca359010dc21dfd174;hpb=b0cee3aaf7d8873910939f97b6acb217d518968d;p=jalview.git diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 9aed70d..40ab6bb 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -59,6 +59,7 @@ import jalview.datamodel.SeqCigar; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; +import jalview.gui.ColourMenuHelper.ColourChangeListener; import jalview.gui.ViewSelectionMenu.ViewSetProvider; import jalview.io.AlignmentProperties; import jalview.io.AnnotationFile; @@ -66,6 +67,7 @@ import jalview.io.BioJsHTMLOutput; import jalview.io.DataSourceType; import jalview.io.FileFormat; import jalview.io.FileFormatI; +import jalview.io.FileFormats; import jalview.io.FileLoader; import jalview.io.FormatAdapter; import jalview.io.HtmlSvgOutput; @@ -77,26 +79,11 @@ import jalview.io.JnetAnnotationMaker; import jalview.io.NewickFile; import jalview.io.TCoffeeScoreFile; import jalview.jbgui.GAlignFrame; -import jalview.schemes.Blosum62ColourScheme; -import jalview.schemes.BuriedColourScheme; -import jalview.schemes.ClustalxColourScheme; import jalview.schemes.ColourSchemeI; -import jalview.schemes.ColourSchemeProperty; -import jalview.schemes.HelixColourScheme; -import jalview.schemes.HydrophobicColourScheme; -import jalview.schemes.NucleotideColourScheme; -import jalview.schemes.PIDColourScheme; -import jalview.schemes.PurinePyrimidineColourScheme; -import jalview.schemes.RNAHelicesColour; -import jalview.schemes.RNAHelicesColourChooser; +import jalview.schemes.ColourSchemes; import jalview.schemes.ResidueColourScheme; import jalview.schemes.ResidueProperties; -import jalview.schemes.StrandColourScheme; import jalview.schemes.TCoffeeColourScheme; -import jalview.schemes.TaylorColourScheme; -import jalview.schemes.TurnColourScheme; -import jalview.schemes.UserColourScheme; -import jalview.schemes.ZappoColourScheme; import jalview.util.MessageManager; import jalview.viewmodel.AlignmentViewport; import jalview.ws.DBRefFetcher; @@ -132,6 +119,8 @@ import java.awt.print.PageFormat; import java.awt.print.PrinterJob; import java.beans.PropertyChangeEvent; import java.io.File; +import java.io.FileWriter; +import java.io.PrintWriter; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; @@ -157,7 +146,7 @@ import javax.swing.SwingUtilities; * @version $Revision$ */ public class AlignFrame extends GAlignFrame implements DropTargetListener, - IProgressIndicator, AlignViewControllerGuiI + IProgressIndicator, AlignViewControllerGuiI, ColourChangeListener { public static final int DEFAULT_WIDTH = 700; @@ -346,7 +335,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, alignPanel); if (viewport.getAlignmentConservationAnnotation() == null) { - BLOSUM62Colour.setEnabled(false); + // BLOSUM62Colour.setEnabled(false); conservationMenuItem.setEnabled(false); modifyConservation.setEnabled(false); // PIDColour.setEnabled(false); @@ -366,19 +355,20 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, sortPairwiseMenuItem_actionPerformed(null); } - if (Desktop.desktop != null) - { - this.setDropTarget(new java.awt.dnd.DropTarget(this, this)); - addServiceListeners(); - setGUINucleotide(viewport.getAlignment().isNucleotide()); - } - this.alignPanel.av .setShowAutocalculatedAbove(isShowAutoCalculatedAbove()); setMenusFromViewport(viewport); buildSortByAnnotationScoresMenu(); buildTreeMenu(); + buildColourMenu(); + + if (Desktop.desktop != null) + { + this.setDropTarget(new java.awt.dnd.DropTarget(this, this)); + addServiceListeners(); + setGUINucleotide(); + } if (viewport.getWrapAlignment()) { @@ -845,51 +835,23 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, /** * Configure menu items that vary according to whether the alignment is * nucleotide or protein - * - * @param nucleotide */ - public void setGUINucleotide(boolean nucleotide) + public void setGUINucleotide() { + AlignmentI al = getViewport().getAlignment(); + boolean nucleotide = al.isNucleotide(); + showTranslation.setVisible(nucleotide); showReverse.setVisible(nucleotide); showReverseComplement.setVisible(nucleotide); conservationMenuItem.setEnabled(!nucleotide); - modifyConservation.setEnabled(!nucleotide); + modifyConservation.setEnabled(!nucleotide + && conservationMenuItem.isSelected()); showGroupConservation.setEnabled(!nucleotide); - /* - * enable / disable colour schemes - * - the old, simple way (based on the nucleotide flag), or - * - the new, generic way (interrogate the colour scheme) - */ - AlignmentI al = getViewport().getAlignment(); - clustalColour.setEnabled(!nucleotide); - zappoColour.setEnabled(!nucleotide); - taylorColour.setEnabled(!nucleotide); - hydrophobicityColour.setEnabled(!nucleotide); - helixColour.setEnabled(!nucleotide); - strandColour.setEnabled(!nucleotide); - turnColour.setEnabled(!nucleotide); - // buriedColour.setEnabled(!nucleotide); - // TODO make isApplicableTo static in ColourSchemeI in Java 8 - buriedColour.setEnabled(new BuriedColourScheme().isApplicableTo(al)); - rnahelicesColour.setEnabled(nucleotide); - nucleotideColour.setEnabled(nucleotide); - // purinePyrimidineColour.setEnabled(nucleotide); - purinePyrimidineColour.setEnabled(new PurinePyrimidineColourScheme() - .isApplicableTo(al)); - tcoffeeColour - .setEnabled(new TCoffeeColourScheme(al).isApplicableTo(al)); - RNAInteractionColour.setEnabled(nucleotide); showComplementMenuItem.setText(nucleotide ? MessageManager .getString("label.protein") : MessageManager .getString("label.nucleotide")); - - String selectedColourScheme = Cache.getDefault( - nucleotide ? Preferences.DEFAULT_COLOUR_NUC - : Preferences.DEFAULT_COLOUR_PROT, - ResidueColourScheme.NONE); - setColourSelected(selectedColourScheme); } /** @@ -915,7 +877,9 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, padGapsMenuitem.setSelected(av.isPadGaps()); colourTextMenuItem.setSelected(av.isShowColourText()); abovePIDThreshold.setSelected(av.getAbovePIDThreshold()); + modifyPID.setEnabled(abovePIDThreshold.isSelected()); conservationMenuItem.setSelected(av.getConservationSelected()); + modifyConservation.setEnabled(conservationMenuItem.isSelected()); seqLimits.setSelected(av.getShowJVSuffix()); idRightAlign.setSelected(av.isRightAlignIds()); centreColumnLabelsMenuItem.setState(av.isCentreColumnLabels()); @@ -941,8 +905,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, showSequenceLogo.setSelected(av.isShowSequenceLogo()); normaliseSequenceLogo.setSelected(av.isNormaliseSequenceLogo()); - setColourSelected(ColourSchemeProperty.getColourName(av - .getGlobalColourScheme())); + ColourMenuHelper.setColourSelected(colourMenu, + av.getGlobalColourScheme()); showSeqFeatures.setSelected(av.isShowSequenceFeatures()); hiddenMarkers.setState(av.getShowHiddenMarkers()); @@ -952,11 +916,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, autoCalculate.setSelected(av.autoCalculateConsensus); sortByTree.setSelected(av.sortByTree); listenToViewSelections.setSelected(av.followSelection); - // rnahelicesColour.setEnabled(av.getAlignment().hasRNAStructure()); - rnahelicesColour.setEnabled(new RNAHelicesColour(av.getAlignment()) - .isApplicableTo(av.getAlignment())); - rnahelicesColour - .setSelected(av.getGlobalColourScheme() instanceof jalview.schemes.RNAHelicesColour); showProducts.setEnabled(canShowProducts()); setGroovyEnabled(Desktop.getGroovyConsole() != null); @@ -1141,7 +1100,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, public void saveAs_actionPerformed(ActionEvent e) { String format = currentFileFormat == null ? null : currentFileFormat - .toString(); + .getName(); JalviewFileChooser chooser = JalviewFileChooser.forWrite( Cache.getProperty("LAST_DIRECTORY"), format); @@ -1175,8 +1134,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, fileName = chooser.getSelectedFile().getPath(); - Cache.setProperty("DEFAULT_FILE_FORMAT", - currentFileFormat.toString()); + Cache.setProperty("DEFAULT_FILE_FORMAT", currentFileFormat.getName()); Cache.setProperty("LAST_DIRECTORY", fileName); saveAlignment(fileName, currentFileFormat); @@ -1206,17 +1164,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } else { - // if (!jalview.io.AppletFormatAdapter.isValidFormat(format, true)) - // { - // warningMessage("Cannot save file " + fileName + " using format " - // + format, "Alignment output format not supported"); - // if (!Jalview.isHeadlessMode()) - // { - // saveAs_actionPerformed(null); - // } - // return false; - // } - AlignmentExportData exportData = getAlignmentForExport(format, viewport, null); if (exportData.getSettings().isCancelled()) @@ -1241,15 +1188,14 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { try { - java.io.PrintWriter out = new java.io.PrintWriter( - new java.io.FileWriter(file)); + PrintWriter out = new PrintWriter(new FileWriter(file)); out.print(output); out.close(); this.setTitle(file); statusBar.setText(MessageManager.formatMessage( "label.successfully_saved_to_file_in_format", - new Object[] { fileName, format })); + new Object[] { fileName, format.getName() })); } catch (Exception ex) { success = false; @@ -1294,8 +1240,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, @Override protected void outputText_actionPerformed(ActionEvent e) { - - FileFormatI fileFormat = FileFormat.forName(e.getActionCommand()); + FileFormatI fileFormat = FileFormats.getInstance().forName( + e.getActionCommand()); AlignmentExportData exportData = getAlignmentForExport(fileFormat, viewport, null); if (exportData.getSettings().isCancelled()) @@ -3331,133 +3277,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, new TextColourChooser().chooseColour(alignPanel, null); } - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - protected void noColourmenuItem_actionPerformed() - { - changeColour(null); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void clustalColour_actionPerformed() - { - changeColour(new ClustalxColourScheme(viewport.getAlignment(), - viewport.getHiddenRepSequences())); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void zappoColour_actionPerformed() - { - changeColour(new ZappoColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void taylorColour_actionPerformed() - { - changeColour(new TaylorColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void hydrophobicityColour_actionPerformed() - { - changeColour(new HydrophobicColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void helixColour_actionPerformed() - { - changeColour(new HelixColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void strandColour_actionPerformed() - { - changeColour(new StrandColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void turnColour_actionPerformed() - { - changeColour(new TurnColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void buriedColour_actionPerformed() - { - changeColour(new BuriedColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void nucleotideColour_actionPerformed() - { - changeColour(new NucleotideColourScheme()); - } - - @Override - public void purinePyrimidineColour_actionPerformed() - { - changeColour(new PurinePyrimidineColourScheme()); - } - /* * public void covariationColour_actionPerformed() { * changeColour(new @@ -3476,35 +3295,57 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, new AnnotationColumnChooser(viewport, alignPanel); } + /** + * Action on the user checking or unchecking the option to apply the selected + * colour scheme to all groups. If unchecked, groups may have their own + * independent colour schemes. + * + */ @Override - public void rnahelicesColour_actionPerformed() + protected void applyToAllGroups_actionPerformed() { - new RNAHelicesColourChooser(viewport, alignPanel); + viewport.setColourAppliesToAllGroups(applyToAllGroups.isSelected()); } /** - * DOCUMENT ME! + * Action on user selecting a colour from the colour menu * + * @param name + * the name (not the menu item label!) of the colour scheme */ @Override - protected void applyToAllGroups_actionPerformed() + public void changeColour_actionPerformed(String name) { - viewport.setColourAppliesToAllGroups(applyToAllGroups.isSelected()); + /* + * 'User Defined' opens a panel to configure or load a + * user-defined colour scheme + */ + if (ResidueColourScheme.USER_DEFINED.equals(name)) + { + new UserDefinedColours(alignPanel, null); + return; + } + + /* + * otherwise set the chosen colour scheme (or null for 'None') + */ + ColourSchemeI cs = ColourSchemes.getInstance().getColourScheme(name, + viewport.getAlignment(), viewport.getHiddenRepSequences()); + changeColour(cs); } /** - * DOCUMENT ME! + * Actions on setting or changing the alignment colour scheme * * @param cs - * DOCUMENT ME! */ @Override public void changeColour(ColourSchemeI cs) { // TODO: pull up to controller method - if (cs != null) { + ColourMenuHelper.setColourSelected(colourMenu, cs.getSchemeName()); // Make sure viewport is up to date w.r.t. any sliders if (viewport.getAbovePIDThreshold()) { @@ -3518,11 +3359,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel, cs, "Background")); } - if (cs instanceof TCoffeeColourScheme) - { - tcoffeeColour.setEnabled(true); - tcoffeeColour.setSelected(true); - } } viewport.setGlobalColourScheme(cs); @@ -3567,63 +3403,44 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! + * Action on selecting or deselecting (Colour) By Conservation */ @Override protected void conservationMenuItem_actionPerformed() { - viewport.setConservationSelected(conservationMenuItem.isSelected()); - - viewport.setAbovePIDThreshold(false); - abovePIDThreshold.setSelected(false); + boolean selected = conservationMenuItem.isSelected(); + modifyConservation.setEnabled(selected); + viewport.setConservationSelected(selected); changeColour(viewport.getGlobalColourScheme()); - - modifyConservation_actionPerformed(); + if (selected) + { + modifyConservation_actionPerformed(); + } + else + { + SliderPanel.hideConservationSlider(); + } } /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! + * Action on selecting or deselecting (Colour) Above PID Threshold */ @Override public void abovePIDThreshold_actionPerformed() { - viewport.setAbovePIDThreshold(abovePIDThreshold.isSelected()); - - conservationMenuItem.setSelected(false); - viewport.setConservationSelected(false); + boolean selected = abovePIDThreshold.isSelected(); + modifyPID.setEnabled(selected); + viewport.setAbovePIDThreshold(selected); changeColour(viewport.getGlobalColourScheme()); - - modifyPID_actionPerformed(); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void userDefinedColour_actionPerformed(ActionEvent e) - { - if (e.getActionCommand().equals( - MessageManager.getString("action.user_defined"))) + if (selected) { - new UserDefinedColours(alignPanel, null); + modifyPID_actionPerformed(); } else { - UserColourScheme udc = UserDefinedColours - .getUserColourSchemes().get(e.getActionCommand()); - - changeColour(udc); + SliderPanel.hidePIDSlider(); } } @@ -3634,30 +3451,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, * DOCUMENT ME! */ @Override - public void PIDColour_actionPerformed() - { - changeColour(new PIDColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override - public void BLOSUM62Colour_actionPerformed() - { - changeColour(new Blosum62ColourScheme()); - } - - /** - * DOCUMENT ME! - * - * @param e - * DOCUMENT ME! - */ - @Override public void sortPairwiseMenuItem_actionPerformed(ActionEvent e) { SequenceI[] oldOrder = viewport.getAlignment().getSequencesArray(); @@ -4285,12 +4078,6 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } } - @Override - protected void tcoffeeColorScheme_actionPerformed() - { - changeColour(new TCoffeeColourScheme(alignPanel.getAlignment())); - } - public TreePanel ShowNewickTree(NewickFile nf, String title) { return ShowNewickTree(nf, title, 600, 500, 4, 5); @@ -4956,8 +4743,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (tcf.annotateAlignment(viewport.getAlignment(), true)) { - tcoffeeColour.setEnabled(true); - tcoffeeColour.setSelected(true); + buildColourMenu(); changeColour(new TCoffeeColourScheme(viewport.getAlignment())); isAnnotation = true; statusBar @@ -5887,6 +5673,41 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, true, (actionEvent.getModifiers() & (ActionEvent.META_MASK | ActionEvent.CTRL_MASK)) != 0); } + + /** + * Rebuilds the Colour menu, including any user-defined colours which have + * been loaded either on startup or during the session + */ + public void buildColourMenu() + { + colourMenu.removeAll(); + + colourMenu.add(applyToAllGroups); + colourMenu.add(textColour); + colourMenu.addSeparator(); + + ColourMenuHelper.addMenuItems(colourMenu, this, + viewport.getAlignment(), false); + + colourMenu.addSeparator(); + colourMenu.add(conservationMenuItem); + colourMenu.add(modifyConservation); + colourMenu.add(abovePIDThreshold); + colourMenu.add(modifyPID); + colourMenu.add(annotationColour); + + /* + * select the default colour for the alignment (this may be + * overridden later) + */ + boolean nucleotide = viewport.getAlignment().isNucleotide(); + String defaultColourScheme = Cache.getDefault( + nucleotide ? Preferences.DEFAULT_COLOUR_NUC + : Preferences.DEFAULT_COLOUR_PROT, + ResidueColourScheme.NONE); + + ColourMenuHelper.setColourSelected(colourMenu, defaultColourScheme); + } } class PrintThread extends Thread