X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FRedundancyPanel.java;h=3df55c1455deb87a51cabcc46cc97f4fcd651443;hb=d1a58585358deed317674daeeac5fb5be66637ab;hp=3d1bfb7f1f5a5a5bc5b2df460e1cf2cbce16c65b;hpb=ef6555067c63693c06f0b6335a1c9f5761d712c6;p=jalview.git diff --git a/src/jalview/gui/RedundancyPanel.java b/src/jalview/gui/RedundancyPanel.java index 3d1bfb7..3df55c1 100755 --- a/src/jalview/gui/RedundancyPanel.java +++ b/src/jalview/gui/RedundancyPanel.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -19,15 +19,16 @@ package jalview.gui; import jalview.datamodel.*; - import jalview.jbgui.*; +import jalview.util.Comparison; +import jalview.commands.*; import java.awt.event.*; import java.util.*; import javax.swing.event.*; -import jalview.util.Comparison; + import javax.swing.*; @@ -44,8 +45,8 @@ public class RedundancyPanel extends GSliderPanel implements Runnable Stack historyList = new Stack(); // simpler than synching with alignFrame. float [] redundancy; SequenceI [] originalSequences; - Hashtable originalColours; JInternalFrame frame; + Vector redundantSeqs; /** * Creates a new RedundancyPanel object. @@ -53,10 +54,11 @@ public class RedundancyPanel extends GSliderPanel implements Runnable * @param ap DOCUMENT ME! * @param af DOCUMENT ME! */ - public RedundancyPanel(AlignmentPanel ap, AlignFrame af) + public RedundancyPanel(final AlignmentPanel ap, AlignFrame af) { this.ap = ap; this.af = af; + redundantSeqs = new Vector(); slider.addChangeListener(new ChangeListener() { @@ -69,7 +71,7 @@ public class RedundancyPanel extends GSliderPanel implements Runnable applyButton.setText("Remove"); allGroupsCheck.setVisible(false); - slider.setMinimum(60); + slider.setMinimum(0); slider.setMaximum(100); slider.setValue(100); @@ -84,7 +86,7 @@ public class RedundancyPanel extends GSliderPanel implements Runnable { public void internalFrameClosing(InternalFrameEvent evt) { - resetColours(); + ap.idPanel.idCanvas.setHighlighted(null); } } ); @@ -121,7 +123,6 @@ public class RedundancyPanel extends GSliderPanel implements Runnable SequenceGroup sg = ap.av.getSelectionGroup(); int height; - originalColours = new Hashtable(); int start, end; if ( (sg != null) && (sg.getSize(false) >= 1)) @@ -157,8 +158,6 @@ public class RedundancyPanel extends GSliderPanel implements Runnable String seqi, seqj; for (int i = 0; i < height; i++) { - originalColours.put(originalSequences[i], - originalSequences[i].getColor()); for (int j = 0; j < i; j++) { @@ -209,13 +208,13 @@ public class RedundancyPanel extends GSliderPanel implements Runnable for(int i=0; i redundancy[i]) - originalSequences[i].setColor(java.awt.Color.white); - else - originalSequences[i].setColor(java.awt.Color.red); - } + redundantSeqs.remove(originalSequences[i]); + else if(!redundantSeqs.contains(originalSequences[i])) + redundantSeqs.add(originalSequences[i]); - PaintRefresher.Refresh(null,ap.av.alignment); + } + ap.idPanel.idCanvas.setHighlighted(redundantSeqs); } /** @@ -225,16 +224,6 @@ public class RedundancyPanel extends GSliderPanel implements Runnable */ public void applyButton_actionPerformed(ActionEvent e) { - historyList.push(new HistoryItem("Remove redundancy", - ap.av.alignment, HistoryItem.HIDE)); - - if ((historyList.size() == 1) || - !af.historyList.contains(historyList.firstElement())) - { - af.addHistoryItem((HistoryItem) historyList.firstElement()); - af.updateEditMenuBar(); - } - Vector del = new Vector(); undoButton.setEnabled(true); @@ -246,43 +235,50 @@ public class RedundancyPanel extends GSliderPanel implements Runnable { if (value <= redundancy[i]) { - SequenceI seq = originalSequences[i]; - ap.av.alignment.deleteSequence(seq); - del.add(seq); - if (sg != null) - { - sg.deleteSequence(seq, false); - } + del.addElement(originalSequences[i]); } } - // This has to be done before the restoreHistoryItem method of alignFrame will // actually restore these sequences. if (del.size() > 0) { - for (int i = 0, j = del.size(); i < j; i++) + SequenceI [] deleted = new SequenceI[del.size()]; + + int width = 0; + for (int i = 0; i < del.size(); i++) + { + deleted[i] = (SequenceI)del.elementAt(i); + if(deleted[i].getLength()>width) + width = deleted[i].getLength(); + } + + EditCommand cut = new EditCommand("Remove Redundancy", + EditCommand.CUT, deleted,0,width,ap.av.alignment); + + for (int i = 0; i < del.size(); i++) + { + ap.av.alignment.deleteSequence( deleted[i] ); + PaintRefresher.Refresh(this, + ap.av.getSequenceSetId(), + deleted[i], null); + if (sg != null) { - SequenceI sq = (SequenceI) del.elementAt(i); - sq.deleteChars(0, sq.getLength()); + sg.deleteSequence(deleted[i], false); } - } + } - ap.av.firePropertyChange("alignment", null, ap.av.getAlignment().getSequences()); - af.updateEditMenuBar(); - } + historyList.push(cut); + + ap.alignFrame.addHistoryItem(cut); + + ap.av.firePropertyChange("alignment", null, ap.av.getAlignment().getSequences()); + } - void resetColours() - { - for(int i=0; i