selection removed, now SelectionGroup does same job as id select and residue select
[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         SequenceGroup sg = ap.av.getSelectionGroup();\r
52        if (sg != null && sg.getSize() > 1)\r
53        {\r
54 \r
55          del = ap.av.alignment.removeRedundancy(threshold, sg.sequences);\r
56          for (int i = 0; i < del.size(); i++)\r
57            if (sg.sequences.contains( (SequenceI) del.elementAt(i)))\r
58              sg.deleteSequence( (SequenceI) del.elementAt(i));\r
59 \r
60          }\r
61          else\r
62          {\r
63            Vector s = new Vector();\r
64            int i=0;\r
65            while(i < ap.av.alignment.getHeight())\r
66            {\r
67              s.addElement( ap.av.alignment.getSequenceAt(i) );\r
68              i++;\r
69            }\r
70             del = ap.av.alignment.removeRedundancy(threshold,s);\r
71            for (int j=0; j < del.size(); j++)\r
72            {\r
73                if (sg.sequences.contains((SequenceI)del.elementAt(j)))\r
74                sg.deleteSequence((SequenceI)del.elementAt(j));\r
75 \r
76            }\r
77          }\r
78 \r
79          ap.RefreshPanels();\r
80 \r
81   }\r
82 \r
83   public void undoButton_actionPerformed(ActionEvent e)\r
84   {\r
85       undoButton.setEnabled(false);\r
86       ap.av.setAlignment( new Alignment(oldAlignment) );\r
87       oldAlignment = null;\r
88       ap.RefreshPanels();\r
89   }\r
90 \r
91 \r
92   public void valueField_actionPerformed(ActionEvent e)\r
93   {\r
94     try{\r
95       int i = Integer.parseInt(valueField.getText());\r
96       slider.setValue(i);\r
97     }\r
98     catch(Exception ex)\r
99     {\r
100       valueField.setText( slider.getValue()+"" );\r
101     }\r
102   }\r
103 }\r