Merge branch 'develop' into task/JAL-3130_Java_11_investigations-getdown_src
authorJim Procter <jprocter@issues.jalview.org>
Thu, 11 Apr 2019 13:52:20 +0000 (14:52 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Thu, 11 Apr 2019 13:52:20 +0000 (14:52 +0100)
28 files changed:
.classpath
build-j11.xml
examples/groovy/colourConserved.groovy
examples/groovy/colourSchemes.groovy
examples/groovy/colourUnconserved.groovy
lib/intervalstore-src-v0.4.jar [deleted file]
lib/intervalstore-v1.0.jar [moved from lib/intervalstore-v0.4.jar with 100% similarity]
resources/lang/Messages.properties
resources/lang/Messages_es.properties
src/jalview/analysis/GeneticCodes.java
src/jalview/ext/ensembl/EnsemblRestClient.java
src/jalview/ext/ensembl/EnsemblSequenceFetcher.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/ColourMenuHelper.java
src/jalview/gui/CutAndPasteHtmlTransfer.java
src/jalview/gui/PopupMenu.java
src/jalview/gui/ScalePanel.java
src/jalview/gui/SeqPanel.java
src/jalview/urls/CustomUrlProvider.java
src/jalview/util/UrlLink.java
test/jalview/bin/CommandLineOperations.java
test/jalview/gui/ColourMenuHelperTest.java
test/jalview/gui/PopupMenuTest.java
test/jalview/gui/ScalePanelTest.java
test/jalview/gui/SeqPanelTest.java
test/jalview/util/PlatformTest.java
test/jalview/util/UrlLinkTest.java
utils/InstallAnywhere/Jalview.iap_xml

index 6b4d3fd..00f7056 100644 (file)
@@ -60,6 +60,6 @@
        <classpathentry kind="lib" path="lib/htsjdk-2.12.0.jar"/>
        <classpathentry kind="lib" path="lib/groovy-all-2.4.12-indy.jar"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-       <classpathentry kind="lib" path="lib/intervalstore-v0.4.jar"/>
+       <classpathentry kind="lib" path="lib/intervalstore-v1.0.jar"/>
        <classpathentry kind="output" path="classes"/>
 </classpath>
index d56d029..9f2761b 100755 (executable)
 </target>
 
 <target name="signApplet" description="internal target to sign applet" depends="-signappletnotsa,-signapplettsa" />
+<target name="pubapplet" description="Dummy target to keep legacy Jalview build system happy. We don't actually publish the applet anymore."/>
 
-<target name="pubapplet" description="installs the jalviewLite applet and dependent jars into an applet examples directory built under ${outputDir}" depends="makeApplet, signApplet">
+<target name="_pubapplet" description="installs the jalviewLite applet and dependent jars into an applet examples directory built under ${outputDir}" depends="makeApplet, signApplet">
 
   <!-- bizarre bug causes JmolApplet to always get signed, even if excluded from above. so copy explicitly -->
   <copy file="appletlib/${jmolJar}" tofile="${packageDir}/examples/u_${jmolJar}" overwrite="true" />
index 35c54d5..5fc2ad1 100644 (file)
@@ -43,7 +43,7 @@ conserved = { ->
     /*
      * to make a new instance for each alignment view
      */
-    getInstance: { AlignViewportI view, AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> conserved() },
+    getInstance: { AlignViewportI view, AnnotatedCollectionI coll -> conserved() },
     
     /*
      * method only needed if colour scheme has to recalculate
index 3f1f953..eb40cc6 100644 (file)
@@ -26,7 +26,7 @@ candy = { ->
     /*
      * to make a new instance for each alignment view
      */
-    getInstance: { AlignViewportI view, AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> candy() },
+    getInstance: { view, coll -> candy() },
     
     /*
      * method only needed if colour scheme has to recalculate
@@ -86,7 +86,7 @@ byWeight = { ->
     // this colour scheme is peptide-specific:
     isApplicableTo: { coll -> !coll.isNucleotide() },
     alignmentChanged: { coll, map -> },
-    getInstance: { coll, map -> byWeight() },
+    getInstance: { view, coll -> byWeight() },
     isSimple: { true },
     findColour: {res, col, seq, consensus, pid -> 
         switch (res) {
index e186766..2365c1e 100644 (file)
@@ -42,7 +42,7 @@ unconserved = { ->
     /*
      * to make a new instance for each alignment view
      */
-    getInstance: { AnnotatedCollectionI coll, Map<SequenceI, SequenceCollectionI> map -> unconserved() },
+    getInstance: { view, coll -> unconserved() },
     
     /*
      * method only needed if colour scheme has to recalculate
diff --git a/lib/intervalstore-src-v0.4.jar b/lib/intervalstore-src-v0.4.jar
deleted file mode 100644 (file)
index 3feafbb..0000000
Binary files a/lib/intervalstore-src-v0.4.jar and /dev/null differ
index 2d48fac..664dc4c 100644 (file)
@@ -185,22 +185,22 @@ label.out_to_textbox = Output to Textbox
 label.occupancy = Occupancy
 # delete Clustal - use FileFormat name instead
 label.clustal = Clustal
-# label.colourScheme_<schemeName> as in JalviewColourScheme
+# label.colourScheme_<schemeName> as in JalviewColourScheme, spaces removed
 label.colourScheme_clustal = Clustalx
 label.colourScheme_blosum62 = BLOSUM62 Score
-label.colourScheme_%_identity = Percentage Identity
+label.colourScheme_%identity = Percentage Identity
 label.colourScheme_zappo = Zappo
 label.colourScheme_taylor = Taylor
 label.colourScheme_hydrophobic = Hydrophobicity
-label.colourScheme_helix_propensity = Helix Propensity
-label.colourScheme_strand_propensity = Strand Propensity
-label.colourScheme_turn_propensity = Turn Propensity
-label.colourScheme_buried_index = Buried Index
+label.colourScheme_helixpropensity = Helix Propensity
+label.colourScheme_strandpropensity = Strand Propensity
+label.colourScheme_turnpropensity = Turn Propensity
+label.colourScheme_buriedindex = Buried Index
 label.colourScheme_purine/pyrimidine = Purine/Pyrimidine
 label.colourScheme_nucleotide = Nucleotide
-label.colourScheme_t-coffee_scores = T-Coffee Scores
-label.colourScheme_rna_helices = By RNA Helices
-label.colourScheme_sequence_id = Sequence ID Colour
+label.colourScheme_t-coffeescores = T-Coffee Scores
+label.colourScheme_rnahelices = By RNA Helices
+label.colourScheme_sequenceid = Sequence ID Colour
 label.blc = BLC
 label.fasta = Fasta
 label.msf = MSF
index ade37ff..7c65eb0 100644 (file)
@@ -184,19 +184,19 @@ label.clustal = Clustal
 # label.colourScheme_<schemeName> as in JalviewColourScheme
 label.colourScheme_clustal = Clustalx
 label.colourScheme_blosum62 = Puntuación del BLOSUM62
-label.colourScheme_%_identity = Porcentaje de identidad
+label.colourScheme_%identity = Porcentaje de identidad
 label.colourScheme_zappo = Zappo
 label.colourScheme_taylor = Taylor
 label.colourScheme_hydrophobic = Hidrofobicidad
-label.colourScheme_helix_propensity = Tendencia de la hélice
-label.colourScheme_strand_propensity = Tendencia de la hebra
-label.colourScheme_turn_propensity = Tendencia de giro
-label.colourScheme_buried_index = Índice de encubrimiento
+label.colourScheme_helixpropensity = Tendencia de la hélice
+label.colourScheme_strandpropensity = Tendencia de la hebra
+label.colourScheme_turnpropensity = Tendencia de giro
+label.colourScheme_buriedindex = Índice de encubrimiento
 label.colourScheme_purine/pyrimidine = Purina/Pirimidina
 label.colourScheme_nucleotide = Nucleótido
-label.colourScheme_t-coffee_scores = Puntuación del T-Coffee
-label.colourScheme_rna_helices = Por hélices de RNA
-label.colourScheme_sequence_id = Color de ID de secuencia
+label.colourScheme_t-coffeescores = Puntuación del T-Coffee
+label.colourScheme_rnahelices = Por hélices de RNA
+label.colourScheme_sequenceid = Color de ID de secuencia
 label.blc = BLC
 label.fasta = Fasta
 label.msf = MSF
index d07253e..137b7f8 100644 (file)
@@ -65,7 +65,7 @@ public final class GeneticCodes
       loadAmbiguityCodes(AMBIGUITY_CODES_FILE);
       loadCodes(RESOURCE_FILE);
     }
-  };
+  }
 
   /**
    * Returns the singleton instance of this class
@@ -117,6 +117,11 @@ public final class GeneticCodes
     try
     {
       InputStream is = getClass().getResourceAsStream(fileName);
+      if (is == null)
+      {
+        System.err.println("Resource file not found: " + fileName);
+        return;
+      }
       BufferedReader dataIn = new BufferedReader(new InputStreamReader(is));
 
       /*
@@ -136,9 +141,15 @@ public final class GeneticCodes
     } catch (IOException | NullPointerException e)
     {
       Cache.log.error(
-              "Error reading genetic codes data file: "
+              "Error reading genetic codes data file " + fileName + ": "
               + e.getMessage());
     }
+    if (codeTables.isEmpty())
+    {
+      System.err.println(
+              "No genetic code tables loaded, check format of file "
+                      + fileName);
+    }
   }
 
   /**
@@ -157,6 +168,11 @@ public final class GeneticCodes
     try
     {
       InputStream is = getClass().getResourceAsStream(fileName);
+      if (is == null)
+      {
+        System.err.println("Resource file not found: " + fileName);
+        return;
+      }
       BufferedReader dataIn = new BufferedReader(new InputStreamReader(is));
       String line = "";
       while (line != null)
@@ -165,8 +181,16 @@ public final class GeneticCodes
         if (line != null && !"DNA".equals(line.toUpperCase()))
         {
           String[] tokens = line.split("\\t");
+          if (tokens.length == 2)
+          {
           ambiguityCodes.put(tokens[0].toUpperCase(),
                   tokens[1].toUpperCase());
+          }
+          else
+          {
+            System.err.println(
+                    "Unexpected data in " + fileName + ": " + line);
+          }
         }
       }
     } catch (IOException e)
index e64c51a..617ab21 100644 (file)
@@ -64,9 +64,9 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher
    * @see https://github.com/Ensembl/ensembl-rest/wiki/Change-log
    * @see http://rest.ensembl.org/info/rest?content-type=application/json
    */
-  private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "9.0";
+  private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "10.0";
 
-  private static final String LATEST_ENSEMBL_REST_VERSION = "9.0";
+  private static final String LATEST_ENSEMBL_REST_VERSION = "10.0";
 
   private static final String REST_CHANGE_LOG = "https://github.com/Ensembl/ensembl-rest/wiki/Change-log";
 
index 8296985..3b71823 100644 (file)
@@ -42,7 +42,8 @@ abstract class EnsemblSequenceFetcher extends DbSourceProxyImpl
   // domain properties default values:
   protected static final String DEFAULT_ENSEMBL_BASEURL = "https://rest.ensembl.org";
 
-  protected static final String DEFAULT_ENSEMBL_GENOMES_BASEURL = "https://rest.ensemblgenomes.org";
+  // ensemblgenomes REST service merged to ensembl 9th April 2019
+  protected static final String DEFAULT_ENSEMBL_GENOMES_BASEURL = DEFAULT_ENSEMBL_BASEURL;
 
   /*
    * accepts ENSG/T/E/P with 11 digits
index adc8a15..0ab7515 100644 (file)
@@ -974,7 +974,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   @Override
   public void setStatus(String text)
   {
-    statusBar.setText(text);
+    statusBar.setText(text == null || text.isEmpty() ? " " : text);
   }
 
   /*
@@ -3120,7 +3120,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void scaleAbove_actionPerformed(ActionEvent e)
   {
     viewport.setScaleAboveWrapped(scaleAbove.isSelected());
-    // TODO: do we actually need to update overview for scale above change ?
+    alignPanel.updateLayout();
     alignPanel.paintAlignment(true, false);
   }
 
@@ -3134,6 +3134,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void scaleLeft_actionPerformed(ActionEvent e)
   {
     viewport.setScaleLeftWrapped(scaleLeft.isSelected());
+    alignPanel.updateLayout();
     alignPanel.paintAlignment(true, false);
   }
 
@@ -3147,6 +3148,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
   protected void scaleRight_actionPerformed(ActionEvent e)
   {
     viewport.setScaleRightWrapped(scaleRight.isSelected());
+    alignPanel.updateLayout();
     alignPanel.paintAlignment(true, false);
   }
 
index 9479ea6..6eab07d 100644 (file)
@@ -121,7 +121,7 @@ public class ColourMenuHelper
        */
       final String name = scheme.getSchemeName();
       String label = MessageManager.getStringOrReturn(
-              "label.colourScheme_", name.toLowerCase().replace(" ", "_"));
+              "label.colourScheme_", name);
       final JRadioButtonMenuItem radioItem = new JRadioButtonMenuItem(
               label);
       radioItem.setName(name);
index 2e51bce..1d7d1c9 100644 (file)
@@ -143,6 +143,7 @@ public class CutAndPasteHtmlTransfer extends GCutAndPasteHtmlTransfer
   {
     textarea.setDocument(textarea.getEditorKit().createDefaultDocument());
     textarea.setText(text);
+    textarea.setCaretPosition(0);
   }
 
   @Override
index 86febed..702773b 100644 (file)
@@ -78,10 +78,8 @@ import javax.swing.JPopupMenu;
 import javax.swing.JRadioButtonMenuItem;
 
 /**
- * DOCUMENT ME!
- * 
- * @author $author$
- * @version $Revision: 1.118 $
+ * The popup menu that is displayed on right-click on a sequence id, or in the
+ * sequence alignment.
  */
 public class PopupMenu extends JPopupMenu implements ColourChangeListener
 {
@@ -178,6 +176,187 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
   JMenuItem hideInsertions = new JMenuItem();
 
   /**
+   * Constructs a menu with sub-menu items for any hyperlinks for the sequence
+   * and/or features provided. Hyperlinks may include a lookup by sequence id,
+   * or database cross-references, depending on which links are enabled in user
+   * preferences.
+   * 
+   * @param seq
+   * @param features
+   * @return
+   */
+  static JMenu buildLinkMenu(final SequenceI seq,
+          List<SequenceFeature> features)
+  {
+    JMenu linkMenu = new JMenu(MessageManager.getString("action.link"));
+
+    List<String> nlinks = null;
+    if (seq != null)
+    {
+      nlinks = Preferences.sequenceUrlLinks.getLinksForMenu();
+      UrlLink.sort(nlinks);
+    }
+    else
+    {
+      nlinks = new ArrayList<>();
+    }
+
+    if (features != null)
+    {
+      for (SequenceFeature sf : features)
+      {
+        if (sf.links != null)
+        {
+          for (String link : sf.links)
+          {
+            nlinks.add(link);
+          }
+        }
+      }
+    }
+
+    /*
+     * instantiate the hyperlinklink templates from sequence data;
+     * note the order of the templates is preserved in the map
+     */
+    Map<String, List<String>> linkset = new LinkedHashMap<>();
+    for (String link : nlinks)
+    {
+      UrlLink urlLink = null;
+      try
+      {
+        urlLink = new UrlLink(link);
+      } catch (Exception foo)
+      {
+        Cache.log.error("Exception for URLLink '" + link + "'", foo);
+        continue;
+      }
+
+      if (!urlLink.isValid())
+      {
+        Cache.log.error(urlLink.getInvalidMessage());
+        continue;
+      }
+
+      urlLink.createLinksFromSeq(seq, linkset);
+    }
+
+    /*
+     * construct menu items for the hyperlinks (still preserving
+     * the order of the sorted templates)
+     */
+    addUrlLinks(linkMenu, linkset.values());
+
+    return linkMenu;
+  }
+
+  /**
+   * A helper method that builds menu items from the given links, with action
+   * handlers to open the link URL, and adds them to the linkMenu. Each provided
+   * link should be a list whose second item is the menu text, and whose fourth
+   * item is the URL to open when the menu item is selected.
+   * 
+   * @param linkMenu
+   * @param linkset
+   */
+  static private void addUrlLinks(JMenu linkMenu,
+          Collection<List<String>> linkset)
+  {
+    for (List<String> linkstrset : linkset)
+    {
+      final String url = linkstrset.get(3);
+      JMenuItem item = new JMenuItem(linkstrset.get(1));
+      item.setToolTipText(MessageManager
+              .formatMessage("label.open_url_param", new Object[]
+              { url }));
+      item.addActionListener(new ActionListener()
+      {
+        @Override
+        public void actionPerformed(ActionEvent e)
+        {
+          new Thread(new Runnable()
+          {
+            @Override
+            public void run()
+            {
+              showLink(url);
+            }
+          }).start();
+        }
+      });
+      linkMenu.add(item);
+    }
+  }
+
+  /**
+   * Opens the provided url in the default web browser, or shows an error
+   * message if this fails
+   * 
+   * @param url
+   */
+  static void showLink(String url)
+  {
+    try
+    {
+      jalview.util.BrowserLauncher.openURL(url);
+    } catch (Exception ex)
+    {
+      JvOptionPane.showInternalMessageDialog(Desktop.desktop,
+              MessageManager.getString("label.web_browser_not_found_unix"),
+              MessageManager.getString("label.web_browser_not_found"),
+              JvOptionPane.WARNING_MESSAGE);
+
+      ex.printStackTrace();
+    }
+  }
+
+  /**
+   * add a late bound groupURL item to the given linkMenu
+   * 
+   * @param linkMenu
+   * @param label
+   *          - menu label string
+   * @param urlgenerator
+   *          GroupURLLink used to generate URL
+   * @param urlstub
+   *          Object array returned from the makeUrlStubs function.
+   */
+  static void addshowLink(JMenu linkMenu, String label,
+          final GroupUrlLink urlgenerator, final Object[] urlstub)
+  {
+    JMenuItem item = new JMenuItem(label);
+    item.setToolTipText(MessageManager
+            .formatMessage("label.open_url_seqs_param", new Object[]
+            { urlgenerator.getUrl_prefix(),
+                urlgenerator.getNumberInvolved(urlstub) }));
+    // TODO: put in info about what is being sent.
+    item.addActionListener(new ActionListener()
+    {
+      @Override
+      public void actionPerformed(ActionEvent e)
+      {
+        new Thread(new Runnable()
+        {
+
+          @Override
+          public void run()
+          {
+            try
+            {
+              showLink(urlgenerator.constructFrom(urlstub));
+            } catch (UrlStringTooLongException e2)
+            {
+            }
+          }
+
+        }).start();
+      }
+    });
+
+    linkMenu.add(item);
+  }
+
+  /**
    * Creates a new PopupMenu object.
    * 
    * @param ap
@@ -620,63 +799,14 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
    * When seq is not null, these are links for the sequence id, which may be to
    * external web sites for the sequence accession, and/or links embedded in
    * non-positional features. When seq is null, only links embedded in the
-   * provided features are added.
+   * provided features are added. If no links are found, the menu is not added.
    * 
    * @param seq
    * @param features
    */
   void addLinks(final SequenceI seq, List<SequenceFeature> features)
   {
-    JMenu linkMenu = new JMenu(MessageManager.getString("action.link"));
-
-    List<String> nlinks = null;
-    if (seq != null)
-    {
-      nlinks = Preferences.sequenceUrlLinks.getLinksForMenu();
-    }
-    else
-    {
-      nlinks = new ArrayList<>();
-    }
-
-    if (features != null)
-    {
-      for (SequenceFeature sf : features)
-      {
-        if (sf.links != null)
-        {
-          for (String link : sf.links)
-          {
-            nlinks.add(link);
-          }
-        }
-      }
-    }
-
-    Map<String, List<String>> linkset = new LinkedHashMap<>();
-
-    for (String link : nlinks)
-    {
-      UrlLink urlLink = null;
-      try
-      {
-        urlLink = new UrlLink(link);
-      } catch (Exception foo)
-      {
-        Cache.log.error("Exception for URLLink '" + link + "'", foo);
-        continue;
-      }
-
-      if (!urlLink.isValid())
-      {
-        Cache.log.error(urlLink.getInvalidMessage());
-        continue;
-      }
-
-      urlLink.createLinksFromSeq(seq, linkset);
-    }
-
-    addshowLinks(linkMenu, linkset.values());
+    JMenu linkMenu = buildLinkMenu(seq, features);
 
     // only add link menu if it has entries
     if (linkMenu.getItemCount() > 0)
@@ -969,98 +1099,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
     }
   }
 
-  private void addshowLinks(JMenu linkMenu,
-          Collection<List<String>> linkset)
-  {
-    for (List<String> linkstrset : linkset)
-    {
-      // split linkstr into label and url
-      addshowLink(linkMenu, linkstrset.get(1), linkstrset.get(3));
-    }
-  }
-
-  /**
-   * add a show URL menu item to the given linkMenu
-   * 
-   * @param linkMenu
-   * @param label
-   *          - menu label string
-   * @param url
-   *          - url to open
-   */
-  private void addshowLink(JMenu linkMenu, String label, final String url)
-  {
-    JMenuItem item = new JMenuItem(label);
-    item.setToolTipText(MessageManager.formatMessage("label.open_url_param",
-            new Object[]
-            { url }));
-    item.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        new Thread(new Runnable()
-        {
-
-          @Override
-          public void run()
-          {
-            showLink(url);
-          }
-
-        }).start();
-      }
-    });
-
-    linkMenu.add(item);
-  }
-
-  /**
-   * add a late bound groupURL item to the given linkMenu
-   * 
-   * @param linkMenu
-   * @param label
-   *          - menu label string
-   * @param urlgenerator
-   *          GroupURLLink used to generate URL
-   * @param urlstub
-   *          Object array returned from the makeUrlStubs function.
-   */
-  private void addshowLink(JMenu linkMenu, String label,
-          final GroupUrlLink urlgenerator, final Object[] urlstub)
-  {
-    JMenuItem item = new JMenuItem(label);
-    item.setToolTipText(MessageManager
-            .formatMessage("label.open_url_seqs_param", new Object[]
-            { urlgenerator.getUrl_prefix(),
-                urlgenerator.getNumberInvolved(urlstub) }));
-    // TODO: put in info about what is being sent.
-    item.addActionListener(new ActionListener()
-    {
-      @Override
-      public void actionPerformed(ActionEvent e)
-      {
-        new Thread(new Runnable()
-        {
-
-          @Override
-          public void run()
-          {
-            try
-            {
-              showLink(urlgenerator.constructFrom(urlstub));
-            } catch (UrlStringTooLongException e2)
-            {
-            }
-          }
-
-        }).start();
-      }
-    });
-
-    linkMenu.add(item);
-  }
-
   /**
    * DOCUMENT ME!
    * 
@@ -1940,22 +1978,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
     refresh();
   }
 
-  public void showLink(String url)
-  {
-    try
-    {
-      jalview.util.BrowserLauncher.openURL(url);
-    } catch (Exception ex)
-    {
-      JvOptionPane.showInternalMessageDialog(Desktop.desktop,
-              MessageManager.getString("label.web_browser_not_found_unix"),
-              MessageManager.getString("label.web_browser_not_found"),
-              JvOptionPane.WARNING_MESSAGE);
-
-      ex.printStackTrace();
-    }
-  }
-
   void hideSequences(boolean representGroup)
   {
     ap.av.hideSequences(sequence, representGroup);
index b95c569..b392c8f 100755 (executable)
@@ -279,14 +279,15 @@ public class ScalePanel extends JPanel
     ap.getSeqPanel().stopScrolling();
 
     int xCords = Math.max(0, evt.getX()); // prevent negative X coordinates
+    ViewportRanges ranges = av.getRanges();
     int res = (xCords / av.getCharWidth())
-            + av.getRanges().getStartRes();
+            + ranges.getStartRes();
+    res = Math.min(res, ranges.getEndRes());
     if (av.hasHiddenColumns())
     {
       res = av.getAlignment().getHiddenColumns()
               .visibleToAbsoluteColumn(res);
     }
-    res = Math.min(res, av.getRanges().getEndRes());
     res = Math.max(0, res);
 
     if (!stretchingGroup)
index 4a1a9ee..1176df5 100644 (file)
@@ -314,8 +314,10 @@ public class SeqPanel extends JPanel
     }
     else
     {
-      seqIndex = Math.min((y / charHeight) + av.getRanges().getStartSeq(),
+      ViewportRanges ranges = av.getRanges();
+      seqIndex = Math.min((y / charHeight) + ranges.getStartSeq(),
               alignmentHeight - 1);
+      seqIndex = Math.min(seqIndex, ranges.getEndSeq());
     }
 
     return new MousePos(col, seqIndex, annIndex);
@@ -1924,6 +1926,7 @@ public class SeqPanel extends JPanel
   @Override
   public void mouseExited(MouseEvent e)
   {
+    lastMousePosition = null;
     ap.alignFrame.setStatus(" ");
     if (av.getWrapAlignment())
     {
index 86d5660..d23f771 100644 (file)
@@ -107,12 +107,12 @@ public class CustomUrlProvider extends UrlProviderImpl
   {
     // cachedUrlList is in form <label>|<url>|<label>|<url>...
     // parse cachedUrlList into labels (used as id) and url links
-    HashMap<String, UrlLink> urls = new HashMap<String, UrlLink>();
+    HashMap<String, UrlLink> urls = new HashMap<>();
 
     StringTokenizer st = new StringTokenizer(urlStrings, SEP);
     while (st.hasMoreElements())
     {
-      String name = st.nextToken();
+      String name = st.nextToken().trim();
 
       if (!isMiriamId(name))
       {
@@ -129,6 +129,7 @@ public class CustomUrlProvider extends UrlProviderImpl
         {
           url = url + SEP + st.nextToken();
         }
+        url = url.trim();
         urls.put(name, new UrlLink(name, url, name));
       }
     }
@@ -138,7 +139,7 @@ public class CustomUrlProvider extends UrlProviderImpl
 
   private HashMap<String, UrlLink> parseUrlList(Map<String, String> urlList)
   {
-    HashMap<String, UrlLink> urls = new HashMap<String, UrlLink>();
+    HashMap<String, UrlLink> urls = new HashMap<>();
     if (urlList == null)
     {
       return urls;
@@ -187,7 +188,7 @@ public class CustomUrlProvider extends UrlProviderImpl
   @Override
   public List<String> getLinksForMenu()
   {
-    List<String> links = new ArrayList<String>();
+    List<String> links = new ArrayList<>();
     Iterator<Map.Entry<String, UrlLink>> it = selectedUrls.entrySet()
             .iterator();
     while (it.hasNext())
@@ -201,7 +202,7 @@ public class CustomUrlProvider extends UrlProviderImpl
   @Override
   public List<UrlLinkDisplay> getLinksForTable()
   {
-    ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<UrlLinkDisplay>();
+    ArrayList<UrlLinkDisplay> displayLinks = new ArrayList<>();
     displayLinks = getLinksForTable(selectedUrls, true);
     displayLinks.addAll(getLinksForTable(nonselectedUrls, false));
     return displayLinks;
@@ -289,8 +290,8 @@ public class CustomUrlProvider extends UrlProviderImpl
   @Override
   public void setUrlData(List<UrlLinkDisplay> links)
   {
-    HashMap<String, UrlLink> unselurls = new HashMap<String, UrlLink>();
-    HashMap<String, UrlLink> selurls = new HashMap<String, UrlLink>();
+    HashMap<String, UrlLink> unselurls = new HashMap<>();
+    HashMap<String, UrlLink> selurls = new HashMap<>();
 
     Iterator<UrlLinkDisplay> it = links.iterator();
     while (it.hasNext())
index 007da86..18ee9b6 100644 (file)
@@ -29,21 +29,57 @@ import jalview.datamodel.DBRefEntry;
 import jalview.datamodel.SequenceI;
 
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
+/**
+ * A helper class to parse URL Link strings taken from applet parameters or
+ * jalview properties file using the com.stevesoft.pat.Regex implementation.
+ * Jalview 2.4 extension allows regular expressions to be used to parse ID
+ * strings and replace the result in the URL. Regex's operate on the whole ID
+ * string given to the matchURL method, if no regex is supplied, then only text
+ * following the first pipe symbol will be substituted. Usage documentation
+ * todo.
+ */
 public class UrlLink
 {
+  private static final String SEQUENCEID_PLACEHOLDER = DELIM + SEQUENCE_ID
+          + DELIM;
+
+  private static final String ACCESSION_PLACEHOLDER = DELIM + DB_ACCESSION
+          + DELIM;
+
   /**
-   * helper class to parse URL Link strings taken from applet parameters or
-   * jalview properties file using the com.stevesoft.pat.Regex implementation.
-   * Jalview 2.4 extension allows regular expressions to be used to parse ID
-   * strings and replace the result in the URL. Regex's operate on the whole ID
-   * string given to the matchURL method, if no regex is supplied, then only
-   * text following the first pipe symbol will be substituted. Usage
-   * documentation todo.
+   * A comparator that puts SEQUENCE_ID template links before DB_ACCESSION
+   * links, and otherwise orders by link name + url (not case sensitive). It
+   * expects to compare strings formatted as "Name|URLTemplate" where the
+   * template may include $SEQUENCE_ID$ or $DB_ACCESSION$ or neither.
    */
+  public static final Comparator<String> LINK_COMPARATOR = new Comparator<String>()
+  {
+    @Override
+    public int compare(String link1, String link2)
+    {
+      if (link1 == null || link2 == null)
+      {
+        return 0; // for failsafe only
+      }
+      if (link1.contains(SEQUENCEID_PLACEHOLDER)
+              && link2.contains(ACCESSION_PLACEHOLDER))
+      {
+        return -1;
+      }
+      if (link2.contains(SEQUENCEID_PLACEHOLDER)
+              && link1.contains(ACCESSION_PLACEHOLDER))
+      {
+        return 1;
+      }
+      return String.CASE_INSENSITIVE_ORDER.compare(link1, link2);
+    }
+  };
 
   private static final String EQUALS = "=";
 
@@ -291,7 +327,7 @@ public class UrlLink
                       + rg.stringMatched(s) + "'");
             }
             // try to collate subgroup matches
