1 package jalview.ws.slivkaws;
3 import jalview.datamodel.AlignmentView;
4 import jalview.gui.AlignFrame;
5 import jalview.ws.WSMenuEntryProviderI;
6 import jalview.ws.jws2.MsaWSClient;
8 import java.awt.event.ActionEvent;
9 import java.io.IOError;
10 import java.io.IOException;
11 import java.net.URISyntaxException;
13 import javax.swing.JMenu;
14 import javax.swing.JMenuItem;
16 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
17 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
19 public class SlivkaWSDiscoverer implements Runnable, WSMenuEntryProviderI
21 private static SlivkaWSDiscoverer instance = null;
23 private SlivkaClient client;
25 private SlivkaWSDiscoverer()
29 client = new SlivkaClient("gjb-www-1.cluster.lifesci.dundee.ac.uk", 3203);
30 } catch (URISyntaxException e)
32 throw new RuntimeException(e);
36 public static SlivkaWSDiscoverer getInstance()
40 instance = new SlivkaWSDiscoverer();
46 public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame)
48 JMenu slivkaMenu = new JMenu("Slivka");
49 wsmenu.add(slivkaMenu);
50 JMenu categoryMenu = new JMenu("Alignment");
51 slivkaMenu.add(categoryMenu);
55 for (SlivkaService service : client.getServices())
59 for (String classifier : service.classifiers)
61 if (classifier.contains("Multiple sequence alignment"))
68 SlivkaMsaServiceInstance instance = new SlivkaMsaServiceInstance(client, service);
69 JMenuItem defaultEntry = new JMenuItem(String.format("%s with defaults", service.label));
70 defaultEntry.addActionListener((ActionEvent evt) -> {
71 AlignmentView msa = alignFrame.gatherSequencesForAlignment();
74 new MsaWSClient(instance, alignFrame.getTitle(), msa, false, true,
75 alignFrame.getViewport().getAlignment().getDataset(), alignFrame);
78 categoryMenu.add(defaultEntry);
80 JMenuItem customEntry = new JMenuItem(String.format("%s with custom parameters", service.label));
81 customEntry.addActionListener((ActionEvent evt) -> {
82 AlignmentView msa = alignFrame.gatherSequencesForAlignment();
87 SlivkaParamSet paramSet = new SlivkaParamSet(service);
88 new MsaWSClient(instance, paramSet, null, true, alignFrame.getTitle(), msa, false, true,
89 alignFrame.getViewport().getAlignment().getDataset(), alignFrame);
90 } catch (IOException exc)
92 throw new IOError(exc);
96 categoryMenu.add(customEntry);
98 categoryMenu.addSeparator();
100 } catch (IOException e)
102 // TODO Auto-generated catch block