- {\r
- jalview.ws.Jemboss jemboss = new jalview.ws.Jemboss();\r
- Vector sv = viewport.getAlignment().getSequences();\r
- SequenceI[] seqs = new SequenceI[sv.size()];\r
-\r
- int i = 0;\r
- do\r
- {\r
- seqs[i] = (SequenceI) sv.elementAt(i);\r
- }\r
- while (++i < sv.size());\r
-\r
- SequenceI[] alignment = jemboss.clustalW(seqs); // gaps removed within method\r
-\r
- if (alignment != null)\r
- {\r
- AlignFrame af = new AlignFrame(new Alignment(alignment));\r
- af.clustalColour.setSelected(true);\r
- af.clustalColour_actionPerformed(null);\r
- Desktop.addInternalFrame(af, getTitle().concat(" - ClustalW Alignment"),\r
- 700, 500); // JBPNote - is there a new window geom. property ?\r
- }\r
- else\r
- JOptionPane.showMessageDialog(Desktop.desktop, "Problem obtaining clustal alignment", "Web service error",\r
- JOptionPane.WARNING_MESSAGE);\r
-\r
- webServiceRunning = false;\r
- try{\r
- frame.setClosed(true);\r
- }catch(Exception ex){}\r
- }\r
-\r
- public void paintComponent(Graphics g)\r
- {\r
- g.setColor(Color.white);\r
- g.fillRect(0,0,getWidth(), getHeight());\r
- if(image!=null)\r
- {\r
- g.drawImage(image[imageIndex],10,10,this);\r
- }\r
- g.setFont(new Font("Arial", Font.BOLD, 12));\r
- g.setColor(Color.black);\r
- g.drawString("Clustal Alignment Web Service running", 30,30);\r
- }\r
+ {\r
+ PrinterJob printJob = PrinterJob.getPrinterJob();\r
+ PageFormat pf = printJob.pageDialog(printJob.defaultPage());\r
+ printJob.setPrintable(alignPanel, pf);\r
+\r
+ if (printJob.printDialog())\r
+ {\r
+ try\r
+ {\r
+ printJob.print();\r
+ }\r
+ catch (Exception PrintException)\r
+ {\r
+ PrintException.printStackTrace();\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Generates menu items and listener event actions for web service clients\r
+ *\r
+ */\r
+ public void BuildWebServiceMenu()\r
+ {\r
+ if ( (Desktop.discoverer.services != null)\r
+ && (Desktop.discoverer.services.size() > 0))\r
+ {\r
+ Vector msaws = (Vector) Desktop.discoverer.services.get("MsaWS");\r
+ Vector secstrpr = (Vector) Desktop.discoverer.services.get("SecStrPred");\r
+ Vector wsmenu = new Vector();\r
+ if (msaws != null)\r
+ {\r
+ // Add any Multiple Sequence Alignment Services\r
+ final JMenu msawsmenu = new JMenu("Alignment");\r
+ for (int i = 0, j = msaws.size(); i < j; i++)\r
+ {\r
+ final ext.vamsas.ServiceHandle sh = (ext.vamsas.ServiceHandle) msaws.\r
+ 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 = gatherSequencesForAlignment();\r
+ MsaWSClient ct = new jalview.ws.MsaWSClient(sh, title, msa,\r
+ false, true);\r
+\r
+ }\r
+\r
+ });\r
+ msawsmenu.add(method);\r
+ // Deal with services that we know accept partial alignments.\r
+ if (sh.getName().indexOf("lustal") > -1)\r
+ {\r
+ // We know that ClustalWS can accept partial alignments for refinement.\r
+ final JMenuItem methodR = new JMenuItem(sh.getName()+" Realign");\r
+ methodR.addActionListener(new ActionListener()\r
+ {\r
+ public void actionPerformed(ActionEvent e)\r
+ {\r
+ SequenceI[] msa = gatherSequencesForAlignment();\r
+ MsaWSClient ct = new jalview.ws.MsaWSClient(sh, title, msa,\r
+ true, true);\r
+\r
+ }\r
+\r
+ });\r
+ msawsmenu.add(methodR);\r
+\r
+ }\r
+ }\r
+ 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
+ jalview.ws.JPredClient ct = new jalview.ws.JPredClient(sh,\r
+ 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