dfa3d89d76fa59e2e7b88587e001e4b94152aeb8
[jalview.git] / src / jalview / ws / slivkaws / SlivkaWSDiscoverer.java
1 package jalview.ws.slivkaws;
2
3 import jalview.datamodel.AlignmentView;
4 import jalview.gui.AlignFrame;
5 import jalview.ws.WSMenuEntryProviderI;
6 import jalview.ws.jws2.MsaWSClient;
7
8 import java.awt.event.ActionEvent;
9 import java.io.IOException;
10 import java.net.URISyntaxException;
11
12 import javax.swing.JMenu;
13 import javax.swing.JMenuItem;
14
15 import uk.ac.dundee.compbio.slivkaclient.SlivkaClient;
16
17 public class SlivkaWSDiscoverer
18   implements Runnable, WSMenuEntryProviderI
19 {
20   private static SlivkaWSDiscoverer instance = null;
21   private SlivkaClient client;
22   private ClustaloWS clustalo;
23
24   private SlivkaWSDiscoverer() {
25     try
26     {
27       client = new SlivkaClient("gjb-www-1.cluster.lifesci.dundee.ac.uk", 3203);
28     } catch (URISyntaxException e)
29     {
30       throw new RuntimeException(e);
31     }
32     clustalo = new ClustaloWS(client);
33   }
34
35   public static SlivkaWSDiscoverer getInstance()
36   {
37     if (instance == null) {
38                 instance = new SlivkaWSDiscoverer();
39         }
40     return instance;
41   }
42
43   @Override
44   public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame)
45   {
46     JMenu submenu = new JMenu("Slivka");
47
48     JMenuItem noParamMenuItem = new JMenuItem("ClustalO with defaults");
49     noParamMenuItem.addActionListener((ActionEvent e) -> {
50       AlignmentView msa = alignFrame.gatherSequencesForAlignment();
51       if (msa != null)
52       {
53         new MsaWSClient(
54             clustalo, alignFrame.getTitle(), msa, false, true,
55             alignFrame.getViewport().getAlignment().getDataset(),
56             alignFrame);
57       }
58     });
59     submenu.add(noParamMenuItem);
60
61     JMenuItem parametrisedMenuItem = new JMenuItem("ClustalO with custom parameters");
62     parametrisedMenuItem.addActionListener((ActionEvent evt) -> {
63       AlignmentView msa = alignFrame.gatherSequencesForAlignment();
64       if (msa != null)
65       {
66         try
67         {
68           SlivkaParamSet paramSet = new SlivkaParamSet(clustalo.getService());
69           new MsaWSClient(
70               clustalo, paramSet, null, true, alignFrame.getTitle(), msa, false, true,
71               alignFrame.getViewport().getAlignment().getDataset(), alignFrame
72           );
73         } catch (IOException e)
74         {
75           e.printStackTrace();
76         }
77       }
78     });
79     submenu.add(parametrisedMenuItem);
80
81     wsmenu.add(submenu);
82   }
83
84   @Override
85   public void run()
86   {
87
88   }
89 }