Merge branch 'feature/JAL-3144noJTree' into
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 1 Nov 2018 11:32:20 +0000 (11:32 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 1 Nov 2018 11:32:20 +0000 (11:32 +0000)
Jalview-BH/JAL-3026-JAL-3063-JAXB

Conflicts:
src/jalview/ext/ensembl/EnsemblRestClient.java

.classpath.js
src/jalview/ext/ensembl/EnsemblRestClient.java
src/jalview/fts/service/pdb/PDBFTSRestClient.java
src/jalview/fts/service/uniprot/UniProtFTSRestClient.java
src/jalview/gui/Desktop.java
src/jalview/gui/FeatureSettings.java
src/jalview/gui/UserDefinedColours.java
src/jalview/jbgui/GDesktop.java
src/jalview/jbgui/GUserDefinedColours.java

index 70fee04..82ff61b 100644 (file)
@@ -49,7 +49,8 @@
        <classpathentry kind="lib" path="lib/VARNAv3-93.jar"/>
        <classpathentry kind="lib" path="lib/jfreesvg-2.1.jar"/>
        <classpathentry kind="lib" path="lib/quaqua-filechooser-only-8.0.jar"/>
-       <classpathentry kind="lib" path="lib/VAqua4.jar"/>
+       <classpathentry kind="lib" path="lib/VAqua5-patch.jar"/>
+       <classpathentry kind="lib" path="utils/classgraph-4.1.6.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/plugin"/>
        <classpathentry kind="lib" path="lib/xml-apis.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
index 97172fa..79c9a40 100644 (file)
@@ -21,8 +21,6 @@
 package jalview.ext.ensembl;
 
 import jalview.bin.Jalview;
-import jalview.io.DataSourceType;
-import jalview.io.FileParse;
 import jalview.util.StringUtils;
 
 import java.io.BufferedReader;
index 301cb16..c0ca3a5 100644 (file)
@@ -20,6 +20,7 @@
  */
 package jalview.fts.service.pdb;
 
+import jalview.bin.Jalview;
 import jalview.datamodel.SequenceI;
 import jalview.fts.api.FTSData;
 import jalview.fts.api.FTSDataColumnI;
@@ -125,8 +126,7 @@ public class PDBFTSRestClient extends FTSRestClient
       // different from the ones in Java yet still allow this to be correct for Java
       Client client;
       Class<ClientResponse> clientResponseClass;
-      if (/** @j2sNative true || */
-      false)
+      if (Jalview.isJS())
       {
         // JavaScript only -- coerce types to Java types for Java
         client = (Client) (Object) new jalview.javascript.web.Client();
index 6a54aa1..b4100cb 100644 (file)
@@ -59,32 +59,32 @@ public class UniProtFTSRestClient extends FTSRestClient
   }
 
   @Override
-  public FTSRestResponse executeRequest(FTSRestRequest uniportRestRequest)
+  public FTSRestResponse executeRequest(FTSRestRequest uniprotRestRequest)
           throws Exception
   {
     try
     {
       String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(
-              uniportRestRequest.getWantedFields());
-      int responseSize = (uniportRestRequest.getResponseSize() == 0)
+              uniprotRestRequest.getWantedFields());
+      int responseSize = (uniprotRestRequest.getResponseSize() == 0)
               ? getDefaultResponsePageSize()
-              : uniportRestRequest.getResponseSize();
+              : uniprotRestRequest.getResponseSize();
 
-      int offSet = uniportRestRequest.getOffSet();
+      int offSet = uniprotRestRequest.getOffSet();
       String query;
-      if (isAdvancedQuery(uniportRestRequest.getSearchTerm()))
+      if (isAdvancedQuery(uniprotRestRequest.getSearchTerm()))
       {
-        query = uniportRestRequest.getSearchTerm();
+        query = uniprotRestRequest.getSearchTerm();
       }
       else
       {
-        query = uniportRestRequest.getFieldToSearchBy()
+        query = uniprotRestRequest.getFieldToSearchBy()
                 .equalsIgnoreCase("Search All")
-                        ? uniportRestRequest.getSearchTerm()
+                        ? uniprotRestRequest.getSearchTerm()
                                 + " or mnemonic:"
-                                + uniportRestRequest.getSearchTerm()
-                        : uniportRestRequest.getFieldToSearchBy() + ":"
-                                + uniportRestRequest.getSearchTerm();
+                                + uniprotRestRequest.getSearchTerm()
+                        : uniprotRestRequest.getFieldToSearchBy() + ":"
+                                + uniprotRestRequest.getSearchTerm();
       }
 
       // BH 2018 the trick here is to coerce the classes in Javascript to be
@@ -92,8 +92,7 @@ public class UniProtFTSRestClient extends FTSRestClient
       // Java
       Client client;
       Class<ClientResponse> clientResponseClass;
-      if (/** @j2sNative true || */
-      false)
+      if (Jalview.isJS())
       {
         // JavaScript only -- coerce types to Java types for Java
         client = (Client) (Object) new jalview.javascript.web.Client();
@@ -135,7 +134,7 @@ public class UniProtFTSRestClient extends FTSRestClient
       clientResponse = null;
       client = null;
       return parseUniprotResponse(uniProtTabDelimittedResponseString,
-              uniportRestRequest, xTotalResults);
+              uniprotRestRequest, xTotalResults);
     } catch (Exception e)
     {
       String exceptionMsg = e.getMessage();
index 855ccbc..6c1ed3a 100644 (file)
@@ -1649,13 +1649,10 @@ public class Desktop extends jalview.jbgui.GDesktop
 
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(MessageManager.getString("label.save_state"));
-    // TODO: JAL-3048 Dialog runner refactoring here
-    int value = chooser.showSaveDialog(this);
-
-    if (value == JalviewFileChooser.APPROVE_OPTION)
+    int option = chooser.showSaveDialog(this);
+    if (option == JalviewFileChooser.APPROVE_OPTION)
     {
-      final Desktop me = this;
-      final java.io.File choice = chooser.getSelectedFile();
+      File choice = chooser.getSelectedFile();
       setProjectFile(choice);
 
       new Thread(new Runnable()
@@ -1691,7 +1688,7 @@ public class Desktop extends jalview.jbgui.GDesktop
             Cache.log.error(
                     "Problems whilst trying to save to " + choice.getName(),
                     ex);
-            JvOptionPane.showMessageDialog(me,
+            JvOptionPane.showMessageDialog(Desktop.this,
                     MessageManager.formatMessage(
                             "label.error_whilst_saving_current_state_to",
                             new Object[]
@@ -1702,10 +1699,10 @@ public class Desktop extends jalview.jbgui.GDesktop
           setProgressBar(null, choice.hashCode());
         }
       }).start();
-    }
+      }
   }
 
-  private void setProjectFile(File choice)
+  void setProjectFile(File choice)
   {
     this.projectFile = choice;
   }
@@ -1736,38 +1733,34 @@ public class Desktop extends jalview.jbgui.GDesktop
             "Jalview Project");
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(MessageManager.getString("label.restore_state"));
-
-    int value = chooser.showOpenDialog(this);
-
-    if (value == JalviewFileChooser.APPROVE_OPTION)
+    chooser.response(new RunResponse(JalviewFileChooser.APPROVE_OPTION)
     {
-      final File selectedFile = chooser.getSelectedFile();
-      setProjectFile(selectedFile);
-      final String choice = selectedFile.getAbsolutePath();
-      Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
-      new Thread(new Runnable()
+      @Override
+      public void run()
       {
-        @Override
-        public void run()
+        File selectedFile = chooser.getSelectedFile();
+        setProjectFile(selectedFile);
+        final String choice = selectedFile.getAbsolutePath();
+        Cache.setProperty("LAST_DIRECTORY", selectedFile.getParent());
+        new Thread(new Runnable()
         {
-          setProgressBar(MessageManager.formatMessage(
-                  "label.loading_jalview_project", new Object[]
-                  { choice }), choice.hashCode());
-          try
+          @Override
+          public void run()
           {
-            if (asCastor)
-            {
-              new Jalview2XML().loadJalviewAlign(choice);
-            }
-            else
+               try {
+              if (asCastor)
+              {
+                new Jalview2XML().loadJalviewAlign(choice);
+              }
+              else
+              {
+                new jalview.project.Jalview2XML().loadJalviewAlign(choice);
+              }
+            } catch (OutOfMemoryError oom)
             {
-              new jalview.project.Jalview2XML().loadJalviewAlign(choice);
-            }
-          } catch (OutOfMemoryError oom)
-          {
             new OOMWarning("Whilst loading project from " + choice, oom);
-          } catch (Exception ex)
-          {
+            } catch (Exception ex)
+            {
             Cache.log.error(
                     "Problems whilst loading project from " + choice, ex);
             JvOptionPane.showMessageDialog(Desktop.desktop,
@@ -1777,11 +1770,13 @@ public class Desktop extends jalview.jbgui.GDesktop
                             { choice }),
                     MessageManager.getString("label.couldnt_load_project"),
                     JvOptionPane.WARNING_MESSAGE);
+            }
           }
-          setProgressBar(null, choice.hashCode());
-        }
-      }).start();
-    }
+        }).start();
+      }
+    });
+    
+    chooser.showOpenDialog(this);
   }
 
   @Override
