X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignViewport.java;h=22240216cd5c1c8878bd4cce898171908c0df76e;hb=fd1c6fd67abdd50ff0d77410d3da9be66be315ce;hp=c59d2014630bf36de168363024430bf127792a1a;hpb=febd250089c9672b66d2c7a5ed0c06e0763c2233;p=jalview.git diff --git a/src/jalview/gui/AlignViewport.java b/src/jalview/gui/AlignViewport.java index c59d201..2224021 100644 --- a/src/jalview/gui/AlignViewport.java +++ b/src/jalview/gui/AlignViewport.java @@ -44,6 +44,7 @@ import java.awt.Font; import java.awt.Rectangle; import java.util.ArrayList; import java.util.Hashtable; +import java.util.List; import java.util.Set; import java.util.Vector; @@ -54,6 +55,7 @@ import jalview.analysis.AlignmentUtils; import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder; import jalview.analysis.NJTree; import jalview.api.AlignViewportI; +import jalview.api.FeatureRenderer; import jalview.api.ViewStyleI; import jalview.bin.Cache; import jalview.commands.CommandI; @@ -83,7 +85,7 @@ import jalview.ws.params.AutoCalcSetting; * @version $Revision: 1.141 $ */ public class AlignViewport extends AlignmentViewport implements - SelectionSource, AlignViewportI, CommandListener + SelectionSource, CommandListener { Font font; @@ -95,6 +97,9 @@ public class AlignViewport extends AlignmentViewport implements private Rectangle explodedGeometry; + private FeatureRenderer featureRenderer; + + private boolean includeHiddenRegion = true; String viewName; /* @@ -656,35 +661,32 @@ public class AlignViewport extends AlignmentViewport implements /** * * @param pdbEntries - * @return a series of SequenceI arrays, one for each PDBEntry, listing which - * sequence in the alignment holds a reference to it + * @return an array of SequenceI arrays, one for each PDBEntry, listing which + * sequences in the alignment hold a reference to it */ public SequenceI[][] collateForPDB(PDBEntry[] pdbEntries) { - ArrayList seqvectors = new ArrayList(); + List seqvectors = new ArrayList(); for (PDBEntry pdb : pdbEntries) { - ArrayList seqs = new ArrayList(); - for (int i = 0; i < alignment.getHeight(); i++) + List seqs = new ArrayList(); + for (SequenceI sq : alignment.getSequences()) { - Vector pdbs = alignment.getSequenceAt(i).getDatasetSequence() - .getPDBId(); + Vector pdbs = sq + .getDatasetSequence().getPDBId(); if (pdbs == null) { continue; } - SequenceI sq; - for (int p = 0; p < pdbs.size(); p++) + for (PDBEntry p1 : pdbs) { - PDBEntry p1 = (PDBEntry) pdbs.elementAt(p); if (p1.getId().equals(pdb.getId())) { - if (!seqs.contains(sq = alignment.getSequenceAt(i))) + if (!seqs.contains(sq)) { seqs.add(sq); + continue; } - - continue; } } } @@ -857,14 +859,6 @@ public class AlignViewport extends AlignmentViewport implements final boolean openInNewWindow = (response == 2); /* - * Create the AlignFrame first (which creates the new alignment's datasets), - * before attempting sequence mapping. - */ - AlignFrame newAlignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, - AlignFrame.DEFAULT_HEIGHT); - newAlignFrame.setTitle(title); - - /* * Identify protein and dna alignments. Make a copy of this one if opening * in a new split pane. */ @@ -873,6 +867,23 @@ public class AlignViewport extends AlignmentViewport implements AlignmentI protein = al.isNucleotide() ? thisAlignment : al; final AlignmentI cdna = al.isNucleotide() ? al : thisAlignment; + /* + * Map sequences. At least one should get mapped as we have already passed + * the test for 'mappability'. Any mappings made will be added to the + * protein alignment. Note creating dataset sequences on the new alignment + * is a pre-requisite for building mappings. + */ + al.setDataset(null); + AlignmentUtils.mapProteinToCdna(protein, cdna); + + /* + * Create the AlignFrame for the added alignment. Note this will include the + * cDNA consensus annotation if it is protein (because the alignment holds + * mappings to nucleotide) + */ + AlignFrame newAlignFrame = new AlignFrame(al, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); + newAlignFrame.setTitle(title); newAlignFrame.statusBar.setText(MessageManager.formatMessage( "label.successfully_loaded_file", new Object[] { title })); @@ -891,13 +902,6 @@ public class AlignViewport extends AlignmentViewport implements AlignFrame.DEFAULT_HEIGHT); } - /* - * Map sequences. At least one should get mapped as we have already passed - * the test for 'mappability'. Any mappings made will be added to the - * protein alignment. - */ - AlignmentUtils.mapProteinToCdna(protein, cdna); - try { newAlignFrame.setMaximum(jalview.bin.Cache.getDefault( @@ -939,7 +943,9 @@ public class AlignViewport extends AlignmentViewport implements AlignmentI complement, Set mappings) { /* - * Open in split pane. DNA sequence above, protein below. + * Make a new frame with a copy of the alignment we are adding to. If this + * is protein, the new frame will have a cDNA consensus annotation row + * added. */ AlignFrame copyMe = new AlignFrame(complement, AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT); @@ -957,6 +963,10 @@ public class AlignViewport extends AlignmentViewport implements proteinFrame.setVisible(true); String linkedTitle = MessageManager .getString("label.linked_view_title"); + + /* + * Open in split pane. DNA sequence above, protein below. + */ JInternalFrame splitFrame = new SplitFrame(cdnaFrame, proteinFrame); Desktop.addInternalFrame(splitFrame, linkedTitle, -1, -1); @@ -1030,4 +1040,26 @@ public class AlignViewport extends AlignmentViewport implements complementPanel.scrollToCentre(sr, seqOffset); } } + + @Override + public FeatureRenderer getFeatureRenderer() + { + return featureRenderer; + } + + @Override + public void setFeatureRenderer(FeatureRenderer featureRenderer) + { + this.featureRenderer = featureRenderer; + } + + public boolean isIncludeHiddenRegion() + { + return includeHiddenRegion; + } + + public void setIncludeHiddenRegion(boolean includeHiddenRegion) + { + this.includeHiddenRegion = includeHiddenRegion; + } }