visibility setting
[jalview.git] / src / jalview / gui / Jalview2XML.java
index 48ba7f0..061dfca 100755 (executable)
@@ -520,6 +520,8 @@ public class Jalview2XML
           continue;
         }
 
+        an.setVisible(aa[i].visible);
+
         an.setDescription(aa[i].description);
 
         if (aa[i].sequenceRef != null)
@@ -986,6 +988,8 @@ public class Jalview2XML
 
     Hashtable gatherToThisFrame = new Hashtable();
 
+    String errorMessage = null;
+
     try
     {
       //UNMARSHALLER SEEMS TO CLOSE JARINPUTSTREAM, MOST ANNOYING
@@ -1040,22 +1044,19 @@ public class Jalview2XML
       }
       while (jarentry != null);
     }
+    catch(java.io.FileNotFoundException ex)
+    {
+      ex.printStackTrace();
+      errorMessage = "Couldn't locate Jalview XML file : "+file;
+      System.err.println("Exception whilst loading jalview XML file : " +
+                         ex + "\n");
+    }
     catch (java.net.UnknownHostException ex)
     {
       ex.printStackTrace();
-      System.err.println("Couldn't locate Jalview XML file : " +
+      errorMessage = "Couldn't locate Jalview XML file : " +file;
+      System.err.println("Exception whilst loading jalview XML file : " +
                          ex + "\n");
-
-      javax.swing.SwingUtilities.invokeLater(new Runnable()
-      {
-        public void run()
-        {
-          JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                                                "Couldn't locate " + file,
-                                                "URL not found",
-                                                JOptionPane.WARNING_MESSAGE);
-        }
-      });
     }
     catch (Exception ex)
     {
@@ -1071,17 +1072,6 @@ public class Jalview2XML
 
       System.err.println("Exception whilst loading jalview XML file : " +
                          ex + "\n");
-      javax.swing.SwingUtilities.invokeLater(new Runnable()
-      {
-        public void run()
-        {
-
-          JOptionPane.showInternalMessageDialog(Desktop.desktop,
-                                                "Error loading  " + file,
-                                                "Error loading Jalview file",
-                                                JOptionPane.WARNING_MESSAGE);
-        }
-      });
     }
 
     if (Desktop.instance != null)
@@ -1096,6 +1086,21 @@ public class Jalview2XML
           (AlignFrame) en.nextElement());
     }
 
+    if(errorMessage!=null)
+    {
+      final String finalErrorMessage = errorMessage;
+      javax.swing.SwingUtilities.invokeLater(new Runnable()
+      {
+        public void run()
+        {
+          JOptionPane.showInternalMessageDialog(Desktop.desktop,
+                                                finalErrorMessage,
+                                                "Error loading Jalview file",
+                                                JOptionPane.WARNING_MESSAGE);
+        }
+      });
+    }
+
     return af;
   }
 
@@ -1340,10 +1345,13 @@ public class Jalview2XML
         if (an[i].getId() != null
             && annotationIds.containsKey(an[i].getId()))
         {
-          al.addAnnotation(
+          jalview.datamodel.AlignmentAnnotation jda =
               (jalview.datamodel.AlignmentAnnotation) annotationIds.get(an[i].
-              getId())
-              );
+              getId());
+          if (an[i].hasVisible())
+            jda.visible = an[i].getVisible();
+
+          al.addAnnotation(jda);
 
           continue;
         }
@@ -1358,6 +1366,9 @@ public class Jalview2XML
 
           for (int aa = 0; aa < ae.length && aa < anot.length; aa++)
           {
+            if(ae[aa].getPosition()>=anot.length)
+              continue;
+
             anot[ae[aa].getPosition()] = new jalview.datamodel.Annotation(
 
                     ae[aa].getDisplayCharacter(),
@@ -1408,15 +1419,22 @@ public class Jalview2XML
 
         if (an[i].getSequenceRef() != null)
         {
-          jaa.createSequenceMapping(
-              al.findName(an[i].getSequenceRef()), 1, true
-              );
-          al.findName(an[i].getSequenceRef()).addAlignmentAnnotation(jaa);
+          if (al.findName(an[i].getSequenceRef()) != null)
+          {
+            jaa.createSequenceMapping(
+                al.findName(an[i].getSequenceRef()), 1, true
+                );
+            al.findName(an[i].getSequenceRef()).addAlignmentAnnotation(jaa);
+          }
         }
         if (an[i].hasScore())
         {
           jaa.setScore(an[i].getScore());
         }
+
+        if(an[i].hasVisible())
+          jaa.visible =  an[i].getVisible();
+
         al.addAnnotation(jaa);
       }
     }
@@ -1906,9 +1924,11 @@ public class Jalview2XML
 
               String pdbFile = loadPDBFile(file, ids[p].getId());
 
-              jalview.datamodel.SequenceI[] seq = new jalview.datamodel.SequenceI[]
+              jalview.datamodel.SequenceI[] seq = new jalview.datamodel.
+                  SequenceI[]
                   {
-                  al.getSequenceAt(i)};
+                   (jalview.datamodel.SequenceI)
+                  seqRefIds.get(JSEQ[i].getId()+"")};
 
 
               if (comp == null)