-            Vector<String> subs = new Vector<String>();
+            Vector<String> subs = new Vector<>();
             // have to loop through submatches, collating them at top level
             // match
             int s = 0; // 1;
@@ -632,4 +668,20 @@ public class UrlLink
       }
     }
   }
+
+  /**
+   * Sorts links (formatted as LinkName|LinkPattern) suitable for display in a
+   * menu
+   * <ul>
+   * <li>SEQUENCE_ID links precede DB_ACCESSION links (i.e. canonical lookup
+   * before cross-references)</li>
+   * <li>otherwise by Link name (case insensitive)</li>
+   * </ul>
+   * 
+   * @param nlinks
+   */
+  public static void sort(List<String> nlinks)
+  {
+    Collections.sort(nlinks, LINK_COMPARATOR);
+  }
 }
index 483bb8b..ace1868 100644 (file)
@@ -20,6 +20,9 @@
  */
 package jalview.bin;
 
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
 import jalview.gui.JvOptionPane;
 
 import java.io.BufferedReader;
@@ -142,7 +145,7 @@ public class CommandLineOperations
     return classpath;
   }
 
-  private Worker jalviewDesktopRunner(boolean withAwt, String cmd,
+  private Worker getJalviewDesktopRunner(boolean withAwt, String cmd,
           int timeout)
   {
     // Note: JAL-3065 - don't include quotes for lib/* because the arguments are
@@ -155,7 +158,7 @@ public class CommandLineOperations
     try
     {
       ls2_proc = Runtime.getRuntime().exec(_cmd + cmd);
-    } catch (IOException e1)
+    } catch (Throwable e1)
     {
       e1.printStackTrace();
     }
@@ -172,7 +175,7 @@ public class CommandLineOperations
         worker.join(timeout);
       } catch (InterruptedException e)
       {
-        // e.printStackTrace();
+        System.err.println("Thread interrupted");
       }
       worker.setOutputReader(outputReader);
       worker.setErrorReader(errorReader);
