X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FFeatureRenderer.java;h=c71a3ccc2088be6fbffcf52fc14d6fe15a8885e2;hb=9175e97621ea51c3e98145545b3957842126c09e;hp=21c401a447ee1d0cbf52a97dd56deedb57b65cc8;hpb=011c92dbea927aa8ae693ae75bf1b42a1c564aef;p=jalview.git diff --git a/src/jalview/appletgui/FeatureRenderer.java b/src/jalview/appletgui/FeatureRenderer.java index 21c401a..c71a3cc 100755 --- a/src/jalview/appletgui/FeatureRenderer.java +++ b/src/jalview/appletgui/FeatureRenderer.java @@ -45,7 +45,6 @@ public class FeatureRenderer String [] renderOrder; - boolean drawText = true; FontMetrics fm; int charOffset; @@ -85,11 +84,11 @@ public class FeatureRenderer return new Color( ((Integer)currentColour).intValue() ); } + /** * This is used by the Molecule Viewer to get the accurate colour * of the rendered sequence */ - boolean overview = false; int white = Color.white.getRGB(); @@ -152,12 +151,12 @@ public class FeatureRenderer return; - if(g!=null) - fm = g.getFontMetrics(); - if (av.featuresDisplayed == null || renderOrder==null) { findAllFeatures(); + if(av.featuresDisplayed.size()<1) + return; + sequenceFeatures = seq.getSequenceFeatures(); sfSize = sequenceFeatures.length; } @@ -171,11 +170,15 @@ public class FeatureRenderer { spos = lastSequence.findPosition(start); epos = lastSequence.findPosition(end); + if(g!=null) + fm = g.getFontMetrics(); } String type; for(int renderIndex=0; renderIndex= start) + if (sequenceFeatures[sfindex].begin <= start && + sequenceFeatures[sfindex].end >= start) { currentColour = av.featuresDisplayed.get(sequenceFeatures[sfindex]. type); @@ -234,9 +236,7 @@ public class FeatureRenderer getColour(sequenceFeatures[sfindex].type), start, end, y1, width, height); - } - } } @@ -285,6 +285,7 @@ public class FeatureRenderer void findAllFeatures() { av.featuresDisplayed = new Hashtable(); + Vector allfeatures = new Vector(); for (int i = 0; i < av.alignment.getHeight(); i++) { SequenceFeature [] features = av.alignment.getSequenceAt(i).getSequenceFeatures(); @@ -299,18 +300,19 @@ public class FeatureRenderer { av.featuresDisplayed.put(features[index].getType(), new Integer( getColour(features[index].getType()).getRGB()) ); + allfeatures.addElement(features[index].getType()); } index++; } } - renderOrder = new String[av.featuresDisplayed.size()]; - Enumeration en = av.featuresDisplayed.keys(); - int i = 0; + renderOrder = new String[allfeatures.size()]; + Enumeration en = allfeatures.elements(); + int i = allfeatures.size()-1; while(en.hasMoreElements()) { renderOrder[i] = en.nextElement().toString(); - i++; + i--; } } @@ -337,26 +339,26 @@ public class FeatureRenderer public void setFeaturePriority(Object [][] data) { - // The feature table will display high priority - // features at the top, but theses are the ones - // we need to render last, so invert the data - av.featuresDisplayed.clear(); + // The feature table will display high priority + // features at the top, but theses are the ones + // we need to render last, so invert the data + if(av.featuresDisplayed!=null) + av.featuresDisplayed.clear(); - renderOrder = new String[data.length]; + renderOrder = new String[data.length]; - if(data.length>0) - for(int i=0; i 0) + for (int i = 0; i < data.length; i++) + { + String type = data[i][0].toString(); + setColour(type, (Color) data[i][1]); + if ( ( (Boolean) data[i][2]).booleanValue()) + { + av.featuresDisplayed.put(type, new Integer(getColour(type).getRGB())); + } + renderOrder[data.length - i - 1] = type; + } } Hashtable featureColours = new Hashtable();