JAL-1563 JAL-2091 Added generic pagination for FTS Service, pagination for PDB FTS...
[jalview.git] / src / jalview / fts / core / GFTSPanel.java
index ccf33ed..1c799aa 100644 (file)
@@ -103,6 +103,43 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI
 
   protected JButton btn_prev_page = new JButton();
 
+  protected StringBuilder errorWarning = new StringBuilder();
+
+  protected ImageIcon warningImage = new ImageIcon(getClass().getResource(
+          "/images/warning.gif"));
+
+  protected ImageIcon loadingImage = new ImageIcon(getClass().getResource(
+          "/images/loading.gif"));
+
+  protected ImageIcon balnkPlaceholderImage = new ImageIcon(getClass()
+          .getResource("/images/blank_16x16_placeholder.png"));
+
+  protected JLabel lbl_warning = new JLabel(warningImage);
+
+  protected JLabel lbl_loading = new JLabel(loadingImage);
+
+  protected JLabel lbl_blank = new JLabel(balnkPlaceholderImage);
+
+  private JTabbedPane tabbedPane = new JTabbedPane();
+
+  private JPanel pnl_actions = new JPanel();
+
+  private JPanel pnl_results = new JPanel(new CardLayout());
+
+  private JPanel pnl_inputs = new JPanel();
+
+  private BorderLayout mainLayout = new BorderLayout();
+
+  protected Object[] previousWantedFields;
+
+  protected int resultSetCount;
+
+  protected int totalResultSetCount;
+
+  protected int offSet;
+
+  protected int pageLimit;
+
   private JTable tbl_summary = new JTable()
   {
     private boolean inLayout;
@@ -178,38 +215,8 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI
       return toolTipText;
     }
   };
-
-  protected StringBuilder errorWarning = new StringBuilder();
-
   protected JScrollPane scrl_searchResult = new JScrollPane(tbl_summary);
 
-  protected ImageIcon warningImage = new ImageIcon(getClass().getResource(
-          "/images/warning.gif"));
-
-  protected ImageIcon loadingImage = new ImageIcon(getClass().getResource(
-          "/images/loading.gif"));
-
-  protected ImageIcon balnkPlaceholderImage = new ImageIcon(getClass()
-          .getResource("/images/blank_16x16_placeholder.png"));
-
-  protected JLabel lbl_warning = new JLabel(warningImage);
-
-  protected JLabel lbl_loading = new JLabel(loadingImage);
-
-  protected JLabel lbl_blank = new JLabel(balnkPlaceholderImage);
-
-  private JTabbedPane tabbedPane = new JTabbedPane();
-
-  private JPanel pnl_actions = new JPanel();
-
-  private JPanel pnl_results = new JPanel(new CardLayout());
-
-  private JPanel pnl_inputs = new JPanel();
-
-  private BorderLayout mainLayout = new BorderLayout();
-
-  protected Object[] previousWantedFields;
-
   public GFTSPanel()
   {
     try
@@ -444,7 +451,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI
         }
         txt_search.setToolTipText(JvSwingUtils.wrapTooltip(true,
                 tooltipText));
-        searchAction();
+        searchAction(true);
       }
     });
 
@@ -484,7 +491,7 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI
               {
                 if (!getTypedText().equalsIgnoreCase(lastSearchTerm))
                 {
-                  searchAction();
+                  searchAction(true);
                   lastSearchTerm = getTypedText();
                 }
               }
@@ -529,6 +536,10 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI
           btn_back.setEnabled(false);
           btn_cancel.setEnabled(false);
           btn_ok.setEnabled(false);
+          btn_next_page.setEnabled(false);
+          btn_prev_page.setEnabled(false);
+          txt_search.setEnabled(false);
+          cmb_searchTarget.setEnabled(false);
           previousWantedFields = getFTSRestClient()
                   .getAllDefaulDisplayedDataColumns()
                   .toArray(new Object[0]);
@@ -537,9 +548,12 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI
         {
           btn_back.setEnabled(true);
           btn_cancel.setEnabled(true);
+          refreshPaginatorState();
+          txt_search.setEnabled(true);
+          cmb_searchTarget.setEnabled(true);
           if (wantedFieldsUpdated())
           {
-            searchAction();
+            searchAction(true);
           }
           else
           {
@@ -807,6 +821,45 @@ public abstract class GFTSPanel extends JPanel implements GFTSPanelI
     lbl_blank.setVisible(!isSearchInProgress);
     lbl_loading.setVisible(isSearchInProgress);
   }
+
+  @Override
+  public void prevPageAction()
+  {
+    if (offSet >= pageLimit)
+    {
+      offSet = offSet - pageLimit;
+      searchAction(false);
+    }
+    else
+    {
+      refreshPaginatorState();
+    }
+  }
+
+  @Override
+  public void nextPageAction()
+  {
+    offSet = offSet + pageLimit;
+    searchAction(false);
+
+  }
+
+  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);
+    }
+  }
   public void referesh()
   {
     mainFrame.setTitle(getFTSFrameTitle());