X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=d099944077dc249b8fc14c9126278ff8c3119908;hb=ce0eac6587e6cc8d62318b003d0dbb41d8252659;hp=e11830ccb0c15d1c290c006cc6d6ac4961294584;hpb=7749f0e593d610c517dfd6796cf6087191b189ad;p=jalview.git diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index e11830c..d099944 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.*; @@ -452,7 +450,7 @@ public class PopupMenu extends JPopupMenu { public void actionPerformed(ActionEvent e) { - upperCase_actionPerformed(e); + changeCase(e); } }); copy.setText("Copy"); @@ -468,7 +466,7 @@ public class PopupMenu extends JPopupMenu { public void actionPerformed(ActionEvent e) { - lowerCase_actionPerformed(e); + changeCase(e); } }); toggle.setText("Toggle Case"); @@ -476,7 +474,7 @@ public class PopupMenu extends JPopupMenu { public void actionPerformed(ActionEvent e) { - toggle_actionPerformed(e); + changeCase(e); } }); pdbMenu.setText("Associate Structure with Sequence"); @@ -523,12 +521,12 @@ public class PopupMenu extends JPopupMenu groupMenu.addSeparator(); groupMenu.add(groupName); groupMenu.add(unGroupMenuItem); - groupMenu.add(colourMenu); + groupMenu.add(colourMenu); groupMenu.add(showBoxes); - groupMenu.add(showText); - groupMenu.add(showColourText); + groupMenu.add(showText); + groupMenu.add(showColourText); groupMenu.add(outline); - sequenceMenu.add(sequenceName); + sequenceMenu.add(sequenceName); sequenceMenu.add(pdbMenu); colourMenu.add(noColourmenuItem); colourMenu.add(clustalColour); @@ -1176,58 +1174,74 @@ public class PopupMenu extends JPopupMenu ap.alignFrame.cut_actionPerformed(null); } - public void upperCase_actionPerformed(ActionEvent e) - { - changeCase(e.getSource()); - } - - public void lowerCase_actionPerformed(ActionEvent e) - { - changeCase(e.getSource()); - } - - public void toggle_actionPerformed(ActionEvent e) - { - changeCase(e.getSource()); - } - - void changeCase(Object source) + void changeCase(ActionEvent e) { + Object source = e.getSource(); 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()); } }