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;
7 import jalview.ws.jws2.SequenceAnnotationWSClient;
9 import java.awt.event.ActionEvent;
10 import java.io.IOError;
11 import java.io.IOException;
12 import java.net.URISyntaxException;
14 import javax.swing.JMenu;
15 import javax.swing.JMenuItem;
17 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
18 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
20 public class SlivkaWSDiscoverer implements Runnable, WSMenuEntryProviderI
22 private static SlivkaWSDiscoverer instance = null;
24 private SlivkaClient client;
26 private SlivkaWSDiscoverer()
30 client = new SlivkaClient("gjb-www-1.cluster.lifesci.dundee.ac.uk", 3203);
31 } catch (URISyntaxException e)
33 throw new RuntimeException(e);
37 public static SlivkaWSDiscoverer getInstance()
41 instance = new SlivkaWSDiscoverer();
47 public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame)
49 JMenu slivkaMenu = new JMenu("Slivka");
50 wsmenu.add(slivkaMenu);
52 JMenu alignmentMenu = new JMenu("Sequence Alignment");
53 slivkaMenu.add(alignmentMenu);
56 for (SlivkaService service : client.getServices())
60 for (String classifier : service.classifiers)
62 if (classifier.contains("Multiple sequence alignment"))
69 SlivkaMsaServiceInstance instance = new SlivkaMsaServiceInstance(client, service);
70 JMenuItem defaultEntry = new JMenuItem(String.format("%s with defaults", service.label));
71 defaultEntry.addActionListener((ActionEvent evt) -> {
72 AlignmentView msa = alignFrame.gatherSequencesForAlignment();
75 new MsaWSClient(instance, alignFrame.getTitle(), msa, false, true,
76 alignFrame.getViewport().getAlignment().getDataset(), alignFrame);
79 alignmentMenu.add(defaultEntry);
81 JMenuItem customEntry = new JMenuItem(String.format("%s with custom parameters", service.label));
82 customEntry.addActionListener((ActionEvent evt) -> {
83 AlignmentView msa = alignFrame.gatherSequencesForAlignment();
88 SlivkaParamSet paramSet = new SlivkaParamSet(service);
89 new MsaWSClient(instance, paramSet, null, true, alignFrame.getTitle(), msa, false, true,
90 alignFrame.getViewport().getAlignment().getDataset(), alignFrame);
91 } catch (IOException exc)
93 throw new IOError(exc);
97 alignmentMenu.add(customEntry);
99 alignmentMenu.addSeparator();
101 } catch (IOException e)
103 // TODO Auto-generated catch block
107 JMenu disorderMenu = new JMenu("Protein sequence analysis");
108 slivkaMenu.add(disorderMenu);
111 for (SlivkaService service : client.getServices())
115 for (String classifier : service.classifiers)
117 if (classifier.contains("Protein sequence analysis"))
124 JMenuItem menuEntry = new JMenuItem(String.format("%s with custom parameters", service.label));
125 disorderMenu.add(menuEntry);
126 SlivkaAnnotationServiceInstance serviceInstance = new SlivkaAnnotationServiceInstance(client, service);
127 menuEntry.addActionListener((ActionEvent evt) -> {
130 SlivkaParamSet paramSet = new SlivkaParamSet(service);
131 SequenceAnnotationWSClient client = new SequenceAnnotationWSClient();
132 client.initSequenceAnnotationWSClient(serviceInstance, alignFrame, paramSet, true);
133 } catch (IOException e)
135 throw new IOError(e);
140 } catch (IOException e)
142 throw new IOError(e);