X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2FWSClient.java;h=e883ea465bf9976d8d9df0a479e0665e1ae42033;hb=506d60f0e188723ddc91c26824b41ac7034df3fe;hp=29a8b9244cc1240ca3adde2aa5851df1595a06b6;hpb=6652334084a8900307745466b3188c86616793fa;p=jalview.git diff --git a/src/jalview/ws/WSClient.java b/src/jalview/ws/WSClient.java index 29a8b92..e883ea4 100755 --- a/src/jalview/ws/WSClient.java +++ b/src/jalview/ws/WSClient.java @@ -1,56 +1,66 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle - * + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4) + * Copyright (C) 2008 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 * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ package jalview.ws; +import javax.swing.JMenu; + import ext.vamsas.*; import jalview.gui.*; -public class WSClient +public abstract class WSClient { /** - * WSClient holds the basic attributes that are displayed to the user - * for all jalview web service clients + * 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') + * 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 + * 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. + * 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 @@ -61,11 +71,14 @@ public class WSClient 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. */ @@ -73,19 +86,29 @@ public class WSClient { return setWebService(sh, false); } - /** - * 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. - */ + + /** + * 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())) { - WebServiceJobTitle = sh.getName(); // TODO: control sh.Name specification properly - // add this for short names. +(String) ServiceActions.get(sh.getAbstractName()); + WebServiceJobTitle = sh.getName(); // TODO: control sh.Name specification + // properly + // add this for short names. +(String) + // ServiceActions.get(sh.getAbstractName()); } else { @@ -97,9 +120,43 @@ public class WSClient WebserviceInfo wsInfo = null; if (!headless) { - wsInfo = new WebserviceInfo(WebServiceJobTitle, - WebServiceReference); + 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); }