index 44265ed..4f3d7b9 100644 (file)
@@ -22,7 +22,6 @@ package jalview.gui;
 
 import jalview.api.FeatureColourI;
 import jalview.api.FeatureSettingsControllerI;
-import jalview.bin.Jalview;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.SequenceI;
 import jalview.datamodel.features.FeatureMatcher;
@@ -36,6 +35,7 @@ import jalview.io.JalviewFileView;
 import jalview.schemes.FeatureColour;
 import jalview.util.MessageManager;
 import jalview.util.Platform;
+import jalview.util.dialogrunner.RunResponse;
 import jalview.viewmodel.seqfeatures.FeatureRendererModel.FeatureSettingsBean;
 import jalview.xml.binding.jalview.JalviewUserColours;
 import jalview.xml.binding.jalview.JalviewUserColours.Colour;
@@ -46,7 +46,6 @@ import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
-import java.awt.FlowLayout;
 import java.awt.Font;
 import java.awt.Graphics;
 import java.awt.GridLayout;
@@ -880,23 +879,20 @@ public class FeatureSettings extends JPanel
    */
   void load()
   {
-    // TODO: JAL-3048 relies on Castor XML parsing: not needed for JS-jalview core
-    // functionalty
-
     JalviewFileChooser chooser = new JalviewFileChooser("fc",
             SEQUENCE_FEATURE_COLOURS);
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(
             MessageManager.getString("label.load_feature_colours"));
     chooser.setToolTipText(MessageManager.getString("action.load"));
-
-    int value = chooser.showOpenDialog(this);
-
-    if (value == JalviewFileChooser.APPROVE_OPTION)
-    {
-      File file = chooser.getSelectedFile();
-      load(file);
-    }
+    chooser.response(new RunResponse(JalviewFileChooser.APPROVE_OPTION){
+
+               @Override
+               public void run() {
+                     File file = chooser.getSelectedFile();
+                     load(file);
+               }});
+    chooser.showOpenDialog(this);
   }
 
   /**
@@ -974,20 +970,18 @@ public class FeatureSettings extends JPanel
    */
   void save()
   {
-    // TODO: JAL-3048 not needed for Jalview-JS - save colours
     JalviewFileChooser chooser = new JalviewFileChooser("fc",
             SEQUENCE_FEATURE_COLOURS);
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(
             MessageManager.getString("label.save_feature_colours"));
     chooser.setToolTipText(MessageManager.getString("action.save"));
-
-    int value = chooser.showSaveDialog(this);
-
-    if (value == JalviewFileChooser.APPROVE_OPTION)
-    {
-      save(chooser.getSelectedFile());
-    }
+    int option = chooser.showSaveDialog(this);
+       if (option == JalviewFileChooser.APPROVE_OPTION) 
+       {
+         File file = chooser.getSelectedFile();
+         save(file);
+       }
   }
 
   /**
@@ -1370,14 +1364,8 @@ public class FeatureSettings extends JPanel
     JPanel buttonPanel = new JPanel();
     buttonPanel.add(ok);
     buttonPanel.add(cancel);
-    if (!Jalview.isJS())
-    {
-      /*
-       * no save/load XML in JalviewJS for now
-       */
-      buttonPanel.add(loadColours);
-      buttonPanel.add(saveColours);
-    }
+    buttonPanel.add(loadColours);
+    buttonPanel.add(saveColours);
     bigPanel.add(scrollPane, BorderLayout.CENTER);
     settingsPane.add(bigPanel, BorderLayout.CENTER);
     settingsPane.add(buttonPanel, BorderLayout.SOUTH);
