JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / src / jalview / appletgui / AnnotationRowFilter.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
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.
11  *  
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.
16  * 
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.
20  */
21 package jalview.appletgui;
22
23 import jalview.schemes.AnnotationColourGradient;
24 import jalview.util.MessageManager;
25
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;
35
36 @SuppressWarnings("serial")
37 public abstract class AnnotationRowFilter extends Panel
38 {
39   protected AlignViewport av;
40
41   protected AlignmentPanel ap;
42
43   protected int[] annmap;
44
45   protected boolean enableSeqAss = false;
46
47   private jalview.datamodel.AlignmentAnnotation currentAnnotation;
48
49   protected boolean adjusting = false;
50
51   protected Checkbox currentColours = new Checkbox();
52
53   protected Panel minColour = new Panel();
54
55   protected Panel maxColour = new Panel();
56
57   protected Checkbox seqAssociated = new Checkbox();
58
59   protected Checkbox thresholdIsMin = new Checkbox();
60
61   protected Scrollbar slider = new Scrollbar(Scrollbar.HORIZONTAL);
62
63   protected TextField thresholdValue = new TextField(20);
64
65   protected Frame frame;
66
67   protected Button ok = new Button();
68
69   protected Button cancel = new Button();
70
71   /**
72    * enabled if the user is dragging the slider - try to keep updates to a
73    * minimun
74    */
75   protected boolean sliderDragging = false;
76
77   public AnnotationRowFilter(AlignViewport av, final AlignmentPanel ap)
78   {
79     this.av = av;
80     this.ap = ap;
81   }
82
83   public AnnotationRowFilter()
84   {
85
86   }
87
88   protected int getSelectedThresholdItem(int indexValue)
89   {
90     int selectedThresholdItem = -1;
91     if (indexValue == 1)
92     {
93       selectedThresholdItem = AnnotationColourGradient.ABOVE_THRESHOLD;
94     }
95     else if (indexValue == 2)
96     {
97       selectedThresholdItem = AnnotationColourGradient.BELOW_THRESHOLD;
98     }
99     return selectedThresholdItem;
100   }
101
102   public void modelChanged()
103   {
104     seqAssociated.setEnabled(enableSeqAss);
105   }
106
107   public void ok_actionPerformed(ActionEvent e)
108   {
109     updateView();
110     frame.setVisible(false);
111   }
112
113   public void cancel_actionPerformed(ActionEvent e)
114   {
115     reset();
116     ap.paintAlignment(true);
117     frame.setVisible(false);
118   }
119
120   public void thresholdCheck_actionPerformed(ActionEvent e)
121   {
122     updateView();
123   }
124
125   public void annotations_actionPerformed(ActionEvent e)
126   {
127     updateView();
128   }
129
130   public void threshold_actionPerformed(ActionEvent e)
131   {
132     updateView();
133   }
134
135   public void thresholdValue_actionPerformed(ActionEvent e)
136   {
137     try
138     {
139       float f = Float.parseFloat(thresholdValue.getText());
140       slider.setValue((int) (f * 1000));
141       updateView();
142     } catch (NumberFormatException ex)
143     {
144     }
145   }
146
147   protected void populateThresholdComboBox(Choice threshold)
148   {
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"));
155   }
156
157   public jalview.datamodel.AlignmentAnnotation getCurrentAnnotation()
158   {
159     return currentAnnotation;
160   }
161
162   public void setCurrentAnnotation(
163           jalview.datamodel.AlignmentAnnotation currentAnnotation)
164   {
165     this.currentAnnotation = currentAnnotation;
166   }
167
168   public abstract void valueChanged(boolean updateAllAnnotation);
169
170   public abstract void updateView();
171
172   public abstract void reset();
173 }