X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Ffts%2Fservice%2Fpdb%2FPDBFTSPanel.java;h=b944b9b7cf2add3be0b530007d90d397456c55ab;hb=136c0793b90b72b928c4d77dc109dd5c644e00d3;hp=0b8917db4e85a5027554f4b17cea40e84c492007;hpb=64dd25185d2caf389946bb7e70053183d5aa31a6;p=jalview.git diff --git a/src/jalview/fts/service/pdb/PDBFTSPanel.java b/src/jalview/fts/service/pdb/PDBFTSPanel.java index 0b8917d..b944b9b 100644 --- a/src/jalview/fts/service/pdb/PDBFTSPanel.java +++ b/src/jalview/fts/service/pdb/PDBFTSPanel.java @@ -29,53 +29,55 @@ import jalview.fts.core.GFTSPanel; import jalview.gui.SequenceFetcher; import jalview.util.MessageManager; +import java.util.HashMap; import java.util.HashSet; - -import javax.swing.table.DefaultTableModel; +import java.util.Map; @SuppressWarnings("serial") public class PDBFTSPanel extends GFTSPanel { + private static String defaultFTSFrameTitle = MessageManager + .getString("label.pdb_sequence_fetcher"); + + + private static Map tempUserPrefs = new HashMap(); + + private static final String PDB_FTS_CACHE_KEY = "CACHE.PDB_FTS"; public PDBFTSPanel(SequenceFetcher seqFetcher) { + super(); + pageLimit = PDBFTSRestClient.getInstance().getDefaultResponsePageSize(); this.seqFetcher = seqFetcher; - this.progressIdicator = (seqFetcher == null) ? null : seqFetcher + this.progressIndicator = (seqFetcher == null) ? null : seqFetcher .getProgressIndicator(); } - - /** - * Action performed when an input is detected on txt_search field. - */ @Override - public void txt_search_ActionPerformed() + public void searchAction(boolean isFreshSearch) { + mainFrame.requestFocusInWindow(); + if (isFreshSearch) + { + offSet = 0; + } new Thread() { @Override public void run() { - lbl_loading.setVisible(false); - errorWarning.setLength(0); - lbl_warning.setVisible(false); - btn_ok.setEnabled(false); + reset(); boolean allowEmptySequence = false; - mainFrame.setTitle(getFTSFrameTitle()); - tbl_summary.setModel(new DefaultTableModel()); - tbl_summary.setVisible(false); - if (txt_search.getText().trim().length() > 0) + if (getTypedText().length() > 0) { - lbl_loading.setVisible(true); + setSearchInProgress(true); long startTime = System.currentTimeMillis(); String searchTarget = ((FTSDataColumnI) cmb_searchTarget .getSelectedItem()).getCode(); - - // wantedFields = FTSDataColumnPreferences.getSearchSummaryFields(); wantedFields = PDBFTSRestClient.getInstance() - .getAllDefaulDisplayedDataColumns(); - String searchTerm = decodeSearchTerm(txt_search.getText(), + .getAllDefaultDisplayedFTSDataColumns(); + String searchTerm = decodeSearchTerm(getTypedText(), searchTarget); FTSRestRequest request = new FTSRestRequest(); @@ -83,8 +85,8 @@ public class PDBFTSPanel extends GFTSPanel request.setResponseSize(100); request.setFieldToSearchBy("(" + searchTarget + ":"); request.setSearchTerm(searchTerm + ")"); + request.setOffSet(offSet); request.setWantedFields(wantedFields); - // System.out.println(">>>>>>>>>>>>>> " + request.getQuery()); FTSRestClientI pdbRestCleint = PDBFTSRestClient.getInstance(); FTSRestResponse resultList; try @@ -92,31 +94,57 @@ public class PDBFTSPanel extends GFTSPanel resultList = pdbRestCleint.executeRequest(request); } catch (Exception e) { - // e.printStackTrace(); - errorWarning.append(e.getMessage()); + setErrorMessage(e.getMessage()); checkForErrors(); return; } - if (resultList.getSearchSummary() != null) + if (resultList.getSearchSummary() != null + && resultList.getSearchSummary().size() > 0) { - tbl_summary.setModel(FTSRestResponse.getTableModel(request, - resultList.getSearchSummary())); - FTSRestResponse.configureTableColumn(tbl_summary, wantedFields); - tbl_summary.setVisible(true); + getResultTable().setModel( + FTSRestResponse.getTableModel(request, + resultList.getSearchSummary())); + FTSRestResponse.configureTableColumn(getResultTable(), + wantedFields, tempUserPrefs); + getResultTable().setVisible(true); } - long endTime = System.currentTimeMillis(); - int resultSetCount = resultList.getNumberOfItemsFound(); - String result = (resultSetCount > 1) ? MessageManager + totalResultSetCount = resultList.getNumberOfItemsFound(); + resultSetCount = resultList.getSearchSummary() == null ? 0 + : resultList.getSearchSummary().size(); + String result = (resultSetCount > 0) ? MessageManager .getString("label.results") : MessageManager .getString("label.result"); - mainFrame.setTitle(getFTSFrameTitle() + " - " + resultSetCount - + " " - + result + " (" + (endTime - startTime) + " milli secs)"); - lbl_loading.setVisible(false); + + if (isPaginationEnabled() && resultSetCount > 0) + { + updateSearchFrameTitle(defaultFTSFrameTitle + + " - " + + result + + " " + + totalNumberformatter.format((Number) (offSet + 1)) + + " to " + + totalNumberformatter + .format((Number) (offSet + resultSetCount)) + + " of " + + totalNumberformatter + .format((Number) totalResultSetCount) + " " + + " (" + (endTime - startTime) + " milli secs)"); + } + else + { + updateSearchFrameTitle(defaultFTSFrameTitle + " - " + + resultSetCount + " " + result + " (" + + (endTime - startTime) + " milli secs)"); + } + + setSearchInProgress(false); + refreshPaginatorState(); + updateSummaryTableSelections(); } + txt_search.updateCache(); } }.start(); } @@ -158,28 +186,32 @@ public class PDBFTSPanel extends GFTSPanel } @Override - public void btn_ok_ActionPerformed() + public void okAction() { // mainFrame.dispose(); disableActionButtons(); StringBuilder selectedIds = new StringBuilder(); HashSet selectedIdsSet = new HashSet(); - int pdbIdCol = 0; + int primaryKeyColIndex = 0; try { - pdbIdCol = getFTSRestClient().getPrimaryKeyColumIndex(wantedFields, - false); + primaryKeyColIndex = getFTSRestClient().getPrimaryKeyColumIndex( + wantedFields, false); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } - int[] selectedRows = tbl_summary.getSelectedRows(); + int[] selectedRows = getResultTable().getSelectedRows(); + String searchTerm = getTypedText(); for (int summaryRow : selectedRows) { - String idStr = tbl_summary.getValueAt(summaryRow, pdbIdCol) - .toString(); - String searchTerm = txt_search.getText(); + String idStr = getResultTable().getValueAt(summaryRow, + primaryKeyColIndex).toString(); + selectedIdsSet.add(getPDBIdwithSpecifiedChain(idStr, searchTerm)); + } + + for (String idStr : paginatorCart) + { selectedIdsSet.add(getPDBIdwithSpecifiedChain(idStr, searchTerm)); } @@ -196,7 +228,6 @@ public class PDBFTSPanel extends GFTSPanel delayAndEnableActionButtons(); } - public static String getPDBIdwithSpecifiedChain(String pdbId, String searchTerm) { @@ -223,8 +254,6 @@ public class PDBFTSPanel extends GFTSPanel return pdbIdWithChainCode; } - - @Override public FTSRestClientI getFTSRestClient() { @@ -234,7 +263,27 @@ public class PDBFTSPanel extends GFTSPanel @Override public String getFTSFrameTitle() { - return MessageManager.getString("label.pdb_sequence_fetcher"); + return defaultFTSFrameTitle; + } + + @Override + public boolean isPaginationEnabled() + { + return true; + } + + @Override + public Map getTempUserPrefs() + { + return tempUserPrefs; } + + @Override + public String getCacheKey() + { + return PDB_FTS_CACHE_KEY; + } + + }