JAL-1152 annotation sorting preferences and help documentation
[jalview.git] / src / jalview / gui / Preferences.java
index 2a31518..dfb89b2 100755 (executable)
@@ -1,36 +1,49 @@
 /*
- * 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 <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
  * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.gui;
 
-import java.util.*;
-
-import java.awt.*;
-import java.awt.event.*;
-
-import javax.swing.*;
-
-import jalview.bin.*;
-import jalview.io.*;
-import jalview.jbgui.*;
-import jalview.schemes.*;
+import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
+import jalview.bin.Cache;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.jbgui.GPreferences;
+import jalview.jbgui.GSequenceLink;
+import jalview.schemes.ColourSchemeProperty;
 import jalview.util.MessageManager;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseEvent;
+import java.util.Collection;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+import javax.swing.JColorChooser;
+import javax.swing.JFileChooser;
+import javax.swing.JInternalFrame;
+import javax.swing.JOptionPane;
+
 /**
  * DOCUMENT ME!
  * 
@@ -88,9 +101,10 @@ public class Preferences extends GPreferences
               .indexOf("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");
       if (srsPos > -1)
       {
-        sequenceURLLinks.setElementAt(
-                "EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$",
-                srsPos);
+        sequenceURLLinks
+                .setElementAt(
+                        "EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$",
+                        srsPos);
       }
     }
 
@@ -100,9 +114,6 @@ public class Preferences extends GPreferences
      */
 
     groupURLLinks = new Vector();
-    // groupURLLinks.addElement("UNIPROT|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewIDs$DATASETID$&input=$SEQUENCEIDS$&inputType=0|,");
-    // groupURLLinks.addElement("Seqs|EnVision2|http://www.ebi.ac.uk/enfin-srv/envision2/pages/linkin.jsf?tool=Jalview&workflow=Default&datasetName=JalviewSeqs$DATASETID$&input=$SEQUENCES=/([A-Za-z]+)+/=$&inputType=1|,");
-
   }
 
   Vector nameLinks, urlLinks;
@@ -132,7 +143,8 @@ public class Preferences extends GPreferences
       height = 460;
     }
 
-    Desktop.addInternalFrame(frame, MessageManager.getString("label.preferences"), width, height);
+    Desktop.addInternalFrame(frame,
+            MessageManager.getString("label.preferences"), width, height);
     frame.setMinimumSize(new Dimension(width, height));
 
     seqLimit.setSelected(Cache.getDefault("SHOW_JVSUFFIX", true));
@@ -212,11 +224,28 @@ public class Preferences extends GPreferences
     sortby.addItem("Pairwise Identity");
     sortby.setSelectedItem(Cache.getDefault("SORT_ALIGNMENT", "No sort"));
 
-    epsRendering.addItem("Prompt each time");
-    epsRendering.addItem("Lineart");
-    epsRendering.addItem("Text");
-    epsRendering.setSelectedItem(Cache.getDefault("EPS_RENDERING",
-            "Prompt each time"));
+    sortAnnBy.addItem(SequenceAnnotationOrder.NONE.toString());
+    sortAnnBy
+            .addItem(SequenceAnnotationOrder.SEQUENCE_AND_LABEL.toString());
+    sortAnnBy
+            .addItem(SequenceAnnotationOrder.LABEL_AND_SEQUENCE.toString());
+    SequenceAnnotationOrder savedSort = SequenceAnnotationOrder
+            .valueOf(Cache.getDefault(Cache.SORT_ANNOTATIONS,
+                    SequenceAnnotationOrder.NONE.name()));
+    sortAnnBy.setSelectedItem(savedSort.toString());
+
+    sortAutocalc.addItem("Autocalculated first");
+    sortAutocalc.addItem("Autocalculated last");
+
+    final boolean showAbove = Cache.getDefault(Cache.SHOW_AUTOCALC_ABOVE,
+            true);
+    sortAutocalc.setSelectedItem(showAbove ? sortAutocalc.getItemAt(0)
+            : sortAutocalc.getItemAt(1));
+
+    epsRendering.addItem(MessageManager.getString("label.prompt_each_time"));
+    epsRendering.addItem(MessageManager.getString("label.lineart"));
+    epsRendering.addItem(MessageManager.getString("action.text"));
+    epsRendering.setSelectedIndex(0);
     autoIdWidth.setSelected(Cache.getDefault("FIGURE_AUTOIDWIDTH", false));
     userIdWidth.setEnabled(autoIdWidth.isSelected());
     userIdWidthlabel.setEnabled(autoIdWidth.isSelected());
@@ -355,6 +384,19 @@ public class Preferences extends GPreferences
     Cache.applicationProperties.setProperty("SORT_ALIGNMENT", sortby
             .getSelectedItem().toString());
 
