package jalview.ws2.operations; import java.util.List; import java.util.concurrent.CompletionStage; import javax.swing.JMenu; import javax.swing.JMenuItem; import jalview.bin.Cache; import jalview.gui.AlignFrame; import jalview.gui.WsJobParameters; import jalview.util.MessageManager; import jalview.ws.params.ArgumentI; import jalview.ws.params.ParamDatastoreI; import jalview.ws.params.WsParamSetI; import jalview.ws2.WebServiceI; import jalview.ws2.gui.MenuEntryProviderI; public class OperationStub extends AbstractOperation { public OperationStub(WebServiceI service, String typeName) { super(service, typeName); } @Override public MenuEntryProviderI getMenuBuilder() { return this::buildMenu; } public void buildMenu(JMenu parent, AlignFrame frame) { { var item = new JMenuItem(MessageManager.formatMessage( "label.calcname_with_default_settings", getName())); item.addActionListener((event) -> { Cache.log.info(String.format("Starting service %s.", getName())); }); parent.add(item); } if (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(getParamStore(), null, null) .thenAcceptAsync((arguments) -> { if (arguments != null) { Cache.log.info(String.format("Starting service %s with custom parameters.", getName())); } }); }); parent.add(item); } } private CompletionStage> openEditParamsDialog( ParamDatastoreI paramStore, WsParamSetI preset, List arguments) { WsJobParameters jobParams; if (preset == null && arguments != null && arguments.size() > 0) jobParams = new WsJobParameters(paramStore, preset, arguments); else jobParams = new WsJobParameters(paramStore, preset, null); if (preset != null) { jobParams.setName(MessageManager.getString( "label.adjusting_parameters_for_calculation")); } var stage = jobParams.showRunDialog(); return stage.thenApply((startJob) -> { if (startJob) { if (jobParams.getPreset() == null) { return jobParams.getJobParams(); } else { return jobParams.getPreset().getArguments(); } } else { return null; } }); } }