/** * */ package jalview.ws; import jalview.gui.AlignFrame; import jalview.gui.WebserviceInfo; import javax.swing.JMenu; import ext.vamsas.ServiceHandle; /** * JWS1 Specific UI attributes and methods * @author JimP * */ public abstract class WS1Client extends WSClient implements WSMenuEntryProviderI { /** * original service handle that this client was derived from */ ServiceHandle serviceHandle = null; /** * default constructor */ public WS1Client() { super(); } /** * 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); } /** * 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()); } else { WebServiceJobTitle = sh.getAbstractName() + " using " + sh.getName(); } WebServiceReference = sh.getDescription(); WsURL = sh.getEndpointURL(); 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 concrete WS1Client 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); }