clean up
[jalview.git] / src / jalview / gui / Preferences.java
index b082bc6..1b274a8 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -22,7 +22,8 @@ package jalview.gui;
 
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.bin.Cache;
-import jalview.gui.StructureViewer.Viewer;
+import jalview.gui.Help.HelpId;
+import jalview.gui.StructureViewer.ViewerType;
 import jalview.io.JalviewFileChooser;
 import jalview.io.JalviewFileView;
 import jalview.jbgui.GPreferences;
@@ -39,15 +40,19 @@ import java.awt.event.ActionListener;
 import java.awt.event.MouseEvent;
 import java.io.File;
 import java.util.Collection;
+import java.util.List;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
+import javax.help.HelpSetException;
 import javax.swing.JColorChooser;
 import javax.swing.JFileChooser;
 import javax.swing.JInternalFrame;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 
+import ext.edu.ucsf.rbvi.strucviz2.StructureManager;
+
 /**
  * DOCUMENT ME!
  * 
@@ -56,6 +61,15 @@ import javax.swing.JPanel;
  */
 public class Preferences extends GPreferences
 {
+  public static final String ENABLE_SPLIT_FRAME = "ENABLE_SPLIT_FRAME";
+
+  public static final String SCALE_PROTEIN_TO_CDNA = "SCALE_PROTEIN_TO_CDNA";
+
+  public static final String DEFAULT_COLOUR = "DEFAULT_COLOUR";
+
+  public static final String DEFAULT_COLOUR_PROT = "DEFAULT_COLOUR_PROT";
+
+  public static final String DEFAULT_COLOUR_NUC = "DEFAULT_COLOUR_NUC";
 
   public static final String ADD_TEMPFACT_ANN = "ADD_TEMPFACT_ANN";
 
@@ -160,11 +174,11 @@ public class Preferences extends GPreferences
     dasTab.add(dasSource, BorderLayout.CENTER);
     wsPrefs = new WsPreferences();
     wsTab.add(wsPrefs, BorderLayout.CENTER);
-    int width = 500, height = 420;
+    int width = 500, height = 450;
     if (new jalview.util.Platform().isAMac())
     {
       width = 570;
-      height = 460;
+      height = 480;
     }
 
     Desktop.addInternalFrame(frame,
@@ -220,6 +234,8 @@ public class Preferences extends GPreferences
             + ""));
 
     smoothFont.setSelected(Cache.getDefault("ANTI_ALIAS", false));
+    scaleProteinToCdna.setSelected(Cache.getDefault(SCALE_PROTEIN_TO_CDNA,
+            false));
 
     idItalics.setSelected(Cache.getDefault("ID_ITALICS", true));
 
@@ -262,10 +278,14 @@ public class Preferences extends GPreferences
      */
     for (int i = ColourSchemeProperty.FIRST_COLOUR; i <= ColourSchemeProperty.LAST_COLOUR; i++)
     {
-      colour.addItem(ColourSchemeProperty.getColourName(i));
+      protColour.addItem(ColourSchemeProperty.getColourName(i));
+      nucColour.addItem(ColourSchemeProperty.getColourName(i));
     }
