- Runnable foo = new Runnable()
- {
-
- @Override
- public void run()
- {
- final long sttime = System.currentTimeMillis();
- AlignFrame.this.setProgressBar(MessageManager.formatMessage(
- "status.searching_for_sequences_from", new Object[]
- { source }), sttime);
- try
- {
- // update our local dataset reference
- Alignment ds = AlignFrame.this.getViewport().getAlignment()
- .getDataset();
- Alignment prods = CrossRef
- .findXrefSequences(sel, dna, source, ds);
- if (prods != null)
- {
- SequenceI[] sprods = new SequenceI[prods.getHeight()];
- for (int s = 0; s < sprods.length; s++)
- {
- sprods[s] = (prods.getSequenceAt(s)).deriveSequence();
- if (ds.getSequences() == null
- || !ds.getSequences().contains(
- sprods[s].getDatasetSequence()))
- {
- ds.addSequence(sprods[s].getDatasetSequence());
- }
- sprods[s].updatePDBIds();
- }
- Alignment al = new Alignment(sprods);
- Set<AlignedCodonFrame> cf = prods.getCodonFrames();
- al.setDataset(ds);
- for (AlignedCodonFrame acf : cf)
- {
- al.addCodonFrame(acf);
- }
- AlignFrame naf = new AlignFrame(al, DEFAULT_WIDTH,
- DEFAULT_HEIGHT);
- String newtitle = "" + ((dna) ? "Proteins" : "Nucleotides")
- + " for " + ((isRegSel) ? "selected region of " : "")
- + getTitle();
- naf.setTitle(newtitle);
-
- // remove this flag once confirmed we want a split view
- boolean asSplitFrame = true;
- if (asSplitFrame)
- {
- final Alignment copyAlignment = new Alignment(new Alignment(
- AlignFrame.this.viewport.getSequenceSelection()));
- AlignFrame copyThis = new AlignFrame(copyAlignment,
- AlignFrame.DEFAULT_WIDTH, AlignFrame.DEFAULT_HEIGHT);
- copyThis.setTitle(AlignFrame.this.getTitle());
- // SplitFrame with dna above, protein below
- SplitFrame sf = new SplitFrame(dna ? copyThis : naf,
- dna ? naf : copyThis);
- naf.setVisible(true);
- copyThis.setVisible(true);
- String linkedTitle = MessageManager
- .getString("label.linked_view_title");
- Desktop.addInternalFrame(sf, linkedTitle, -1, -1);
- }
- else
- {
- Desktop.addInternalFrame(naf, newtitle, DEFAULT_WIDTH,
- DEFAULT_HEIGHT);
- }
- }
- else
- {
- System.err.println("No Sequences generated for xRef type "
- + source);
- }
- } catch (Exception e)
- {
- jalview.bin.Cache.log.error(
- "Exception when finding crossreferences", e);
- } catch (OutOfMemoryError e)
- {
- new OOMWarning("whilst fetching crossreferences", e);
- } catch (Error e)
- {
- jalview.bin.Cache.log.error("Error when finding crossreferences",
- e);
- }
- AlignFrame.this.setProgressBar(MessageManager.formatMessage(
- "status.finished_searching_for_sequences_from",
- new Object[]
- { source }),
- sttime);
- }
-
- };
- Thread frunner = new Thread(foo);
- frunner.start();
- }
-
- public boolean canShowTranslationProducts(SequenceI[] selection,
- AlignmentI alignment)
- {
- // old way
- try
- {
- return (jalview.analysis.Dna.canTranslate(selection,
- viewport.getViewAsVisibleContigs(true)));
- } catch (Exception e)
- {
- jalview.bin.Cache.log
- .warn("canTranslate threw an exception - please report to help@jalview.org",
- e);
- return false;
- }