X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2FJPredClient.java;fp=src%2Fjalview%2Fws%2Fjws2%2FJPredClient.java;h=1413dfe03f049892c7152f1f7ac9ccb3684ea986;hb=eb6d7c560434c986f1dc76f6243d1493688f397e;hp=0000000000000000000000000000000000000000;hpb=e1ec9d45cb7e3c1e5258dd8135a269dab535cde3;p=jalview.git diff --git a/src/jalview/ws/jws2/JPredClient.java b/src/jalview/ws/jws2/JPredClient.java new file mode 100644 index 0000000..1413dfe --- /dev/null +++ b/src/jalview/ws/jws2/JPredClient.java @@ -0,0 +1,69 @@ +package jalview.ws.jws2; + +import javax.swing.JMenuItem; + +import jalview.analysis.SeqsetUtils; +import jalview.bin.Cache; +import jalview.datamodel.AlignmentView; +import jalview.datamodel.SequenceI; +import jalview.gui.AlignFrame; +import jalview.ws.WSClient; +import jalview.ws.WSMenuEntryProviderI; +import jalview.ws.api.JPredServiceI; +import jalview.ws.api.ServiceWithParameters; + +public class JPredClient extends WSClient +{ + JPredServiceI server; + + public JPredClient(ServiceWithParameters sh, String title, + AlignmentView alView, AlignFrame alFrame, boolean viewOnly) + { + server = (JPredServiceI) sh.getEndpoint(); + wsInfo = setWebService(sh, false); + startClient(title, alView, alFrame, viewOnly); + } + + private void startClient(String title, AlignmentView view, + AlignFrame frame, boolean viewOnly) + { + var msf = view.getSequences(); + var seq = msf[0].getSeq('-'); + int[] delMap = null; + if (viewOnly) + delMap = view.getVisibleContigMapFor(seq.gapMap()); + var aln = new SequenceI[msf.length]; + for (int i = 0; i < msf.length; i++) + { + aln[i] = msf[i].getSeq('-'); + } + var sequenceInfo = msf.length > 1 ? SeqsetUtils.uniquify(aln, true) + : SeqsetUtils.SeqCharacterHash(seq); + if (viewOnly) + { + String seqs[] = view.getSequenceStrings('-'); + for (int i = 0; i < msf.length; i++) + aln[i].setSequence(seqs[i]); + seq.setSequence(seqs[0]); + } + var thread = new JPredThread(wsInfo, title, server, sequenceInfo, aln, + delMap, view, frame, WsURL); + wsInfo.setthisService(thread); + wsInfo.setVisible(true); + thread.start(); + } + + // sh parameter should be moved to the WSMenuEntryProvider interface + public static WSMenuEntryProviderI getMenuEntryProvider(ServiceWithParameters sh) + { + return (menu, frame) -> { + final JMenuItem mi = new JMenuItem(sh.getName()); + mi.setToolTipText(sh.getHostURL()); + mi.addActionListener((event) -> { + var view = frame.gatherSeqOrMsaForSecStrPrediction(); + new JPredClient(sh, frame.getTitle(), view, frame, true); + }); + menu.add(mi); + }; + } +}