+ Class clientClass = aaui.getClient();
+
+ // Build an AACon style client - take alignment, return annotation for
+ // columns
+
+ List<AlignCalcWorkerI> clnts = alignFrame.getViewport()
+ .getCalcManager().getRegisteredWorkersOfClass(clientClass);
+ AbstractJabaCalcWorker worker;
+ if (clnts == null || clnts.size() == 0)
+ {
+ if (!processParams(sh, editParams))
+ {
+ return;
+ }
+ try
+ {
+ worker = (AbstractJabaCalcWorker) (clientClass
+ .getConstructor(new Class[] { Jws2Instance.class,
+ AlignFrame.class, WsParamSetI.class, List.class })
+ .newInstance(new Object[] { sh, alignFrame, this.preset,
+ paramset }));
+ } catch (Exception x)
+ {
+ x.printStackTrace();
+ throw new Error(
+ MessageManager.getString("error.implementation_error"), x);
+ }
+ alignFrame.getViewport().getCalcManager().registerWorker(worker);
+ alignFrame.getViewport().getCalcManager().startWorker(worker);
+
+ }
+ else
+ {
+ worker = (AbstractJabaCalcWorker) clnts.get(0);
+ if (editParams)
+ {
+ paramset = worker.getArguments();
+ preset = worker.getPreset();
+ }
+
+ if (!processParams(sh, editParams, true))
+ {
+ return;
+ }
+ // reinstate worker if it was blacklisted (might have happened due to
+ // invalid parameters)
+ alignFrame.getViewport().getCalcManager().workerMayRun(worker);
+ worker.updateParameters(this.preset, paramset);
+ }
+ }
+ if (sh.action.toLowerCase().contains("disorder"))
+ {
+ // build IUPred style client. take sequences, returns annotation per
+ // sequence.