JAL-1645 Version-Rel Version 2.9 Year-Rel 2015 Licensing glob
[jalview.git] / src / jalview / bin / JalviewLite.java
index 3d1e275..59424df 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -20,6 +20,7 @@
  */
 package jalview.bin;
 
+import jalview.analysis.AlignmentUtils;
 import jalview.api.StructureSelectionManagerProvider;
 import jalview.appletgui.AlignFrame;
 import jalview.appletgui.AlignViewport;
@@ -69,7 +70,6 @@ import java.util.List;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
-import netscape.javascript.JSException;
 import netscape.javascript.JSObject;
 
 /**
@@ -847,7 +847,7 @@ public class JalviewLite extends Applet implements
    */
   public AlignFrame loadAlignment(String text, String title)
   {
-    Alignment al = null;
+    AlignmentI al = null;
 
     String format = new IdentifyFile().Identify(text,
             AppletFormatAdapter.PASTE);
@@ -1289,7 +1289,7 @@ public class JalviewLite extends Applet implements
     {
       builddate = "unknown";
       version = "test";
-      installation = "Webstart";
+      installation = "applet";
       java.net.URL url = JalviewLite.class
               .getResource("/.build_properties");
       if (url != null)
@@ -1385,8 +1385,7 @@ public class JalviewLite extends Applet implements
     String externalsviewer = getParameter("externalstructureviewer");
     if (externalsviewer != null)
     {
-      useXtrnalSviewer = externalsviewer.trim().toLowerCase()
-              .equals(TRUE);
+      useXtrnalSviewer = externalsviewer.trim().toLowerCase().equals(TRUE);
     }
     /**
      * if true disable the check for jmol
@@ -1412,7 +1411,9 @@ public class JalviewLite extends Applet implements
       }
       else
       {
-        throw new Error(MessageManager.getString("error.invalid_separator_parameter"));
+        throw new Error(
+                MessageManager
+                        .getString("error.invalid_separator_parameter"));
       }
     }
     int r = 255;
@@ -1459,7 +1460,7 @@ public class JalviewLite extends Applet implements
         file = data.toString();
       }
     }
-    if (TRUE.equalsIgnoreCase(getParameter("enableSplitFrame")))
+    if (getDefaultParameter("enableSplitFrame", true))
     {
       file2 = getParameter("file2");
     }
@@ -1533,7 +1534,7 @@ public class JalviewLite extends Applet implements
         {
           notFailed = true;
         }
-      } catch (JSException jsex)
+      } catch (Exception jsex)
       {
         System.err.println("Attempt " + tries
                 + " to access LiveConnect javascript failed.");
@@ -1880,15 +1881,27 @@ public class JalviewLite extends Applet implements
      */
     public void addToDisplay(AlignFrame af, AlignFrame af2)
     {
-      if (af2 == null)
+      if (af2 != null)
       {
-        af.addToDisplay(embedded);
-      }
-      else
-      {
-        SplitFrame sf = new SplitFrame(af, af2);
-        sf.addToDisplay(embedded, JalviewLite.this);
+        AlignmentI al1 = af.viewport.getAlignment();
+        AlignmentI al2 = af2.viewport.getAlignment();
+        if (AlignmentUtils.isMappable(al1, al2))
+        {
+          SplitFrame sf = new SplitFrame(af, af2);
+          sf.addToDisplay(embedded, JalviewLite.this);
+          return;
+        }
+        else
+        {
+          String msg = "Could not map any sequence in " + af2.getTitle()
+                  + " as "
+                  + (al1.isNucleotide() ? "protein product" : "cDNA")
+                  + " for " + af.getTitle();
+          System.err.println(msg);
+        }
       }
+
+      af.addToDisplay(embedded);
     }
 
     /**
@@ -1909,7 +1922,8 @@ public class JalviewLite extends Applet implements
       AlignmentI al = null;
       try
       {
-        al = new AppletFormatAdapter().readFile(resolvedFile, protocol, format);
+        al = new AppletFormatAdapter().readFile(resolvedFile, protocol,
+                format);
         if ((al != null) && (al.getHeight() > 0))
         {
           dbgMsg("Successfully loaded file.");
@@ -1927,13 +1941,13 @@ public class JalviewLite extends Applet implements
           if (protocol == AppletFormatAdapter.PASTE)
           {
             newAlignFrame.setTitle(MessageManager.formatMessage(
-                    "label.sequences_from", new Object[]
-                    { applet.getDocumentBase().toString() }));
+                    "label.sequences_from", new Object[] { applet
+                            .getDocumentBase().toString() }));
           }
 
           newAlignFrame.statusBar.setText(MessageManager.formatMessage(
-                  "label.successfully_loaded_file", new Object[]
-                  { resolvedFile }));
+                  "label.successfully_loaded_file",
+                  new Object[] { resolvedFile }));
 
           return newAlignFrame;
         }
@@ -2028,10 +2042,9 @@ public class JalviewLite extends Applet implements
             String sequence = applet.getParameter("PDBSEQ");
             if (sequence != null)
             {
-              seqs = new SequenceI[]
-              { matcher == null ? (Sequence) alignFrame.getAlignViewport()
-                      .getAlignment().findName(sequence) : matcher
-                      .findIdMatch(sequence) };
+              seqs = new SequenceI[] { matcher == null ? (Sequence) alignFrame
+                      .getAlignViewport().getAlignment().findName(sequence)
+                      : matcher.findIdMatch(sequence) };
             }
 
           }
@@ -2113,8 +2126,8 @@ public class JalviewLite extends Applet implements
             }
             else
             {
-              pdbs.addElement(new Object[]
-              { pdb, seqs, chains, new String(protocol) });
+              pdbs.addElement(new Object[] { pdb, seqs, chains,
+                  new String(protocol) });
             }
           }
         }
@@ -2368,47 +2381,48 @@ public class JalviewLite extends Applet implements
      * If the file is not already in URL format, tries to locate it by resolving
      * as a URL.
      * 
-     * @param file
+     * @param f
      * @return
      */
-    String addProtocol(final String file)
+    String addProtocol(final String f)
     {
-      if (file.indexOf("://") == -1)
+      if (f.indexOf("://") != -1)
       {
-        /*
-         * Try relative to document base
-         */
-        String url = applet.resolveUrlForLocalOrAbsolute(file,
-                getDocumentBase());
-        if (urlExists(url))
-        {
-          if (debug)
-          {
-            System.err.println("Prepended document base for resource: '"
-                    + file + "'");
-          }
-          return url;
-        }
+        // already has URL format
+        return f;
+      }
 
-        /*
-         * Try relative to codebase
-         */
-        url = applet.resolveUrlForLocalOrAbsolute(file, getCodeBase());
-        if (urlExists(url))
+      /*
+       * Try relative to document base
+       */
+      URL documentBase = getDocumentBase();
+      String url = applet.resolveUrlForLocalOrAbsolute(f, documentBase);
+      if (urlExists(url))
+      {
+        if (debug)
         {
-          if (debug)
-          {
-            System.err.println("Prepended codebase for resource: '" + file
-                    + "'");
-          }
-          return url;
+          System.err.println("Prepended document base '" + documentBase
+                  + "' to make: '" + url + "'");
         }
+        return url;
       }
 
       /*
-       * Not resolved, leave unchanged
+       * Try relative to codebase
        */
-      return file;
+      URL codeBase = getCodeBase();
+      url = applet.resolveUrlForLocalOrAbsolute(f, codeBase);
+      if (urlExists(url))
+      {
+        if (debug)
+        {
+          System.err.println("Prepended codebase '" + codeBase
+                  + "' to make: '" + url + "'");
+        }
+        return url;
+      }
+
+      return f;
     }
 
     /**
@@ -2500,7 +2514,6 @@ public class JalviewLite extends Applet implements
    */
   public String[] separatorListToArray(String list, String separator)
   {
-    // note separator local variable intentionally masks object field
     int seplen = separator.length();
     if (list == null || list.equals("") || list.equals(separator))
     {
@@ -2724,7 +2737,7 @@ public class JalviewLite extends Applet implements
     {
       return def;
     }
-    if (stn.toLowerCase().equals(TRUE))
+    if (TRUE.equalsIgnoreCase(stn))
     {
       return true;
     }
@@ -2897,14 +2910,22 @@ public class JalviewLite extends Applet implements
     String codebase = localref.toString();
     if (url.indexOf("/") == 0)
     {
-      url = codebase.substring(0, codebase.length()
-              - localref.getFile().length())
+      String localfile = localref.getFile();
+      url = codebase.substring(0, codebase.length() - localfile.length())
               + url;
     }
     else
     {
       url = localref + url;
     }
+    if (debug)
+    {
+      System.err.println("URL: " + localref.toString());
+      System.err.println("URL.getFile: " + localref.getFile());
+      System.err.println("URL.getPath: " + localref.getPath());
+      System.err.println("URL.getQuery: " + localref.getQuery());
+      System.err.println("returning " + url);
+    }
     return url;
   }