X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws2%2Fgui%2FWebServicesMenuManager.java;h=f9b8c0276b5cea8258d8926a790bf25d8b19f8a0;hb=01454522de50064eb4439153c0584bd19db36e78;hp=516f0ba55f17f96da1fa52c49dde4fa52ab99322;hpb=4e47d166b44617b1cb3cabc3ea3ed72f1a0ad545;p=jalview.git diff --git a/src/jalview/ws2/gui/WebServicesMenuManager.java b/src/jalview/ws2/gui/WebServicesMenuManager.java index 516f0ba..f9b8c02 100644 --- a/src/jalview/ws2/gui/WebServicesMenuManager.java +++ b/src/jalview/ws2/gui/WebServicesMenuManager.java @@ -21,6 +21,8 @@ import javax.swing.JMenuItem; import javax.swing.ToolTipManager; import javax.swing.border.EmptyBorder; +import jalview.bin.Console; +import jalview.datamodel.AlignmentI; import jalview.gui.AlignFrame; import jalview.gui.Desktop; import jalview.gui.JvSwingUtils; @@ -37,7 +39,9 @@ import jalview.ws2.actions.alignment.AlignmentResult; import jalview.ws2.actions.annotation.AlignCalcWorkerAdapter; import jalview.ws2.actions.annotation.AnnotationAction; import jalview.ws2.actions.api.ActionI; +import jalview.ws2.actions.api.TaskEventListener; import jalview.ws2.actions.api.TaskI; +import jalview.ws2.actions.hmmer.PhmmerAction; import jalview.ws2.api.Credentials; import jalview.ws2.api.WebService; import jalview.ws2.client.api.WebServiceProviderI; @@ -171,6 +175,7 @@ public class WebServicesMenuManager private void addEntriesForAction(ActionI action, JMenu menu, boolean isTopLevel) { + var enabled = isActionEnabled(action); var service = action.getWebService(); String itemName; if (isTopLevel) @@ -192,6 +197,7 @@ public class WebServicesMenuManager if (datastore.hasParameters() || datastore.hasPresets()) text += " with defaults"; JMenuItem item = new JMenuItem(text); + item.setEnabled(enabled); item.addActionListener(e -> { runAction(action, frame.getCurrentView(), Collections.emptyList(), Credentials.empty()); @@ -201,6 +207,7 @@ public class WebServicesMenuManager if (datastore.hasParameters()) { JMenuItem item = new JMenuItem("Edit settings and run..."); + item.setEnabled(enabled); item.addActionListener(e -> { openEditParamsDialog(datastore, null, null).thenAccept(args -> { if (args != null) @@ -214,6 +221,7 @@ public class WebServicesMenuManager { final var presetsMenu = new JMenu(MessageManager.formatMessage( "label.run_with_preset_params", service.getName())); + presetsMenu.setEnabled(enabled); final int dismissDelay = ToolTipManager.sharedInstance() .getDismissDelay(); final int QUICK_TOOLTIP = 1500; @@ -338,6 +346,7 @@ public class WebServicesMenuManager for (ActionI action : actions) { var item = new JMenuItem(action.getFullName()); + item.setEnabled(isActionEnabled(action)); item.addActionListener(e -> setAlternative(action)); atMenu.add(item); } @@ -424,6 +433,12 @@ public class WebServicesMenuManager } } + private boolean isActionEnabled(ActionI action) + { + var isNa = frame.getViewport().getAlignment().isNucleotide(); + return ((isNa && action.doAllowNucleotide()) || + (!isNa && action.doAllowProtein())); + } private void runAction(ActionI action, AlignmentViewport viewport, List args, Credentials credentials) @@ -465,8 +480,23 @@ public class WebServicesMenuManager calcManager.startWorker(worker); return; } - throw new IllegalArgumentException( - String.format("Illegal action type %s", action.getClass().getName())); + if (action instanceof PhmmerAction) + { + var _action = (PhmmerAction) action; + var handler = new SearchServiceGuiHandler(_action, frame); + TaskI task = _action.createTask(viewport, args, credentials); + var executor = PollingTaskExecutor.fromPool(viewport.getServiceExecutor()); + task.addTaskEventListener(handler); + _action.perform(viewport, args, credentials, handler); + return; + } + Console.warn(String.format( + "No known handler for action type %s. All output will be discarded.", + action.getClass().getName())); + var task = action.createTask(viewport, args, credentials); + task.addTaskEventListener(TaskEventListener.nullListener()); + PollingTaskExecutor.fromPool(viewport.getServiceExecutor()) + .submit(task); } private static CompletionStage> openEditParamsDialog(