X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws2%2Foperations%2FAnnotationOperation.java;h=c1d2c7e2f9be7c7f4e9c2c03c7c2d1ce95f27bfc;hb=12dc7e70977962f00e584b39eda098897d51f432;hp=55ed03b4f6cd35008e210f54ce5da30ab92744d3;hpb=9a5c8af21bd813e0c62ffcd7e4c0c3e2c33b9947;p=jalview.git diff --git a/src/jalview/ws2/operations/AnnotationOperation.java b/src/jalview/ws2/operations/AnnotationOperation.java index 55ed03b..c1d2c7e 100644 --- a/src/jalview/ws2/operations/AnnotationOperation.java +++ b/src/jalview/ws2/operations/AnnotationOperation.java @@ -21,11 +21,13 @@ 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; /** * @@ -65,6 +67,12 @@ public class AnnotationOperation implements Operation { return service.getName(); } + + @Override + public String getDescription() + { + return service.getDescription(); + } @Override public String getTypeName() @@ -77,6 +85,18 @@ public class AnnotationOperation implements Operation { return service.getHostName(); } + + @Override + public boolean hasParameters() + { + return service.hasParameters(); + } + + @Override + public ParamDatastoreI getParamStore() + { + return service.getParamStore(); + } @Override public int getMinSequences() @@ -145,119 +165,9 @@ public class AnnotationOperation implements Operation @Override public MenuEntryProviderI getMenuBuilder() { - if (isInteractive()) - return this::buildInteractiveMenu; - else - return this::buildClassicMenu; - } - - protected void buildClassicMenu(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) -> { - var worker = createWorker(Collections.emptyList(), frame, calcManager); - 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) - { - var worker = createWorker(arguments, frame, calcManager); - calcManager.startWorker(worker); - } - }); - }); - parent.add(item); - } - } - - protected void buildInteractiveMenu(JMenu parent, AlignFrame frame) - { - final var calcName = service.getName(); - final var calcManager = frame.getViewport().getCalcManager(); - final var arguments = new ArrayList(); - final JCheckBoxMenuItem runItem; - { - // TODO use MessageManager and set tool tip text - runItem = new JCheckBoxMenuItem( - String.format("%s calculations", calcName)); - runItem.addActionListener((event) -> { - calcManager.removeWorkersForName(calcName); - var worker = createWorker(arguments, frame, calcManager); - calcManager.registerWorker(worker); - }); - parent.add(runItem); - } - JMenuItem _editItem = null; - if (service.hasParameters()) - { - // TODO use MessageManager and set tool tip text - _editItem = new JMenuItem( - String.format("Edit %s settings", calcName)); - _editItem.addActionListener((event) -> { - openEditParamsDialog(service, null, null) - .thenAcceptAsync((args) -> { - if (arguments != null) - { - arguments.clear(); - arguments.addAll(args); - calcManager.removeWorkersForName(calcName); - var worker = createWorker(arguments, frame, calcManager); - calcManager.registerWorker(worker); - } - }); - }); - parent.add(_editItem); - } - final var editItem = _editItem; - - parent.addMenuListener(new MenuListener() - { - @Override - public void menuSelected(MenuEvent e) - { - var isNuc = frame.getViewport().getAlignment().isNucleotide(); - var menuEnabled = (isNuc && isNucleotideOperation()) || - (!isNuc && isProteinOperation()); - runItem.setEnabled(menuEnabled); - if (editItem != null) - editItem.setEnabled(menuEnabled); - boolean currentlyRunning = calcManager.getWorkersForName(calcName).size() > 0; - runItem.setSelected(currentlyRunning); - } - - @Override - public void menuDeselected(MenuEvent e) {} - - @Override - public void menuCanceled(MenuEvent e) {} - }); + return new AnnotationMenuBuilder(this); } - private AnnotationServiceWorker createWorker( - List arguments, AlignFrame frame, AlignCalcManagerI2 calcManager) - { - /* What is the purpose of AlignViewport and AlignmentViewPanel? */ - AlignViewport viewport = frame.getCurrentView(); - AlignmentViewPanel alignPanel = frame.alignPanel; - return new AnnotationServiceWorker(this, service, - arguments, viewport, alignPanel, frame, frame, - calcManager); - } private CompletionStage> openEditParamsDialog( WebServiceI service, WsParamSetI preset, List arguments)