Remove redundancy implemented
[jalview.git] / src / jalview / gui / RedundancyPanel.java
1 package jalview.gui;\r
2 \r
3 import jalview.jbgui.*;\r
4 import jalview.datamodel.*;\r
5 import java.awt.event.*;\r
6 import java.util.*;\r
7 import javax.swing.event.*;\r
8 \r
9 public class RedundancyPanel extends GSliderPanel\r
10 {\r
11   AlignmentPanel ap;\r
12 \r
13   SequenceI[] oldAlignment;\r
14 \r
15 \r
16   public RedundancyPanel(AlignmentPanel ap)\r
17   {\r
18     this.ap = ap;\r
19 \r
20     label.setText("Enter the redundancy threshold");\r
21 \r
22     slider.addChangeListener(new ChangeListener()\r
23     {\r
24       public void stateChanged(ChangeEvent evt)\r
25       {\r
26         valueField.setText( slider.getValue()+"" );\r
27       }\r
28     });\r
29 \r
30     slider.setMinimum(0);\r
31     slider.setMaximum(100);\r
32     slider.setValue(100 );\r
33 \r
34   }\r
35 \r
36   public void applyButton_actionPerformed(ActionEvent e)\r
37   {\r
38        float threshold = slider.getValue();\r
39        Vector del;\r
40 \r
41        oldAlignment = new SequenceI[ap.av.alignment.getHeight()];\r
42         for (int i = 0; i < ap.av.alignment.getHeight(); i++)\r
43         {\r
44            oldAlignment[i] = new Sequence(ap.av.alignment.getSequenceAt(i).getName(),\r
45                                 ap.av.alignment.getSequenceAt(i).\r
46                                 getSequence());\r
47         }\r
48 \r
49         undoButton.setEnabled(true);\r
50 \r
51        if (ap.av.sel != null && ap.av.sel.size() > 1)\r
52        {\r
53 \r
54          del = ap.av.alignment.removeRedundancy(threshold, ap.av.sel.asVector());\r
55          for (int i = 0; i < del.size(); i++)\r
56            if (ap.av.sel.contains( (SequenceI) del.elementAt(i)))\r
57              ap.av.sel.removeElement( (SequenceI) del.elementAt(i));\r
58 \r
59          }\r
60          else\r
61          {\r
62            Vector s = new Vector();\r
63            int i=0;\r
64            while(i < ap.av.alignment.getHeight())\r
65            {\r
66              s.addElement( ap.av.alignment.getSequenceAt(i) );\r
67              i++;\r
68            }\r
69             del = ap.av.alignment.removeRedundancy(threshold,s);\r
70            for (int j=0; j < del.size(); j++)\r
71            {\r
72                if (ap.av.sel.contains((SequenceI)del.elementAt(j)))\r
73                ap.av.sel.removeElement((SequenceI)del.elementAt(j));\r
74 \r
75            }\r
76          }\r
77 \r
78          ap.RefreshPanels();\r
79 \r
80   }\r
81 \r
82   public void undoButton_actionPerformed(ActionEvent e)\r
83   {\r
84       undoButton.setEnabled(false);\r
85       ap.av.setAlignment( new Alignment(oldAlignment) );\r
86       oldAlignment = null;\r
87       ap.RefreshPanels();\r
88   }\r
89 \r
90 \r
91   public void valueField_actionPerformed(ActionEvent e)\r
92   {\r
93     try{\r
94       int i = Integer.parseInt(valueField.getText());\r
95       slider.setValue(i);\r
96     }\r
97     catch(Exception ex)\r
98     {\r
99       valueField.setText( slider.getValue()+"" );\r
100     }\r
101   }\r
102 }\r