# HG changeset patch # User Matthias Bläsing # Date 1363204252 -3600 # Branch dataview-rework-2 # Node ID 7454aebb8846d6f711c50e6eb89da1309e830032 # Parent 324057bca4622e44b36d356a9077ce2c57ca05e1 Fix display of "page" and total row count for the "unknown row count case" diff --git a/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewPageContext.java b/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewPageContext.java --- a/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewPageContext.java +++ b/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewPageContext.java @@ -113,7 +113,11 @@ DataViewTableUIModel getModel() { return model; } - + + boolean isTotalRowCountAvailable() { + return totalRows >= 0; + } + int getTotalRows() { return totalRows; } @@ -125,15 +129,15 @@ } boolean hasRows() { - return (totalRows != 0 && pageSize != 0); + return model.getRowCount() > 0; } boolean hasNext() { - return ((currentPos + pageSize) <= totalRows) && hasRows(); + return (((currentPos + pageSize) <= totalRows) && hasRows()) || (totalRows < 0 && getModel().getRowCount() >= pageSize); } boolean hasOnePageOnly() { - return (currentPos - pageSize) <= 0; + return totalRows > 0 && totalRows < pageSize; } boolean hasPrevious() { @@ -141,7 +145,7 @@ } boolean isLastPage() { - return (currentPos + pageSize) > totalRows; + return ((currentPos + pageSize) > totalRows) && totalRows > 0; } boolean refreshRequiredOnInsert() { @@ -153,12 +157,17 @@ } String pageOf() { - if (pageSize < 1 || totalRows < 1) { - return ""; // NOI18N + String curPage = NbBundle.getMessage(DataViewUI.class, "LBL_not_available"); + String totalPages = NbBundle.getMessage(DataViewUI.class, "LBL_not_available"); + + if (pageSize >= 0 && currentPos >= 0) { + curPage = Integer.toString(currentPos / pageSize + (pageSize == 1 ? 0 : 1)); } - Integer curPage = currentPos / pageSize + (pageSize == 1 ? 0 : 1); - Integer totalPages = totalRows / pageSize + (totalRows % pageSize > 0 ? 1 : 0); + if (pageSize >= 0 && totalRows >= 0) { + totalPages = Integer.toString(totalRows / pageSize + (totalRows % pageSize > 0 ? 1 : 0)); + } + return NbBundle.getMessage(DataViewPageContext.class, "LBL_page_of", curPage, totalPages); } diff --git a/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java b/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java --- a/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java +++ b/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java @@ -217,15 +217,17 @@ } void updateTotalCountLabel() { - int count = dataView.getDataViewPageContext().getTotalRows(); assert SwingUtilities.isEventDispatchThread() : "Must be called from AWT thread"; //NOI18N - if (count < 0) { - int pageSize = dataView.getDataViewPageContext().getPageSize(); - int totalRows = dataView.getDataViewPageContext().getModel().getRowCount(); - String NA = NbBundle.getMessage(DataViewUI.class, "LBL_not_available"); - totalRowsLabel.setText(totalRows < pageSize ? totalRows + "" : NA); + + DataViewPageContext pageContext = dataView.getDataViewPageContext(); + + if (pageContext.isTotalRowCountAvailable()) { + totalRowsLabel.setText( + pageContext.getTotalRows() + " " + pageContext.pageOf()); } else { - totalRowsLabel.setText(count + " " + dataView.getDataViewPageContext().pageOf()); + totalRowsLabel.setText(NbBundle.getMessage(DataViewUI.class, + "LBL_not_available") + " " + + dataView.getDataViewPageContext().pageOf()); } } @@ -316,7 +318,9 @@ if (dataPage.hasNext()) { next.setEnabled(true); - last.setEnabled(true); + if(dataPage.getTotalRows() >= 0) { + last.setEnabled(true); + } } if (dataPage.hasOnePageOnly()) {