public class StructureChooser extends GStructureChooser implements
IProgressIndicator
{
- private boolean structuresDiscovered = false;
-
private SequenceI selectedSequence;
private SequenceI[] selectedSequences;
private boolean isValidPBDEntry;
+ private boolean cachedPDBExists;
+
public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
AlignmentPanel ap)
{
progressBar = new ProgressBar(this.statusPanel, this.statusBar);
}
+ // ensure a filter option is in force for search
+ populateFilterComboBox(true, cachedPDBExists);
Thread discoverPDBStructuresThread = new Thread(new Runnable()
{
@Override
.getString("status.searching_for_pdb_structures"),
startTime);
fetchStructuresMetaData();
- populateFilterComboBox();
+ // revise filter options if no results were found
+ populateFilterComboBox(isStructuresDiscovered(), cachedPDBExists);
updateProgressIndicator(null, startTime);
mainFrame.setVisible(true);
updateCurrentView();
pdbRequest.setAllowEmptySeq(false);
pdbRequest.setResponseSize(500);
pdbRequest.setFieldToSearchBy("(");
+ FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
+ .getSelectedItem());
+ pdbRequest.setFieldToSortBy(selectedFilterOpt.getValue(),
+ !chk_invertFilter.isSelected());
pdbRequest.setWantedFields(wantedFields);
pdbRequest.setSearchTerm(buildQuery(seq) + ")");
pdbRequest.setAssociatedSequence(seq);
{
getResultTable().setModel(
FTSRestResponse.getTableModel(lastPdbRequest,
- discoveredStructuresSet));
- structuresDiscovered = true;
+ discoveredStructuresSet));
noOfStructuresFound = discoveredStructuresSet.size();
mainFrame.setTitle(MessageManager.formatMessage(
"label.structure_chooser_no_of_structures",
}
}
}
-
+ cachedPDBExists = !entries.isEmpty();
PDBEntryTableModel tableModelx = new PDBEntryTableModel(entries);
tbl_local_pdb.setModel(tableModelx);
}
if (isValidSeqName(entry.getId()))
{
queryBuilder.append("pdb_id:")
- .append(entry.getId().toLowerCase())
- .append(" OR ");
+ .append(entry.getId().toLowerCase()).append(" OR ");
isPDBRefsFound = true;
// seqRefs.add(entry.getId());
}
if (dbRef.getSource().equalsIgnoreCase(DBRefSource.UNIPROT))
{
queryBuilder.append("uniprot_accession:")
- .append(getDBRefId(dbRef))
- .append(" OR ");
+ .append(getDBRefId(dbRef)).append(" OR ");
queryBuilder.append("uniprot_id:").append(getDBRefId(dbRef))
.append(" OR ");
isUniProtRefsFound = true;
{
queryBuilder.append("pdb_id:")
- .append(getDBRefId(dbRef).toLowerCase())
- .append(" OR ");
+ .append(getDBRefId(dbRef).toLowerCase()).append(" OR ");
isPDBRefsFound = true;
}
else
.replaceAll("[^\\dA-Za-z|_]", "").replaceAll("\\s+", "+");
}
-
/**
* Ensures sequence ref names are not less than 3 characters and does not
* contain a database name
reorderedStructuresSet.addAll(filteredResponse);
reorderedStructuresSet.addAll(discoveredStructuresSet);
getResultTable().setModel(
- FTSRestResponse.getTableModel(
- lastPdbRequest, reorderedStructuresSet));
+ FTSRestResponse.getTableModel(lastPdbRequest,
+ reorderedStructuresSet));
FTSRestResponse.configureTableColumn(getResultTable(),
wantedFields, tempUserPrefs);
* Populates the filter combo-box options dynamically depending on discovered
* structures
*/
- @Override
- protected void populateFilterComboBox()
+ protected void populateFilterComboBox(boolean haveData,
+ boolean cachedPDBExists)
{
- if (isStructuresDiscovered())
+ /*
+ * temporarily suspend the change listener behaviour
+ */
+ cmb_filterOption.removeItemListener(this);
+
+ cmb_filterOption.removeAllItems();
+ if (haveData)
{
cmb_filterOption.addItem(new FilterOption("Best Quality",
"overall_quality", VIEWS_FILTER));
VIEWS_ENTER_ID));
cmb_filterOption.addItem(new FilterOption("From File", "-",
VIEWS_FROM_FILE));
- cmb_filterOption.addItem(new FilterOption("Cached PDB Entries", "-",
- VIEWS_LOCAL_PDB));
+ FilterOption cachedOption = new FilterOption("Cached PDB Entries", "-",
+ VIEWS_LOCAL_PDB);
+ cmb_filterOption.addItem(cachedOption);
+
+ if (/*!haveData &&*/cachedPDBExists)
+ {
+ cmb_filterOption.setSelectedItem(cachedOption);
+ }
+
+ cmb_filterOption.addItemListener(this);
}
/**
* Updates the displayed view based on the selected filter option
*/
- @Override
protected void updateCurrentView()
{
FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
}
if (seq.getPrimaryDBRefs().size() == 0)
{
- seqsWithoutSourceDBRef.add(seq);
- continue;
- }
+ seqsWithoutSourceDBRef.add(seq);
+ continue;
+ }
}
if (!seqsWithoutSourceDBRef.isEmpty())
{
public boolean isStructuresDiscovered()
{
- return structuresDiscovered;
- }
-
- public void setStructuresDiscovered(boolean structuresDiscovered)
- {
- this.structuresDiscovered = structuresDiscovered;
+ return discoveredStructuresSet != null
+ && !discoveredStructuresSet.isEmpty();
}
public Collection<FTSData> getDiscoveredStructuresSet()
pdbRequest.setResponseSize(1);
pdbRequest.setFieldToSearchBy("(pdb_id:");
pdbRequest.setWantedFields(wantedFields);
- pdbRequest
-.setSearchTerm(searchTerm + ")");
+ pdbRequest.setSearchTerm(searchTerm + ")");
pdbRequest.setAssociatedSequence(selectedSequence);
pdbRestCleint = PDBFTSRestClient.getInstance();
wantedFields.add(pdbRestCleint.getPrimaryKeyColumn());