+
+ /**
+ *
+ * @return true if the 3D-Beacons query button will/has been displayed
+ */
+ public boolean isCanQueryTDB()
+ {
+ return canQueryTDB;
+ }
+
+ public boolean isNotQueriedTDBYet()
+ {
+ return notQueriedTDBYet;
+ }
+
+ /**
+ * Open a single structure file for a given sequence
+ */
+ public static void openStructureFileForSequence(
+ StructureSelectionManager ssm, StructureChooser sc,
+ AlignmentPanel ap, SequenceI seq, boolean prompt,
+ String sFilename, TFType tft, String paeFilename,
+ boolean doXferSettings)
+ {
+ openStructureFileForSequence(ssm, sc, ap, seq, prompt, sFilename, tft,
+ paeFilename, false, true, doXferSettings, null);
+ }
+
+ public static StructureViewer openStructureFileForSequence(
+ StructureSelectionManager ssm, StructureChooser sc,
+ AlignmentPanel ap, SequenceI seq, boolean prompt,
+ String sFilename, TFType tft, String paeFilename,
+ boolean forceHeadless, boolean showRefAnnotations,
+ boolean doXferSettings, ViewerType viewerType)
+ {
+ StructureViewer sv = null;
+ boolean headless = forceHeadless;
+ if (sc == null)
+ {
+ // headless = true;
+ prompt = false;
+ sc = new StructureChooser(new SequenceI[] { seq }, seq, ap, false);
+ }
+ if (ssm == null)
+ {
+ ssm = ap.getStructureSelectionManager();
+ }
+
+ PDBEntry fileEntry = new AssociatePdbFileWithSeq().associatePdbWithSeq(
+ sFilename, DataSourceType.FILE, seq, prompt, Desktop.instance,
+ tft, paeFilename, doXferSettings);
+
+ // if headless, "false" in the sc constructor above will avoid GUI behaviour
+ // in sc.launchStructureViewer()
+ if (!headless && !(viewerType == null))
+ {
+ sv = sc.launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
+ new SequenceI[]
+ { seq }, viewerType);
+ }
+
+ sc.mainFrame.dispose();
+
+ if (showRefAnnotations)
+ showReferenceAnnotationsForSequence(ap.alignFrame, seq);
+
+ return sv;
+ }
+
+ public static void showReferenceAnnotationsForSequence(AlignFrame af,
+ SequenceI sequence)
+ {
+ AlignViewport av = af.getCurrentView();
+ AlignmentI al = av.getAlignment();
+
+ List<SequenceI> forSequences = new ArrayList<>();
+ forSequences.add(sequence);
+ final Map<SequenceI, List<AlignmentAnnotation>> candidates = new LinkedHashMap<>();
+ AlignmentUtils.findAddableReferenceAnnotations(forSequences, null,
+ candidates, al);
+ final SequenceGroup selectionGroup = av.getSelectionGroup();
+ AlignmentUtils.addReferenceAnnotations(candidates, al, selectionGroup);
+ for (AlignmentViewPanel ap : af.getAlignPanels())
+ {
+ // required to readjust the height and position of the PAE
+ // annotation
+ ap.adjustAnnotationHeight();
+ }
+
+ }