import jalview.gui.JvSwingUtils;
import jalview.util.MessageManager;
import jalview.ws.api.ServiceWithParameters;
-import jalview.ws.jws2.dm.AAConSettings;
-import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.AutoCalcSetting;
import jalview.ws.params.WsParamSetI;
import jalview.ws.uimodel.AlignAnalysisUIText;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
+import java.util.Locale;
+
import javax.swing.JMenu;
import javax.swing.JMenuItem;
// TODO Auto-generated constructor stub
}
- public SequenceAnnotationWSClient(final Jws2Instance sh,
+ public SequenceAnnotationWSClient(final ServiceWithParameters sh,
AlignFrame alignFrame, WsParamSetI preset, boolean editParams)
{
super(alignFrame, preset, null);
// dan think. Do I need to change this method to run RNAalifold through the
// GUI
- public void initSequenceAnnotationWSClient(final ServiceWithParameters sh,
- AlignFrame alignFrame, WsParamSetI preset, boolean editParams)
+ private void initSequenceAnnotationWSClient(final ServiceWithParameters sh,
+ AlignFrame alignFrame, final WsParamSetI preset, boolean editParams)
{
// dan changed! dan test. comment out if conditional
// if (alignFrame.getViewport().getAlignment().isNucleotide())
// columns
List<AlignCalcWorkerI> clnts = alignFrame.getViewport()
- .getCalcManager()
- .getRegisteredWorkersOfClass(SeqAnnotationServiceCalcWorker.class);
+ .getCalcManager()
+ .getWorkersOfClass(SeqAnnotationServiceCalcWorker.class);
- SeqAnnotationServiceCalcWorker worker = null;
+ SeqAnnotationServiceCalcWorker tmpworker = null;
if (clnts != null)
{
for (AlignCalcWorkerI _worker : clnts)
{
- worker = (SeqAnnotationServiceCalcWorker) _worker;
- if (worker.hasService()
- && worker.getService().getClass().equals(clientClass))
+ tmpworker = (SeqAnnotationServiceCalcWorker) _worker;
+ if (tmpworker.hasService()
+ && tmpworker.getService().getClass().equals(clientClass))
{
break;
}
- worker = null;
+ tmpworker = null;
}
}
+ final var worker = tmpworker;
if (worker == null)
{
- if (!processParams(sh, editParams))
- {
- return;
- }
- try
- {
- worker = new SeqAnnotationServiceCalcWorker(sh, alignFrame, this.preset,
+ processParams(sh, editParams).thenAccept((startJob) -> {
+ if (startJob)
+ {
+ final SeqAnnotationServiceCalcWorker worker_;
+ try
+ {
+ worker_ = new SeqAnnotationServiceCalcWorker(sh, alignFrame, this.preset,
paramset);
- } catch (Exception x)
- {
- x.printStackTrace();
- throw new Error(
+ } catch (Exception x)
+ {
+ x.printStackTrace();
+ throw new Error(
MessageManager.getString("error.implementation_error"),
x);
- }
- alignFrame.getViewport().getCalcManager().registerWorker(worker);
- alignFrame.getViewport().getCalcManager().startWorker(worker);
+ }
+ alignFrame.getViewport().getCalcManager().registerWorker(worker_);
+ // also starts the worker
+ startSeqAnnotationWorker(sh, alignFrame, preset, editParams);
+ }
+ });
}
else
{
+ WsParamSetI preset_;
if (editParams)
{
paramset = worker.getArguments();
- preset = worker.getPreset();
+ preset_ = worker.getPreset();
}
-
- if (!processParams(sh, editParams, true))
+ else
{
- return;
+ preset_ = preset;
}
- // reinstate worker if it was blacklisted (might have happened due to
- // invalid parameters)
- alignFrame.getViewport().getCalcManager().enableWorker(worker);
- worker.updateParameters(this.preset, paramset);
+ processParams(sh, editParams, true).thenAccept((startJob) -> {
+ if (startJob)
+ {
+ // reinstate worker if it was blacklisted (might have happened due
+ // to
+ // invalid parameters)
+ alignFrame.getViewport().getCalcManager().enableWorker(worker);
+ worker.updateParameters(this.preset, paramset);
+ startSeqAnnotationWorker(sh, alignFrame, preset_, editParams);
+ }
+ });
}
}
- if (sh.getAction().toLowerCase().contains("disorder"))
+ else
+ {
+ startSeqAnnotationWorker(sh, alignFrame, preset, editParams);
+ }
+ }
+
+ private void startSeqAnnotationWorker(ServiceWithParameters sh,
+ AlignFrame alignFrame, WsParamSetI preset, boolean editParams)
+ {
+ if (!sh.isInteractiveUpdate())
{
// build IUPred style client. take sequences, returns annotation per
// sequence.
- if (!processParams(sh, editParams))
- {
- return;
- }
-
- alignFrame.getViewport().getCalcManager().startWorker(
+ processParams(sh, editParams).thenAccept((startJob) -> {
+ if (startJob)
+ {
+ alignFrame.getViewport().getCalcManager().startWorker(
new SeqAnnotationServiceCalcWorker(sh, alignFrame, preset, paramset));
+ }
+ });
}
}
- public SequenceAnnotationWSClient(AAConSettings fave,
+ public SequenceAnnotationWSClient(AutoCalcSetting fave,
AlignFrame alignFrame, boolean b)
{
super(alignFrame, fave.getPreset(), fave.getArgumentSet());
final ServiceWithParameters service,
final AlignFrame alignFrame)
{
- if (Jws2ClientFactory.registerAAConWSInstance(wsmenu, service,
- alignFrame))
+ if (Jws2ClientFactory.registerAAConWSInstance(wsmenu,
+ service, alignFrame))
{
// Alignment dependent analysis calculation WS gui
return;
}
boolean hasparams = service.hasParameters();
- // Assume name ends in WS
- String calcName = service.getName().substring(0,
- service.getName().length() - 2);
+ String calcName = service.getName();
+ if (calcName.endsWith("WS"))
+ {
+ // Remove "WS" suffix
+ calcName = calcName.substring(0, calcName.length() - 2);
+ }
JMenuItem annotservice = new JMenuItem(MessageManager.formatMessage(
"label.calcname_with_default_settings", new String[]
@Override
public void actionPerformed(ActionEvent e)
{
- new SequenceAnnotationWSClient((Jws2Instance) service, alignFrame,
+ new SequenceAnnotationWSClient(service, alignFrame,
null, false);
}
});
@Override
public void actionPerformed(ActionEvent e)
{
- new SequenceAnnotationWSClient((Jws2Instance) service, alignFrame,
+ new SequenceAnnotationWSClient(service, alignFrame,
null, true);
}
});
@Override
public void actionPerformed(ActionEvent e)
{
- new SequenceAnnotationWSClient((Jws2Instance) service,
+ new SequenceAnnotationWSClient(service,
alignFrame, preset,
false);
}
@Override
public void actionPerformed(ActionEvent arg0)
{
- Desktop.instance.showUrl(service.getDocumentationUrl());
+ Desktop.getInstance().showUrl(service.getDocumentationUrl());
}
});
annotservice.setToolTipText(