index af2a6f6..17b2df7 100755 (executable)
@@ -32,6 +32,7 @@ import jalview.schemes.UserColourScheme;
 import jalview.util.ColorUtils;
 import jalview.util.Format;
 import jalview.util.MessageManager;
+import jalview.util.dialogrunner.RunResponse;
 import jalview.xml.binding.jalview.JalviewUserColours;
 import jalview.xml.binding.jalview.JalviewUserColours.Colour;
 import jalview.xml.binding.jalview.ObjectFactory;
@@ -90,7 +91,7 @@ public class UserDefinedColours extends GUserDefinedColours
    * flag is true if the colour scheme has been changed since the
    * dialog was opened, or the changes last saved to file
    */
-  boolean changed;
+  boolean changedButNotSaved;
 
   JInternalFrame frame;
 
@@ -264,7 +265,7 @@ public class UserDefinedColours extends GUserDefinedColours
       button.setForeground(ColorUtils.brighterThan(newColour));
     }
 
-    changed = true;
+    changedButNotSaved = true;
   }
 
   /**
@@ -485,7 +486,7 @@ public class UserDefinedColours extends GUserDefinedColours
   {
     // BH 2018 no warning in JavaScript TODO
     
-    if (/** @j2sNative true || */ !changed)
+    if (/** @j2sNative true || */ !changedButNotSaved)
     {
       return;
     }