@@ -190,23 +193,27 @@ public class CommandLineOperations
   public void setUpForHeadlessCommandLineInputOperations()
           throws IOException
   {
-    String cmds = "nodisplay -open examples/uniref50.fa -sortbytree -props FILE -colour zappo "
-            + "-jabaws http://www.compbio.dundee.ac.uk/jabaws -nosortbytree -dasserver nickname=www.test.com "
+    String cmds = "nodisplay -open examples/uniref50.fa -sortbytree -props test/jalview/io/testProps.jvprops -colour zappo "
+            + "-jabaws http://www.compbio.dundee.ac.uk/jabaws -nosortbytree "
             + "-features examples/testdata/plantfdx.features -annotations examples/testdata/plantfdx.annotations -tree examples/testdata/uniref50_test_tree";
-    Worker worker = jalviewDesktopRunner(true, cmds, SETUP_TIMEOUT);
+    Worker worker = getJalviewDesktopRunner(true, cmds, SETUP_TIMEOUT);
     String ln = null;
     while ((ln = worker.getOutputReader().readLine()) != null)
     {
       System.out.println(ln);
       successfulCMDs.add(ln);
     }
+    while ((ln = worker.getErrorReader().readLine()) != null)
+    {
+      System.err.println(ln);
+    }
   }
 
   @BeforeTest(alwaysRun = true)
   public void setUpForCommandLineInputOperations() throws IOException
   {
     String cmds = "-open examples/uniref50.fa -noquestionnaire -nousagestats";
-    Worker worker = jalviewDesktopRunner(false, cmds, SETUP_TIMEOUT);
+    Worker worker = getJalviewDesktopRunner(false, cmds, SETUP_TIMEOUT);
     String ln = null;
     int count = 0;
     while ((ln = worker.getErrorReader().readLine()) != null)
@@ -226,7 +233,7 @@ public class CommandLineOperations
     }
   }
 
