Merge branch 'features/JAL-2360colourSchemeApplicability' into
[jalview.git] / src / jalview / gui / AlignFrame.java
index 3c0569e..5a0d13e 100644 (file)
@@ -67,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;
@@ -118,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;
@@ -842,7 +845,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     showReverse.setVisible(nucleotide);
     showReverseComplement.setVisible(nucleotide);
     conservationMenuItem.setEnabled(!nucleotide);
-    modifyConservation.setEnabled(!nucleotide);
+    modifyConservation.setEnabled(!nucleotide
+            && conservationMenuItem.isSelected());
     showGroupConservation.setEnabled(!nucleotide);
 
     showComplementMenuItem.setText(nucleotide ? MessageManager
@@ -873,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());
@@ -1094,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);
 
@@ -1128,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);
@@ -1159,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())
@@ -1194,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;
@@ -1247,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())
@@ -3354,21 +3347,29 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     {
       ColourMenuHelper.setColourSelected(colourMenu, cs.getSchemeName());
       // Make sure viewport is up to date w.r.t. any sliders
-      if (viewport.getAbovePIDThreshold())
-      {
-        int threshold = SliderPanel.setPIDSliderSource(alignPanel, cs,
-                "Background");
-        viewport.setThreshold(threshold);
-      }
-
-      if (viewport.getConservationSelected())
-      {
-        cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel,
-                cs, "Background"));
-      }
+      // ? not needed as handled by SliderPanel.valueChanged?
+//       if (viewport.getAbovePIDThreshold())
+//       {
+      // int threshold = SliderPanel.setPIDSliderSource(alignPanel, cs,
+//       "Background");
+       //todo is threshold held in viewport style or in colour scheme?
+//       viewport.setThreshold(threshold);
+      // }
+      //
+      // if (viewport.getConservationSelected())
+      // {
+      // cs.setConservationInc(SliderPanel.setConservationSlider(alignPanel,
+      // cs, "Background"));
+      // }
     }
 
     viewport.setGlobalColourScheme(cs);
+    if (viewport.getConservationSelected())
+    {
+      int conservationInc = SliderPanel.getConservationValue();
+      viewport.getViewportColourScheme()
+              .setConservationInc(conservationInc);
+    }
 
     alignPanel.paintAlignment(true);
   }
@@ -3382,11 +3383,10 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   protected void modifyPID_actionPerformed()
   {
-    if (viewport.getAbovePIDThreshold()
-            && viewport.getGlobalColourScheme() != null)
+    if (viewport.getAbovePIDThreshold())
     {
       SliderPanel.setPIDSliderSource(alignPanel,
-              viewport.getGlobalColourScheme(), "Background");
+              viewport.getViewportColourScheme(), "Background");
       SliderPanel.showPIDSlider();
     }
   }
@@ -3404,47 +3404,51 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
             && viewport.getGlobalColourScheme() != null)
     {
       SliderPanel.setConservationSlider(alignPanel,
-              viewport.getGlobalColourScheme(), "Background");
+              viewport.getViewportColourScheme(), "Background");
       SliderPanel.showConservationSlider();
     }
   }
 
   /**
-   * 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();
+    if (selected)
+    {
+      modifyPID_actionPerformed();
+    }
+    else
+    {
+      SliderPanel.hidePIDSlider();
+    }
   }
 
   /**
@@ -5699,17 +5703,11 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
     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);
+    ColourSchemeI colourScheme = viewport.getGlobalColourScheme();
+    String schemeName = colourScheme == null ? null : colourScheme
+            .getSchemeName();
 
-    ColourMenuHelper.setColourSelected(colourMenu, defaultColourScheme);
+    ColourMenuHelper.setColourSelected(colourMenu, schemeName);
   }
 }