1 package jalview.ws.slivkaws;
3 import jalview.gui.AlignFrame;
4 import jalview.ws.WSMenuEntryProviderI;
5 import jalview.ws.jws2.MsaWSClient;
6 import jalview.ws.jws2.SequenceAnnotationWSClient;
8 import java.io.IOError;
9 import java.io.IOException;
10 import java.net.URISyntaxException;
12 import javax.swing.JMenu;
14 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
15 import uk.ac.dundee.compbio.slivkaclient.SlivkaService;
17 public class SlivkaWSDiscoverer implements Runnable, WSMenuEntryProviderI
19 private static SlivkaWSDiscoverer instance = null;
21 private SlivkaClient slivkaClient;
23 private SlivkaWSDiscoverer()
27 slivkaClient = new SlivkaClient("gjb-www-1.cluster.lifesci.dundee.ac.uk", 3203);
28 } catch (URISyntaxException e)
30 throw new RuntimeException(e);
34 public static SlivkaWSDiscoverer getInstance()
38 instance = new SlivkaWSDiscoverer();
43 private void addMsaServiceClient(JMenu alignmentMenu,
44 SlivkaService service, AlignFrame alignFrame)
46 SlivkaMsaServiceInstance instance = new SlivkaMsaServiceInstance(
47 slivkaClient, service);
48 MsaWSClient client = new MsaWSClient();
49 client.attachWSMenuEntry(alignmentMenu, instance, alignFrame);
50 alignmentMenu.addSeparator();
53 private void addDisorderServiceClient(JMenu disorderMenu,
54 SlivkaService service, AlignFrame alignFrame)
56 SlivkaAnnotationServiceInstance serviceInstance = new SlivkaAnnotationServiceInstance(
57 slivkaClient, service, false);
58 SequenceAnnotationWSClient client = new SequenceAnnotationWSClient();
59 client.attachWSMenuEntry(disorderMenu, serviceInstance, alignFrame);
60 disorderMenu.addSeparator();
63 private void addConservationServiceClient(JMenu conservationMenu,
64 SlivkaService service, AlignFrame alignFrame)
66 SlivkaAnnotationServiceInstance serviceInstance = new SlivkaAnnotationServiceInstance(
67 slivkaClient, service, true);
68 SequenceAnnotationWSClient client = new SequenceAnnotationWSClient();
69 client.attachWSMenuEntry(conservationMenu, serviceInstance, alignFrame);
70 conservationMenu.addSeparator();
74 public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame)
76 JMenu slivkaMenu = new JMenu("Slivka");
77 wsmenu.add(slivkaMenu);
79 JMenu alignmentMenu = new JMenu("Sequence Alignment");
80 slivkaMenu.add(alignmentMenu);
81 JMenu disorderMenu = new JMenu("Protein sequence analysis");
82 slivkaMenu.add(disorderMenu);
83 JMenu conservationMenu = new JMenu("Conservation");
84 slivkaMenu.add(conservationMenu);
87 for (SlivkaService service : slivkaClient.getServices())
89 for (String classifier : service.classifiers)
91 if (classifier.contains("Multiple sequence alignment"))
93 addMsaServiceClient(alignmentMenu, service, alignFrame);
95 else if (classifier.contains("Protein sequence analysis"))
97 addDisorderServiceClient(disorderMenu, service, alignFrame);
100 .contains("Sequence alignment analysis (conservation)"))
102 addConservationServiceClient(conservationMenu, service,
108 } catch (IOException e)
110 throw new IOError(e);