JAL-3416 Remove all JFrame/JInternalFrame icons (set to null)
[jalview.git] / src / jalview / gui / Preferences.java
index 8eb0664..2f0257f 100755 (executable)
@@ -27,14 +27,13 @@ import java.awt.Dimension;
 import java.awt.Font;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
 
 import javax.help.HelpSetException;
 import javax.swing.JComboBox;
-import javax.swing.JFileChooser;
 import javax.swing.JInternalFrame;
 import javax.swing.JPanel;
 import javax.swing.ListSelectionModel;
@@ -50,9 +49,11 @@ import javax.swing.table.TableColumn;
 import javax.swing.table.TableModel;
 import javax.swing.table.TableRowSorter;
 
+//import edu.stanford.ejalbert.launching.IBrowserLaunching;
 import ext.edu.ucsf.rbvi.strucviz2.StructureManager;
 import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.bin.MemorySetting;
 import jalview.ext.pymol.PymolManager;
 import jalview.gui.Help.HelpId;
@@ -220,19 +221,27 @@ public class Preferences extends GPreferences
 
   public static void openPreferences()
   {
-    openPreferences(0, null);
+    openPreferences(null, null);
   }
 
-  public static void openPreferences(int selectTab, String message)
+  public static void openPreferences(TabRef selectTab, String message)
   {
     Preferences p = getInstance();
-    p.selectTab(selectTab);
-    p.setMessage(message);
+    if (selectTab != null)
+      p.selectTab(selectTab, message);
     p.frame.show();
     p.frame.moveToFront();
     p.frame.grabFocus();
   }
 
+  public void selectTab(TabRef selectTab, String message)
+  {
+    this.selectTab(selectTab);
+    if (message != null)
+      this.setMessage(message);
+    this.frame.show();
+  }
+
   /**
    * Creates a new Preferences object.
    */
@@ -240,6 +249,7 @@ public class Preferences extends GPreferences
   {
     super();
     frame = new JInternalFrame();
+    frame.setFrameIcon(null);
     frame.setContentPane(this);
     if (!Platform.isJS())
     /**
@@ -347,8 +357,8 @@ public class Preferences extends GPreferences
     startupCheckbox
             .setSelected(Cache.getDefault("SHOW_STARTUP_FILE", true));
     startupFileTextfield.setText(Cache.getDefault("STARTUP_FILE",
-            Cache.getDefault("www.jalview.org", "http://www.jalview.org")
-                    + "/examples/exampleFile_2_3.jar"));
+            Cache.getDefault("www.jalview.org", "https://www.jalview.org")
+                    + "/examples/exampleFile_2_7.jvp"));
 
     /*
      * Set Colours tab defaults
@@ -388,13 +398,11 @@ public class Preferences extends GPreferences
     /*
      * Set Structure tab defaults
      */
-    final boolean structSelected = Cache.getDefault(STRUCT_FROM_PDB, false);
+    final boolean structSelected = Cache.getDefault(STRUCT_FROM_PDB, true);
     structFromPdb.setSelected(structSelected);
-    useRnaView.setSelected(Cache.getDefault(USE_RNAVIEW, false));
-    useRnaView.setEnabled(structSelected);
-    addSecondaryStructure.setSelected(Cache.getDefault(ADD_SS_ANN, false));
+    addSecondaryStructure.setSelected(Cache.getDefault(ADD_SS_ANN, true));
     addSecondaryStructure.setEnabled(structSelected);
-    addTempFactor.setSelected(Cache.getDefault(ADD_TEMPFACT_ANN, false));
+    addTempFactor.setSelected(Cache.getDefault(ADD_TEMPFACT_ANN, true));
     addTempFactor.setEnabled(structSelected);
 
     /*
@@ -425,7 +433,7 @@ public class Preferences extends GPreferences
       }
     } catch (IllegalArgumentException e)
     {
-      Cache.log.error("Unknown structure viewer type: " + viewerType
+      Console.error("Unknown structure viewer type: " + viewerType
               + ", defaulting to Jmol");
       type = ViewerType.JMOL;
     }
@@ -438,11 +446,28 @@ public class Preferences extends GPreferences
       {
         if (validateViewerPath())
         {
-          Cache.setProperty(
-                  structViewer.getSelectedItem().equals(
-                          ViewerType.CHIMERAX.name()) ? CHIMERAX_PATH
-                                  : CHIMERA_PATH,
-                  structureViewerPath.getText());
+          String path = structureViewerPath.getText();
+          try
+          {
+            ViewerType type = ViewerType.valueOf(viewerType);
+            switch (type)
+            {
+            case JMOL:
+              break;
+            case CHIMERA:
+              Cache.setProperty(CHIMERA_PATH, path);
+              break;
+            case CHIMERAX:
+              Cache.setProperty(CHIMERAX_PATH, path);
+              break;
+            case PYMOL:
+              Cache.setProperty(PYMOL_PATH, path);
+              break;
+            }
+          } catch (IllegalArgumentException x)
+          {
+            Console.error("Failed to set path - unknown viewer type", x);
+          }
         }
       }
     });
@@ -597,7 +622,7 @@ public class Preferences extends GPreferences
       proxyType.setSelected(customProxy.getModel(), true);
       break;
     default:
-      Cache.log.warn(
+      Console.warn(
               "Incorrect PROXY_TYPE - should be 'none' (clear proxy properties), 'false' (system settings), 'true' (custom settings): "
                       + proxyTypeString);
     }
@@ -614,8 +639,6 @@ public class Preferences extends GPreferences
     setCustomProxyEnabled();
     applyProxyButtonEnabled(false);
 
-    defaultBrowser.setText(Cache.getDefault("DEFAULT_BROWSER", ""));
-
     usagestats.setSelected(Cache.getDefault("USAGESTATS", false));
     // note antisense here: default is true
     questionnaire
@@ -826,8 +849,6 @@ public class Preferences extends GPreferences
             Boolean.toString(addTempFactor.isSelected()));
     Cache.applicationProperties.setProperty(ADD_SS_ANN,
             Boolean.toString(addSecondaryStructure.isSelected()));
-    Cache.applicationProperties.setProperty(USE_RNAVIEW,
-            Boolean.toString(useRnaView.isSelected()));
     Cache.applicationProperties.setProperty(STRUCT_FROM_PDB,
             Boolean.toString(structFromPdb.isSelected()));
     String viewer = structViewer.getSelectedItem().toString();
@@ -864,10 +885,6 @@ public class Preferences extends GPreferences
      */
     // Proxy settings set first (to catch web services)
 
-    Cache.setOrRemove("DEFAULT_BROWSER", defaultBrowser.getText());
-
-    jalview.util.BrowserLauncher.resetBrowser();
-
     // save user-defined and selected links
     String menuLinks = sequenceUrlLinks.writeUrlsAsString(true);
     if (menuLinks.isEmpty())
@@ -1168,7 +1185,7 @@ public class Preferences extends GPreferences
     if (index == -1)
     {
       // button no longer enabled if row is not selected
-      Cache.log.debug("Edit with no row selected in linkUrlTable");
+      Console.debug("Edit with no row selected in linkUrlTable");
       return;
     }
 
@@ -1220,7 +1237,7 @@ public class Preferences extends GPreferences
     if (index == -1)
     {
       // button no longer enabled if row is not selected
-      Cache.log.debug("Delete with no row selected in linkUrlTable");
+      Console.debug("Delete with no row selected in linkUrlTable");
       return;
     }
     else
@@ -1232,30 +1249,6 @@ public class Preferences extends GPreferences
     ((UrlLinkTableModel) linkUrlTable.getModel()).removeRow(modelIndex);
   }
 
