JAL-1563 Fixed Uniprot FTS result-set count error, added blank image placeholder...
[jalview.git] / src / jalview / fts / service / uniprot / UniprotFTSPanel.java
index dcef358..32f359e 100644 (file)
@@ -40,6 +40,13 @@ public class UniprotFTSPanel extends GFTSPanel
 
   private String ftsFrameTitle = defaultFTSFrameTitle;
 
+  private int resultSetCount;
+
+  private int offSet;
+
+  private static int pageLimit = UniProtFTSRestClient.getInstance()
+          .getDefaultResponsePageSize();
+
   public UniprotFTSPanel(SequenceFetcher seqFetcher)
   {
     this.seqFetcher = seqFetcher;
@@ -50,6 +57,12 @@ public class UniprotFTSPanel extends GFTSPanel
   @Override
   public void searchAction()
   {
+    offSet = 0;
+    executeSearch();
+  }
+
+  public void executeSearch()
+  {
     new Thread()
   {
       @Override
@@ -63,7 +76,7 @@ public class UniprotFTSPanel extends GFTSPanel
           long startTime = System.currentTimeMillis();
 
           String searchTarget = ((FTSDataColumnI) cmb_searchTarget
-                  .getSelectedItem()).getCode();
+                  .getSelectedItem()).getAltCode();
 
           wantedFields = UniProtFTSRestClient.getInstance()
                   .getAllDefaulDisplayedDataColumns();
@@ -72,6 +85,7 @@ public class UniprotFTSPanel extends GFTSPanel
           FTSRestRequest request = new FTSRestRequest();
           request.setFieldToSearchBy(searchTarget);
           request.setSearchTerm(searchTerm);
+          request.setOffSet(offSet);
           request.setWantedFields(wantedFields);
           FTSRestClientI uniProtRestCleint = UniProtFTSRestClient
                   .getInstance();
@@ -92,27 +106,83 @@ public class UniprotFTSPanel extends GFTSPanel
           {
             getResultTable().setModel(
                     FTSRestResponse.getTableModel(request,
-                    resultList.getSearchSummary()));
+                            resultList.getSearchSummary()));
             FTSRestResponse.configureTableColumn(getResultTable(),
                     wantedFields);
             getResultTable().setVisible(true);
           }
 
           long endTime = System.currentTimeMillis();
-          int resultSetCount = resultList.getNumberOfItemsFound();
-          String result = (resultSetCount > 1) ? MessageManager
+          resultSetCount = resultList.getNumberOfItemsFound();
+          String result = (resultSetCount > 0) ? MessageManager
                   .getString("label.results") : MessageManager
                   .getString("label.result");
-          updateSearchFrameTitle(defaultFTSFrameTitle + " - "
-                  + resultSetCount + " " + result + " ("
-                  + (endTime - startTime) + " milli secs)");
+          if (isPaginationEnabled() && resultSetCount > 0)
+          {
+            updateSearchFrameTitle(defaultFTSFrameTitle + " - " + result
+                    + " " + (offSet + 1) + " to "
+                    + (offSet + resultSetCount)
+                    + " " + " (" + (endTime - startTime) + " milli secs)");
+          }
+          else
+          {
+            updateSearchFrameTitle(defaultFTSFrameTitle + " - "
+                    + resultSetCount + " " + result + " ("
+                    + (endTime - startTime) + " milli secs)");
+          }
           setSearchInProgress(false);
+          refreshPaginatorState();
         }
       }
     }.start();
 
   }
 
+
+
+  public void refreshPaginatorState()
+  {
+    // System.out.println("resultSet count : " + resultSetCount);
+    // System.out.println("offSet : " + offSet);
+    // System.out.println("page limit : " + pageLimit);
+    setPrevPageButtonEnabled(false);
+    setNextPageButtonEnabled(false);
+    if (resultSetCount >= pageLimit)
+    {
+      setNextPageButtonEnabled(true);
+    }
+    if (offSet >= pageLimit)
+    {
+      setPrevPageButtonEnabled(true);
+    }
+  }
+
+  @Override
+  public void prevPageAction()
+  {
+    if (offSet >= pageLimit)
+    {
+      offSet = offSet - pageLimit;
+      executeSearch();
+    }else{
+      refreshPaginatorState();
+    }
+  }
+
+  @Override
+  public void nextPageAction()
+  {
+    offSet = offSet + pageLimit;
+    executeSearch();
+
+  }
+
+  @Override
+  public boolean isPaginationEnabled()
+  {
+    return true;
+  }
+
   @Override
   public void okAction()
   {