// A higher level for grouping features of a
// particular type
- Hashtable featureGroups = null;
+ Hashtable featureGroups = new Hashtable();
// This is actually an Integer held in the hashtable,
// Retrieved using the key feature type
}
}
- if (sequenceFeatures == null)
+ if (sequenceFeatures == null || sfSize==0)
{
return initialCol;
}
SequenceFeature[] sequenceFeatures;
int sfSize, sfindex, spos, epos;
- public void drawSequence(Graphics g, SequenceI seq,
+ synchronized public void drawSequence(Graphics g, SequenceI seq,
int start, int end, int y1)
{
+
if (seq.getDatasetSequence().getSequenceFeatures() == null
|| seq.getDatasetSequence().getSequenceFeatures().length == 0)
{
}
sequenceFeatures = seq.getDatasetSequence().getSequenceFeatures();
- sfSize = sequenceFeatures.length;
}
if (lastSeq == null || seq != lastSeq
{
lastSeq = seq;
sequenceFeatures = seq.getDatasetSequence().getSequenceFeatures();
- sfSize = sequenceFeatures.length;
}
if (transparency != 1 && g != null)
epos = lastSeq.findPosition(end);
}
+ sfSize = sequenceFeatures.length;
String type;
for (int renderIndex = 0; renderIndex < renderOrder.length; renderIndex++)
{
// current feature to render
for (sfindex = 0; sfindex < sfSize; sfindex++)
{
- if (sequenceFeatures.length <= sfindex)
- {
- continue;
- }
if (!sequenceFeatures[sfindex].type.equals(type))
{
continue;
* them. Then fires a PropertyChangeEvent on the changeSupport object.
*
*/
- synchronized void findAllFeatures()
+ void findAllFeatures()
{
- findAllFeatures(true); // add all new features as visible
- if (!firing) {
- firing=true;
- changeSupport.firePropertyChange("changeSupport",null,null);
- firing=false;
+ synchronized (firing)
+ {
+ if (firing.equals(Boolean.FALSE)) {
+ firing=Boolean.TRUE;
+ findAllFeatures(true); // add all new features as visible
+ changeSupport.firePropertyChange("changeSupport",null,null);
+ firing=Boolean.FALSE;
+ }
}
}
/**
{
if (!av.featuresDisplayed.containsKey(features[index].getType()))
{
+
if(featureGroups.containsKey(features[index].getType()))
{
boolean visible = ( (Boolean) featureGroups.get(
if(!visible)
{
- System.out.println(features[index].featureGroup
- +" not visible");
index++;
continue;
}
updateRenderOrder(allfeatures);
findingFeatures = false;
}
- protected boolean firing=false;
+ protected Boolean firing=Boolean.FALSE;
/**
* replaces the current renderOrder with the unordered features in allfeatures.
* The ordering of any types in both renderOrder and allfeatures is preserved,