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;
}
@Override
+ public String getName()
+ {
+ return service.getName();
+ }
+
+ @Override
+ public String getTypeName()
+ {
+ return "Multiple Sequence Alignment";
+ }
+
+ @Override
public int getMinSequences()
{
return 2;
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
wsInfo.removeProgressBar(progbarId);
}
- private void displayResults(Map<Long, AlignmentI> alignments)
+ private class OutputWrapper
+ {
+ AlignmentI aln;
+
+ List<AlignmentOrder> alorders;
+
+ HiddenColumns hidden;
+
+ OutputWrapper(AlignmentI aln, List<AlignmentOrder> alorders,
+ HiddenColumns hidden)
+ {
+ this.aln = aln;
+ this.alorders = alorders;
+ this.hidden = hidden;
+ }
+ }
+
+ private OutputWrapper prepareOutput(Map<Long, AlignmentI> alignments)
{
List<AlignmentOrder> alorders = new ArrayList<>();
SequenceI[][] results = new SequenceI[jobs.size()][];
{
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());
// 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;
aln.setDataset(dataset);
propagateDatasetMappings(aln);
-
- displayNewFrame(aln, alorders, hidden);
+ return new OutputWrapper(aln, alorders, hidden);
+ // displayNewFrame(aln, alorders, hidden);
}
- /*
+ /*
* conserves dataset references to sequence objects returned from web
- * services. propagate codon frame data to alignment.
+ * services. propagate codon frame data to alignment.
*/
private void propagateDatasetMappings(Alignment aln)
{
* 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<List<Integer>> sortOrders(List<?> alorders)