MenuItem cut = new MenuItem("Cut (Jalview Only)");\r
MenuItem toUpper = new MenuItem("To Upper Case");\r
MenuItem toLower = new MenuItem("To Lower Case");\r
+ MenuItem toggleCase = new MenuItem("Toggle Case");\r
\r
public APopupMenu(AlignmentPanel apanel, final Sequence seq, Vector links)\r
{\r
ap.alignFrame.copy_actionPerformed();\r
else if(source==cut)\r
ap.alignFrame.cut_actionPerformed();\r
- else if(source==toUpper)\r
+ else if(source==toUpper || source==toLower || source==toggleCase)\r
{\r
SequenceGroup sg = ap.av.getSelectionGroup();\r
if (sg != null)\r
{\r
for (int g = 0; g < sg.getSize(); g++)\r
{\r
- sg.getSequenceAt(g).changeCase(true, sg.getStartRes(),\r
- sg.getEndRes() + 1);\r
- }\r
- ap.seqPanel.seqCanvas.repaint();\r
- }\r
- }\r
- else if(source==toLower)\r
- {\r
- SequenceGroup sg = ap.av.getSelectionGroup();\r
- if (sg != null)\r
- {\r
- for (int g = 0; g < sg.getSize(); g++)\r
- {\r
- sg.getSequenceAt(g).changeCase(false, sg.getStartRes(),\r
- sg.getEndRes() + 1);\r
+ if (source == toggleCase)\r
+ sg.getSequenceAt(g).toggleCase(sg.getStartRes(), sg.getEndRes() + 1);\r
+ else\r
+ sg.getSequenceAt(g).changeCase(source == toUpper, sg.getStartRes(),\r
+ sg.getEndRes() + 1);\r
}\r
ap.seqPanel.seqCanvas.repaint();\r
}\r
toUpper.addActionListener(this);\r
editMenu.add(toLower);\r
toLower.addActionListener(this);\r
+ editMenu.add(toggleCase);\r
+ toggleCase.addActionListener(this);\r
\r
}\r
\r
sequence = newSeq.toString();\r
}\r
\r
+ public void toggleCase(int start, int end)\r
+ {\r
+ StringBuffer newSeq = new StringBuffer();\r
+\r
+ if(end>=sequence.length())\r
+ end = sequence.length()-1;\r
+\r
+ if (start > 0)\r
+ {\r
+ newSeq.append(sequence.substring(0, start));\r
+ }\r
+\r
+ char nextChar;\r
+ for(int c=start; c<end; c++)\r
+ {\r
+ nextChar = sequence.charAt(c);\r
+ if(Character.isLetter(nextChar))\r
+ {\r
+ if(Character.isUpperCase(nextChar))\r
+ nextChar = Character.toLowerCase(nextChar);\r
+ else\r
+ nextChar = Character.toUpperCase(nextChar);\r
+ }\r
+\r
+\r
+ newSeq.append(nextChar);\r
+ }\r
+\r
+ if (end < sequence.length())\r
+ newSeq.append(sequence.substring(end));\r
+\r
+ sequence = newSeq.toString();\r
+ }\r
+\r
}\r