package jalview.ws2.actions;
import java.util.EnumSet;
+import java.util.List;
+import java.util.Objects;
+import jalview.gui.AlignViewport;
+import jalview.viewmodel.AlignmentViewport;
+import jalview.ws.params.ArgumentI;
import jalview.ws2.actions.api.ActionI;
+import jalview.ws2.actions.api.TaskEventListener;
+import jalview.ws2.actions.api.TaskI;
import jalview.ws2.api.CredentialType;
+import jalview.ws2.api.Credentials;
+import jalview.ws2.api.WebService;
/**
* An abstract base class storing common data and implementing their getters
* {@code isActive} implementations.
*
* @author mmwarowny
- *
- * @param <T>
+ * @param <R>
* task result type
*/
-public abstract class BaseAction<T> implements ActionI<T>
+public abstract class BaseAction<R> implements ActionI<R>
{
- public static class Builder
+ public static abstract class Builder<A extends BaseAction<?>>
{
- protected String name;
+ protected WebService<A> webService;
+
+ protected String name = null;
protected String tooltip = "";
protected EnumSet<CredentialType> requiredCredentials = EnumSet.noneOf(CredentialType.class);
- public Builder(String name)
+ public Builder()
+ {
+ }
+
+ public void name(String val)
+ {
+ this.name = val;
+ }
+
+ public void webService(WebService<A> val)
{
- this.name = name;
+ this.webService = val;
}
public void tooltip(String val)
}
}
+ protected final WebService<? extends ActionI<R>> webService;
+
protected final String name;
protected final String tooltip;
protected final EnumSet<CredentialType> requiredCredentials;
- protected BaseAction(Builder builder)
+ protected BaseAction(Builder<? extends BaseAction<R>> builder)
{
+ Objects.requireNonNull(builder.webService);
+ this.webService = builder.webService;
this.name = builder.name;
this.tooltip = builder.tooltip;
this.subcategory = builder.subcategory;
this.requiredCredentials = builder.requiredCredentials;
}
- public static Builder newBuilder(String name)
+ @Override
+ public WebService<? extends ActionI<R>> getWebService()
{
- return new Builder(name);
+ return webService;
}
@Override
return name;
}
+ /**
+ * Returns a full name of the action which comprises of the service name and
+ * the action name if present.
+ *
+ * @return full name of this action
+ */
+ public String getFullName()
+ {
+ if (name == null || name.isEmpty())
+ return webService.getName();
+ else
+ return webService.getName() + " " + name;
+ }
+
@Override
public String getTooltip()
{