package jalview.ws2.operations;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletionStage;
+import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
+import javax.swing.event.MenuEvent;
+import javax.swing.event.MenuListener;
+import jalview.api.AlignCalcManagerI2;
import jalview.api.AlignmentViewPanel;
import jalview.datamodel.AlignmentAnnotation;
import jalview.gui.AlignFrame;
import jalview.gui.AlignViewport;
import jalview.gui.WsJobParameters;
import jalview.io.FeaturesFile;
+import jalview.util.Format;
import jalview.util.MessageManager;
import jalview.ws.params.ArgumentI;
+import jalview.ws.params.ParamDatastoreI;
import jalview.ws.params.WsParamSetI;
import jalview.ws2.MenuEntryProviderI;
import jalview.ws2.ResultSupplier;
import jalview.ws2.PollingTaskExecutor;
import jalview.ws2.WebServiceI;
+import jalview.ws2.gui.AnnotationMenuBuilder;
/**
*
{
return service.getName();
}
+
+ @Override
+ public String getDescription()
+ {
+ return service.getDescription();
+ }
@Override
public String getTypeName()
{
return service.getHostName();
}
+
+ @Override
+ public boolean hasParameters()
+ {
+ return service.hasParameters();
+ }
+
+ @Override
+ public ParamDatastoreI getParamStore()
+ {
+ return service.getParamStore();
+ }
@Override
public int getMinSequences()
@Override
public MenuEntryProviderI getMenuBuilder()
{
- return this::buildMenu;
+ return new AnnotationMenuBuilder(this);
}
- protected void buildMenu(JMenu parent, AlignFrame frame)
- {
- final var calcName = service.getName();
- PollingTaskExecutor wsExecutor = frame.getViewport().getWSExecutor();
- final var calcManager = frame.getViewport().getCalcManager();
- {
- var item = new JMenuItem(MessageManager.formatMessage(
- "label.calcname_with_default_settings", calcName));
- item.addActionListener((event) -> {
- /* What is the purpose of AlignViewport and AlignmentViewPanel? */
- AlignViewport viewport = frame.getCurrentView();
- AlignmentViewPanel alignPanel = frame.alignPanel;
- var worker = new AnnotationServiceWorker(this, service,
- Collections.emptyList(), viewport, alignPanel, frame, frame,
- calcManager);
- if (isInteractive())
- calcManager.registerWorker(worker);
- else
- calcManager.startWorker(worker);
- });
- parent.add(item);
- }
- if (service.hasParameters())
- {
- var item = new JMenuItem(
- MessageManager.getString("label.edit_settings_and_run"));
- item.setToolTipText(MessageManager.getString(
- "label.view_and_change_parameters_before_running_calculation"));
- item.addActionListener((event) -> {
- openEditParamsDialog(service, null, null)
- .thenAcceptAsync((arguments) -> {
- if (arguments != null)
- {
- AlignViewport viewport = frame.getCurrentView();
- AlignmentViewPanel alignPanel = frame.alignPanel;
- var worker = new AnnotationServiceWorker(
- AnnotationOperation.this, service, arguments, viewport,
- alignPanel, frame, frame, calcManager);
- if (isInteractive())
- calcManager.registerWorker(worker);
- else
- calcManager.startWorker(worker);
- }
- });
- });
- parent.add(item);
- }
- }
private CompletionStage<List<ArgumentI>> openEditParamsDialog(
WebServiceI service, WsParamSetI preset, List<ArgumentI> arguments)