735a5790459e23fe66ca837be501531211ec7378
[jalview.git] / src / jalview / appletgui / RedundancyPanel.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 \r
20 package jalview.appletgui;\r
21 \r
22 import jalview.jbappletgui.*;\r
23 import jalview.datamodel.*;\r
24 import java.awt.event.*;\r
25 import java.util.*;\r
26 \r
27 public class RedundancyPanel extends GSliderPanel\r
28 {\r
29   AlignmentPanel ap;\r
30 \r
31   SequenceI[] oldAlignment;\r
32 \r
33 \r
34   public RedundancyPanel(AlignmentPanel ap)\r
35   {\r
36     this.ap = ap;\r
37 \r
38     label.setText("Enter the redundancy threshold");\r
39 \r
40     slider.addAdjustmentListener(new AdjustmentListener()\r
41     {\r
42       public void adjustmentValueChanged(AdjustmentEvent evt)\r
43       {\r
44         valueField.setText( slider.getValue()+"" );\r
45       }\r
46     });\r
47 \r
48     slider.setMinimum(0);\r
49     slider.setMaximum(100);\r
50     slider.setValue(100 );\r
51 \r
52   }\r
53 \r
54   public void applyButton_actionPerformed(ActionEvent e)\r
55   {\r
56        float threshold = slider.getValue();\r
57        Vector del;\r
58 \r
59        oldAlignment = new SequenceI[ap.av.alignment.getHeight()];\r
60         for (int i = 0; i < ap.av.alignment.getHeight(); i++)\r
61         {\r
62            oldAlignment[i] = new Sequence(ap.av.alignment.getSequenceAt(i).getName(),\r
63                                 ap.av.alignment.getSequenceAt(i).\r
64                                 getSequence());\r
65         }\r
66 \r
67         undoButton.setEnabled(true);\r
68 \r
69         SequenceGroup sg = ap.av.getSelectionGroup();\r
70        if (sg != null && sg.getSize() > 1)\r
71        {\r
72 \r
73          del = ap.av.alignment.removeRedundancy(threshold, sg.sequences);\r
74          for (int i = 0; i < del.size(); i++)\r
75            if (sg.sequences.contains( (SequenceI) del.elementAt(i)))\r
76              sg.deleteSequence( (SequenceI) del.elementAt(i));\r
77 \r
78          }\r
79          else\r
80          {\r
81            Vector s = new Vector();\r
82            int i=0;\r
83            while(i < ap.av.alignment.getHeight())\r
84            {\r
85              s.addElement( ap.av.alignment.getSequenceAt(i) );\r
86              i++;\r
87            }\r
88             del = ap.av.alignment.removeRedundancy(threshold,s);\r
89            for (int j=0; j < del.size(); j++)\r
90            {\r
91                if (sg.sequences.contains((SequenceI)del.elementAt(j)))\r
92                sg.deleteSequence((SequenceI)del.elementAt(j));\r
93 \r
94            }\r
95          }\r
96 \r
97          ap.repaint();\r
98 \r
99   }\r
100 \r
101   public void undoButton_actionPerformed(ActionEvent e)\r
102   {\r
103       undoButton.setEnabled(false);\r
104       ap.av.setAlignment( new Alignment(oldAlignment) );\r
105       oldAlignment = null;\r
106       ap.repaint();\r
107   }\r
108 \r
109 \r
110   public void valueField_actionPerformed(ActionEvent e)\r
111   {\r
112     try{\r
113       int i = Integer.parseInt(valueField.getText());\r
114       slider.setValue(i);\r
115     }\r
116     catch(Exception ex)\r
117     {\r
118       valueField.setText( slider.getValue()+"" );\r
119     }\r
120   }\r
121 }\r