@@ -504,20 +505,20 @@ public class UserDefinedColours extends GUserDefinedColours
               question, title, JvOptionPane.DEFAULT_OPTION,
               JvOptionPane.PLAIN_MESSAGE, null, options, options[0]);
 
-      boolean saved = false;
       if (response == 0)
       {
         /*
-         * prompt to save changes to file
+         * prompt to save changes to file; if done,
+         * resets 'changed' flag to false
          */
-        saved = savebutton_actionPerformed();
+        savebutton_actionPerformed();
       }
 
       /*
        * if user chooses not to save (either in this dialog or in the
        * save as dialogs), treat this as a new user defined colour scheme
        */
-      if (!saved)
+      if (changedButNotSaved)
       {
         /*
          * clear scheme name and re-apply as an anonymous scheme
@@ -638,53 +639,51 @@ public class UserDefinedColours extends GUserDefinedColours
   {
     upperCaseButtons = new ArrayList<>();
     lowerCaseButtons = new ArrayList<>();
-    // TODO: JAL-3048 requires Castor dependency for Jalview-JS
     JalviewFileChooser chooser = new JalviewFileChooser("jc",
             "Jalview User Colours");
     chooser.setFileView(new JalviewFileView());
     chooser.setDialogTitle(
             MessageManager.getString("label.load_colour_scheme"));
     chooser.setToolTipText(MessageManager.getString("action.load"));
-
-    int value = chooser.showOpenDialog(this);
-
-    if (value != JalviewFileChooser.APPROVE_OPTION)
-    {
-      return;
-    }
-    File choice = chooser.getSelectedFile();
-    Cache.setProperty(LAST_DIRECTORY, choice.getParent());
-
-    UserColourScheme ucs = ColourSchemeLoader
-            .loadColourScheme(choice.getAbsolutePath());
-    Color[] colors = ucs.getColours();
-    schemeName.setText(ucs.getSchemeName());
-
-    if (ucs.getLowerCaseColours() != null)
-    {
-      caseSensitive.setSelected(true);
-      lcaseColour.setEnabled(true);
-      resetButtonPanel(true);
-      for (int i = 0; i < lowerCaseButtons.size(); i++)
-      {
-        JButton button = lowerCaseButtons.get(i);
-        button.setBackground(ucs.getLowerCaseColours()[i]);
-      }
-    }
-    else
-    {
-      caseSensitive.setSelected(false);
-      lcaseColour.setEnabled(false);
-      resetButtonPanel(false);
-    }
-
-    for (int i = 0; i < upperCaseButtons.size(); i++)
-    {
-      JButton button = upperCaseButtons.get(i);
-      button.setBackground(colors[i]);
-    }
-
-    addNewColourScheme(choice.getPath());
+    chooser.response(new RunResponse(JalviewFileChooser.APPROVE_OPTION) {
+               @Override
+               public void run() {
+                   File choice = chooser.getSelectedFile();
+                   Cache.setProperty(LAST_DIRECTORY, choice.getParent());
+
+                   UserColourScheme ucs = ColourSchemeLoader
+                           .loadColourScheme(choice.getAbsolutePath());
+                   Color[] colors = ucs.getColours();
+                   schemeName.setText(ucs.getSchemeName());
+
+                   if (ucs.getLowerCaseColours() != null)
+                   {
+                     caseSensitive.setSelected(true);
+                     lcaseColour.setEnabled(true);
+                     resetButtonPanel(true);
+                     for (int i = 0; i < lowerCaseButtons.size(); i++)
+                     {
+                       JButton button = lowerCaseButtons.get(i);
+                       button.setBackground(ucs.getLowerCaseColours()[i]);
+                     }
+                   }
+                   else
+                   {
+                     caseSensitive.setSelected(false);
+                     lcaseColour.setEnabled(false);
+                     resetButtonPanel(false);
+                   }
+
+                   for (int i = 0; i < upperCaseButtons.size(); i++)
+                   {
+                     JButton button = upperCaseButtons.get(i);
+                     button.setBackground(colors[i]);
+                   }
+
+                   addNewColourScheme(choice.getPath());
+               }});
+    
+    chooser.showOpenDialog(this);
   }
 
   /**
@@ -728,12 +727,10 @@ public class UserDefinedColours extends GUserDefinedColours
    * <li>Don't apply the changes if the currently selected scheme is different,
    * to allow a new scheme to be configured and saved but not applied</li>
    * </ul>
-   * Returns true if the scheme is saved to file, false if it is not
-   * 
-   * @return
+   * If the scheme is saved to file, the 'changed' flag field is reset to false.
    */
   @Override
-  protected boolean savebutton_actionPerformed()
+  protected void savebutton_actionPerformed()
   {
     String name = schemeName.getText().trim();
     if (name.length() < 1)
@@ -743,7 +740,6 @@ public class UserDefinedColours extends GUserDefinedColours
                       .getString("label.user_colour_scheme_must_have_name"),
               MessageManager.getString("label.no_name_colour_scheme"),
               JvOptionPane.WARNING_MESSAGE);
-      return false;
     }
 
     if (ColourSchemes.getInstance().nameExists(name))
