add a download details view

This commit is contained in:
Zlatin Balevsky
2019-10-25 22:36:25 +01:00
parent ac717b5205
commit fe753ff978
2 changed files with 72 additions and 1 deletions

View File

@@ -0,0 +1,67 @@
package com.muwire.clilanterna
import com.googlecode.lanterna.gui2.BasicWindow
import com.googlecode.lanterna.gui2.Button
import com.googlecode.lanterna.gui2.GridLayout
import com.googlecode.lanterna.gui2.GridLayout.Alignment
import com.googlecode.lanterna.gui2.Label
import com.googlecode.lanterna.gui2.LayoutData
import com.googlecode.lanterna.gui2.Panel
import com.googlecode.lanterna.gui2.TextGUIThread
import com.googlecode.lanterna.gui2.Window
import com.muwire.core.download.Downloader
class DownloadDetailsView extends BasicWindow {
private final Downloader downloader
private final LayoutData layoutData = GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)
private Label knownSources, activeSources, donePieces
DownloadDetailsView(Downloader downloader) {
super("Download details for "+downloader.file.getName())
this.downloader = downloader
setHints([Window.Hint.CENTERED])
Panel contentPanel = new Panel()
contentPanel.setLayoutManager(new GridLayout(2))
knownSources = new Label("0")
activeSources = new Label("0")
donePieces = new Label("0")
refresh()
Button refreshButton = new Button("Refresh",{refresh()})
Button closeButton = new Button("Close", {close()})
contentPanel.with {
addComponent(new Label("Target Location"), layoutData)
addComponent(new Label(downloader.file.getAbsolutePath()), layoutData)
addComponent(new Label("Piece Size"), layoutData)
addComponent(new Label(String.valueOf(downloader.pieceSize)), layoutData)
addComponent(new Label("Total Pieces"), layoutData)
addComponent(new Label(String.valueOf(downloader.nPieces)), layoutData)
addComponent(new Label("Done Pieces"), layoutData)
addComponent(donePieces, layoutData)
addComponent(new Label("Known Sources"), layoutData)
addComponent(knownSources, layoutData)
addComponent(new Label("Active Sources"), layoutData)
addComponent(activeSources, layoutData)
addComponent(refreshButton, layoutData)
addComponent(closeButton, layoutData)
}
setComponent(contentPanel)
}
private void refresh() {
int done = downloader.donePieces()
int known = downloader.activeWorkers.size()
int active = downloader.activeWorkers()
knownSources.setText(String.valueOf(known))
activeSources.setText(String.valueOf(active))
donePieces.setText(String.valueOf(done))
}
}

View File

@@ -53,7 +53,7 @@ class DownloadsView extends BasicWindow {
Window prompt = new BasicWindow("Kill Download?")
prompt.setHints([Window.Hint.CENTERED])
Panel contentPanel = new Panel()
contentPanel.setLayoutManager(new GridLayout(2))
contentPanel.setLayoutManager(new GridLayout(3))
LayoutData layoutData = GridLayout.createLayoutData(Alignment.CENTER, Alignment.CENTER)
Button killDownload = new Button("Kill Download", {
@@ -61,11 +61,15 @@ class DownloadsView extends BasicWindow {
core.eventBus.publish(new UIDownloadCancelledEvent(downloader : downloader))
MessageDialog.showMessageDialog(textGUI, "Download Killed", downloader.file.getName()+ " has been killed", MessageDialogButton.OK)
})
Button viewDetails = new Button("View Details", {
textGUI.addWindowAndWait(new DownloadDetailsView(downloader))
})
Button close = new Button("Close", {
prompt.close()
})
contentPanel.addComponent(killDownload,layoutData)
contentPanel.addComponent(viewDetails, layoutData)
contentPanel.addComponent(close, layoutData)
prompt.setComponent(contentPanel)
close.takeFocus()