diff --git a/core/src/main/groovy/com/muwire/core/search/BrowseManager.groovy b/core/src/main/groovy/com/muwire/core/search/BrowseManager.groovy index fc0180cc..bb1b6a61 100644 --- a/core/src/main/groovy/com/muwire/core/search/BrowseManager.groovy +++ b/core/src/main/groovy/com/muwire/core/search/BrowseManager.groovy @@ -60,7 +60,7 @@ class BrowseManager { int results = Integer.parseInt(headers['Count']) // at this stage, start pulling the results - eventBus.publish(new BrowseStatusEvent(status : BrowseStatus.FETCHING)) + eventBus.publish(new BrowseStatusEvent(status : BrowseStatus.FETCHING, totalResults : results)) JsonSlurper slurper = new JsonSlurper() DataInputStream dis = new DataInputStream(new GZIPInputStream(is)) diff --git a/core/src/main/groovy/com/muwire/core/search/BrowseStatusEvent.groovy b/core/src/main/groovy/com/muwire/core/search/BrowseStatusEvent.groovy index e03aef5b..74804e7f 100644 --- a/core/src/main/groovy/com/muwire/core/search/BrowseStatusEvent.groovy +++ b/core/src/main/groovy/com/muwire/core/search/BrowseStatusEvent.groovy @@ -4,4 +4,5 @@ import com.muwire.core.Event class BrowseStatusEvent extends Event { BrowseStatus status + int totalResults } diff --git a/gui/griffon-app/controllers/com/muwire/gui/BrowseController.groovy b/gui/griffon-app/controllers/com/muwire/gui/BrowseController.groovy index eec1c760..e9a851f8 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/BrowseController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/BrowseController.groovy @@ -10,6 +10,7 @@ import javax.annotation.Nonnull import com.muwire.core.EventBus import com.muwire.core.download.UIDownloadEvent +import com.muwire.core.search.BrowseStatus import com.muwire.core.search.BrowseStatusEvent import com.muwire.core.search.UIBrowseEvent import com.muwire.core.search.UIResultEvent @@ -38,12 +39,15 @@ class BrowseController { void onBrowseStatusEvent(BrowseStatusEvent e) { runInsideUIAsync { model.status = e.status + if (e.status == BrowseStatus.FETCHING) + model.totalResults = e.totalResults } } void onUIResultEvent(UIResultEvent e) { runInsideUIAsync { model.results << e + model.resultCount = model.results.size() view.resultsTable.model.fireTableDataChanged() } } diff --git a/gui/griffon-app/models/com/muwire/gui/BrowseModel.groovy b/gui/griffon-app/models/com/muwire/gui/BrowseModel.groovy index f8220828..93933798 100644 --- a/gui/griffon-app/models/com/muwire/gui/BrowseModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/BrowseModel.groovy @@ -14,6 +14,8 @@ class BrowseModel { @Observable BrowseStatus status @Observable boolean downloadActionEnabled @Observable boolean viewCommentActionEnabled + @Observable int totalResults + @Observable int resultCount def results = [] } \ No newline at end of file diff --git a/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy b/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy index 1dfa192e..092760dc 100644 --- a/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/BrowseView.groovy @@ -49,6 +49,7 @@ class BrowseView { panel (constraints : BorderLayout.NORTH) { label(text: "Status:") label(text: bind {model.status.toString()}) + label(text : bind {model.totalResults == 0 ? "" : (model.resultCount * 100 / model.totalResults)+ "%"}) } scrollPane (constraints : BorderLayout.CENTER){ resultsTable = table(autoCreateRowSorter : true) {