1 package jalview.ws.jws2;
3 import javax.swing.JMenuItem;
5 import jalview.analysis.SeqsetUtils;
6 import jalview.bin.Cache;
7 import jalview.datamodel.AlignmentView;
8 import jalview.datamodel.SequenceI;
9 import jalview.gui.AlignFrame;
10 import jalview.ws.WSClient;
11 import jalview.ws.WSMenuEntryProviderI;
12 import jalview.ws.api.JPredServiceI;
13 import jalview.ws.api.ServiceWithParameters;
15 public class JPredClient extends WSClient
19 public JPredClient(ServiceWithParameters sh, String title,
20 AlignmentView alView, AlignFrame alFrame, boolean viewOnly)
22 server = (JPredServiceI) sh.getEndpoint();
23 wsInfo = setWebService(sh, false);
24 startClient(title, alView, alFrame, viewOnly);
27 private void startClient(String title, AlignmentView view,
28 AlignFrame frame, boolean viewOnly)
30 var msf = view.getSequences();
31 var seq = msf[0].getSeq('-');
34 delMap = view.getVisibleContigMapFor(seq.gapMap());
35 var aln = new SequenceI[msf.length];
36 for (int i = 0; i < msf.length; i++)
38 aln[i] = msf[i].getSeq('-');
40 var sequenceInfo = msf.length > 1 ? SeqsetUtils.uniquify(aln, true)
41 : SeqsetUtils.SeqCharacterHash(seq);
44 String seqs[] = view.getSequenceStrings('-');
45 for (int i = 0; i < msf.length; i++)
46 aln[i].setSequence(seqs[i]);
47 seq.setSequence(seqs[0]);
49 var thread = new JPredThread(wsInfo, title, server, sequenceInfo, aln,
50 delMap, view, frame, WsURL);
51 wsInfo.setthisService(thread);
52 wsInfo.setVisible(true);
56 // sh parameter should be moved to the WSMenuEntryProvider interface
57 public static WSMenuEntryProviderI getMenuEntryProvider(ServiceWithParameters sh)
59 return (menu, frame) -> {
60 final JMenuItem mi = new JMenuItem(sh.getName());
61 mi.setToolTipText(sh.getHostURL());
62 mi.addActionListener((event) -> {
63 var view = frame.gatherSeqOrMsaForSecStrPrediction();
64 new JPredClient(sh, frame.getTitle(), view, frame, true);