2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
21 package jalview.appletgui;
23 import jalview.schemes.AnnotationColourGradient;
24 import jalview.util.MessageManager;
26 import java.awt.Button;
27 import java.awt.Checkbox;
28 import java.awt.Choice;
29 import java.awt.Frame;
30 import java.awt.Panel;
31 import java.awt.Scrollbar;
32 import java.awt.TextField;
33 import java.awt.event.ActionEvent;
34 import java.util.Vector;
36 @SuppressWarnings("serial")
37 public abstract class AnnotationRowFilter extends Panel
39 protected AlignViewport av;
41 protected AlignmentPanel ap;
43 protected int[] annmap;
45 protected boolean enableSeqAss = false;
47 private jalview.datamodel.AlignmentAnnotation currentAnnotation;
49 protected boolean adjusting = false;
51 protected Checkbox currentColours = new Checkbox();
53 protected Panel minColour = new Panel();
55 protected Panel maxColour = new Panel();
57 protected Checkbox seqAssociated = new Checkbox();
59 protected Checkbox thresholdIsMin = new Checkbox();
61 protected Scrollbar slider = new Scrollbar(Scrollbar.HORIZONTAL);
63 protected TextField thresholdValue = new TextField(20);
65 protected Frame frame;
67 protected Button ok = new Button();
69 protected Button cancel = new Button();
72 * enabled if the user is dragging the slider - try to keep updates to a
75 protected boolean sliderDragging = false;
77 public AnnotationRowFilter(AlignViewport av, final AlignmentPanel ap)
83 public AnnotationRowFilter()
88 protected int getSelectedThresholdItem(int indexValue)
90 int selectedThresholdItem = -1;
93 selectedThresholdItem = AnnotationColourGradient.ABOVE_THRESHOLD;
95 else if (indexValue == 2)
97 selectedThresholdItem = AnnotationColourGradient.BELOW_THRESHOLD;
99 return selectedThresholdItem;
102 public void modelChanged()
104 seqAssociated.setEnabled(enableSeqAss);
107 public void ok_actionPerformed(ActionEvent e)
110 frame.setVisible(false);
113 public void cancel_actionPerformed(ActionEvent e)
116 ap.paintAlignment(true);
117 frame.setVisible(false);
120 public void thresholdCheck_actionPerformed(ActionEvent e)
125 public void annotations_actionPerformed(ActionEvent e)
130 public void threshold_actionPerformed(ActionEvent e)
135 public void thresholdValue_actionPerformed(ActionEvent e)
139 float f = Float.parseFloat(thresholdValue.getText());
140 slider.setValue((int) (f * 1000));
142 } catch (NumberFormatException ex)
147 protected void populateThresholdComboBox(Choice threshold)
149 threshold.addItem(MessageManager
150 .getString("label.threshold_feature_no_threshold"));
151 threshold.addItem(MessageManager
152 .getString("label.threshold_feature_above_threshold"));
153 threshold.addItem(MessageManager
154 .getString("label.threshold_feature_below_threshold"));
157 public jalview.datamodel.AlignmentAnnotation getCurrentAnnotation()
159 return currentAnnotation;
162 public void setCurrentAnnotation(
163 jalview.datamodel.AlignmentAnnotation currentAnnotation)
165 this.currentAnnotation = currentAnnotation;
168 public abstract void valueChanged(boolean updateAllAnnotation);
170 public abstract void updateView();
172 public abstract void reset();