--- /dev/null
+/**
+ *
+ */
+package jalview.ws.jws1;
+
+import jalview.gui.AlignFrame;
+import jalview.gui.WebserviceInfo;
+import jalview.ws.WSClient;
+import jalview.ws.WSMenuEntryProviderI;
+
+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);
+
+}