private void previousPage() {
    if (currentSource.hasPreviousPage()) {
      currentSource.previousPage();

      // set new text
      panel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
      panel.refreshCurrentMarkup();
      panel.setCursor(null);

      // update display
      panel.updateCurrentPageDisplay(currentSource.getCurrentPage());

      // scroll to current selection
      ExtractedContentViewer.this.scrollToCurrentHit();

      // update controls if needed
      if (!currentSource.hasPreviousPage()) {
        panel.enablePrevPageControl(false);
      }
      if (currentSource.hasNextPage()) {
        panel.enableNextPageControl(true);
      }

      updateSearchControls();
    }
  }
  private void updatePageControls() {
    if (currentSource == null) return;

    final int currentPage = currentSource.getCurrentPage();
    final int totalPages = currentSource.getNumberPages();
    panel.updateTotalPageslDisplay(totalPages);
    panel.updateCurrentPageDisplay(currentPage);

    if (totalPages == 1) {
      panel.enableNextPageControl(false);
      panel.enablePrevPageControl(false);
    } else {
      if (currentSource.hasNextPage()) {
        panel.enableNextPageControl(true);
      } else {
        panel.enableNextPageControl(false);
      }

      if (currentSource.hasPreviousPage()) {
        panel.enablePrevPageControl(true);
      } else {
        panel.enablePrevPageControl(false);
      }
    }
  }