import java.awt.event.TextEvent;
import java.awt.event.TextListener;
import java.util.Hashtable;
+import java.util.List;
/**
* DOCUMENT ME!
* @author $author$
* @version $Revision$
*/
-public class FeatureRenderer extends
- jalview.renderer.seqfeatures.FeatureRenderer
+public class FeatureRenderer
+ extends jalview.renderer.seqfeatures.FeatureRenderer
{
/*
* creating a new feature defaults to the type and group as
* @param ap
* @return
*/
- boolean amendFeatures(final SequenceI[] sequences,
- final SequenceFeature[] features, boolean create,
+ boolean amendFeatures(final List<SequenceI> sequences,
+ final List<SequenceFeature> features, boolean create,
final AlignmentPanel ap)
{
final Panel bigPanel = new Panel(new BorderLayout());
// /////////////////////////////////////
// /MULTIPLE FEATURES AT SELECTED RESIDUE
- if (!create && features.length > 1)
+ if (!create && features.size() > 1)
{
panel = new Panel(new GridLayout(4, 1));
tmp = new Panel();
tmp.add(new Label("Select Feature: "));
overlaps = new Choice();
- for (int i = 0; i < features.length; i++)
+ for (SequenceFeature sf : features)
{
- String item = features[i].getType() + "/" + features[i].getBegin()
- + "-" + features[i].getEnd();
-
- if (features[i].getFeatureGroup() != null)
+ String item = sf.getType() + "/" + sf.getBegin() + "-"
+ + sf.getEnd();
+ if (sf.getFeatureGroup() != null)
{
- item += " (" + features[i].getFeatureGroup() + ")";
+ item += " (" + sf.getFeatureGroup() + ")";
}
-
overlaps.addItem(item);
}
if (index != -1)
{
featureIndex = index;
- name.setText(features[index].getType());
- description.setText(features[index].getDescription());
- group.setText(features[index].getFeatureGroup());
- start.setText(features[index].getBegin() + "");
- end.setText(features[index].getEnd() + "");
+ SequenceFeature sf = features.get(index);
+ name.setText(sf.getType());
+ description.setText(sf.getDescription());
+ group.setText(sf.getFeatureGroup());
+ start.setText(sf.getBegin() + "");
+ end.setText(sf.getEnd() + "");
SearchResultsI highlight = new SearchResults();
- highlight.addResult(sequences[0], features[index].getBegin(),
- features[index].getEnd());
+ highlight.addResult(sequences.get(0), sf.getBegin(),
+ sf.getEnd());
ap.seqPanel.seqCanvas.highlightSearchResults(highlight);
tmp = new Panel();
panel.add(tmp);
- tmp.add(new Label(MessageManager.getString("label.name:"), Label.RIGHT));
+ tmp.add(new Label(MessageManager.getString("label.name:"),
+ Label.RIGHT));
tmp.add(name);
tmp = new Panel();
panel.add(tmp);
- tmp.add(new Label(MessageManager.getString("label.group:"), Label.RIGHT));
+ tmp.add(new Label(MessageManager.getString("label.group:"),
+ Label.RIGHT));
tmp.add(group);
tmp = new Panel();
panel.add(tmp);
- tmp.add(new Label(MessageManager.getString("label.colour"), Label.RIGHT));
+ tmp.add(new Label(MessageManager.getString("label.colour"),
+ Label.RIGHT));
tmp.add(colourPanel);
bigPanel.add(panel, BorderLayout.NORTH);
* if feature type has not been supplied by the caller
* (e.g. for Amend, or create features from Find)
*/
- boolean useLastDefaults = features[0].getType() == null;
- String featureType = useLastDefaults ? lastFeatureAdded : features[0]
- .getType();
+ SequenceFeature firstFeature = features.get(0);
+ boolean useLastDefaults = firstFeature.getType() == null;
+ String featureType = useLastDefaults ? lastFeatureAdded
+ : firstFeature.getType();
String featureGroup = useLastDefaults ? lastFeatureGroupAdded
- : features[0].getFeatureGroup();
+ : firstFeature.getFeatureGroup();
- String title = create ? MessageManager
- .getString("label.create_new_sequence_features")
+ String title = create
+ ? MessageManager.getString("label.create_new_sequence_features")
: MessageManager.formatMessage("label.amend_delete_features",
- new String[] { sequences[0].getName() });
+ new String[]
+ { sequences.get(0).getName() });
final JVDialog dialog = new JVDialog(ap.alignFrame, title, true, 385,
240);
});
}
- start.setText(features[0].getBegin() + "");
- end.setText(features[0].getEnd() + "");
- description.setText(features[0].getDescription());
+ start.setText(firstFeature.getBegin() + "");
+ end.setText(firstFeature.getEnd() + "");
+ description.setText(firstFeature.getDescription());
// lookup (or generate) the feature colour
FeatureColourI fcol = getFeatureStyle(name.getText());
// simply display the feature color in a box
if (!create)
{
- SequenceFeature sf = features[featureIndex];
+ SequenceFeature sf = features.get(featureIndex);
if (dialog.accept)
{
if (!colourPanel.isGcol)
{
// update colour - otherwise its already done.
- setColour(sf.type, new FeatureColour(colourPanel.getBackground()));
+ setColour(enteredType,
+ new FeatureColour(colourPanel.getBackground()));
}
int newBegin = sf.begin;
int newEnd = sf.end;
newEnd = Integer.parseInt(end.getText());
} catch (NumberFormatException ex)
{
- //
+ //
}
/*
* replace the feature by deleting it and adding a new one
* (to ensure integrity of SequenceFeatures data store)
*/
- sequences[0].deleteFeature(sf);
- SequenceFeature newSf = new SequenceFeature(sf, newBegin, newEnd,
- enteredGroup);
+ sequences.get(0).deleteFeature(sf);
+ SequenceFeature newSf = new SequenceFeature(sf, enteredType,
+ newBegin, newEnd, enteredGroup, sf.getScore());
newSf.setDescription(enteredDesc);
ffile.parseDescriptionHTML(newSf, false);
// amend features dialog only updates one sequence at a time
- sequences[0].addSequenceFeature(newSf);
- boolean typeOrGroupChanged = (!featureType.equals(sf.type) || !featureGroup
- .equals(sf.featureGroup));
+ sequences.get(0).addSequenceFeature(newSf);
+ boolean typeOrGroupChanged = (!featureType.equals(newSf.getType())
+ || !featureGroup.equals(newSf.getFeatureGroup()));
ffile.parseDescriptionHTML(sf, false);
if (typeOrGroupChanged)
}
if (deleteFeature)
{
- sequences[0].deleteFeature(sf);
+ sequences.get(0).deleteFeature(sf);
// ensure Feature Settings reflects removal of feature / group
featuresAdded();
}
*/
if (dialog.accept && name.getText().length() > 0)
{
- for (int i = 0; i < sequences.length; i++)
+ for (int i = 0; i < sequences.size(); i++)
{
- SequenceFeature sf = features[i];
+ SequenceFeature sf = features.get(i);
SequenceFeature sf2 = new SequenceFeature(enteredType,
- enteredDesc, sf.getBegin(), sf.getEnd(), Float.NaN,
- enteredGroup);
+ enteredDesc, sf.getBegin(), sf.getEnd(), enteredGroup);
ffile.parseDescriptionHTML(sf2, false);
- sequences[i].addSequenceFeature(sf2);
+ sequences.get(i).addSequenceFeature(sf2);
}
Color newColour = colourPanel.getBackground();
}
// findAllFeatures();
- ap.paintAlignment(true);
+ ap.paintAlignment(true, true);
return true;
}