- protected void buildMenu(JMenu parent, AlignFrame frame,
- boolean submitGaps)
- {
- final String action = submitGaps ? "Align" : "Realign";
- final var calcName = service.getName();
-
- String title = frame.getTitle();
- PollingTaskExecutor executor = frame.getViewport().getWSExecutor();
- {
- var item = new JMenuItem(MessageManager.formatMessage(
- "label.calcname_with_default_settings", calcName));
- item.setToolTipText(MessageManager
- .formatMessage("label.action_with_default_settings", action));
- item.addActionListener((event) -> {
- final AlignmentView msa = frame.gatherSequencesForAlignment();
- final AlignViewport viewport = frame.getViewport();
- final AlignmentI alignment = frame.getViewport().getAlignment();
- if (msa != null)
- {
- WebServiceWorkerI worker = new AlignmentWorker(msa,
- Collections.emptyList(), title, submitGaps, true,
- alignment, viewport);
- executor.submit(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_alignment"));
- item.addActionListener((event) -> {
- final AlignmentView msa = frame.gatherSequencesForAlignment();
- final AlignViewport viewport = frame.getViewport();
- final AlignmentI alignment = frame.getViewport().getAlignment();
- if (msa != null)
- {
- openEditParamsDialog(service, null, null)
- .thenAcceptAsync((arguments) -> {
- if (arguments != null)
- {
- WebServiceWorkerI worker = new AlignmentWorker(msa,
- arguments, title, submitGaps, true, alignment,
- viewport);
- executor.submit(worker);
- }
- });
- }
- });
- parent.add(item);
- }
-
- var presets = service.getParamStore().getPresets();
- if (presets != null && presets.size() > 0)
- {
- final var presetList = new JMenu(MessageManager
- .formatMessage("label.run_with_preset_params", calcName));
- final var showToolTipFor = ToolTipManager.sharedInstance()
- .getDismissDelay();
- for (final var preset : presets)
- {
- var item = new JMenuItem(preset.getName());
- final int QUICK_TOOLTIP = 1500;
- item.addMouseListener(new MouseAdapter()
- {
- @Override
- public void mouseEntered(MouseEvent e)
- {
- ToolTipManager.sharedInstance().setDismissDelay(QUICK_TOOLTIP);
- }
-
- @Override
- public void mouseExited(MouseEvent e)
- {
- ToolTipManager.sharedInstance().setDismissDelay(showToolTipFor);
- }
- });
- String tooltip = JvSwingUtils.wrapTooltip(true,
- format("<strong>%s</strong><br/>%s",
- MessageManager.getString(
- preset.isModifiable() ? "label.user_preset"
- : "label.service_preset"),
- preset.getDescription()));
- item.setToolTipText(tooltip);
- item.addActionListener((event) -> {
- final AlignmentView msa = frame.gatherSequencesForAlignment();
- final AlignViewport viewport = frame.getViewport();
- final AlignmentI alignment = frame.getViewport().getAlignment();
- if (msa != null)
- {
- WebServiceWorkerI worker = new AlignmentWorker(msa,
- preset.getArguments(), title, submitGaps, true,
- alignment, viewport);
- executor.submit(worker);
- }
- });
- presetList.add(item);
- }
- parent.add(presetList);
- }
- }
-
- private CompletionStage<List<ArgumentI>> openEditParamsDialog(
- WebServiceI service, WsParamSetI preset,
- List<ArgumentI> arguments)
- {
- WsJobParameters jobParams;
- if (preset == null && arguments != null && arguments.size() > 0)
- jobParams = new WsJobParameters(service.getParamStore(), preset,
- arguments);
- else
- jobParams = new WsJobParameters(service.getParamStore(), preset,
- null);
- 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;
- }
- });
- }