-    String string = Cache.getDefault("DEFAULT_COLOUR", "None");
-    colour.setSelectedItem(string);
+    String oldProp = Cache.getDefault(DEFAULT_COLOUR, "None");
+    String newProp = Cache.getDefault(DEFAULT_COLOUR_PROT, null);
+    protColour.setSelectedItem(newProp != null ? newProp : oldProp);
+    newProp = Cache.getDefault(DEFAULT_COLOUR_NUC, null);
+    nucColour.setSelectedItem(newProp != null ? newProp : oldProp);
     minColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MIN",
             Color.orange));
     maxColour.setBackground(Cache.getDefaultColour("ANNOTATIONCOLOUR_MAX",
@@ -284,7 +304,7 @@ public class Preferences extends GPreferences
     addTempFactor.setSelected(Cache.getDefault(ADD_TEMPFACT_ANN, false));
     addTempFactor.setEnabled(structSelected);
     structViewer.setSelectedItem(Cache.getDefault(STRUCTURE_DISPLAY,
-            Viewer.JMOL.name()));
+            ViewerType.JMOL.name()));
     chimeraPath.setText(Cache.getDefault(CHIMERA_PATH, ""));
     chimeraPath.addActionListener(new ActionListener()
     {
@@ -345,6 +365,8 @@ public class Preferences extends GPreferences
     pileupjv.setSelected(Cache.getDefault("PILEUP_JVSUFFIX", true));
     pirjv.setSelected(Cache.getDefault("PIR_JVSUFFIX", true));
     modellerOutput.setSelected(Cache.getDefault("PIR_MODELLER", false));
+    embbedBioJSON.setSelected(Cache.getDefault("EXPORT_EMBBED_BIOJSON",
+            true));
 
     /*
      * Set Editing tab defaults
@@ -415,6 +437,8 @@ public class Preferences extends GPreferences
             Boolean.toString(showConsensLogo.isSelected()));
     Cache.applicationProperties.setProperty("ANTI_ALIAS",
             Boolean.toString(smoothFont.isSelected()));
+    Cache.applicationProperties.setProperty(SCALE_PROTEIN_TO_CDNA,
+            Boolean.toString(scaleProteinToCdna.isSelected()));
     Cache.applicationProperties.setProperty("SHOW_NPFEATS_TOOLTIP",
             Boolean.toString(showNpTooltip.isSelected()));
     Cache.applicationProperties.setProperty("SHOW_DBREFS_TOOLTIP",
@@ -447,7 +471,9 @@ public class Preferences extends GPreferences
     /*
      * Save Colours settings
      */
-    Cache.applicationProperties.setProperty("DEFAULT_COLOUR", colour
+    Cache.applicationProperties.setProperty(DEFAULT_COLOUR_PROT, protColour
+            .getSelectedItem().toString());
+    Cache.applicationProperties.setProperty(DEFAULT_COLOUR_NUC, nucColour
             .getSelectedItem().toString());
     Cache.setColourProperty("ANNOTATIONCOLOUR_MIN",
             minColour.getBackground());
@@ -565,6 +591,8 @@ public class Preferences extends GPreferences
             Boolean.toString(pirjv.isSelected()));
     Cache.applicationProperties.setProperty("PIR_MODELLER",
             Boolean.toString(modellerOutput.isSelected()));
+    Cache.applicationProperties.setProperty("EXPORT_EMBBED_BIOJSON",
+            Boolean.toString(embbedBioJSON.isSelected()));
     jalview.io.PIRFile.useModellerOutput = modellerOutput.isSelected();
 
     Cache.applicationProperties.setProperty("FIGURE_AUTOIDWIDTH",
@@ -596,7 +624,8 @@ public class Preferences extends GPreferences
   }
 
   /**
-   * Do any necessary validation before saving settings.
+   * Do any necessary validation before saving settings. Return focus to the
+   * first tab which fails validation.
    * 
    * @return
    */
@@ -879,4 +908,53 @@ public class Preferences extends GPreferences
     return true;
   }
 
+  /**
+   * If Chimera is selected, check it can be found on default or user-specified
+   * path, if not show a warning/help dialog.
+   */
+  @Override
+  protected void structureViewer_actionPerformed(String selectedItem)
+  {
+    if (!selectedItem.equals(ViewerType.CHIMERA.name()))
+    {
+      return;
+    }
+    boolean found = false;
+
+    /*
+     * Try user-specified and standard paths for Chimera executable.
+     */
+    List<String> paths = StructureManager.getChimeraPaths();
+    paths.add(0, chimeraPath.getText());
+    for (String path : paths)
+    {
+      if (new File(path.trim()).canExecute())
+      {
+        found = true;
+        break;
+      }
+    }
+    if (!found)
+    {
+      String[] options =
+      { "OK", "Help" };
+      int showHelp = JOptionPane.showInternalOptionDialog(
+              Desktop.desktop,
+              JvSwingUtils.wrapTooltip(true,
+                      MessageManager.getString("label.chimera_missing")),
+              "", JOptionPane.YES_NO_OPTION,
+              JOptionPane.WARNING_MESSAGE, null, options, options[0]);
+      if (showHelp == JOptionPane.NO_OPTION)
+      {
+        try
+        {
+          Help.showHelpWindow(HelpId.StructureViewer);
+        } catch (HelpSetException e)
+        {
+          e.printStackTrace();
+        }
+      }
+    }
+  }
+
 }