JAL-4034 Fix #2 show an icon and a button to press to initiate search
[jalview.git] / src / jalview / gui / CrossRefAction.java
index 673bcc0..c15cf2d 100644 (file)
@@ -25,6 +25,7 @@ import jalview.analysis.CrossRef;
 import jalview.api.AlignmentViewPanel;
 import jalview.api.FeatureSettingsModelI;
 import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.datamodel.Alignment;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.DBRefEntry;
@@ -39,6 +40,7 @@ import jalview.util.DBRefUtils;
 import jalview.util.MapList;
 import jalview.util.MappingUtils;
 import jalview.util.MessageManager;
+import jalview.viewmodel.seqfeatures.FeatureRendererModel;
 import jalview.ws.SequenceFetcher;
 
 import java.util.ArrayList;
@@ -111,6 +113,14 @@ public class CrossRefAction implements Runnable
       FeatureSettingsModelI featureColourScheme = new SequenceFetcher()
               .getFeatureColourScheme(source);
 
+      if (dna && AlignmentUtils.looksLikeEnsembl(alignment))
+      {
+        // override default featureColourScheme so products have Ensembl variant
+        // colours
+        featureColourScheme = new SequenceFetcher()
+                .getFeatureColourScheme(DBRefSource.ENSEMBL);
+      }
+
       AlignmentI xrefsAlignment = makeCrossReferencesAlignment(dataset,
               xrefs);
       if (!dna)
@@ -170,17 +180,17 @@ public class CrossRefAction implements Runnable
               .isShowSequenceFeatures();
       newFrame.setShowSeqFeatures(showSequenceFeatures);
       copyThis.setShowSeqFeatures(showSequenceFeatures);
-      FeatureRenderer myFeatureStyling = alignFrame.alignPanel
+      FeatureRendererModel myFeatureStyling = alignFrame.alignPanel
               .getSeqPanel().seqCanvas.getFeatureRenderer();
 
       /*
        * copy feature rendering settings to split frame
        */
-      FeatureRenderer fr1 = newFrame.alignPanel.getSeqPanel().seqCanvas
+      FeatureRendererModel fr1 = newFrame.alignPanel.getSeqPanel().seqCanvas
               .getFeatureRenderer();
       fr1.transferSettings(myFeatureStyling);
       fr1.findAllFeatures(true);
-      FeatureRenderer fr2 = copyThis.alignPanel.getSeqPanel().seqCanvas
+      FeatureRendererModel fr2 = copyThis.alignPanel.getSeqPanel().seqCanvas
               .getFeatureRenderer();
       fr2.transferSettings(myFeatureStyling);
       fr2.findAllFeatures(true);
@@ -197,7 +207,8 @@ public class CrossRefAction implements Runnable
        * and for JAL-3330 also to original alignFrame view(s)
        * this currently trashes any original settings.
        */
-      for (AlignmentViewPanel origpanel: alignFrame.getAlignPanels()) {
+      for (AlignmentViewPanel origpanel : alignFrame.getAlignPanels())
+      {
         origpanel.getAlignViewport()
                 .mergeFeaturesStyle(featureColourScheme);
       }
@@ -221,7 +232,7 @@ public class CrossRefAction implements Runnable
       new OOMWarning("whilst fetching crossreferences", e);
     } catch (Throwable e)
     {
-      Cache.log.error("Error when finding crossreferences", e);
+      Console.error("Error when finding crossreferences", e);
     } finally
     {
       alignFrame.setProgressBar(MessageManager.formatMessage(
@@ -284,16 +295,16 @@ public class CrossRefAction implements Runnable
     {
       return;
     }
-    
+
     Set<String> ensemblDivisions = new EnsemblInfo().getDivisions();
-    
+
     /*
      * first look for direct dbrefs from sequence to Ensembl
      */
     String[] divisionsArray = ensemblDivisions
             .toArray(new String[ensemblDivisions.size()]);
-    DBRefEntry[] seqRefs = seq.getDBRefs();
-    DBRefEntry[] directEnsemblRefs = DBRefUtils.selectRefs(seqRefs,
+    List<DBRefEntry> seqRefs = seq.getDBRefs();
+    List<DBRefEntry> directEnsemblRefs = DBRefUtils.selectRefs(seqRefs,
             divisionsArray);
     if (directEnsemblRefs != null)
     {
@@ -313,8 +324,8 @@ public class CrossRefAction implements Runnable
     {
       if (dbref.getMap() != null && dbref.getMap().getTo() != null)
       {
-        DBRefEntry[] dbrefs = dbref.getMap().getTo().getDBRefs();
-        DBRefEntry[] indirectEnsemblRefs = DBRefUtils.selectRefs(dbrefs,
+        List<DBRefEntry> dbrefs = dbref.getMap().getTo().getDBRefs();
+        List<DBRefEntry> indirectEnsemblRefs = DBRefUtils.selectRefs(dbrefs,
                 divisionsArray);
         if (indirectEnsemblRefs != null)
         {
@@ -442,8 +453,7 @@ public class CrossRefAction implements Runnable
       copyAlignment = AlignmentUtils.makeCopyAlignment(sel,
               xrefs.getSequencesArray(), dataset);
     }
-    copyAlignment
-            .setGapCharacter(alignFrame.viewport.getGapCharacter());
+    copyAlignment.setGapCharacter(alignFrame.viewport.getGapCharacter());
 
     StructureSelectionManager ssm = StructureSelectionManager
             .getStructureSelectionManager(Desktop.instance);
@@ -456,8 +466,7 @@ public class CrossRefAction implements Runnable
 
     if (copyAlignment.getHeight() <= 0)
     {
-      System.err.println(
-              "No Sequences generated for xRef type " + source);
+      System.err.println("No Sequences generated for xRef type " + source);
       return null;
     }