- public boolean buildFeatureHash() {
- boolean alignmentHasFeatures=false;
- if (featureGroups==null)
- {
- alignmentHasFeatures = buildGroupHash();
- }
- if (!alignmentHasFeatures)
- return false;
- Hashtable fdisp = av.featuresDisplayed;
- Vector allFeatures = new Vector();
- SequenceFeature[] tmpfeatures;
- String group;
- for (int i = 0; i < av.alignment.getHeight(); i++)
- {
- if (av.alignment.getSequenceAt(i).getSequenceFeatures() == null)
- {
- continue;
- }
-
- alignmentHasFeatures = true;
-
- tmpfeatures = av.alignment.getSequenceAt(i).getSequenceFeatures();
- int index = 0;
- while (index < tmpfeatures.length)
- {
- boolean visible = true;
- if (tmpfeatures[index].getFeatureGroup() != null)
- {
- group = tmpfeatures[index].featureGroup;
- if (featureGroups.containsKey(group))
- {
- visible = ( (Boolean) featureGroups.get(group)).booleanValue();
- }
- }
-
- if (visible && !allFeatures.contains(tmpfeatures[index].getType()))
- {
- allFeatures.addElement(tmpfeatures[index].getType());
- }
- index++;
- }
- }
- if (allFeatures.size()>0)
- {
- String[] neworder = new String[allFeatures.size()];
- int p=neworder.length-1;
- for (int i=renderOrder.length-1; i>=0; i--)
- {
- if (allFeatures.contains(renderOrder[i]))
- {
- neworder[p--] = renderOrder[i];
- allFeatures.removeElement(renderOrder[i]);
- } else {
- av.featuresDisplayed.remove(renderOrder[i]);
- }
- }
- for (int i=allFeatures.size()-1; i>0; i++)
- {
- Object e = allFeatures.elementAt(i);
- if (e!=null)
- {
- neworder[p--] = (String) e;
- av.featuresDisplayed.put(e, getColour((String)e));
- }
- }
- renderOrder = neworder;
- return true;
- }
-
- return alignmentHasFeatures;
- }
-}
-
-class TransparencySetter
-{
- void setTransparency(Graphics g, float value)