mirror of https://github.com/zlatinb/muwire
hook up cancel button
parent
bd2368e23a
commit
82377aa9df
|
@ -27,6 +27,8 @@ public class Downloader {
|
|||
private Endpoint endpoint
|
||||
private volatile DownloadSession currentSession
|
||||
private volatile DownloadState currentState
|
||||
private volatile boolean cancelled
|
||||
private volatile Thread downloadThread
|
||||
|
||||
public Downloader(File file, long length, InfoHash infoHash, int pieceSizePow2, I2PConnector connector, Destination destination) {
|
||||
this.file = file
|
||||
|
@ -48,6 +50,7 @@ public class Downloader {
|
|||
}
|
||||
|
||||
void download() {
|
||||
downloadThread = Thread.currentThread()
|
||||
Endpoint endpoint = null
|
||||
try {
|
||||
endpoint = connector.connect(destination)
|
||||
|
@ -59,7 +62,9 @@ public class Downloader {
|
|||
currentState = DownloadState.FINISHED
|
||||
} catch (Exception bad) {
|
||||
log.log(Level.WARNING,"Exception while downloading",bad)
|
||||
if (currentState != DownloadState.FINISHED)
|
||||
if (cancelled)
|
||||
currentState = DownloadState.CANCELLED
|
||||
else if (currentState != DownloadState.FINISHED)
|
||||
currentState = DownloadState.FAILED
|
||||
} finally {
|
||||
endpoint?.close()
|
||||
|
@ -79,4 +84,9 @@ public class Downloader {
|
|||
public DownloadState getCurrentState() {
|
||||
currentState
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
cancelled = true
|
||||
downloadThread?.interrupt()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,6 +54,11 @@ class MainFrameController {
|
|||
group.model.results[row]
|
||||
}
|
||||
|
||||
private def selectedDownload() {
|
||||
def selected = builder.getVariable("downloads-table").getSelectedRow()
|
||||
model.downloads[selected].downloader
|
||||
}
|
||||
|
||||
@ControllerAction
|
||||
void download() {
|
||||
def result = selectedResult()
|
||||
|
@ -79,6 +84,12 @@ class MainFrameController {
|
|||
core.eventBus.publish( new TrustEvent(destination : result.sender.destination, level : TrustLevel.DISTRUSTED))
|
||||
}
|
||||
|
||||
@ControllerAction
|
||||
void cancel() {
|
||||
def downloader = selectedDownload()
|
||||
downloader.cancel()
|
||||
}
|
||||
|
||||
void mvcGroupInit(Map<String, String> args) {
|
||||
application.addPropertyChangeListener("core", {e->
|
||||
core = e.getNewValue()
|
||||
|
|
|
@ -98,7 +98,7 @@ class MainFrameView {
|
|||
}
|
||||
}
|
||||
panel (constraints : BorderLayout.SOUTH) {
|
||||
button("Cancel", enabled : bind {model.cancelButtonEnabled } )
|
||||
button(text: "Cancel", enabled : bind {model.cancelButtonEnabled }, cancelAction )
|
||||
button("Retry", enabled : bind {model.retryButtonEnabled})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue