import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.AbstractTableModel;
-
import jalview.api.structures.JalviewStructureDisplayI;
import jalview.bin.Cache;
import jalview.bin.Jalview;
{
private static final String AUTOSUPERIMPOSE = "AUTOSUPERIMPOSE";
- /**
- * transient combo box choice for initiating 3db fetch
- */
- private static final String VIEWS_QUERYING_TDB = "QUERY_3DB";
-
private SequenceI selectedSequence;
private SequenceI[] selectedSequences;
// which FTS engine to use
data = StructureChooserQuerySource.getQuerySourceFor(selectedSeqs);
initDialog();
-
this.ap = ap;
this.selectedSequence = selectedSeq;
this.selectedSequences = selectedSeqs;
this.progressIndicator = (ap == null) ? null : ap.alignFrame;
init();
-
}
/**
canQueryTDB = true;
if (needCanonical)
{
- notQueriedTDBYet = false;
+ // triggers display of the 'Query TDB' button
+ notQueriedTDBYet = true;
}
}
};
}
chk_superpose.setSelected(Cache.getDefault(AUTOSUPERIMPOSE, true));
+ btn_queryTDB.addActionListener(new ActionListener()
+ {
+
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ promptForTDBFetch(false);
+ }
+ });
Executors.defaultThreadFactory().newThread(new Runnable()
{
// ensure a filter option is in force for search
populateFilterComboBox(true, cachedPDBExists);
-
// looks for any existing structures already loaded
// for the sequences (the cached ones)
// then queries the StructureChooserQuerySource to
updateCurrentView();
}
- private void promptForTDBFetch()
+ /**
+ * raises dialog for Uniprot fetch followed by 3D beacons search
+ * @param ignoreGui - when true, don't ask, just fetch
+ */
+ public void promptForTDBFetch(boolean ignoreGui)
{
final long progressId = System.currentTimeMillis();
@Override
public void run()
{
- progressBar.setProgressBar("status.searching_3d_beacons", progressId);
+ mainFrame.setEnabled(false);
+ cmb_filterOption.setEnabled(false);
+ progressBar.setProgressBar(MessageManager.getString("status.searching_3d_beacons"), progressId);
// TODO: warn if no accessions discovered
populateSeqsWithoutSourceDBRef();
// redo initial discovery - this time with 3d beacons
// Executors.
previousWantedFields=null;
+ lastSelected=(FilterOption) cmb_filterOption.getSelectedItem();
+ cmb_filterOption.setSelectedItem(null);
+ cachedPDBExists=false; // reset to initial
initialStructureDiscovery();
if (!isStructuresDiscovered())
{
- progressBar.setProgressBar("status.no_structures_discovered_from_3d_beacons", progressId);
+ progressBar.setProgressBar(MessageManager.getString("status.no_structures_discovered_from_3d_beacons"), progressId);
+ btn_queryTDB.setToolTipText(MessageManager.getString("status.no_structures_discovered_from_3d_beacons"));
+ btn_queryTDB.setEnabled(false);
} else {
+ cmb_filterOption.setSelectedIndex(0); // select 'best'
+ btn_queryTDB.setVisible(false);
progressBar.setProgressBar(null, progressId);
}
+ mainFrame.setEnabled(true);
+ cmb_filterOption.setEnabled(true);
}
};
}
};
};
+ if (ignoreGui)
+ {
+ Executors.defaultThreadFactory().newThread(discoverCanonicalDBrefs).start();
+ return;
+ }
// need cancel and no to result in the discoverPDB action - mocked is
- // 'cancel'
+ // 'cancel' TODO: mock should be OK
JvOptionPane.newOptionDialog(this)
.setResponseHandler(JvOptionPane.OK_OPTION,
discoverCanonicalDBrefs)
*/
private void discoverStructureViews()
{
- if (Desktop.instance != null)
+ if (Desktop.getInstance() != null)
{
targetView.removeAllItems();
if (lastTargetedView != null && !lastTargetedView.isVisible())
lastTargetedView = null;
}
int linkedViewsAt = 0;
- for (StructureViewerBase view : Desktop.instance
+ for (StructureViewerBase view : Desktop.getInstance()
.getStructureViewers(null, null))
{
StructureViewer viewHandler = (lastTargetedView != null
discoveredStructuresSet = new LinkedHashSet<>();
HashSet<String> errors = new HashSet<>();
-
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
.getSelectedItem());
-
for (SequenceI seq : selectedSequences)
{
-
FTSRestResponse resultList;
try
{
{
getResultTable()
.setModel(data.getTableModel(discoveredStructuresSet));
-
noOfStructuresFound = discoveredStructuresSet.size();
lastDiscoveredStructuresSet = discoveredStructuresSet;
mainFrame.setTitle(MessageManager.formatMessage(
{
Thread filterThread = new Thread(new Runnable()
{
-
@Override
public void run()
{
for (SequenceI seq : selectedSequences)
{
-
FTSRestResponse resultList;
try
{
resultList = data.selectFirstRankedQuery(seq,
discoveredStructuresSet, wantedFields, fieldToFilterBy,
!chk_invertFilter.isSelected());
-
} catch (Exception e)
{
e.printStackTrace();
protected void populateFilterComboBox(boolean haveData,
boolean cachedPDBExist, FilterOption lastSel)
{
-
/*
* temporarily suspend the change listener behaviour
*/
cmb_filterOption.removeItemListener(this);
+
int selSet = -1;
cmb_filterOption.removeAllItems();
if (haveData)
cmb_filterOption.addItem(filter);
}
}
-
cmb_filterOption.addItem(
new FilterOption(MessageManager.getString("label.enter_pdb_id"),
"-", VIEWS_ENTER_ID, false, null));
"-", VIEWS_FROM_FILE, false, null));
if (canQueryTDB && notQueriedTDBYet)
{
- FilterOption queryTDBOption = new FilterOption(
- MessageManager.getString("label.search_3dbeacons"), "-",
- VIEWS_QUERYING_TDB, false, null);
- cmb_filterOption.addItem(queryTDBOption);
+ btn_queryTDB.setVisible(true);
}
if (cachedPDBExist)
cmb_filterOption.setSelectedItem(cachedOption);
}
}
+
if (selSet > -1)
{
cmb_filterOption.setSelectedIndex(selSet);
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
.getSelectedItem());
- // first check if we need to rebuild dialog
- if (selectedFilterOpt.getView() == VIEWS_QUERYING_TDB)
- {
- promptForTDBFetch();
- return;
- }
if (lastSelected == selectedFilterOpt)
{
// don't need to do anything, probably
// otherwise, record selection
// and update the layout and dialog accordingly
lastSelected = selectedFilterOpt;
-
layout_switchableViews.show(pnl_switchableViews,
selectedFilterOpt.getView());
String filterTitle = mainFrame.getTitle();
{
validateSelections();
}
+
private FilterOption lastSelected=null;
/**
* Handles the state change event for the 'filter' combo-box and 'invert'
}
return found;
}
-
/**
* Handles the 'New View' action
*/
{
PDBEntry pdbEntry = ((PDBEntryTableModel) tbl_local_pdb
.getModel()).getPDBEntryAt(row).getPdbEntry();
-
pdbEntriesToView[count++] = pdbEntry;
SequenceI selectedSeq = (SequenceI) tbl_local_pdb
.getValueAt(row, refSeqColIndex);
PDBEntry fileEntry = new AssociatePdbFileWithSeq()
.associatePdbWithSeq(selectedPdbFileName,
DataSourceType.FILE, selectedSequence, true,
- Desktop.instance);
+ Desktop.getInstance());
sViewer = launchStructureViewer(ssm, new PDBEntry[] { fileEntry },
ap, new SequenceI[]
{
fetchStructuresMetaData();
// populateFilterComboBox(true, cachedPDBExists);
-
filterResultSet(
((FilterOption) cmb_filterOption.getSelectedItem())
.getValue());
{
progressBar.setProgressBar(message, id);
}
+
+ @Override
+ public void removeProgressBar(long id)
+ {
+ progressBar.removeProgressBar(id);
+ }
@Override
public void registerHandler(long id, IProgressIndicatorHandler handler)
&& mainFrame.isVisible()
&& cmb_filterOption.getSelectedItem() != null;
}
+ /**
+ *
+ * @return true if the 3D-Beacons query button will/has been displayed
+ */
+ public boolean isCanQueryTDB() {
+ return canQueryTDB;
+ }
+
+ public boolean isNotQueriedTDBYet()
+ {
+ return notQueriedTDBYet;
+ }
}