X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FJPredClient.java;fp=src%2Fjalview%2Fws%2FJPredClient.java;h=f431a0c62717127f81af0a7cec4844d71c46cdc2;hb=992a0adb0deed8313fde7cad88837355336e58a5;hp=0000000000000000000000000000000000000000;hpb=e23c809d6cd203187c5f65efd03741ec4cb637be;p=jalview.git diff --git a/src/jalview/ws/JPredClient.java b/src/jalview/ws/JPredClient.java new file mode 100644 index 0000000..f431a0c --- /dev/null +++ b/src/jalview/ws/JPredClient.java @@ -0,0 +1,67 @@ +package jalview.ws; + +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.api.JPredMutlipleAlignmentServiceI; +import jalview.ws.api.ServiceWithParameters; + +public class JPredClient extends WSClient +{ + JPredMutlipleAlignmentServiceI server; + + public JPredClient(ServiceWithParameters sh, String title, + AlignmentView alView, AlignFrame alFrame, boolean viewOnly) + { + server = (JPredMutlipleAlignmentServiceI) 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('-'); + if (msf.length <= 1) + throw new RuntimeException("You need more than one sequence."); + var aln = new SequenceI[msf.length]; + for (int i = 0; i < msf.length; i++) + { + aln[i] = msf[i].getSeq('-'); + } + int[] delMap = viewOnly ? + view.getVisibleContigMapFor(seq.gapMap()) : null; + var sequenceInfo = SeqsetUtils.uniquify(aln, true); + 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(); + if (view.getSequences().length > 1) + { + new JPredClient(sh, frame.getTitle(), view, frame, true); + } + else + { + Cache.log.error("Single sequence not supported"); + } + }); + menu.add(mi); + }; + } +}