X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2FAbstractJabaCalcWorker.java;h=2d9137790fb8ffe37b1f6eaa35ae92fd182c87a0;hb=53e0350c1c4464442938e4bace4e85bdbca665be;hp=c691fee7b36ea7904fcf9d5a151f198ef441594e;hpb=fda3adcb9abc603b03188404f532a5bc8097dd55;p=jalview.git diff --git a/src/jalview/ws/jws2/AbstractJabaCalcWorker.java b/src/jalview/ws/jws2/AbstractJabaCalcWorker.java index c691fee..2d91377 100644 --- a/src/jalview/ws/jws2/AbstractJabaCalcWorker.java +++ b/src/jalview/ws/jws2/AbstractJabaCalcWorker.java @@ -30,6 +30,7 @@ import jalview.datamodel.AnnotatedCollectionI; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; import jalview.gui.IProgressIndicator; +import jalview.gui.IProgressIndicatorHandler; import jalview.schemes.ResidueProperties; import jalview.workers.AlignCalcWorker; import jalview.ws.jws2.dm.AAConSettings; @@ -66,7 +67,7 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker /** * by default, we filter out non-standard residues before submission */ - private boolean filterNonStandardResidues = true; + protected boolean filterNonStandardResidues = true; /** * Recover any existing parameters for this service @@ -78,8 +79,10 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker ((jalview.gui.AlignViewport) alignViewport).setCalcIdSettingsFor( getCalcId(), new AAConSettings(true, service, this.preset, - (arguments != null) ? JabaParamStore - .getJwsArgsfromJaba(arguments) : null), true); + (arguments != null) + ? JabaParamStore.getJwsArgsfromJaba(arguments) + : null), + true); } } @@ -164,8 +167,8 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker super(alignViewport, alignPanel); } - public AbstractJabaCalcWorker(Jws2Instance service, - AlignFrame alignFrame, WsParamSetI preset, List paramset) + public AbstractJabaCalcWorker(Jws2Instance service, AlignFrame alignFrame, + WsParamSetI preset, List paramset) { this(alignFrame.getCurrentView(), alignFrame.alignPanel); this.guiProgress = alignFrame; @@ -218,7 +221,26 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker progressId = System.currentTimeMillis()); } rslt = submitToService(seqs); + if (guiProgress != null) + { + guiProgress.registerHandler(progressId, + new IProgressIndicatorHandler() + { + @Override + public boolean cancelActivity(long id) + { + cancelCurrentJob(); + return true; + } + + @Override + public boolean canCancel() + { + return true; + } + }); + } boolean finished = false; long rpos = 0; do @@ -322,10 +344,10 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker } if (collectAnnotationResultsFor(rslt)) { - jalview.bin.Cache.log - .debug("Updating result annotation from Job " + rslt - + " at " + service.getUri()); + jalview.bin.Cache.log.debug("Updating result annotation from Job " + + rslt + " at " + service.getUri()); updateResultAnnotation(true); + ap.sortAnnotations(false); ap.adjustAnnotationHeight(); } } @@ -334,8 +356,8 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker catch (JobSubmissionException x) { - System.err.println("submission error with " + getServiceActionText() - + " :"); + System.err.println( + "submission error with " + getServiceActionText() + " :"); x.printStackTrace(); calcMan.disableWorker(this); } catch (ResultNotAvailableException x) @@ -371,7 +393,8 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker { guiProgress.setProgressBar("", progressId); } - ap.paintAlignment(true); + // TODO: may not need to paintAlignment again ! + ap.paintAlignment(false, false); } if (msg.length() > 0) { @@ -444,8 +467,9 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker AnnotatedCollectionI inputSeqs) { if (alignment == null || alignment.getWidth() <= 0 - || alignment.getSequences() == null || alignment.isNucleotide() ? !nucleotidesAllowed - : !proteinAllowed) + || alignment.getSequences() == null || alignment.isNucleotide() + ? !nucleotidesAllowed + : !proteinAllowed) { return null; } @@ -470,9 +494,10 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker for (SequenceI sq : (inputSeqs.getSequences())) { - if (bySequence ? sq.findPosition(end + 1) - - sq.findPosition(start + 1) > minlen - 1 : sq.getEnd() - - sq.getStart() > minlen - 1) + if (bySequence + ? sq.findPosition(end + 1) + - sq.findPosition(start + 1) > minlen - 1 + : sq.getEnd() - sq.getStart() > minlen - 1) { String newname = SeqsetUtils.unique_name(seqs.size() + 1); // make new input sequence with or without gaps @@ -497,8 +522,10 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker } for (int apos : sq.gapMap()) { + char sqc = sq.getCharAt(apos); if (!filterNonStandardResidues - || ResidueProperties.aaIndex[sq.getCharAt(apos)] < 20) + || (sq.isProtein() ? ResidueProperties.aaIndex[sqc] < 20 + : ResidueProperties.nucleotideIndex[sqc] < 5)) { gapMap[apos] = true; // aligned and real amino acid residue } @@ -535,8 +562,8 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker FastaSequence sq = seqs.get(p); int l = sq.getSequence().length(); // strip gapped columns - char[] padded = new char[realw], orig = sq.getSequence() - .toCharArray(); + char[] padded = new char[realw], + orig = sq.getSequence().toCharArray(); for (int i = 0, pp = 0; i < realw; pp++) { if (gapMap[pp]) @@ -577,7 +604,7 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker protected boolean checkDone() { calcMan.notifyStart(this); - ap.paintAlignment(false); + ap.paintAlignment(false, false); while (!calcMan.notifyWorking(this)) { if (calcMan.isWorking(this)) @@ -588,7 +615,7 @@ public abstract class AbstractJabaCalcWorker extends AlignCalcWorker { if (ap != null) { - ap.paintAlignment(false); + ap.paintAlignment(false, false); } Thread.sleep(200);