-  @Override
-  public void defaultBrowser_mouseClicked(MouseEvent e)
-  {
-    // TODO: JAL-3048 not needed for j2s
-    if (!Platform.isJS()) // BH 2019
-    /**
-     * Java only
-     * 
-     * @j2sIgnore
-     */
-    {
-      JFileChooser chooser = new JFileChooser(".");
-      chooser.setDialogTitle(
-              MessageManager.getString("label.select_default_browser"));
-
-      int value = chooser.showOpenDialog(this);
-
-      if (value == JFileChooser.APPROVE_OPTION)
-      {
-        defaultBrowser.setText(chooser.getSelectedFile().getAbsolutePath());
-      }
-    }
-  }
-
   /*
    * (non-Javadoc)
    * 
@@ -1460,8 +1453,10 @@ public class Preferences extends GPreferences
                       MessageManager.getString("label.viewer_missing")),
               "", JvOptionPane.YES_NO_OPTION, JvOptionPane.WARNING_MESSAGE,
               null, options, options[0]);
+
       if (showHelp == JvOptionPane.NO_OPTION)
       {
+        this.selectTab(Preferences.TabRef.STRUCTURE_TAB, null);
         try
         {
           Help.showHelpWindow(HelpId.StructureViewer);
@@ -1470,6 +1465,24 @@ public class Preferences extends GPreferences
           e.printStackTrace();
         }
       }
+      else if (showHelp == JvOptionPane.OK_OPTION)
+      {
+        this.selectTab(Preferences.TabRef.STRUCTURE_TAB, null);
+        CompletableFuture<Void> cf = CompletableFuture.runAsync(() -> {
+          try
+          {
+            for (int i = 0; i < 3; i++)
+            {
+              structureViewerPath.setBackground(Color.PINK);
+              Thread.sleep(500);
+              structureViewerPath.setBackground(Color.WHITE);
+              Thread.sleep(500);
+            }
+          } catch (InterruptedException e)
+          {
+          }
+        });
+      }
     }
   }