- public void addAlignmentPanel(AlignmentPanel nap)
- {
- if (ap == null)
- {
- ap = nap;
- }
- if (!_aps.contains(nap.av.getSequenceSetId()))
- {
- _aps.add(nap.av.getSequenceSetId());
- }
- }
-
- /**
- * remove any references held to the given alignment panel
- *
- * @param nap
- */
- public void removeAlignmentPanel(AlignmentPanel nap)
- {
- try
- {
- _alignwith.remove(nap);
- _colourwith.remove(nap);
- if (ap == nap)
- {
- ap = null;
- for (AlignmentPanel aps : getAllAlignmentPanels())
- {
- if (aps != nap)
- {
- ap = aps;
- break;
- }
- }
- }
- } catch (Exception ex)
- {
- }
- if (ap != null)
- {
- buildJmolActionMenu();
- }
- }
-
- public void useAlignmentPanelForSuperposition(AlignmentPanel nap)
- {
- addAlignmentPanel(nap);
- if (!_alignwith.contains(nap))
- {
- _alignwith.add(nap);
- }
- }
-
- public void excludeAlignmentPanelForSuperposition(AlignmentPanel nap)
- {
- if (_alignwith.contains(nap))
- {
- _alignwith.remove(nap);
- }
- }
-
- public void useAlignmentPanelForColourbyseq(AlignmentPanel nap,
- boolean enableColourBySeq)
- {
- useAlignmentPanelForColourbyseq(nap);
- jmb.setColourBySequence(enableColourBySeq);
- seqColour.setSelected(enableColourBySeq);
- jmolColour.setSelected(!enableColourBySeq);
- }
-
- public void useAlignmentPanelForColourbyseq(AlignmentPanel nap)
- {
- addAlignmentPanel(nap);
- if (!_colourwith.contains(nap))
- {
- _colourwith.add(nap);
- }
- }
-
- public void excludeAlignmentPanelForColourbyseq(AlignmentPanel nap)
- {
- if (_colourwith.contains(nap))
- {
- _colourwith.remove(nap);
- }
- }
-
- /**
- * pdb retrieval thread.
- */
- private Thread worker = null;
-
- /**
- * add a new structure (with associated sequences and chains) to this viewer,
- * retrieving it if necessary first.
- *
- * @param pdbentry
- * @param seq
- * @param chains
- * @param alignFrame
- * @param align
- * if true, new structure(s) will be align using associated alignment
- */
- private void addStructure(final PDBEntry pdbentry, final SequenceI[] seq,
- final String[] chains, final boolean b,
- final IProgressIndicator alignFrame)
- {
- if (pdbentry.getFile() == null)
- {
- if (worker != null && worker.isAlive())
- {
- // a retrieval is in progress, wait around and add ourselves to the
- // queue.
- new Thread(new Runnable()
- {
- public void run()
- {
- while (worker != null && worker.isAlive() && _started)
- {
- try
- {
- Thread.sleep(100 + ((int) Math.random() * 100));
-
- } catch (Exception e)
- {
- }
-
- }
- // and call ourselves again.
- addStructure(pdbentry, seq, chains, b, alignFrame);
- }
- }).start();
- return;
- }
- }
- // otherwise, start adding the structure.
- jmb.addSequenceAndChain(new PDBEntry[]
- { pdbentry }, new SequenceI[][]
- { seq }, new String[][]
- { chains });
- addingStructures = true;
- _started = false;
- alignAddedStructures = b;
- progressBar = alignFrame; // visual indication happens on caller frame.
- (worker = new Thread(this)).start();
- return;
- }
-
- private Vector getJmolsFor(AlignmentPanel ap2)