X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FCrossRefAction.java;h=cc256967800d0e627677dc1f0b01bbfe2819a06f;hb=f4b2472c686ae3ca2e19147f468c761b3eef0529;hp=285e57498f124aa7c6de0e6d38a230a54a09ede2;hpb=a75627585f245e8fe0575ce92492c1ccde9b41d5;p=jalview.git diff --git a/src/jalview/gui/CrossRefAction.java b/src/jalview/gui/CrossRefAction.java index 285e574..cc25696 100644 --- a/src/jalview/gui/CrossRefAction.java +++ b/src/jalview/gui/CrossRefAction.java @@ -39,6 +39,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 +112,13 @@ 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,28 +178,41 @@ 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 */ - newFrame.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer() - .transferSettings(myFeatureStyling); - copyThis.alignPanel.getSeqPanel().seqCanvas.getFeatureRenderer() - .transferSettings(myFeatureStyling); + FeatureRendererModel fr1 = newFrame.alignPanel.getSeqPanel().seqCanvas + .getFeatureRenderer(); + fr1.transferSettings(myFeatureStyling); + fr1.findAllFeatures(true); + FeatureRendererModel fr2 = copyThis.alignPanel.getSeqPanel().seqCanvas + .getFeatureRenderer(); + fr2.transferSettings(myFeatureStyling); + fr2.findAllFeatures(true); /* * apply 'database source' feature configuration - * if any was found + * if any - first to the new splitframe view about to be displayed */ - // TODO is this the feature colouring for the original - // alignment or the fetched xrefs? either could be Ensembl + newFrame.getViewport().applyFeaturesStyle(featureColourScheme); copyThis.getViewport().applyFeaturesStyle(featureColourScheme); + /* + * and for JAL-3330 also to original alignFrame view(s) + * this currently trashes any original settings. + */ + for (AlignmentViewPanel origpanel: alignFrame.getAlignPanels()) { + origpanel.getAlignViewport() + .mergeFeaturesStyle(featureColourScheme); + } + SplitFrame sf = new SplitFrame(dna ? copyThis : newFrame, dna ? newFrame : copyThis); + newFrame.setVisible(true); copyThis.setVisible(true); String linkedTitle = MessageManager @@ -279,8 +300,8 @@ public class CrossRefAction implements Runnable */ String[] divisionsArray = ensemblDivisions .toArray(new String[ensemblDivisions.size()]); - DBRefEntry[] seqRefs = seq.getDBRefs(); - DBRefEntry[] directEnsemblRefs = DBRefUtils.selectRefs(seqRefs, + List seqRefs = seq.getDBRefs(); + List directEnsemblRefs = DBRefUtils.selectRefs(seqRefs, divisionsArray); if (directEnsemblRefs != null) { @@ -300,8 +321,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 dbrefs = dbref.getMap().getTo().getDBRefs(); + List indirectEnsemblRefs = DBRefUtils.selectRefs(dbrefs, divisionsArray); if (indirectEnsemblRefs != null) { @@ -352,12 +373,12 @@ public class CrossRefAction implements Runnable seq.getLength()); if (geneLoci != null) { - MapList map = geneLoci.getMap(); + MapList map = geneLoci.getMapping(); int mappedFromLength = MappingUtils.getLength(map.getFromRanges()); if (mappedFromLength == seq.getLength()) { seq.setGeneLoci(geneLoci.getSpeciesId(), geneLoci.getAssemblyId(), - geneLoci.getChromosomeId(), geneLoci.getMap()); + geneLoci.getChromosomeId(), map); retrievedLoci.put(dbref, geneLoci); return true; } @@ -370,12 +391,12 @@ public class CrossRefAction implements Runnable seq.getLength()); if (geneLoci != null) { - MapList map = geneLoci.getMap(); + MapList map = geneLoci.getMapping(); int mappedFromLength = MappingUtils.getLength(map.getFromRanges()); if (mappedFromLength == seq.getLength()) { seq.setGeneLoci(geneLoci.getSpeciesId(), geneLoci.getAssemblyId(), - geneLoci.getChromosomeId(), geneLoci.getMap()); + geneLoci.getChromosomeId(), map); retrievedLoci.put(dbref, geneLoci); return true; } @@ -433,7 +454,7 @@ public class CrossRefAction implements Runnable .setGapCharacter(alignFrame.viewport.getGapCharacter()); StructureSelectionManager ssm = StructureSelectionManager - .getStructureSelectionManager(Desktop.instance); + .getStructureSelectionManager(Desktop.getInstance()); /* * register any new mappings for sequence mouseover etc