+    // convert description of sort order to enum name for save
+    SequenceAnnotationOrder annSortOrder = SequenceAnnotationOrder
+            .forDescription(sortAnnBy.getSelectedItem().toString());
+    if (annSortOrder != null)
+    {
+      Cache.applicationProperties.setProperty(Cache.SORT_ANNOTATIONS,
+              annSortOrder.name());
+    }
+
+    final boolean showAutocalcFirst = sortAutocalc.getSelectedIndex() == 0;
+    Cache.applicationProperties.setProperty(Cache.SHOW_AUTOCALC_ABOVE,
+            Boolean.valueOf(showAutocalcFirst).toString());
+
     Cache.setColourProperty("ANNOTATIONCOLOUR_MIN",
             minColour.getBackground());
     Cache.setColourProperty("ANNOTATIONCOLOUR_MAX",
@@ -509,7 +551,7 @@ public class Preferences extends GPreferences
             { "Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "Jalview" },
             jalview.bin.Cache.getProperty("DEFAULT_FILE_FORMAT"));
     chooser.setFileView(new JalviewFileView());
-    chooser.setDialogTitle("Select startup file");
+    chooser.setDialogTitle(MessageManager.getString("label.select_startup_file"));
 
     int value = chooser.showOpenDialog(this);
 
@@ -567,8 +609,8 @@ public class Preferences extends GPreferences
     while (!valid)
     {
       if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
-              MessageManager.getString("label.new_sequence_url_link"), JOptionPane.OK_CANCEL_OPTION, -1,
-              null) == JOptionPane.OK_OPTION)
+              MessageManager.getString("label.new_sequence_url_link"),
+              JOptionPane.OK_CANCEL_OPTION, -1, null) == JOptionPane.OK_OPTION)
       {
         if (link.checkValid())
         {
@@ -593,7 +635,8 @@ public class Preferences extends GPreferences
     if (index == -1)
     {
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              MessageManager.getString("label.no_link_selected"), MessageManager.getString("label.no_link_selected"),
+              MessageManager.getString("label.no_link_selected"),
+              MessageManager.getString("label.no_link_selected"),
               JOptionPane.WARNING_MESSAGE);
       return;
     }
@@ -606,8 +649,8 @@ public class Preferences extends GPreferences
     {
 
       if (JOptionPane.showInternalConfirmDialog(Desktop.desktop, link,
-              MessageManager.getString("label.new_sequence_url_link"), JOptionPane.OK_CANCEL_OPTION, -1,
-              null) == JOptionPane.OK_OPTION)
+              MessageManager.getString("label.new_sequence_url_link"),
+              JOptionPane.OK_CANCEL_OPTION, -1, null) == JOptionPane.OK_OPTION)
       {
         if (link.checkValid())
         {
@@ -631,7 +674,8 @@ public class Preferences extends GPreferences
     if (index == -1)
     {
       JOptionPane.showInternalMessageDialog(Desktop.desktop,
-              MessageManager.getString("label.no_link_selected"), MessageManager.getString("label.no_link_selected"),
+              MessageManager.getString("label.no_link_selected"),
+              MessageManager.getString("label.no_link_selected"),
               JOptionPane.WARNING_MESSAGE);
       return;
     }
@@ -649,7 +693,7 @@ public class Preferences extends GPreferences
   public void defaultBrowser_mouseClicked(MouseEvent e)
   {
     JFileChooser chooser = new JFileChooser(".");
-    chooser.setDialogTitle("Select default web browser");
+    chooser.setDialogTitle(MessageManager.getString("label.select_default_browser"));
 
     int value = chooser.showOpenDialog(this);
 
@@ -685,7 +729,7 @@ public class Preferences extends GPreferences
   public void minColour_actionPerformed()
   {
     Color col = JColorChooser.showDialog(this,
-            "Select Colour for Minimum Value", minColour.getBackground());
+            MessageManager.getString("label.select_colour_minimum_value"), minColour.getBackground());
     if (col != null)
     {
       minColour.setBackground(col);
@@ -696,7 +740,7 @@ public class Preferences extends GPreferences
   public void maxColour_actionPerformed()
   {
     Color col = JColorChooser.showDialog(this,
-            "Select Colour for Maximum Value", maxColour.getBackground());
+            MessageManager.getString("label.select_colour_maximum_value"), maxColour.getBackground());
     if (col != null)
     {
       maxColour.setBackground(col);
@@ -724,8 +768,8 @@ public class Preferences extends GPreferences
       JOptionPane
               .showInternalMessageDialog(
                       Desktop.desktop,
-                      "The user defined width for the\nannotation and sequence ID columns\nin exported figures must be\nat least 12 pixels wide.",
-                      "Invalid ID Column width",
+                      MessageManager.getString("warn.user_defined_width_requirements"),
+                      MessageManager.getString("label.invalid_id_column_width"),
                       JOptionPane.WARNING_MESSAGE);
       userIdWidth.setText("");
     }