-  @Test(groups = { "Functional" }, dataProvider = "allInputOpearationsData")
+  @Test(groups = { "Functional" }, dataProvider = "allInputOperationsData")
   public void testAllInputOperations(String expectedString,
           String failureMsg)
   {
@@ -244,13 +251,12 @@ public class CommandLineOperations
     String cmd = harg + type + " " + fileName;
     // System.out.println(">>>>>>>>>>>>>>>> Command : " + cmd);
     File file = new File(fileName);
-    Worker worker = jalviewDesktopRunner(withAWT, cmd, timeout);
-
-    FileAssert.assertFile(file,
-            "Didn't create an output" + type + " file.[" + harg + "]");
-    // System.out.println( "File '" + file.getName() + "' has size " +
-    // file.length());
-    // FileAssert.assertMinLength(new File(fileName), expectedMinFileSize);
+    file.deleteOnExit();
+    Worker worker = getJalviewDesktopRunner(withAWT, cmd, timeout);
+    assertNotNull(worker, "worker is null");
+    String msg = "Didn't create an output" + type + " file.[" + harg + "]";
+    assertTrue(file.exists(), msg);
+    FileAssert.assertFile(file, msg);
     FileAssert.assertMinLength(file, expectedMinFileSize);
     if (worker != null && worker.exit == null)
     {
@@ -261,17 +267,17 @@ public class CommandLineOperations
               + " generation (try running test again to verify - timeout at "
               + timeout + "ms). [" + harg + "]");
     }
-    new File(fileName).delete();
+    file.delete();
   }
 
-  @DataProvider(name = "allInputOpearationsData")
+  @DataProvider(name = "allInputOperationsData")
   public Object[][] getHeadlessModeInputParams()
   {
     return new Object[][] {
         // headless mode input operations
         { "CMD [-color zappo] executed successfully!",
             "Failed command : -color zappo" },
-        { "CMD [-props FILE] executed successfully!",
+        { "CMD [-props test/jalview/io/testProps.jvprops] executed successfully!",
             "Failed command : -props File" },
         { "CMD [-sortbytree] executed successfully!",
             "Failed command : -sortbytree" },
@@ -281,8 +287,7 @@ public class CommandLineOperations
             "Failed command : -open examples/uniref50.fa" },
         { "CMD [-nosortbytree] executed successfully!",
             "Failed command : -nosortbytree" },
-        {
-            "CMD [-features examples/testdata/plantfdx.features]  executed successfully!",
+        { "CMD [-features examples/testdata/plantfdx.features]  executed successfully!",
             "Failed command : -features examples/testdata/plantfdx.features" },
         { "CMD [-annotations examples/testdata/plantfdx.annotations] executed successfully!",
             "Failed command : -annotations examples/testdata/plantfdx.annotations" },
@@ -293,29 +298,35 @@ public class CommandLineOperations
             "Failed command : -nousagestats" },
         { "CMD [-noquestionnaire] executed successfully!",
             "Failed command : -noquestionnaire" } };
-
   }
 
   @DataProvider(name = "headlessModeOutputOperationsData")
   public static Object[][] getHeadlessModeOutputParams()
   {
-    return new Object[][] {
-        { "nodisplay -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+    return new Object[][] { { "nodisplay -open examples/uniref50.fa",
+        " -eps", "test/jalview/bin/test_uniref50_out.eps", true,
+        MINFILESIZE_BIG, TEST_TIMEOUT },
         { "nodisplay -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", false, MINFILESIZE_BIG, TEST_TIMEOUT },
+            "test/jalview/bin/test_uniref50_out.eps", false,
+            MINFILESIZE_BIG, TEST_TIMEOUT },
         { "nogui -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+            "test/jalview/bin/test_uniref50_out.eps", true, MINFILESIZE_BIG,
+            TEST_TIMEOUT },
         { "nogui -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", false, MINFILESIZE_BIG, TEST_TIMEOUT },
+            "test/jalview/bin/test_uniref50_out.eps", false,
+            MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+            "test/jalview/bin/test_uniref50_out.eps", true, MINFILESIZE_BIG,
+            TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -svg",
-            "test_uniref50_out.svg", false, MINFILESIZE_BIG, TEST_TIMEOUT },
+            "test/jalview/bin/test_uniref50_out.svg", false,
+            MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -png",
-            "test_uniref50_out.png", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+            "test/jalview/bin/test_uniref50_out.png", true, MINFILESIZE_BIG,
+            TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -html",
-            "test_uniref50_out.html", true, MINFILESIZE_BIG, TEST_TIMEOUT },
+            "test/jalview/bin/test_uniref50_out.html", true,
+            MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -fasta",
             "test_uniref50_out.mfa", true, MINFILESIZE_SMALL,
             TEST_TIMEOUT },
