private boolean showChooserGUI = true;
+ /**
+ * when true, queries to external services are supressed (no SIFTs, no PDBe,
+ * no 3D-Beacons, etc)
+ */
+ private boolean dontQueryServices = false;
+
private static StructureViewer lastTargetedView = null;
public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
AlignmentPanel ap, boolean showGUI)
{
+ this(selectedSeqs, selectedSeq, ap, showGUI, false);
+ }
+
+ public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
+ AlignmentPanel ap, boolean showGUI, boolean dontQueryServices)
+ {
+
// which FTS engine to use
data = StructureChooserQuerySource.getQuerySourceFor(selectedSeqs);
initDialog();
this.selectedSequences = selectedSeqs;
this.progressIndicator = (ap == null) ? null : ap.alignFrame;
this.showChooserGUI = showGUI;
+ this.dontQueryServices = dontQueryServices;
init();
}
}
});
- Executors.defaultThreadFactory().newThread(new Runnable()
+ if (!dontQueryServices)
{
- @Override
- public void run()
+ Executors.defaultThreadFactory().newThread(new Runnable()
{
- populateSeqsWithoutSourceDBRef();
- initialStructureDiscovery();
- }
-
- }).start();
+ @Override
+ public void run()
+ {
+ populateSeqsWithoutSourceDBRef();
+ initialStructureDiscovery();
+ }
+ }).start();
+ }
+ else
+ {
+ Console.debug(
+ "Structure chooser not querying services to discover metadata.");
+ }
}
// called by init
}
} catch (Exception e)
{
- e.printStackTrace();
+ Console.printStackTrace(e);
errors.add(e.getMessage());
continue;
}
{
errorMsg.append(error).append("\n");
}
- JvOptionPane.showMessageDialog(this, errorMsg.toString(),
- MessageManager.getString("label.pdb_web-service_error"),
- JvOptionPane.ERROR_MESSAGE);
+ if (!Jalview.isHeadlessMode())
+ {
+ JvOptionPane.showMessageDialog(this, errorMsg.toString(),
+ MessageManager.getString("label.pdb_web-service_error"),
+ JvOptionPane.ERROR_MESSAGE);
+ }
+ else
+ {
+ Console.error(
+ MessageManager.getString("label.pdb_web-service_error"));
+ Console.debug(errorMsg.toString());
+ }
}
}
}
} catch (Exception e)
{
- e.printStackTrace();
+ Console.debugPrintStackTrace(e);
errors.add(e.getMessage());
continue;
}
.getFTSDataFor(getResultTable(), selectedRow,
discoveredStructuresSet);
String pageUrl = row.getModelViewUrl();
+
JPopupMenu popup = new JPopupMenu("3D Beacons");
JMenuItem viewUrl = new JMenuItem("View model web page");
+ if (pageUrl == null || "".equals(pageUrl.trim()))
+ {
+ viewUrl.setEnabled(false);
+ viewUrl.setText("No model page available.");
+ }
viewUrl.addActionListener(new ActionListener()
{
@Override
selectedSequence = userSelectedSeq;
}
String pdbFilename = selectedPdbFileName;
-
+ // TODO - tidy up this ugly hack so we call launchStructureViewer too
StructureChooser.openStructureFileForSequence(ssm, sc, ap,
- selectedSequence, true, pdbFilename, tft, paeFilename,
- true);
+ selectedSequence, true, pdbFilename, tft, paeFilename,false,
+ true,false,getTargetedStructureViewer(ssm).getViewerType());
}
SwingUtilities.invokeLater(new Runnable()
{
boolean superimpose = chk_superpose.isSelected();
theViewer.setSuperpose(superimpose);
+ // if we're running in --headless mode make this viewer synchronous
+ if (Jalview.isHeadlessMode())
+ {
+ theViewer.setAsync(false);
+ }
+
/*
* remember user's choice of superimpose or not
*/
// for moment, it will work fine as is because it is self-contained
String searchTerm = text.toLowerCase(Locale.ROOT);
searchTerm = searchTerm.split(":")[0];
- // System.out.println(">>>>> search term : " + searchTerm);
+ // jalview.bin.Console.outPrintln(">>>>> search term : " +
+ // searchTerm);
List<FTSDataColumnI> wantedFields = new ArrayList<>();
FTSRestRequest pdbRequest = new FTSRestRequest();
pdbRequest.setAllowEmptySeq(false);
paeFilename, false, true, doXferSettings, null);
}
+ /**
+ *
+ * @param ssm
+ * @param sc
+ * @param ap
+ * @param seq
+ * @param prompt
+ * @param sFilename
+ * @param tft
+ * @param paeFilename
+ * @param forceHeadless
+ * @param showRefAnnotations
+ * @param doXferSettings
+ * @param viewerType - when not null means the viewer will be opened, providing forceHeadless/headless is not true
+ * @return
+ */
public static StructureViewer openStructureFileForSequence(
StructureSelectionManager ssm, StructureChooser sc,
AlignmentPanel ap, SequenceI seq, boolean prompt,
{
// headless = true;
prompt = false;
- sc = new StructureChooser(new SequenceI[] { seq }, seq, ap, false);
+ // suppress structure viewer's external service queries
+ sc = new StructureChooser(new SequenceI[] { seq }, seq, ap, false,
+ true);
}
if (ssm == null)
{
ssm = ap.getStructureSelectionManager();
+ StructureSelectionManager.doConfigureStructurePrefs(ssm);
}
-
+
PDBEntry fileEntry = new AssociatePdbFileWithSeq().associatePdbWithSeq(
sFilename, DataSourceType.FILE, seq, prompt, Desktop.instance,
tft, paeFilename, doXferSettings);
sv = sc.launchStructureViewer(ssm, new PDBEntry[] { fileEntry }, ap,
new SequenceI[]
{ seq }, viewerType);
+ // foo
+ sv.getJalviewStructureDisplay().raiseViewer();
}
sc.mainFrame.dispose();
+ // TODO should honor preferences - only show reference annotation that is requested - JAL-4415 JAL-3124
if (showRefAnnotations)
{
showReferenceAnnotationsForSequence(ap.alignFrame, seq);