refactored old jalview service code to its own package.
[jalview.git] / src / jalview / ws / jws1 / WS1Client.java
diff --git a/src/jalview/ws/jws1/WS1Client.java b/src/jalview/ws/jws1/WS1Client.java
new file mode 100644 (file)
index 0000000..83ea028
--- /dev/null
@@ -0,0 +1,113 @@
+/**
+ * 
+ */
+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);
+
+}