index e685155..5128fe5 100644 (file)
@@ -94,7 +94,7 @@ public class ColourMenuHelperTest
        * check i18n for display name
        */
       String label = MessageManager.getStringOrReturn("label.colourScheme_",
-              name.toLowerCase().replace(" ", "_"));
+              name);
       assertEquals(item.getText(), label);
     }
 
@@ -164,7 +164,7 @@ public class ColourMenuHelperTest
        * check i18n for display name
        */
       String label = MessageManager.getStringOrReturn("label.colourScheme_",
-              name.toLowerCase().replace(" ", "_"));
+              name);
       assertEquals(item.getText(), label);
     }
   
index 6f60588..df30935 100644 (file)
@@ -489,115 +489,76 @@ public class PopupMenuTest
   }
 
   /**
-   * Test for adding feature links
+   * Test for adding sequence id, dbref and feature links
    */
   @Test(groups = { "Functional" })
-  public void testAddFeatureLinks()
+  public void testBuildLinkMenu()
   {
-    // sequences from the alignment
     List<SequenceI> seqs = parentPanel.getAlignment().getSequences();
-
-    // create list of links and list of DBRefs
-    List<String> links = new ArrayList<>();
-    List<DBRefEntry> refs = new ArrayList<>();
-
-    // links as might be added into Preferences | Connections dialog
-    links.add("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$"
-            + SEQUENCE_ID + "$");
-    links.add("UNIPROT | http://www.uniprot.org/uniprot/$" + DB_ACCESSION
-            + "$");
-    links.add("INTERPRO | http://www.ebi.ac.uk/interpro/entry/$"
-            + DB_ACCESSION + "$");
-    // Gene3D entry tests for case (in)sensitivity
-    links.add("Gene3D | http://gene3d.biochem.ucl.ac.uk/Gene3D/search?sterm=$"
-            + DB_ACCESSION + "$&mode=protein");
-
-    // make seq0 dbrefs
-    refs.add(new DBRefEntry(DBRefSource.UNIPROT, "1", "P83527"));
-    refs.add(new DBRefEntry("INTERPRO", "1", "IPR001041"));
-    refs.add(new DBRefEntry("INTERPRO", "1", "IPR006058"));
-    refs.add(new DBRefEntry("INTERPRO", "1", "IPR012675"));
-    
-    // make seq1 dbrefs
-    refs.add(new DBRefEntry(DBRefSource.UNIPROT, "1", "Q9ZTS2"));
-    refs.add(new DBRefEntry("GENE3D", "1", "3.10.20.30"));
-
-    // add all the dbrefs to the sequences: Uniprot 1 each, Interpro all 3 to
-    // seq0, Gene3D to seq1
-    SequenceI seq = seqs.get(0);
-    seq.addDBRef(refs.get(0));
-
-    seq.addDBRef(refs.get(1));
-    seq.addDBRef(refs.get(2));
-    seq.addDBRef(refs.get(3));
+    final SequenceI seq0 = seqs.get(0);
+    final SequenceI seq1 = seqs.get(1);
+    final List<SequenceFeature> noFeatures = Collections
+            .<SequenceFeature> emptyList();
+    final String linkText = MessageManager.getString("action.link");
+
+    seq0.addDBRef(new DBRefEntry(DBRefSource.UNIPROT, "1", "P83527"));
+    seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR001041"));
+    seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR012675"));
+    seq0.addDBRef(new DBRefEntry("INTERPRO", "1", "IPR006058"));
+    seq1.addDBRef(new DBRefEntry(DBRefSource.UNIPROT, "1", "Q9ZTS2"));
+    seq1.addDBRef(new DBRefEntry("GENE3D", "1", "3.10.20.30"));
     
-    seqs.get(1).addDBRef(refs.get(4));
-    seqs.get(1).addDBRef(refs.get(5));
-    
-    // get the Popup Menu for first sequence
-    List<SequenceFeature> noFeatures = Collections.<SequenceFeature> emptyList();
-    testee = new PopupMenu(parentPanel, seq, noFeatures);
-    Component[] seqItems = testee.sequenceMenu.getMenuComponents();
-    JMenu linkMenu = (JMenu) seqItems[6];
+    /*
+     * check the Link Menu for the first sequence
+     */
+    JMenu linkMenu = PopupMenu.buildLinkMenu(seq0, noFeatures);
+    assertEquals(linkText, linkMenu.getText());
     Component[] linkItems = linkMenu.getMenuComponents();
     
-    // check the number of links are the expected number
+    /*
+     * menu items are ordered: SEQUENCE_ID search first, then dbrefs in order
+     * of database name (and within that by order of dbref addition)
+     */
     assertEquals(5, linkItems.length);
-
-    // first entry is EMBL-EBI which just uses sequence id not accession id?
     assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText());
+    assertEquals("INTERPRO|IPR001041",
+            ((JMenuItem) linkItems[1]).getText());
+    assertEquals("INTERPRO|IPR012675",
+            ((JMenuItem) linkItems[2]).getText());
+    assertEquals("INTERPRO|IPR006058",
+            ((JMenuItem) linkItems[3]).getText());
+    assertEquals("UNIPROT|P83527", ((JMenuItem) linkItems[4]).getText());
 
-    // sequence id for each link should match corresponding DB accession id
-    for (int i = 1; i < 4; i++)
-    {
-      String msg = seq.getName() + " link[" + i + "]";
-      assertEquals(msg, refs.get(i - 1).getSource(),
-              ((JMenuItem) linkItems[i])
-              .getText().split("\\|")[0]);
-      assertEquals(msg, refs.get(i - 1).getAccessionId(),
-              ((JMenuItem) linkItems[i])
-              .getText().split("\\|")[1]);
-    }
-
-    // get the Popup Menu for second sequence
-    seq = seqs.get(1);
-    testee = new PopupMenu(parentPanel, seq, noFeatures);
-    seqItems = testee.sequenceMenu.getMenuComponents();
-    linkMenu = (JMenu) seqItems[6];
+    /*
+     * check the Link Menu for the second sequence
+     * note dbref GENE3D is matched to link Gene3D, the latter is displayed
+     */
+    linkMenu = PopupMenu.buildLinkMenu(seq1, noFeatures);
+    assertEquals(linkText, linkMenu.getText());
     linkItems = linkMenu.getMenuComponents();
-    
-    // check the number of links are the expected number
     assertEquals(3, linkItems.length);
-
-    // first entry is EMBL-EBI which just uses sequence id not accession id?
     assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText());
+    assertEquals("Gene3D|3.10.20.30", ((JMenuItem) linkItems[1]).getText());
+    assertEquals("UNIPROT|Q9ZTS2", ((JMenuItem) linkItems[2]).getText());
 
-    // sequence id for each link should match corresponding DB accession id
-    for (int i = 1; i < 3; i++)
-    {
-      String msg = seq.getName() + " link[" + i + "]";
-      assertEquals(msg, refs.get(i + 3).getSource(),
-              ((JMenuItem) linkItems[i])
-              .getText().split("\\|")[0].toUpperCase());
-      assertEquals(msg, refs.get(i + 3).getAccessionId(),
-              ((JMenuItem) linkItems[i]).getText().split("\\|")[1]);
-    }
-
-    // if there are no valid links the Links submenu is disabled
-    List<String> nomatchlinks = new ArrayList<>();
-    nomatchlinks.add("NOMATCH | http://www.uniprot.org/uniprot/$"
-            + DB_ACCESSION + "$");
-
-    testee = new PopupMenu(parentPanel, seq, noFeatures);
-    seqItems = testee.sequenceMenu.getMenuComponents();
-    linkMenu = (JMenu) seqItems[6];
-    assertFalse(linkMenu.isEnabled());
+    /*
+     * if there are no valid links the Links submenu is still shown, but
+     * reduced to the EMBL-EBI lookup only (inserted by 
+     * CustomUrlProvider.choosePrimaryUrl())
+     */
+    String unmatched = "NOMATCH|http://www.uniprot.org/uniprot/$"
+            + DB_ACCESSION + "$";
+    UrlProviderFactoryI factory = new DesktopUrlProviderFactory(null,
+            unmatched, "");
+    Preferences.sequenceUrlLinks = factory.createUrlProvider();
 
+    linkMenu = PopupMenu.buildLinkMenu(seq1, noFeatures);
+    assertEquals(linkText, linkMenu.getText());
+    linkItems = linkMenu.getMenuComponents();
+    assertEquals(1, linkItems.length);
+    assertEquals("EMBL-EBI Search", ((JMenuItem) linkItems[0]).getText());
   }
 
-  /**
-   * Test for adding feature links
-   */
   @Test(groups = { "Functional" })
   public void testHideInsertions()
   {
index 91b541c..0ec1c1f 100644 (file)
@@ -1,12 +1,18 @@
 package jalview.gui;
 
+import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertTrue;
 
+import jalview.bin.Cache;
+import jalview.bin.Jalview;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
+import jalview.io.DataSourceType;
+import jalview.io.FileLoader;
+import jalview.viewmodel.ViewportRanges;
 
 import java.awt.event.MouseEvent;
 
@@ -28,16 +34,12 @@ public class ScalePanelTest
     SequenceI seq1 = new Sequence("Seq1", "MATRESS");
     SequenceI seq2 = new Sequence("Seq2", "MADNESS");
     AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
-    
+
     AlignFrame alignFrame = new AlignFrame(al, al.getWidth(),
             al.getHeight());
-    ScalePanel scalePanel = new ScalePanel(
-            alignFrame.getViewport(), alignFrame.alignPanel
-    );
-    
-    MouseEvent mouse = new MouseEvent(
-            scalePanel, 0, 1, 0, 4, 0, 1, false
-    );
+    ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
+
+    MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, 4, 0, 1, false);
     scalePanel.mousePressed(mouse);
     scalePanel.mouseDragged(mouse);
 
