JAL-3855 check if an alpha fold ID and retrieve using that source
[jalview.git] / src / jalview / gui / StructureViewerBase.java
index e180f6b..b349559 100644 (file)
@@ -61,7 +61,9 @@ import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemes;
 import jalview.structure.StructureMapping;
 import jalview.structures.models.AAStructureBindingModel;
+import jalview.util.BrowserLauncher;
 import jalview.util.MessageManager;
+import jalview.ws.dbsources.EBIAlfaFold;
 import jalview.ws.dbsources.Pdb;
 
 /**
@@ -706,7 +708,7 @@ public abstract class StructureViewerBase extends GStructureViewer
                 }
                 else
                 {
-                  // update the Chimera display now.
+                  // update the viewer display now.
                   seqColour_actionPerformed();
                 }
               }
@@ -756,6 +758,10 @@ public abstract class StructureViewerBase extends GStructureViewer
       }
     });
 
+    viewerActionMenu.setText(getViewerName());
+    helpItem.setText(MessageManager.formatMessage("label.viewer_help",
+            getViewerName()));
+
     buildColourMenu();
   }
 
@@ -965,7 +971,7 @@ public abstract class StructureViewerBase extends GStructureViewer
      * enable 'Superpose with' if more than one mapped structure
      */
     viewSelectionMenu.setEnabled(false);
-    if (getBinding().getStructureFiles().length > 1
+    if (getBinding().getMappedStructureCount() > 1
             && getBinding().getSequence().length > 1)
     {
       viewSelectionMenu.setEnabled(true);
@@ -1116,6 +1122,7 @@ public abstract class StructureViewerBase extends GStructureViewer
   {
     String filePath = null;
     Pdb pdbclient = new Pdb();
+    EBIAlfaFold afclient =  new EBIAlfaFold();
     AlignmentI pdbseq = null;
     String pdbid = processingEntry.getId();
     long handle = System.currentTimeMillis()
@@ -1133,7 +1140,12 @@ public abstract class StructureViewerBase extends GStructureViewer
     // { pdbid }));
     try
     {
-      pdbseq = pdbclient.getSequenceRecords(pdbid);
+      if (afclient.isValidReference(pdbid))
+      {
+        pdbseq = afclient.getSequenceRecords(pdbid);
+      } else {
+        pdbseq = pdbclient.getSequenceRecords(pdbid);
+      }
     } catch (Exception e)
     {
       System.err.println(
@@ -1204,6 +1216,9 @@ public abstract class StructureViewerBase extends GStructureViewer
         }
         forceClose = confirm == JvOptionPane.YES_OPTION;
       }
+    }
+    if (binding != null)
+    {
       binding.closeViewer(forceClose);
     }
     setAlignmentPanel(null);
@@ -1216,4 +1231,22 @@ public abstract class StructureViewerBase extends GStructureViewer
     dispose();
   }
 
+  @Override
+  public void showHelp_actionPerformed()
+  {
+    try
+    {
+      String url = getBinding().getHelpURL();
+      if (url != null)
+      {
+        BrowserLauncher.openURL(url);
+      }
+    } catch (IOException ex)
+    {
+      System.err
+              .println("Show " + getViewerName() + " failed with: "
+                      + ex.getMessage());
+    }
+  }
+
 }