X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FWSClient.java;h=91fd4b0e704be0551ea36483e38f70b5cb91c6dc;hb=f683f4d6c8af43be0ffeb96513b52572619efed5;hp=17f51c02ac79c5c4a2e67091ae0feaa570ce9c8d;hpb=174230b4233d9ce80f94527768d2cd2f76da11ab;p=jalview.git diff --git a/src/jalview/ws/WSClient.java b/src/jalview/ws/WSClient.java index 17f51c0..91fd4b0 100755 --- a/src/jalview/ws/WSClient.java +++ b/src/jalview/ws/WSClient.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -18,37 +18,75 @@ */ package jalview.ws; +import javax.swing.JMenu; + +import ext.vamsas.*; import jalview.gui.*; -import ext.vamsas.ServiceHandle; -public class WSClient +public abstract class WSClient { /** - * MsaWSClient - * - * @param msa SequenceI[] + * WSClient holds the basic attributes that are displayed to the user + * for all jalview web service clients + */ + /** + * displayed name for this web service */ protected String WebServiceName; + /** + * specific job title (e.g. 'ClustalW Alignment of Selection from Aligment from Cut and Paste input') + */ protected String WebServiceJobTitle; + /** + * String giving additional information such as method citations for this service + */ protected String WebServiceReference; + /** + * Service endpoint + */ protected String WsURL; + /** + * Web service information used to initialise the WSClient attributes + */ protected WebserviceInfo wsInfo; + /** + * total number of jobs managed by this web service client instance. + */ int jobsRunning = 0; /** + * TODO: this is really service metadata, and should be moved elsewhere. * mappings between abstract interface names and menu entries */ protected java.util.Hashtable ServiceActions; { - ServiceActions = new java.util.Hashtable(); - ServiceActions.put("MsaWS", "Multiple Sequence Alignment"); - ServiceActions.put("SecStrPred", "Secondary Structure Prediction"); + ServiceActions = new java.util.Hashtable(); + ServiceActions.put("MsaWS", "Multiple Sequence Alignment"); + ServiceActions.put("SecStrPred", "Secondary Structure Prediction"); }; public WSClient() { } - + /** + * initialise WSClient service information attributes from the service handle + * @param sh + * @return the service instance information GUI for this client and job. + */ protected WebserviceInfo setWebService(ServiceHandle sh) { + return setWebService(sh, false); + } + /** + * original service handle that this client was derived from + */ + ServiceHandle serviceHandle=null; + /** + * initialise WSClient service information attributes from the service handle + * @param sh + * @param headless true implies no GUI objects will be created. + * @return the service instance information GUI for this client and job. + */ + protected WebserviceInfo setWebService(ServiceHandle sh, boolean headless) + { WebServiceName = sh.getName(); if (ServiceActions.containsKey(sh.getAbstractName())) { @@ -57,14 +95,39 @@ public class WSClient } else { - WebServiceJobTitle = sh.getAbstractName()+" using "+sh.getName(); + WebServiceJobTitle = sh.getAbstractName() + " using " + sh.getName(); } WebServiceReference = sh.getDescription(); WsURL = sh.getEndpointURL(); - WebserviceInfo wsInfo = new WebserviceInfo(WebServiceJobTitle, + WebserviceInfo wsInfo = null; + if (!headless) + { + wsInfo = new WebserviceInfo(WebServiceJobTitle, WebServiceReference); - + } return wsInfo; } + /** + * convenience method to pass the serviceHandle reference that instantiated this + * service on to the menu entry constructor + * @param wsmenu the menu to which any menu entries/sub menus are to be attached + * @param alignFrame the alignFrame instance that provides input data for the service + */ + public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame) + { + if (serviceHandle==null) + { + throw new Error("IMPLEMENTATION ERROR: cannot attach WS Menu Entry without service handle reference!"); + } + attachWSMenuEntry(wsmenu, serviceHandle, alignFrame); + } + /** + * method implemented by each WSClient implementation that creates menu entries that enact their service + * using data from alignFrame. + * @param wsmenu where new menu entries (and submenus) are to be attached + * @param serviceHandle the serviceHandle document for the service that entries are created for + * @param alignFrame + */ + public abstract void attachWSMenuEntry(JMenu wsmenu, final ServiceHandle serviceHandle, final AlignFrame alignFrame); }