X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws2%2Foperations%2FAlignmentOperation.java;h=d71e83972b19f9f3b580b61a48792bedf35b96d7;hb=a37132f229f72190ca1141a08dd716d303387685;hp=6a1baf2e061c4753fdc0d330fd6b39873e4b9109;hpb=5bf1c135198cafbfa48e3a641b3c8b6b7b0cc33a;p=jalview.git diff --git a/src/jalview/ws2/operations/AlignmentOperation.java b/src/jalview/ws2/operations/AlignmentOperation.java index 6a1baf2..d71e839 100644 --- a/src/jalview/ws2/operations/AlignmentOperation.java +++ b/src/jalview/ws2/operations/AlignmentOperation.java @@ -33,6 +33,7 @@ import jalview.datamodel.SequenceI; import jalview.datamodel.Sequence; import jalview.gui.AlignFrame; import jalview.gui.AlignViewport; +import jalview.gui.Desktop; import jalview.gui.JvSwingUtils; import jalview.gui.WebserviceInfo; import jalview.gui.WsJobParameters; @@ -518,8 +519,9 @@ public class AlignmentOperation implements Operation updateWSInfoGlobalStatus(); if (results.size() > 0) { - wsInfo.showResultsNewFrame - .addActionListener(evt -> displayResults(results)); + OutputWrapper out = prepareOutput(results); + wsInfo.showResultsNewFrame.addActionListener(evt -> displayNewFrame( + new Alignment(out.aln), out.alorders, out.hidden)); wsInfo.setResultsReady(); } else @@ -529,7 +531,24 @@ public class AlignmentOperation implements Operation wsInfo.removeProgressBar(progbarId); } - private void displayResults(Map alignments) + private class OutputWrapper + { + AlignmentI aln; + + List alorders; + + HiddenColumns hidden; + + OutputWrapper(AlignmentI aln, List alorders, + HiddenColumns hidden) + { + this.aln = aln; + this.alorders = alorders; + this.hidden = hidden; + } + } + + private OutputWrapper prepareOutput(Map alignments) { List alorders = new ArrayList<>(); SequenceI[][] results = new SequenceI[jobs.size()][]; @@ -538,8 +557,8 @@ public class AlignmentOperation implements Operation { WSJob job = jobs.get(i); AlignmentI aln = alignments.get(job.getUid()); - if (aln != null) - { // equivalent of job.hasResults() + if (aln != null) // equivalent of job.hasResults() + { /* Get the alignment including any empty sequences in the original * order with original ids. */ JobInput input = inputs.get(job.getUid()); @@ -571,6 +590,7 @@ public class AlignmentOperation implements Operation // temporary workaround for deuniquify @SuppressWarnings({ "rawtypes", "unchecked" }) Hashtable names = new Hashtable(input.sequenceNames); + // FIXME first call to deuniquify alters original alignment SeqsetUtils.deuniquify(names, result); alorders.add(msaOrder); results[i] = result; @@ -597,8 +617,8 @@ public class AlignmentOperation implements Operation aln.setDataset(dataset); propagateDatasetMappings(aln); - - displayNewFrame(aln, alorders, hidden); + return new OutputWrapper(aln, alorders, hidden); + // displayNewFrame(aln, alorders, hidden); } /* @@ -654,6 +674,9 @@ public class AlignmentOperation implements Operation * If alignment was requested from one half of a SplitFrame, show in a * SplitFrame with the other pane similarly aligned. */ + + Desktop.addInternalFrame(frame, alnTitle, AlignFrame.DEFAULT_WIDTH, + AlignFrame.DEFAULT_HEIGHT); } private List> sortOrders(List alorders)