+ List<AlignCalcWorkerI> clnts = alignFrame.getViewport()
+ .getCalcManager()
+ .getRegisteredWorkersOfClass(RNAalifoldClient.class);
+ if (clnts == null || clnts.size() == 0)
+ {
+ if (!processParams(sh, editParams))
+ {
+ return;
+ }
+ RNAalifoldClient worker;
+ alignFrame
+ .getViewport()
+ .getCalcManager()
+ .registerWorker(
+ worker = new RNAalifoldClient(sh, alignFrame,
+ this.preset, paramset));
+ alignFrame.getViewport().getCalcManager().startWorker(worker);
+ }
+ else
+ {
+ RNAalifoldClient worker = (RNAalifoldClient) 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 (!processParams(sh, editParams, true))
+// {
+// return;
+// }
+//
+// alignFrame
+// .getViewport()
+// .getCalcManager()
+// .startWorker(
+// new RNAalifoldClient(sh, alignFrame, preset, paramset));
+//
+