import java.util.Vector;
import javax.swing.JCheckBox;
-import javax.swing.JOptionPane;
+import javax.swing.JComboBox;
import javax.swing.ListSelectionModel;
/**
private PDBRestClient pdbRestCleint;
+ private String selectedPdbFileName;
+
+ private boolean isValidPBDEntry;
public StructureChooser(SequenceI[] selectedSeqs, SequenceI selectedSeq,
AlignmentPanel ap)
if (discoveredStructuresSet != null
&& !discoveredStructuresSet.isEmpty())
{
- jList_FoundStructures.setModel(PDBRestResponse
- .getListModel(discoveredStructuresSet));
tbl_summary.setModel(PDBRestResponse.getTableModel(pdbRequest,
discoveredStructuresSet));
- // resizeColumnWidth(summaryTable);
structuresDiscovered = true;
noOfStructuresFound = discoveredStructuresSet.size();
}
int endIndex = queryBuilder.lastIndexOf(" OR ");
query = queryBuilder.toString().substring(5, endIndex);
}
- // System.out.println("Query -----> " + query);
return query;
}
@Override
public void run()
{
+ long startTime = System.currentTimeMillis();
try
{
lbl_loading.setVisible(true);
List<PDBResponseSummary> originalDiscoveredStructuresList = new ArrayList<PDBResponseSummary>(
discoveredStructuresSet);
originalDiscoveredStructuresList.removeAll(filteredResponse);
-
Collection<PDBResponseSummary> reorderedStructuresSet = new ArrayList<PDBResponseSummary>();
reorderedStructuresSet.addAll(filteredResponse);
reorderedStructuresSet.addAll(originalDiscoveredStructuresList);
- jList_FoundStructures.setModel(PDBRestResponse
- .getListModel(reorderedStructuresSet));
tbl_summary.setModel(PDBRestResponse.getTableModel(pdbRequest,
reorderedStructuresSet));
- // int[] filterIndice = new int[filterResponseCount];
ListSelectionModel model = tbl_summary.getSelectionModel();
model.clearSelection();
for (int x = 0; x < filterResponseCount; x++)
{
- // filterIndice[x] = x;
model.addSelectionInterval(x, x);
}
// collection
originalDiscoveredStructuresList = null;
reorderedStructuresSet = null;
-
- // jListFoundStructures.setSelectedIndices(filterIndice);
}
lbl_loading.setVisible(false);
{
e.printStackTrace();
}
+ String totalTime = (System.currentTimeMillis() - startTime)
+ + " milli secs";
+ mainFrame.setTitle("Structure Chooser - Filter time (" + totalTime
+ + ")");
+
+ validateSelections();
}
});
filterThread.start();
int value = chooser.showOpenDialog(null);
if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION)
{
- String choice = chooser.getSelectedFile().getPath();
- jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice);
- new AssociatePdbFileWithSeq().associatePdbWithSeq(choice,
- jalview.io.AppletFormatAdapter.FILE, selectedSequence, true,
- Desktop.instance);
- }
- }
-
- /**
- * Handles action event for btn_ok
- */
- @Override
- public void ok_ActionPerformed()
- {
- int pdbIdCol = getPDBIdColumIndex(pdbRequest.getWantedFields());
- int[] selectedRows = tbl_summary.getSelectedRows();
- PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
- int count = 0;
- for (int summaryRow : selectedRows)
- {
- String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
- .toString();
- PDBEntry pdbEntry = new PDBEntry();
- pdbEntry.setId(pdbIdStr);
- pdbEntry.setType("PDB");
- pdbEntriesToView[count++] = pdbEntry;
- }
- new StructureViewer(ap.getStructureSelectionManager()).viewStructures(
- ap, pdbEntriesToView, ap.av.collateForPDB(pdbEntriesToView));
- }
-
- /**
- * Handles action event for manual entry of pdb ids
- */
- public void enterPDB_actionPerformed()
- {
- String id = JOptionPane.showInternalInputDialog(Desktop.desktop,
- MessageManager.getString("label.enter_pdb_id"),
- MessageManager.getString("label.enter_pdb_id"),
- JOptionPane.QUESTION_MESSAGE);
- if (id != null && id.length() > 0)
- {
- PDBEntry entry = new PDBEntry();
- entry.setId(id.toUpperCase());
- selectedSequence.getDatasetSequence().addPDBId(entry);
+ selectedPdbFileName = chooser.getSelectedFile().getPath();
+ jalview.bin.Cache.setProperty("LAST_DIRECTORY", selectedPdbFileName);
+ validateSelections();
}
}
*/
protected void updateCurrentView()
{
- FilterOption selectedOption = ((FilterOption) cmb_filterOption
+ FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
.getSelectedItem());
layout_switchableViews.show(pnl_switchableViews,
- selectedOption.getView());
- chk_invertFilter.setEnabled(false);
- if (selectedOption.getView() == VIEWS_FILTER)
+ selectedFilterOpt.getView());
+ String filterTitle = mainFrame.getTitle();
+ mainFrame.setTitle(frameTitle);
+ chk_invertFilter.setVisible(false);
+ if (selectedFilterOpt.getView() == VIEWS_FILTER)
{
- chk_invertFilter.setEnabled(true);
- filterResultSet(selectedOption.getValue());
+ mainFrame.setTitle(filterTitle);
+ chk_invertFilter.setVisible(true);
+ filterResultSet(selectedFilterOpt.getValue());
}
+ else
+ {
+ idInputAssSeqPanel.loadCmbAssSeq();
+ fileChooserAssSeqPanel.loadCmbAssSeq();
+ }
+ validateSelections();
+ }
+
+ /**
+ * Validates user selection and activates the view button if all parameters
+ * are correct
+ */
+ public void validateSelections()
+ {
+ FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
+ .getSelectedItem());
+ btn_view.setEnabled(false);
+ String currentView = selectedFilterOpt.getView();
+ if (currentView == VIEWS_FILTER)
+ {
+ if (tbl_summary.getSelectedRows().length > 0)
+ {
+ btn_view.setEnabled(true);
+ }
+ }
+ else if (currentView == VIEWS_ENTER_ID)
+ {
+ validateAssociationEnterPdb();
+ }
+ else if (currentView == VIEWS_FROM_FILE)
+ {
+ validateAssociationFromFile();
+ }
+
+ }
+
+ /**
+ * Validates inputs from the Manual PDB entry panel
+ */
+ public void validateAssociationEnterPdb()
+ {
+ AssociateSeqOptions assSeqOpt = (AssociateSeqOptions) idInputAssSeqPanel
+ .getCmb_assSeq().getSelectedItem();
+ lbl_pdbManualFetchStatus.setIcon(errorImage);
+ if (selectedSequences.length == 1
+ || !assSeqOpt.getName().equalsIgnoreCase(
+ "-Select Associated Seq-"))
+ {
+ txt_search.setEnabled(true);
+ if (isValidPBDEntry)
+ {
+ btn_view.setEnabled(true);
+ lbl_pdbManualFetchStatus.setIcon(goodImage);
+ }
+ }
+ else
+ {
+ txt_search.setEnabled(false);
+ lbl_pdbManualFetchStatus.setIcon(errorImage);
+ }
+ }
+
+ /**
+ * Validates inputs for the manual PDB file selection options
+ */
+ public void validateAssociationFromFile()
+ {
+ AssociateSeqOptions assSeqOpt = (AssociateSeqOptions) fileChooserAssSeqPanel
+ .getCmb_assSeq().getSelectedItem();
+ lbl_fromFileStatus.setIcon(errorImage);
+ if (selectedSequences.length == 1
+ || (assSeqOpt != null
+ && !assSeqOpt.getName().equalsIgnoreCase(
+ "-Select Associated Seq-")))
+ {
+ btn_pdbFromFile.setEnabled(true);
+ if (selectedPdbFileName != null && selectedPdbFileName.length() > 0)
+ {
+ btn_view.setEnabled(true);
+ lbl_fromFileStatus.setIcon(goodImage);
+ }
+ }
+ else
+ {
+ btn_pdbFromFile.setEnabled(false);
+ lbl_fromFileStatus.setIcon(errorImage);
+ }
+ }
+
+ @Override
+ public void cmbAssSeqStateChanged()
+ {
+ validateSelections();
}
/**
}
+ /**
+ * Handles action event for btn_ok
+ */
+ @Override
+ public void ok_ActionPerformed()
+ {
+ FilterOption selectedFilterOpt = ((FilterOption) cmb_filterOption
+ .getSelectedItem());
+ String currentView = selectedFilterOpt.getView();
+ if (currentView == VIEWS_FILTER)
+ {
+ int pdbIdCol = getPDBIdColumIndex(pdbRequest.getWantedFields());
+ int[] selectedRows = tbl_summary.getSelectedRows();
+ PDBEntry[] pdbEntriesToView = new PDBEntry[selectedRows.length];
+ int count = 0;
+ for (int summaryRow : selectedRows)
+ {
+ String pdbIdStr = tbl_summary.getValueAt(summaryRow, pdbIdCol)
+ .toString();
+ PDBEntry pdbEntry = new PDBEntry();
+ pdbEntry.setId(pdbIdStr);
+ pdbEntry.setType("PDB");
+ pdbEntriesToView[count++] = pdbEntry;
+ }
+ new StructureViewer(ap.getStructureSelectionManager())
+ .viewStructures(ap, pdbEntriesToView,
+ ap.av.collateForPDB(pdbEntriesToView));
+ }
+ else if (currentView == VIEWS_ENTER_ID)
+ {
+ selectedSequence = ((AssociateSeqOptions) idInputAssSeqPanel
+ .getCmb_assSeq().getSelectedItem()).getSequence();
+ PDBEntry pdbEntry = new PDBEntry();
+ pdbEntry.setId(txt_search.getText());
+ pdbEntry.setType("PDB");
+ selectedSequence.getDatasetSequence().addPDBId(pdbEntry);
+ PDBEntry[] pdbEntriesToView = new PDBEntry[]
+ { pdbEntry };
+ new StructureViewer(ap.getStructureSelectionManager())
+ .viewStructures(ap, pdbEntriesToView,
+ ap.av.collateForPDB(pdbEntriesToView));
+ }
+ else if (currentView == VIEWS_FROM_FILE)
+ {
+ selectedSequence = ((AssociateSeqOptions) fileChooserAssSeqPanel
+ .getCmb_assSeq().getSelectedItem()).getSequence();
+ new AssociatePdbFileWithSeq().associatePdbWithSeq(
+ selectedPdbFileName, jalview.io.AppletFormatAdapter.FILE,
+ selectedSequence, true, Desktop.instance);
+ }
+ mainFrame.dispose();
+ }
+
+ /**
+ * Populates the combo-box used in associating manually fetched structures to
+ * a unique sequence when more than one sequence selection is made.
+ */
+ public void populateCmbAssociateSeqOptions(
+ JComboBox<AssociateSeqOptions> cmb_assSeq)
+ {
+ cmb_assSeq.removeAllItems();
+ cmb_assSeq.addItem(new AssociateSeqOptions("-Select Associated Seq-",
+ null));
+ // cmb_assSeq.addItem(new AssociateSeqOptions("Auto Detect", null));
+ if (selectedSequences.length > 1)
+ {
+ for (SequenceI seq : selectedSequences)
+ {
+ cmb_assSeq.addItem(new AssociateSeqOptions(seq));
+ }
+ }
+ else
+ {
+ cmb_assSeq.setVisible(false);
+ }
+ }
public boolean isStructuresDiscovered()
{
{
return discoveredStructuresSet;
}
+
+ @Override
+ protected void txt_search_ActionPerformed()
+ {
+ isValidPBDEntry = false;
+ if (txt_search.getText().length() > 0)
+ {
+ List<PDBDocField> wantedFields = new ArrayList<PDBDocField>();
+ wantedFields.add(PDBDocField.PDB_ID);
+ pdbRequest = new PDBRestRequest();
+ pdbRequest.setAllowEmptySeq(false);
+ pdbRequest.setResponseSize(1);
+ pdbRequest.setFieldToSearchBy("(pdb_id:");
+ pdbRequest.setWantedFields(wantedFields);
+ pdbRequest.setSearchTerm(txt_search.getText() + ")");
+ pdbRequest.setAssociatedSequence(selectedSequence.getName());
+ pdbRestCleint = new PDBRestClient();
+ PDBRestResponse resultList = pdbRestCleint.executeRequest(pdbRequest);
+ if (resultList.getSearchSummary() != null
+ && resultList.getSearchSummary().size() > 0)
+ {
+ isValidPBDEntry = true;
+ }
+ }
+ validateSelections();
+ }
+
}