@@ -51,8 +53,56 @@ public class ScalePanelTest
     int startCol = sg.getStartRes();
 
     assertTrue(startCol >= 0);
+  }
 
+  /**
+   * Test for JAL-3212
+   */
+  @Test(groups = "Functional")
+  public void testSelectColumns_withHidden()
+  {
+    String seq1 = ">Seq1\nANTOFAGASTAVALPARAISOMONTEVIDEOANTANANARIVO";
+    AlignFrame alignFrame = new FileLoader().LoadFileWaitTillLoaded(seq1,
+            DataSourceType.PASTE);
+    ScalePanel scalePanel = alignFrame.alignPanel.getScalePanel();
 
+    /*
+     * hide columns 1-20 (of 43); then 'drag' to select columns 30-31;
+     * 31 is 51 in absolute columns but bug JAL-3212 reduces it to
+     * endRes which is 22
+     */
+    AlignViewport viewport = alignFrame.getViewport();
+    ViewportRanges ranges = viewport.getRanges();
+    assertEquals(ranges.getStartRes(), 0);
+    assertEquals(ranges.getEndRes(), 42);
+    viewport.hideColumns(0, 19);
+    alignFrame.alignPanel.updateLayout();
+    assertEquals(ranges.getStartRes(), 0);
+    assertEquals(ranges.getEndRes(), 22);
+    
+    int cw = viewport.getCharWidth();
+    int xPos = 9 * cw + 2;
+    MouseEvent mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1,
+            false);
+    scalePanel.mousePressed(mouse);
+    scalePanel.mouseDragged(mouse);
+    xPos += cw;
+    mouse = new MouseEvent(scalePanel, 0, 1, 0, xPos, 0, 1, false);
+    scalePanel.mouseReleased(mouse);
+
+    SequenceGroup sg = scalePanel.av.getSelectionGroup();
+    assertEquals(sg.getStartRes(), 29);
+    assertEquals(sg.getEndRes(), 30);
+  }
+
+  @BeforeClass(alwaysRun = true)
+  public static void setUpBeforeClass() throws Exception
+  {
+    /*
+     * use read-only test properties file
+     */
+    Cache.loadProperties("test/jalview/io/testProps.jvprops");
+    Jalview.main(new String[] { "-nonews" });
   }
 
 }
index bdbc3c9..571c75b 100644 (file)
@@ -265,8 +265,8 @@ public class SeqPanelTest
     av.setScaleAboveWrapped(false);
     av.setScaleLeftWrapped(false);
     av.setScaleRightWrapped(false);
-    alignFrame.alignPanel.paintAlignment(false, false);
-    waitForSwing(); // for Swing thread
+
+    alignFrame.alignPanel.updateLayout();
 
     final int charHeight = av.getCharHeight();
     final int charWidth = av.getCharWidth();
@@ -440,8 +440,7 @@ public class SeqPanelTest
     av.setScaleAboveWrapped(true);
     av.setScaleLeftWrapped(false);
     av.setScaleRightWrapped(false);
-    alignFrame.alignPanel.paintAlignment(false, false);
-    waitForSwing();
+    alignFrame.alignPanel.updateLayout();
 
     final int charHeight = av.getCharHeight();
     final int charWidth = av.getCharWidth();
@@ -636,8 +635,7 @@ public class SeqPanelTest
     av.setScaleAboveWrapped(false);
     av.setScaleLeftWrapped(false);
     av.setScaleRightWrapped(false);
-    alignFrame.alignPanel.paintAlignment(false, false);
-    waitForSwing();
+    alignFrame.alignPanel.updateLayout();
 
     final int charHeight = av.getCharHeight();
     final int charWidth = av.getCharWidth();
@@ -790,9 +788,7 @@ public class SeqPanelTest
     av.setScaleAboveWrapped(false);
     av.setScaleLeftWrapped(false);
     av.setScaleRightWrapped(false);
-    alignFrame.alignPanel.paintAlignment(false, false);
-    // need to wait for repaint to finish!
-    waitForSwing();
+    alignFrame.alignPanel.updateLayout();
     SeqPanel testee = alignFrame.alignPanel.getSeqPanel();
     int x = 0;
     final int charWidth = av.getCharWidth();
@@ -826,8 +822,7 @@ public class SeqPanelTest
      * x over scale left (before drawn columns) results in -1
      */
     av.setScaleLeftWrapped(true);
-    alignFrame.alignPanel.paintAlignment(false, false);
-    waitForSwing();
+    alignFrame.alignPanel.updateLayout();
     SeqCanvas seqCanvas = testee.seqCanvas;
     int labelWidth = (int) PA.getValue(seqCanvas, "labelWidthWest");
     assertTrue(labelWidth > 0);
@@ -855,8 +850,7 @@ public class SeqPanelTest
      * x over scale right (beyond drawn columns) results in -1
      */
     av.setScaleRightWrapped(true);
-    alignFrame.alignPanel.paintAlignment(false, false);
-    waitForSwing();
+    alignFrame.alignPanel.updateLayout();
     labelWidth = (int) PA.getValue(seqCanvas, "labelWidthEast");
     assertTrue(labelWidth > 0);
     int residuesWide2 = av.getRanges().getViewportWidth();
index 2e5a786..617bf42 100644 (file)
@@ -26,6 +26,7 @@ import static org.testng.Assert.assertTrue;
 import jalview.gui.JvOptionPane;
 
 import java.awt.Button;
+import java.awt.Toolkit;
 import java.awt.event.InputEvent;
 import java.awt.event.MouseEvent;
 
@@ -51,6 +52,16 @@ public class PlatformTest
   @Test(groups = "Functional")
   public void testIsControlDown_mac()
   {
+    String toolkit = Toolkit.getDefaultToolkit().getClass().getName();
+    if ("sun.awt.X11.XToolkit".equals(toolkit))
+    {
+      /*
+       * this toolkit on the build server fails these tests,
+       * because it returns 2, not 4, for getMenuShortcutKeyMask
+       */
+      return;
+    }
+
     int clickCount = 1;
     boolean isPopupTrigger = false;
     int buttonNo = MouseEvent.BUTTON1;
index 4092cf2..c7d37b0 100644 (file)
@@ -33,6 +33,7 @@ import jalview.datamodel.Sequence;
 import jalview.gui.JvOptionPane;
 
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -271,7 +272,7 @@ public class UrlLinkTest
     UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
             + DELIM + URL_SUFFIX);
 
-    Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+    Map<String, List<String>> linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(null, linkset);
 
     String key = DB + SEP + URL_PREFIX;
@@ -291,7 +292,7 @@ public class UrlLinkTest
   {
     UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + URL_SUFFIX);
 
-    Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+    Map<String, List<String>> linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(null, linkset);
 
     String key = DB + SEP + URL_PREFIX + URL_SUFFIX;
@@ -311,8 +312,8 @@ public class UrlLinkTest
   {
 
     // create list of links and list of DBRefs
-    List<String> links = new ArrayList<String>();
-    List<DBRefEntry> refs = new ArrayList<DBRefEntry>();
+    List<String> links = new ArrayList<>();
+    List<DBRefEntry> refs = new ArrayList<>();
 
     // links as might be added into Preferences | Connections dialog
     links.add("EMBL-EBI Search | http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$"
@@ -341,7 +342,7 @@ public class UrlLinkTest
     UrlLink ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + SEQUENCE_ID
             + DELIM + URL_SUFFIX);
 
-    Map<String, List<String>> linkset = new LinkedHashMap<String, List<String>>();
+    Map<String, List<String>> linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
 
     String key = seq0.getName() + SEP + URL_PREFIX + seq0.getName()
@@ -356,7 +357,7 @@ public class UrlLinkTest
 
     // Test where link takes a db annotation id and only has one dbref
     ul = new UrlLink(links.get(1));
-    linkset = new LinkedHashMap<String, List<String>>();
+    linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
 
     key = "P83527|http://www.uniprot.org/uniprot/P83527";
@@ -371,7 +372,7 @@ public class UrlLinkTest
 
     // Test where link takes a db annotation id and has multiple dbrefs
     ul = new UrlLink(links.get(2));
-    linkset = new LinkedHashMap<String, List<String>>();
+    linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
     assertEquals(3, linkset.size());
 
@@ -403,7 +404,7 @@ public class UrlLinkTest
     // Test where there are no matching dbrefs for the link
     ul = new UrlLink(DB + SEP + URL_PREFIX + DELIM + DB_ACCESSION + DELIM
             + URL_SUFFIX);
-    linkset = new LinkedHashMap<String, List<String>>();
+    linkset = new LinkedHashMap<>();
     ul.createLinksFromSeq(seq0, linkset);
     assertTrue(linkset.isEmpty());
   }
@@ -439,4 +440,25 @@ public class UrlLinkTest
 
   }
 
+  @Test(groups = { "Functional" })
+  public void testLinkComparator()
+  {
+    Comparator<String> c = UrlLink.LINK_COMPARATOR;
+    assertEquals(0, c.compare(null, null));
+    assertEquals(0, c.compare(null, "x"));
+    assertEquals(0, c.compare("y", null));
+
+    /*
+     * SEQUENCE_ID templates should come before DB_ACCESSION templates
+     */
+    String dbRefUrl = "Cath|http://www.cathdb.info/version/v4_2_0/superfamily/$DB_ACCESSION$";
+    String seqIdUrl = "EBI|https://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$";
+    assertTrue(c.compare(seqIdUrl, dbRefUrl) < 0);
+    assertTrue(c.compare(dbRefUrl, seqIdUrl) > 0);
+
+    String interpro = "Interpro|https://www.ebi.ac.uk/interpro/entry/$DB_ACCESSION$";
+    String prosite = "ProSite|https://prosite.expasy.org/PS00197";
+    assertTrue(c.compare(interpro, prosite) < 0);
+    assertTrue(c.compare(prosite, interpro) > 0);
+  }
 }