@@ -757,10 +753,8 @@ public class UserDefinedColours extends GUserDefinedColours
               JvOptionPane.YES_NO_OPTION);
       if (reply != JvOptionPane.YES_OPTION)
       {
-        return false;
       }
     }
-    // TODO: JAL-3048 saveas, also requires Castor dependency for Jalview-JS
 
     JalviewFileChooser chooser = new JalviewFileChooser("jc",
             "Jalview User Colours");
@@ -770,31 +764,26 @@ public class UserDefinedColours extends GUserDefinedColours
     chooser.setDialogTitle(
             MessageManager.getString("label.save_colour_scheme"));
     chooser.setToolTipText(MessageManager.getString("action.save"));
-
-    int value = chooser.showSaveDialog(this);
-
-    if (value != JalviewFileChooser.APPROVE_OPTION)
-    {
-      return false;
-    }
-
-    File file = chooser.getSelectedFile();
-    UserColourScheme updatedScheme = addNewColourScheme(file.getPath());
-    saveToFile(file);
-    changed = false;
-
-    /*
-     * changes saved - apply to alignment if we are changing 
-     * the currently selected colour scheme; also make the updated
-     * colours the 'backout' scheme on Cancel
-     */
-    if (oldColourScheme != null
-            && name.equals(oldColourScheme.getSchemeName()))
-    {
-      oldColourScheme = updatedScheme;
-      applyButton_actionPerformed();
+    int option = chooser.showSaveDialog(this);
+    if (option == JalviewFileChooser.APPROVE_OPTION) 
+    {
+         File file = chooser.getSelectedFile();
+         UserColourScheme updatedScheme = addNewColourScheme(file.getPath());
+         saveToFile(file);
+         changedButNotSaved = false;
+
+         /*
+          * changes saved - apply to alignment if we are changing 
+          * the currently selected colour scheme; also make the updated
+          * colours the 'backout' scheme on Cancel
+          */
+         if (oldColourScheme != null
+                 && name.equals(oldColourScheme.getSchemeName()))
+         {
+           oldColourScheme = updatedScheme;
+           applyButton_actionPerformed();
+         }
     }
-    return true;
   }
 
   /**
index 17f36cb..34c7d31 100755 (executable)
@@ -459,15 +459,14 @@ public class GDesktop extends JFrame
     desktopMenubar.add(windowMenu);
     FileMenu.add(inputMenu);
     FileMenu.add(inputSequence);
-    if (!Jalview.isJS())
+    FileMenu.addSeparator();
+    FileMenu.add(saveAsJaxb);
+    FileMenu.add(loadAsJaxb);
+    if (!Jalview.isJS()) 
     {
-      FileMenu.addSeparator();
       FileMenu.add(saveState);
       FileMenu.add(loadState);
     }
-
-    FileMenu.add(saveAsJaxb);
-    FileMenu.add(loadAsJaxb);
     FileMenu.addSeparator();
     FileMenu.add(quit);
     HelpMenu.add(aboutMenuItem);
index 1b2b069..359f787 100755 (executable)
@@ -75,7 +75,7 @@ public class GUserDefinedColours extends JPanel
 
   JLabel jLabel1 = new JLabel();
 
-  protected JTextField schemeName = new JTextField();
+  public JTextField schemeName = new JTextField();
 
   BorderLayout borderLayout1 = new BorderLayout();
 
@@ -103,9 +103,9 @@ public class GUserDefinedColours extends JPanel
 
   protected JPanel casePanel = new JPanel();
 
-  protected JCheckBox caseSensitive = new JCheckBox();
+  public JCheckBox caseSensitive = new JCheckBox();
 
-  protected JCheckBox lcaseColour = new JCheckBox();
+  public JCheckBox lcaseColour = new JCheckBox();
 
   protected List<JButton> selectedButtons;
 
@@ -231,10 +231,7 @@ public class GUserDefinedColours extends JPanel
     okCancelPanel.add(applyButton);
     okCancelPanel.add(okButton);
     okCancelPanel.add(cancelButton);
-    if (!Jalview.isJS())
-    {
-      lowerPanel.add(saveLoadPanel, java.awt.BorderLayout.NORTH);
-    }
+    lowerPanel.add(saveLoadPanel, java.awt.BorderLayout.NORTH);
     lowerPanel.add(okCancelPanel, java.awt.BorderLayout.SOUTH);
 
     namePanel.add(schemeName, java.awt.BorderLayout.CENTER);
@@ -290,9 +287,8 @@ public class GUserDefinedColours extends JPanel
   {
   }
 
-  protected boolean savebutton_actionPerformed()
+  protected void savebutton_actionPerformed()
   {
-    return false;
   }
 
   /**