JAL-1551 format and tidy
[jalview.git] / src / jalview / ext / jmol / PDBFileWithJmol.java
index 962fe3c..159955a 100644 (file)
@@ -1,32 +1,41 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
- * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
  *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.ext.jmol;
 
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
+import jalview.io.AlignFile;
+import jalview.io.FileParse;
+import jalview.util.MessageManager;
+
 import java.io.IOException;
+import java.util.Hashtable;
 import java.util.Map;
 
-import javax.xml.parsers.ParserConfigurationException;
-
 import org.jmol.api.JmolStatusListener;
 import org.jmol.api.JmolViewer;
 import org.jmol.constant.EnumCallback;
-import org.jmol.constant.EnumStructure;
-import org.jmol.modelset.Chain;
 import org.jmol.modelset.Group;
 import org.jmol.modelset.Model;
 import org.jmol.modelset.ModelSet;
@@ -34,18 +43,6 @@ import org.jmol.modelset.Polymer;
 import org.jmol.modelsetbio.BioPolymer;
 import org.jmol.viewer.Viewer;
 import org.openscience.jmol.app.JmolApp;
-import org.xml.sax.SAXException;
-
-import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
-import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
-import fr.orsay.lri.varna.exceptions.ExceptionPermissionDenied;
-import fr.orsay.lri.varna.exceptions.ExceptionUnmatchedClosingParentheses;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.PDBEntry;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceI;
-import jalview.io.AlignFile;
 
 /**
  * Import and process PDB files with Jmol
@@ -61,15 +58,16 @@ public class PDBFileWithJmol extends AlignFile implements
 
   Viewer viewer = null;
 
-  public PDBFileWithJmol(String inFile, String type)
-          throws ExceptionUnmatchedClosingParentheses, IOException,
-          ExceptionFileFormatOrSyntax, ParserConfigurationException,
-          SAXException, ExceptionPermissionDenied, ExceptionLoadingFailed,
-          InterruptedException
+  public PDBFileWithJmol(String inFile, String type) throws IOException
   {
     super(inFile, type);
   }
 
+  public PDBFileWithJmol(FileParse fp) throws IOException
+  {
+    super(fp);
+  }
+
   public PDBFileWithJmol()
   {
     // TODO Auto-generated constructor stub
@@ -98,10 +96,7 @@ public class PDBFileWithJmol extends AlignFile implements
         jmolApp.startViewer(viewer, null);
       } catch (ClassCastException x)
       {
-        throw new Error(
-                "Jmol version "
-                        + JmolViewer.getJmolVersion()
-                        + " is not compatible with this version of Jalview. Report this problem at issues.jalview.org",
+        throw new Error(MessageManager.formatMessage("error.jmol_version_not_compatible_with_jalview_version", new String[]{JmolViewer.getJmolVersion()}),
                 x);
       }
     }
@@ -128,10 +123,7 @@ public class PDBFileWithJmol extends AlignFile implements
    * @see jalview.io.AlignFile#parse()
    */
   @Override
-  public void parse() throws IOException, ExceptionFileFormatOrSyntax,
-          ParserConfigurationException, SAXException,
-          ExceptionPermissionDenied, ExceptionLoadingFailed,
-          InterruptedException, ExceptionUnmatchedClosingParentheses
+  public void parse() throws IOException
   {
     Viewer jmd = getJmolData();
     jmd.openReader(getDataName(), getDataName(), getReader());
@@ -163,7 +155,7 @@ public class PDBFileWithJmol extends AlignFile implements
                 {
                   char newseq[] = new char[len];
                   System.arraycopy(seq, 0, newseq, 0, len);
-                  Annotation asecstr[] = new Annotation[len];
+                  Annotation asecstr[] = new Annotation[len+firstrnum-1];
                   for (int p = 0; p < len; p++)
                   {
                     if (secstr[p] >= 'A' && secstr[p] <= 'z')
@@ -179,13 +171,24 @@ public class PDBFileWithJmol extends AlignFile implements
                   pdbe.setFile(getDataName());
                   pdbe.setId(getDataName());
                   sq.addPDBId(pdbe);
+                  pdbe.setProperty(new Hashtable());
+                  pdbe.getProperty().put("CHAIN", "" + _lastChainId);
+                  // JAL-1533
+                  // Need to put the number of models for this polymer somewhere for Chimera/others to grab
+                  //                  pdbe.getProperty().put("PDBMODELS", biopoly.)
                   seqs.add(sq);
                   if (!(biopoly.isDna() || biopoly.isRna()))
                   {
                     AlignmentAnnotation ann = new AlignmentAnnotation(
                             "Secondary Structure",
                             "Secondary Structure from PDB File", asecstr);
+                    ann.belowAlignment=true;
+                    ann.visible=true;
+                    ann.autoCalculated=false;
+                    ann.setCalcId(getClass().getName());
                     sq.addAlignmentAnnotation(ann);
+                    ann.adjustForAlignment();
+                    ann.validateRangeAndDisplay();
                     annotations.add(ann);
                   }
                 }
@@ -304,11 +307,16 @@ public class PDBFileWithJmol extends AlignFile implements
     case MEASURE:
       String mystatus = (String) data[3];
       if (mystatus.indexOf("Picked") >= 0
-              || mystatus.indexOf("Sequence") >= 0) // picking mode
+              || mystatus.indexOf("Sequence") >= 0)
+      {
+        // Picking mode
         sendConsoleMessage(strInfo);
+      }
       else if (mystatus.indexOf("Completed") >= 0)
+      {
         sendConsoleEcho(strInfo.substring(strInfo.lastIndexOf(",") + 2,
                 strInfo.length() - 1));
+      }
       break;
     case MESSAGE:
       sendConsoleMessage(data == null ? null : strInfo);