+ wsmenu.add(msawsmenu);\r
+ }\r
+ if (secstrpr != null)\r
+ {\r
+ // Add any secondary structure prediction services\r
+ final JMenu secstrmenu = new JMenu("Secondary Structure Prediction");\r
+ for (int i = 0, j = secstrpr.size(); i < j; i++)\r
+ {\r
+ final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle)\r
+ secstrpr.get(i);\r
+ final JMenuItem method = new JMenuItem(sh.getName());\r
+ method.addActionListener(new ActionListener()\r
+ {\r
+ public void actionPerformed(ActionEvent e)\r
+ {\r
+ SequenceI[] msa = gatherSeqOrMsaForSecStrPrediction();\r
+ if (msa.length == 1)\r
+ {\r
+ // Single Sequence prediction\r
+ new jalview.ws.JPredClient(sh,title, msa[0]);\r
+ }\r
+ else\r
+ {\r
+ if (msa.length > 1)\r
+ {\r
+ // Single Sequence prediction\r
+ jalview.ws.JPredClient ct = new jalview.ws.JPredClient(sh,\r
+ title, msa);\r
+ }\r
+ }\r
+ }\r
+ });\r
+ secstrmenu.add(method);\r
+ }\r
+ wsmenu.add(secstrmenu);\r
+ }\r
+ this.webService.removeAll();\r
+ for (int i = 0, j = wsmenu.size(); i < j; i++)\r
+ {\r
+ webService.add( (JMenu) wsmenu.get(i));\r
+ }\r
+ }\r
+ else\r
+ {\r
+ this.webService.removeAll();\r
+ this.webService.add(this.webServiceNoServices);\r
+ }\r
+ // TODO: add in rediscovery function\r
+ // TODO: reduce code redundancy.\r
+ // TODO: group services by location as well as function.\r
+ }\r
+\r
+ /* public void vamsasStore_actionPerformed(ActionEvent e)\r
+ {\r
+ JalviewFileChooser chooser = new JalviewFileChooser(jalview.bin.Cache.\r
+ getProperty("LAST_DIRECTORY"));\r
+\r
+ chooser.setFileView(new JalviewFileView());\r
+ chooser.setDialogTitle("Export to Vamsas file");\r
+ chooser.setToolTipText("Export");\r
+\r
+ int value = chooser.showSaveDialog(this);\r
+\r
+ if (value == JalviewFileChooser.APPROVE_OPTION)\r
+ {\r
+ jalview.io.VamsasDatastore vs = new jalview.io.VamsasDatastore(viewport);\r
+ //vs.store(chooser.getSelectedFile().getAbsolutePath() );\r
+ vs.storeJalview( chooser.getSelectedFile().getAbsolutePath(), this);\r
+ }\r
+ }*/\r
+\r
+\r
+\r
+\r
+public void showTranslation_actionPerformed(ActionEvent e)\r
+{\r
+ SequenceI [] selection = viewport.getSelectionAsNewSequence();\r
+ String [] seqstring = viewport.getViewAsString(true);\r
+\r
+ int s, sSize = selection.length;\r
+ SequenceI [] newSeq = new SequenceI[sSize];\r
+\r
+ int res, resSize;\r
+ StringBuffer protein;\r
+ String seq;\r
+ for(s=0; s<sSize; s++)\r
+ {\r
+ protein = new StringBuffer();\r
+ seq = AlignSeq.extractGaps("-. ", seqstring[s]);\r
+ resSize = seq.length();\r
+ resSize -= resSize%3;\r
+\r
+ for(res = 0; res < resSize; res+=3)\r
+ {\r
+ String codon = seq.substring(res, res+3);\r
+ codon = codon.replace('U', 'T');\r
+ String aa = ResidueProperties.codonTranslate(codon);\r
+ if(aa==null)\r
+ protein.append(viewport.getGapCharacter());\r
+ else if(aa.equals("STOP"))\r
+ protein.append("X");\r
+ else\r
+ protein.append( aa );\r
+ }\r
+ newSeq[s] = new Sequence(selection[s].getName(),\r
+ protein.toString());\r
+ }\r
+\r
+\r
+ AlignmentI al = new Alignment(newSeq);\r
+ al.setDataset(null);\r
+\r
+\r
+ ////////////////////////////////\r
+ // Copy annotations across\r
+ jalview.datamodel.AlignmentAnnotation[] annotations\r
+ = viewport.alignment.getAlignmentAnnotation();\r
+ int a, aSize;\r
+ if(annotations!=null)\r
+ {\r
+ for (int i = 0; i < annotations.length; i++)\r
+ {\r
+ if (annotations[i].label.equals("Quality") ||\r
+ annotations[i].label.equals("Conservation") ||\r
+ annotations[i].label.equals("Consensus"))\r
+ {\r
+ continue;\r
+ }\r
+\r
+ aSize = viewport.alignment.getWidth() / 3;\r
+ jalview.datamodel.Annotation[] anots =\r
+ new jalview.datamodel.Annotation[aSize];\r
+\r
+ for (a = 0; a < viewport.alignment.getWidth(); a++)\r
+ {\r
+ if (annotations[i].annotations[a] == null\r
+ || annotations[i].annotations[a] == null)\r
+ continue;\r
+\r
+ anots[a / 3] = new Annotation(\r
+ annotations[i].annotations[a].displayCharacter,\r
+ annotations[i].annotations[a].description,\r
+ annotations[i].annotations[a].secondaryStructure,\r
+ annotations[i].annotations[a].value,\r
+ annotations[i].annotations[a].colour);\r