import java.awt.Scrollbar;
import java.awt.TextField;
import java.awt.event.ActionEvent;
-import java.util.Vector;
@SuppressWarnings("serial")
public abstract class AnnotationRowFilter extends Panel
protected Scrollbar slider = new Scrollbar(Scrollbar.HORIZONTAL);
+ protected Checkbox percentThreshold = new Checkbox();
+
protected TextField thresholdValue = new TextField(20);
protected Frame frame;
}
- public Vector getAnnotationItems(boolean isSeqAssociated)
- {
- Vector list = new Vector();
- int index = 1;
- int[] anmap = new int[av.getAlignment().getAlignmentAnnotation().length];
- for (int i = 0; i < av.getAlignment().getAlignmentAnnotation().length; i++)
- {
- if (av.getAlignment().getAlignmentAnnotation()[i].sequenceRef == null)
- {
- if (isSeqAssociated)
- {
- continue;
- }
- }
- else
- {
- enableSeqAss = true;
- }
- String label = av.getAlignment().getAlignmentAnnotation()[i].label;
- if (!list.contains(label))
- {
- anmap[list.size()] = i;
- list.add(label);
-
- }
- else
- {
- if (!isSeqAssociated)
- {
- anmap[list.size()] = i;
- list.add(label + "_" + (index++));
- }
- }
- }
- this.annmap = new int[list.size()];
- System.arraycopy(anmap, 0, this.annmap, 0, this.annmap.length);
- return list;
- }
-
protected int getSelectedThresholdItem(int indexValue)
{
int selectedThresholdItem = -1;
public void cancel_actionPerformed(ActionEvent e)
{
reset();
- ap.paintAlignment(true);
+ ap.paintAlignment(true, true);
frame.setVisible(false);
}
updateView();
}
+ /**
+ * update the text field from the threshold slider. preserves state of
+ * 'adjusting' so safe to call in init.
+ */
+ protected void setThresholdValueText()
+ {
+ boolean oldadj = adjusting;
+ adjusting = true;
+ if (percentThreshold.getState())
+ {
+ double scl = slider.getMaximum() - slider.getMinimum();
+ scl = (slider.getValue() - slider.getMinimum()) / scl;
+ thresholdValue.setText(100f * scl + "");
+ }
+ else
+ {
+ thresholdValue.setText((slider.getValue() / 1000f) + "");
+ }
+ thresholdValue.setCaretPosition(0);
+ adjusting = oldadj;
+ }
+
public void thresholdValue_actionPerformed(ActionEvent e)
{
try
{
float f = Float.parseFloat(thresholdValue.getText());
- slider.setValue((int) (f * 1000));
- updateView();
+ if (percentThreshold.getState())
+ {
+ int pos = slider.getMinimum()
+ + (int) ((slider.getMaximum() - slider.getMinimum()) * f
+ / 100f);
+ slider.setValue(pos);
+ }
+ else
+ {
+ slider.setValue((int) (f * 1000));
+ }
+ valueChanged(false);
} catch (NumberFormatException ex)
{
}
}
+ protected void percentageValue_actionPerformed()
+ {
+ setThresholdValueText();
+ }
+
protected void populateThresholdComboBox(Choice threshold)
{
threshold.addItem(MessageManager