X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FFeatureRenderer.java;h=39249cc28cf17f2df670e575295c98f3e0527833;hb=a45774ee31d9f35d4eff46d54d7deab719afb092;hp=50bb6653530f3b9386109de967d60c4b70787d32;hpb=d423f22792e47dbc800ae220a58677f988971d06;p=jalview.git diff --git a/src/jalview/appletgui/FeatureRenderer.java b/src/jalview/appletgui/FeatureRenderer.java index 50bb665..39249cc 100755 --- a/src/jalview/appletgui/FeatureRenderer.java +++ b/src/jalview/appletgui/FeatureRenderer.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.5) - * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle * * This file is part of Jalview. * @@ -34,7 +34,7 @@ import jalview.schemes.GraduatedColor; * @author $author$ * @version $Revision$ */ -public class FeatureRenderer +public class FeatureRenderer implements jalview.api.FeatureRenderer { AlignViewport av; @@ -84,6 +84,23 @@ public class FeatureRenderer featureGroups = fr.featureGroups; featureColours = fr.featureColours; transparency = fr.transparency; + if (av!=null && fr.av!=null && fr.av!=av) + { + if (fr.av.featuresDisplayed!=null) + { + if (av.featuresDisplayed==null) + { + av.featuresDisplayed = new Hashtable(); + } else { + av.featuresDisplayed.clear(); + } + Enumeration en=fr.av.featuresDisplayed.keys(); + while (en.hasMoreElements()) + { + av.featuresDisplayed.put(en.nextElement(), Boolean.TRUE); + } + } + } } static String lastFeatureAdded; @@ -661,16 +678,16 @@ public class FeatureRenderer else if (sequenceFeatures[sfindex].type.equals("disulfide bond")) { - renderFeature(g, seq, seq - .findIndex(sequenceFeatures[sfindex].begin) - 1, seq - .findIndex(sequenceFeatures[sfindex].begin) - 1, + renderFeature(g, seq, + seq.findIndex(sequenceFeatures[sfindex].begin) - 1, + seq.findIndex(sequenceFeatures[sfindex].begin) - 1, getColour(sequenceFeatures[sfindex]) // new Color(((Integer) av.featuresDisplayed // .get(sequenceFeatures[sfindex].type)).intValue()) , start, end, y1); - renderFeature(g, seq, seq - .findIndex(sequenceFeatures[sfindex].end) - 1, seq - .findIndex(sequenceFeatures[sfindex].end) - 1, + renderFeature(g, seq, + seq.findIndex(sequenceFeatures[sfindex].end) - 1, + seq.findIndex(sequenceFeatures[sfindex].end) - 1, getColour(sequenceFeatures[sfindex]) // new Color(((Integer) av.featuresDisplayed // .get(sequenceFeatures[sfindex].type)).intValue()) @@ -681,9 +698,9 @@ public class FeatureRenderer { if (showFeature(sequenceFeatures[sfindex])) { - renderFeature(g, seq, seq - .findIndex(sequenceFeatures[sfindex].begin) - 1, seq - .findIndex(sequenceFeatures[sfindex].end) - 1, + renderFeature(g, seq, + seq.findIndex(sequenceFeatures[sfindex].begin) - 1, + seq.findIndex(sequenceFeatures[sfindex].end) - 1, getColour(sequenceFeatures[sfindex]), start, end, y1); } } @@ -748,6 +765,20 @@ public class FeatureRenderer Hashtable minmax = null; + /** + * Called when alignment in associated view has new/modified features to + * discover and display. + * + */ + public void featuresAdded() + { + lastSeq = null; + findAllFeatures(); + } + + /** + * find all features on the alignment + */ void findAllFeatures() { jalview.schemes.UserColourScheme ucs = new jalview.schemes.UserColourScheme(); @@ -778,8 +809,8 @@ public class FeatureRenderer { if (getColour(features[index].getType()) == null) { - featureColours.put(features[index].getType(), ucs - .createColourFromName(features[index].getType())); + featureColours.put(features[index].getType(), + ucs.createColourFromName(features[index].getType())); } av.featuresDisplayed.put(features[index].getType(), new Integer(