package jalview.appletgui; import jalview.jbappletgui.*; import jalview.datamodel.*; import java.awt.event.*; import java.util.*; public class RedundancyPanel extends GSliderPanel { AlignmentPanel ap; SequenceI[] oldAlignment; public RedundancyPanel(AlignmentPanel ap) { this.ap = ap; label.setText("Enter the redundancy threshold"); slider.addAdjustmentListener(new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent evt) { valueField.setText( slider.getValue()+"" ); } }); slider.setMinimum(0); slider.setMaximum(100); slider.setValue(100 ); } public void applyButton_actionPerformed(ActionEvent e) { float threshold = slider.getValue(); Vector del; oldAlignment = new SequenceI[ap.av.alignment.getHeight()]; for (int i = 0; i < ap.av.alignment.getHeight(); i++) { oldAlignment[i] = new Sequence(ap.av.alignment.getSequenceAt(i).getName(), ap.av.alignment.getSequenceAt(i). getSequence()); } undoButton.setEnabled(true); SequenceGroup sg = ap.av.getSelectionGroup(); if (sg != null && sg.getSize() > 1) { del = ap.av.alignment.removeRedundancy(threshold, sg.sequences); for (int i = 0; i < del.size(); i++) if (sg.sequences.contains( (SequenceI) del.elementAt(i))) sg.deleteSequence( (SequenceI) del.elementAt(i)); } else { Vector s = new Vector(); int i=0; while(i < ap.av.alignment.getHeight()) { s.addElement( ap.av.alignment.getSequenceAt(i) ); i++; } del = ap.av.alignment.removeRedundancy(threshold,s); for (int j=0; j < del.size(); j++) { if (sg.sequences.contains((SequenceI)del.elementAt(j))) sg.deleteSequence((SequenceI)del.elementAt(j)); } } ap.repaint(); } public void undoButton_actionPerformed(ActionEvent e) { undoButton.setEnabled(false); ap.av.setAlignment( new Alignment(oldAlignment) ); oldAlignment = null; ap.repaint(); } public void valueField_actionPerformed(ActionEvent e) { try{ int i = Integer.parseInt(valueField.getText()); slider.setValue(i); } catch(Exception ex) { valueField.setText( slider.getValue()+"" ); } } }