From: amwaterhouse Date: Tue, 24 Oct 2006 11:23:29 +0000 (+0000) Subject: Change Case is undoable X-Git-Tag: Release_2_2~245 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=cc2878265a93ea8b157b518b7b4eea096476acb4;p=jalview.git Change Case is undoable --- diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index e11830c..7d08688 100755 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -21,11 +21,9 @@ package jalview.gui; import MCview.*; import jalview.analysis.*; - import jalview.datamodel.*; - - import jalview.schemes.*; +import jalview.commands.ChangeCaseCommand; import java.awt.*; import java.awt.event.*; @@ -1194,40 +1192,70 @@ public class PopupMenu extends JPopupMenu void changeCase(Object source) { SequenceGroup sg = ap.av.getSelectionGroup(); + Vector regions = new Vector(); if (sg != null) { - for (int g = 0; g < sg.getSize(true); g++) + int start = sg.getStartRes(); + int end = sg.getEndRes() + 1; + + do { - int start = sg.getStartRes(); - int end = sg.getEndRes() + 1; + if (ap.av.hasHiddenColumns) + { + if(start==0) + start = ap.av.colSel.adjustForHiddenColumns(start); + + end = ap.av.colSel.getHiddenBoundaryRight(start); + if (start == end) + end = sg.getEndRes() + 1; + if (end > sg.getEndRes()) + end = sg.getEndRes() + 1; + } + + regions.addElement(new int[] + {start, end}); - do + if (ap.av.hasHiddenColumns) { - if (ap.av.hasHiddenColumns) - { - end = ap.av.colSel.getHiddenBoundaryRight(start); - if (start == end) - end = sg.getEndRes() + 1; - if (end > sg.getEndRes()) - end = sg.getEndRes() + 1; - } + start = ap.av.colSel.adjustForHiddenColumns(end); + start = ap.av.colSel.getHiddenBoundaryLeft(start) + 1; + } + } + while (end < sg.getEndRes()); - if (source == toggle) - ( (SequenceI) sg.getSequences(true).elementAt(g)) - .toggleCase(start, end); - else - ( (SequenceI) sg.getSequences(true).elementAt(g)) - .changeCase(source == upperCase, start, end); + int[][] startEnd = new int[regions.size()][2]; + for (int i = 0; i < regions.size(); i++) + { + startEnd[i] = (int[]) regions.elementAt(i); + } - if (ap.av.hasHiddenColumns) - { - start = ap.av.colSel.adjustForHiddenColumns(end); - start = ap.av.colSel.getHiddenBoundaryLeft(start) + 1; - } - } - while (end < sg.getEndRes()); + String description; + int caseChange; + + if(source==toggle) + { + description = "Toggle Case"; + caseChange = ChangeCaseCommand.TOGGLE_CASE; + } + else if(source==upperCase) + { + description = "To Upper Case"; + caseChange = ChangeCaseCommand.TO_UPPER; } + else + { + description = "To Lower Case"; + caseChange = ChangeCaseCommand.TO_LOWER; + } + + ChangeCaseCommand caseCommand = new ChangeCaseCommand( + description, sg.getSequencesAsArray(true), startEnd, caseChange + ); + + ap.alignFrame.addHistoryItem(caseCommand); + + PaintRefresher.Refresh(this, ap.av.getSequenceSetId()); } }