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
20 implements Runnable, WSMenuEntryProviderI
22 private static SlivkaWSDiscoverer instance = null;
23 private SlivkaClient client;
25 private SlivkaWSDiscoverer() {
28 client = new SlivkaClient("gjb-www-1.cluster.lifesci.dundee.ac.uk", 3203);
29 } catch (URISyntaxException e)
31 throw new RuntimeException(e);
35 public static SlivkaWSDiscoverer getInstance()
37 if (instance == null) {
38 instance = new SlivkaWSDiscoverer();
44 public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame)
46 JMenu slivkaMenu = new JMenu("Slivka");
47 wsmenu.add(slivkaMenu);
48 JMenu categoryMenu = new JMenu("Alignment");
49 slivkaMenu.add(categoryMenu);
53 for (SlivkaService service: client.getServices()) {
55 for (String classifier: service.classifiers) {
56 if (classifier.contains("Multiple sequence alignment")) {
62 SlivkaWSInstance instance = new SlivkaWSInstance(client, service);
63 JMenuItem defaultEntry = new JMenuItem(String.format("%s with defaults", service.label));
64 defaultEntry.addActionListener((ActionEvent evt) -> {
65 AlignmentView msa = alignFrame.gatherSequencesForAlignment();
68 instance, alignFrame.getTitle(), msa, false, true,
69 alignFrame.getViewport().getAlignment().getDataset(),
74 categoryMenu.add(defaultEntry);
76 JMenuItem customEntry = new JMenuItem(String.format("%s with custom parameters", service.label));
77 customEntry.addActionListener((ActionEvent evt) -> {
78 AlignmentView msa = alignFrame.gatherSequencesForAlignment();
82 SlivkaParamSet paramSet = new SlivkaParamSet(service);
84 instance, paramSet, null, true, alignFrame.getTitle(), msa, false, true,
85 alignFrame.getViewport().getAlignment().getDataset(), alignFrame);
86 } catch (IOException exc)
88 throw new IOError(exc);
92 categoryMenu.add(customEntry);
94 categoryMenu.addSeparator();
96 } catch (IOException e)
98 // TODO Auto-generated catch block