index c69d554..3afa211 100755 (executable)
@@ -1280,7 +1280,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b1a16838a449">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b1a16839a449">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1297,7 +1297,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[castor-1.1-cycle-xml.jar]]></string>
+                                                               <string><![CDATA[vamsas-client.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1315,10 +1315,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[castor-1.1-cycle-xml.jar]]></string>
+                                                               <string><![CDATA[vamsas-client.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>1035998</long>
+                                                               <long>682375</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1332,7 +1332,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b1a16839a449">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="495aeddb8b3d">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1349,7 +1349,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[vamsas-client.jar]]></string>
+                                                               <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1367,10 +1367,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[vamsas-client.jar]]></string>
+                                                               <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>682375</long>
+                                                               <long>8300</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1384,7 +1384,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="495aeddb8b3d">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="4996716cba8e">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1401,7 +1401,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
+                                                               <string><![CDATA[jabaws-min-client-2.2.0.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1419,10 +1419,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[JGoogleAnalytics_0.3.jar]]></string>
+                                                               <string><![CDATA[jabaws-min-client-2.2.0.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>8300</long>
+                                                               <long>601804</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1436,7 +1436,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="4996716cba8e">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9c">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1453,7 +1453,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jabaws-min-client-2.2.0.jar]]></string>
+                                                               <string><![CDATA[httpcore-4.0.1.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1471,10 +1471,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[min-jabaws-client-2.2.0.jar]]></string>
+                                                               <string><![CDATA[httpcore-4.0.1.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>601804</long>
+                                                               <long>172888</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1488,7 +1488,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9c">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17519b9c">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1505,7 +1505,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[httpcore-4.0.1.jar]]></string>
+                                                               <string><![CDATA[httpclient-4.0.3.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1523,10 +1523,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[httpcore-4.0.1.jar]]></string>
+                                                               <string><![CDATA[httpclient-4.0.3.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>172888</long>
+                                                               <long>292893</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1540,7 +1540,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17519b9c">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17539b9c">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1557,7 +1557,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[httpclient-4.0.3.jar]]></string>
+                                                               <string><![CDATA[httpmime-4.0.3.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1575,10 +1575,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[httpclient-4.0.3.jar]]></string>
+                                                               <string><![CDATA[httpmime-4.0.3.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>292893</long>
+                                                               <long>25447</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1592,7 +1592,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17539b9c">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9d">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1609,7 +1609,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[httpmime-4.0.3.jar]]></string>
+                                                               <string><![CDATA[apache-mime4j-0.6.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1627,10 +1627,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[httpmime-4.0.3.jar]]></string>
+                                                               <string><![CDATA[apache-mime4j-0.6.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>25447</long>
+                                                               <long>345048</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1644,7 +1644,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="8fbb17529b9d">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a521fb6bc">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1661,7 +1661,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[apache-mime4j-0.6.jar]]></string>
+                                                               <string><![CDATA[miglayout-4.0-swing.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1679,10 +1679,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[apache-mime4j-0.6.jar]]></string>
+                                                               <string><![CDATA[miglayout-4.0-swing.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>345048</long>
+                                                               <long>77291</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1696,7 +1696,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a521fb6bc">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc1">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1713,7 +1713,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[miglayout-4.0-swing.jar]]></string>
+                                                               <string><![CDATA[commons-codec-1.3.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1731,10 +1731,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[miglayout-4.0-swing.jar]]></string>
+                                                               <string><![CDATA[commons-codec-1.3.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>77291</long>
+                                                               <long>46725</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1748,7 +1748,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc1">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1765,7 +1765,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[commons-codec-1.3.jar]]></string>
+                                                               <string><![CDATA[jswingreader-0.3.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1783,10 +1783,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[commons-codec-1.3.jar]]></string>
+                                                               <string><![CDATA[jswingreader-0.3.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>46725</long>
+                                                               <long>86618</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1800,7 +1800,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="aa3a5220b6bc">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="df3a5220b6bc">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1817,7 +1817,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jswingreader-0.3.jar]]></string>
+                                                               <string><![CDATA[VARNAv3-93.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1835,10 +1835,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jswingreader-0.3.jar]]></string>
+                                                               <string><![CDATA[VARNAv3-93.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>86618</long>
+                                                               <long>695802</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1852,7 +1852,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="df3a5220b6bc">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca393ab9f">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1869,7 +1869,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[VARNAv3-93.jar]]></string>
+                                                               <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1887,10 +1887,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[VARNAv3-93.jar]]></string>
+                                                               <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>695802</long>
+                                                               <long>6149494</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1904,7 +1904,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca391ab9f">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46cffffab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1921,7 +1921,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[spring-web-3.0.5.RELEASE.jar]]></string>
+                                                               <string><![CDATA[jfreesvg-2.1.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1939,10 +1939,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[spring-web-3.0.5.RELEASE.jar]]></string>
+                                                               <string><![CDATA[jfreesvg-2.1.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>395587</long>
+                                                               <long>49768</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -1956,7 +1956,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca392ab9f">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -1973,7 +1973,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jdas-1.0.4.jar]]></string>
+                                                               <string><![CDATA[json_simple-1.1.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -1991,10 +1991,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jdas-1.0.4.jar]]></string>
+                                                               <string><![CDATA[json_simple-1.1.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>249906</long>
+                                                               <long>16046</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2008,7 +2008,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f44ca393ab9f">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="841f46efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2025,7 +2025,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
+                                                               <string><![CDATA[libquaqua64-8.0.jnilib.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2043,10 +2043,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[groovy-all-2.4.12-indy.jar]]></string>
+                                                               <string><![CDATA[libquaqua64-8.0.jnilib.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>6149494</long>
+                                                               <long>16046</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2060,7 +2060,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="f46c2f42ab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2077,7 +2077,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[spring-core-3.0.5.RELEASE.jar]]></string>
+                                                               <string><![CDATA[libquaqua-8.0.jnilib.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2095,10 +2095,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[spring-core-3.0.5.RELEASE.jar]]></string>
+                                                               <string><![CDATA[libquaqua-8.0.jnilib.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>382442</long>
+                                                               <long>16046</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2111,8 +2111,61 @@ and any path to a file to save to the file]]></string>
                                                        </property>
                                                </object>
                                        </method>
+
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46cffffab93">
+            <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeef911a">
+              <property name="belongsToUninstallPhase">
+                <boolean>false</boolean>
+              </property>
+              <property name="rollbackEnabledCancel">
+                <boolean>true</boolean>
+              </property>
+              <property name="rollbackEnabledError">
+                <boolean>true</boolean>
+              </property>
+              <property name="ruleExpression">
+                <string><![CDATA[]]></string>
+              </property>
+              <property name="unixPermissions">
+                <string><![CDATA[664]]></string>
+              </property>
+              <property name="sourceName">
+                <string><![CDATA[VAqua5-patch.jar]]></string>
+              </property>
+              <property name="overrideUnixPermissions">
+                <boolean>false</boolean>
+              </property>
+              <property name="sourcePath">
+                <string><![CDATA[/homes/cruisecontrol/jalview/lib/]]></string>
+              </property>
+              <property name="shouldUninstall">
+                <boolean>true</boolean>
+              </property>
+              <property name="rollbackEnabledCancel">
+                <boolean>true</boolean>
+              </property>
+              <property name="rollbackEnabledError">
+                <boolean>true</boolean>
+              </property>
+              <property name="destinationName">
+                <string><![CDATA[VAqua5-patch.jar]]></string>
+              </property>
+              <property name="fileSize">
+                <long>1370564</long>
+              </property>
+              <property name="macBinary">
+                <boolean>false</boolean>
+              </property>
+              <property name="targetCheckKind">
+                <int>0</int>
+              </property>
+              <property name="ruleExpression">
+                <string><![CDATA[]]></string>
+              </property>
+            </object>
+          </method>
+          <method name="addElement">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2129,7 +2182,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jfreesvg-2.1.jar]]></string>
+                                                               <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2147,10 +2200,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jfreesvg-2.1.jar]]></string>
+                                                               <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>49768</long>
+                                                               <long>660179</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2164,7 +2217,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1f46efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="10936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2181,7 +2234,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[json_simple-1.1.jar]]></string>
+                                                               <string><![CDATA[jersey-client-1.19.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2199,10 +2252,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[json_simple-1.1.jar]]></string>
+                                                               <string><![CDATA[jersey-client-1.19.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>16046</long>
+                                                               <long>134021</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2216,7 +2269,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="841f46efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="11936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2233,7 +2286,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[libqaqua64.jnilib]]></string>
+                                                               <string><![CDATA[jersey-core-1.19.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2251,10 +2304,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[libqaqua64.jnilib]]></string>
+                                                               <string><![CDATA[jersey-core-1.19.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>16046</long>
+                                                               <long>436689</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2268,7 +2321,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="12936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2285,7 +2338,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[libquaqua.jnilib]]></string>
+                                                               <string><![CDATA[jersey-json-1.19.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2303,10 +2356,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[libquaqua.jnilib]]></string>
+                                                               <string><![CDATA[jersey-json-1.19.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>16046</long>
+                                                               <long>165345</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2320,59 +2373,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-            <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="9a1f46efeef911a">
-              <property name="belongsToUninstallPhase">
-                <boolean>false</boolean>
-              </property>
-              <property name="rollbackEnabledCancel">
-                <boolean>true</boolean>
-              </property>
-              <property name="rollbackEnabledError">
-                <boolean>true</boolean>
-              </property>
-              <property name="ruleExpression">
-                <string><![CDATA[]]></string>
-              </property>
-              <property name="unixPermissions">
-                <string><![CDATA[664]]></string>
-              </property>
-              <property name="sourceName">
-                <string><![CDATA[VAqua5-patch.jar]]></string>
-              </property>
-              <property name="overrideUnixPermissions">
-                <boolean>false</boolean>
-              </property>
-              <property name="sourcePath">
-                <string><![CDATA[/homes/cruisecontrol/jalview/lib/]]></string>
-              </property>
-              <property name="shouldUninstall">
-                <boolean>true</boolean>
-              </property>
-              <property name="rollbackEnabledCancel">
-                <boolean>true</boolean>
-              </property>
-              <property name="rollbackEnabledError">
-                <boolean>true</boolean>
-              </property>
-              <property name="destinationName">
-                <string><![CDATA[VAqua5-patch.jar]]></string>
-              </property>
-              <property name="fileSize">
-                <long>1370564</long>
-              </property>
-              <property name="macBinary">
-                <boolean>false</boolean>
-              </property>
-              <property name="targetCheckKind">
-                <int>0</int>
-              </property>
-              <property name="ruleExpression">
-                <string><![CDATA[]]></string>
-              </property>
-            </object>
-          </method>
-          <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="13936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2389,7 +2390,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
+                                                               <string><![CDATA[java-json.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2407,10 +2408,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[quaqua-filechooser-only-8.0.jar]]></string>
+                                                               <string><![CDATA[java-json.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>660179</long>
+                                                               <long>84697</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2424,7 +2425,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="10936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="14936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2441,7 +2442,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jersey-client-1.19.jar]]></string>
+                                                               <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2459,10 +2460,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jersey-client-1.19.jar]]></string>
+                                                               <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>134021</long>
+                                                               <long>46367</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2476,7 +2477,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="11936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="15936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2493,7 +2494,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jersey-core-1.19.jar]]></string>
+                                                               <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2511,10 +2512,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jersey-core-1.19.jar]]></string>
+                                                               <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>436689</long>
+                                                               <long>105748</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2528,7 +2529,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="12936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="16936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2545,7 +2546,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jersey-json-1.19.jar]]></string>
+                                                               <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2563,10 +2564,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jersey-json-1.19.jar]]></string>
+                                                               <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>165345</long>
+                                                               <long>108132</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2580,7 +2581,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="13936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="17936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2597,7 +2598,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[java-json.jar]]></string>
+                                                               <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2615,10 +2616,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[java-json.jar]]></string>
+                                                               <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>84697</long>
+                                                               <long>418917</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2632,7 +2633,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="14936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="18936efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2649,7 +2650,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
+                                                               <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2667,10 +2668,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jsr311-api-1.1.1.jar]]></string>
+                                                               <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>46367</long>
+                                                               <long>356253</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2684,7 +2685,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="15936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1899e36efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2701,7 +2702,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[jetty-servlet-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2719,10 +2720,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jetty-http-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[jetty-servlet-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>105748</long>
+                                                               <long>356253</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2736,7 +2737,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="16936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1899d6efeefab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2753,7 +2754,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[jetty-security-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2771,10 +2772,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jetty-io-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[jetty-security-9.2.10.v20150310.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>108132</long>
+                                                               <long>356253</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2788,7 +2789,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="17936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfab93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2805,7 +2806,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[htsjdk-2.12.0.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2823,10 +2824,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jetty-server-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[htsjdk-2.12.0.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>418917</long>
+                                                               <long>16046</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2840,7 +2841,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="18936efeefab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfb93">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2857,7 +2858,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[intervalstore-v1.0.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2875,7 +2876,59 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[jetty-util-9.2.10.v20150310.jar]]></string>
+                                                               <string><![CDATA[intervalstore-v1.0.jar]]></string>
+                                                       </property>
+                                                       <property name="fileSize">
+                                                               <long>26303</long>
+                                                       </property>
+                                                       <property name="macBinary">
+                                                               <boolean>false</boolean>
+                                                       </property>
+                                                       <property name="targetCheckKind">
+                                                               <int>0</int>
+                                                       </property>
+                                                       <property name="ruleExpression">
+                                                               <string><![CDATA[]]></string>
+                                                       </property>
+                                               </object>
+                                       </method>
+                                       <method name="addElement">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b10a3">
+                                                       <property name="belongsToUninstallPhase">
+                                                               <boolean>false</boolean>
+                                                       </property>
+                                                       <property name="rollbackEnabledCancel">
+                                                               <boolean>true</boolean>
+                                                       </property>
+                                                       <property name="rollbackEnabledError">
+                                                               <boolean>true</boolean>
+                                                       </property>
+                                                       <property name="ruleExpression">
+                                                               <string><![CDATA[]]></string>
+                                                       </property>
+                                                       <property name="unixPermissions">
+                                                               <string><![CDATA[664]]></string>
+                                                       </property>
+                                                       <property name="sourceName">
+                                                               <string><![CDATA[biojava-core-4.1.0.jar]]></string>
+                                                       </property>
+                                                       <property name="overrideUnixPermissions">
+                                                               <boolean>false</boolean>
+                                                       </property>
+                                                       <property name="sourcePath">
+                                                               <string><![CDATA[/homes/cruisecontrol/jalview/lib/]]></string>
+                                                       </property>
+                                                       <property name="shouldUninstall">
+                                                               <boolean>true</boolean>
+                                                       </property>
+                                                       <property name="rollbackEnabledCancel">
+                                                               <boolean>true</boolean>
+                                                       </property>
+                                                       <property name="rollbackEnabledError">
+                                                               <boolean>true</boolean>
+                                                       </property>
+                                                       <property name="destinationName">
+                                                               <string><![CDATA[biojava-core-4.1.0.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
                                                                <long>356253</long>
@@ -2892,7 +2945,7 @@ and any path to a file to save to the file]]></string>
                                                </object>
                                        </method>
                                        <method name="addElement">
-                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfab93">
+                                               <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="b10a30">
                                                        <property name="belongsToUninstallPhase">
                                                                <boolean>false</boolean>
                                                        </property>
@@ -2909,7 +2962,7 @@ and any path to a file to save to the file]]></string>
                                                                <string><![CDATA[664]]></string>
                                                        </property>
                                                        <property name="sourceName">
-                                                               <string><![CDATA[htsjdk-1.133.jar]]></string>
+                                                               <string><![CDATA[biojava-ontology-4.1.0.jar]]></string>
                                                        </property>
                                                        <property name="overrideUnixPermissions">
                                                                <boolean>false</boolean>
@@ -2927,10 +2980,10 @@ and any path to a file to save to the file]]></string>
                                                                <boolean>true</boolean>
                                                        </property>
                                                        <property name="destinationName">
-                                                               <string><![CDATA[htsjdk-1.133.jar]]></string>
+                                                               <string><![CDATA[biojava-ontology-4.1.0.jar]]></string>
                                                        </property>
                                                        <property name="fileSize">
-                                                               <long>16046</long>
+                                                               <long>356253</long>
                                                        </property>
                                                        <property name="macBinary">
                                                                <boolean>false</boolean>
@@ -2943,6 +2996,7 @@ and any path to a file to save to the file]]></string>
                                                        </property>
                                                </object>
                                        </method>
+
                                        <method name="addElement">
                                                <object class="com.zerog.ia.installer.actions.InstallZipfile" objectID="1000ddddfab939">
                                                        <property name="belongsToUninstallPhase">
@@ -7445,7 +7499,6 @@ and any path to a file to read from that file]]></string>
                                                                                        </property>
                                                                                </object>
                                                                                <object refID="88d4aff3b0c6"/>
-                                                                               <object refID="b1a16838a449"/>
                                                                                <object refID="b1a16839a449"/>
                                                                                <object refID="495aeddb8b3d"/>
                                                                                <object refID="4996716cba8e"/>
@@ -7457,14 +7510,14 @@ and any path to a file to read from that file]]></string>
                                                                                <object refID="aa3a5220b6bc"/>
                                                                                <object refID="df3a5220b6bc"/>
                                                                                <object refID="aa3a5220b6bc1"/>
-                                                                               <object refID="f44ca391ab9f"/>
-                                                                               <object refID="f44ca392ab9f"/>
+
                                                                                <object refID="f44ca393ab9f"/>
-                                                                               <object refID="f46c2f42ab93"/>
+
                                                                                <object refID="1f46cffffab93"/>
                                                                                <object refID="1f46efeefab93"/>
                                                                                <object refID="1936efeefab93"/>
                                                                                <object refID="1000ddddfab93"/>
+                                                                               <object refID="1000ddddfb93"/>
                                                                                <object refID="1000ddddfab939"/>
                                                                                <object refID="10936efeefab93"/>
                                                                                <object refID="11936efeefab93"/>
@@ -7475,6 +7528,11 @@ and any path to a file to read from that file]]></string>
                                                                                <object refID="16936efeefab93"/>
                                                                                <object refID="17936efeefab93"/>
                                                                                <object refID="18936efeefab93"/>
+                                                                               <object refID="b10a3"/>
+                                                                               <object refID="b10a30"/>
+                                                                               <object refID="1899e36efeefab93"/>
+                                                                               <object refID="1899d6efeefab93"/>
+
                                                                                <object class="com.zerog.ia.installer.actions.InstallFile" objectID="f44fc5b2aba1">
                                                                                        <property name="belongsToUninstallPhase">
                                                                                                <boolean>false</boolean>