Applet files
[jalview.git] / src / jalview / appletgui / RedundancyPanel.java
1 package jalview.appletgui;\r
2 \r
3 import jalview.jbappletgui.*;\r
4 import jalview.datamodel.*;\r
5 import java.awt.event.*;\r
6 import java.util.*;\r
7 \r
8 public class RedundancyPanel extends GSliderPanel\r
9 {\r
10   AlignmentPanel ap;\r
11 \r
12   SequenceI[] oldAlignment;\r
13 \r
14 \r
15   public RedundancyPanel(AlignmentPanel ap)\r
16   {\r
17     this.ap = ap;\r
18 \r
19     label.setText("Enter the redundancy threshold");\r
20 \r
21     slider.addAdjustmentListener(new AdjustmentListener()\r
22     {\r
23       public void adjustmentValueChanged(AdjustmentEvent evt)\r
24       {\r
25         valueField.setText( slider.getValue()+"" );\r
26       }\r
27     });\r
28 \r
29     slider.setMinimum(0);\r
30     slider.setMaximum(100);\r
31     slider.setValue(100 );\r
32 \r
33   }\r
34 \r
35   public void applyButton_actionPerformed(ActionEvent e)\r
36   {\r
37        float threshold = slider.getValue();\r
38        Vector del;\r
39 \r
40        oldAlignment = new SequenceI[ap.av.alignment.getHeight()];\r
41         for (int i = 0; i < ap.av.alignment.getHeight(); i++)\r
42         {\r
43            oldAlignment[i] = new Sequence(ap.av.alignment.getSequenceAt(i).getName(),\r
44                                 ap.av.alignment.getSequenceAt(i).\r
45                                 getSequence());\r
46         }\r
47 \r
48         undoButton.setEnabled(true);\r
49 \r
50         SequenceGroup sg = ap.av.getSelectionGroup();\r
51        if (sg != null && sg.getSize() > 1)\r
52        {\r
53 \r
54          del = ap.av.alignment.removeRedundancy(threshold, sg.sequences);\r
55          for (int i = 0; i < del.size(); i++)\r
56            if (sg.sequences.contains( (SequenceI) del.elementAt(i)))\r
57              sg.deleteSequence( (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 (sg.sequences.contains((SequenceI)del.elementAt(j)))\r
73                sg.deleteSequence((SequenceI)del.elementAt(j));\r
74 \r
75            }\r
76          }\r
77 \r
78          ap.repaint();\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.repaint();\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