wip on file preview
This commit is contained in:
@@ -106,4 +106,9 @@ mvcGroups {
|
|||||||
view = 'com.muwire.gui.SharedFileView'
|
view = 'com.muwire.gui.SharedFileView'
|
||||||
controller = 'com.muwire.gui.SharedFileController'
|
controller = 'com.muwire.gui.SharedFileController'
|
||||||
}
|
}
|
||||||
|
'download-preview' {
|
||||||
|
model = "com.muwire.gui.DownloadPreviewModel"
|
||||||
|
view = "com.muwire.gui.DownloadPreviewView"
|
||||||
|
controller = "com.muwire.gui.DownloadPreviewController"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,13 @@
|
|||||||
|
package com.muwire.gui
|
||||||
|
|
||||||
|
import griffon.core.artifact.GriffonController
|
||||||
|
import griffon.core.controller.ControllerAction
|
||||||
|
import griffon.inject.MVCMember
|
||||||
|
import griffon.metadata.ArtifactProviderFor
|
||||||
|
import javax.annotation.Nonnull
|
||||||
|
|
||||||
|
@ArtifactProviderFor(GriffonController)
|
||||||
|
class DownloadPreviewController {
|
||||||
|
@MVCMember @Nonnull
|
||||||
|
DownloadPreviewModel model
|
||||||
|
}
|
@@ -208,11 +208,9 @@ class MainFrameController {
|
|||||||
@ControllerAction
|
@ControllerAction
|
||||||
void preview() {
|
void preview() {
|
||||||
def downloader = model.downloads[selectedDownload()].downloader
|
def downloader = model.downloads[selectedDownload()].downloader
|
||||||
File previewFile = downloader.generatePreview()
|
def params = [:]
|
||||||
if (previewFile != null)
|
params['downloader'] = downloader
|
||||||
Desktop.getDesktop().open(previewFile)
|
mvcGroup.createMVCGroup("download-preview", params)
|
||||||
else
|
|
||||||
JOptionPane.showMessageDialog(null, "Failed to generate preview", "Failed to generate preveiw", JOptionPane.ERROR_MESSAGE)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ControllerAction
|
@ControllerAction
|
||||||
|
@@ -0,0 +1,12 @@
|
|||||||
|
package com.muwire.gui
|
||||||
|
|
||||||
|
import com.muwire.core.download.Downloader
|
||||||
|
|
||||||
|
import griffon.core.artifact.GriffonModel
|
||||||
|
import griffon.transform.Observable
|
||||||
|
import griffon.metadata.ArtifactProviderFor
|
||||||
|
|
||||||
|
@ArtifactProviderFor(GriffonModel)
|
||||||
|
class DownloadPreviewModel {
|
||||||
|
Downloader downloader
|
||||||
|
}
|
@@ -100,6 +100,7 @@ class MainFrameModel {
|
|||||||
@Observable boolean retryButtonEnabled
|
@Observable boolean retryButtonEnabled
|
||||||
@Observable boolean pauseButtonEnabled
|
@Observable boolean pauseButtonEnabled
|
||||||
@Observable boolean clearButtonEnabled
|
@Observable boolean clearButtonEnabled
|
||||||
|
@Observable boolean previewButtonEnabled
|
||||||
@Observable String resumeButtonText
|
@Observable String resumeButtonText
|
||||||
@Observable boolean addCommentButtonEnabled
|
@Observable boolean addCommentButtonEnabled
|
||||||
@Observable boolean subscribeButtonEnabled
|
@Observable boolean subscribeButtonEnabled
|
||||||
|
@@ -0,0 +1,61 @@
|
|||||||
|
package com.muwire.gui
|
||||||
|
|
||||||
|
import griffon.core.artifact.GriffonView
|
||||||
|
import griffon.inject.MVCMember
|
||||||
|
import griffon.metadata.ArtifactProviderFor
|
||||||
|
|
||||||
|
import javax.swing.Box
|
||||||
|
import javax.swing.JDialog
|
||||||
|
import javax.swing.JOptionPane
|
||||||
|
import javax.swing.SwingConstants
|
||||||
|
|
||||||
|
import java.awt.event.WindowAdapter
|
||||||
|
import java.awt.event.WindowEvent
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull
|
||||||
|
|
||||||
|
@ArtifactProviderFor(GriffonView)
|
||||||
|
class DownloadPreviewView {
|
||||||
|
@MVCMember @Nonnull
|
||||||
|
FactoryBuilderSupport builder
|
||||||
|
@MVCMember @Nonnull
|
||||||
|
DownloadPreviewModel model
|
||||||
|
|
||||||
|
def mainFrame
|
||||||
|
def dialog
|
||||||
|
def panel
|
||||||
|
|
||||||
|
void initUI() {
|
||||||
|
mainFrame = application.windowManager.findWindow("main-frame")
|
||||||
|
|
||||||
|
dialog = new JDialog(mainFrame, "Generating Preview", true)
|
||||||
|
|
||||||
|
panel = builder.panel {
|
||||||
|
vbox {
|
||||||
|
label(text : "Generating preview for "+model.downloader.file.getName())
|
||||||
|
Box.createVerticalGlue()
|
||||||
|
progressBar(indeterminate : true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.getContentPane().add(panel)
|
||||||
|
dialog.pack()
|
||||||
|
dialog.setResizable(false)
|
||||||
|
dialog.setLocationRelativeTo(mainFrame)
|
||||||
|
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE)
|
||||||
|
dialog.addWindowListener(new WindowAdapter() {
|
||||||
|
public void windowClosed(WindowEvent e) {
|
||||||
|
mainFrame.setVisible(false)
|
||||||
|
mvcGroup.destroy()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
void mvcGroupInit(Map<String, String> args) {
|
||||||
|
if (!model.downloader.isSequential())
|
||||||
|
JOptionPane.showMessageDialog(mainFrame, "This download is not sequential, there may not be much to preview")
|
||||||
|
DownloadPreviewer previewer = new DownloadPreviewer(model.downloader, this)
|
||||||
|
previewer.execute()
|
||||||
|
dialog.show()
|
||||||
|
}
|
||||||
|
}
|
@@ -216,7 +216,7 @@ class MainFrameView {
|
|||||||
button(text: "Pause", enabled : bind {model.pauseButtonEnabled}, pauseAction)
|
button(text: "Pause", enabled : bind {model.pauseButtonEnabled}, pauseAction)
|
||||||
button(text: bind { model.resumeButtonText }, enabled : bind {model.retryButtonEnabled}, resumeAction)
|
button(text: bind { model.resumeButtonText }, enabled : bind {model.retryButtonEnabled}, resumeAction)
|
||||||
button(text: "Cancel", enabled : bind {model.cancelButtonEnabled }, cancelAction)
|
button(text: "Cancel", enabled : bind {model.cancelButtonEnabled }, cancelAction)
|
||||||
button(text: "Preview", previewAction)
|
button(text: "Preview", enabled : bind {model.previewButtonEnabled}, previewAction)
|
||||||
button(text: "Clear Done", enabled : bind {model.clearButtonEnabled}, clearAction)
|
button(text: "Clear Done", enabled : bind {model.clearButtonEnabled}, clearAction)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -537,6 +537,7 @@ class MainFrameView {
|
|||||||
model.cancelButtonEnabled = false
|
model.cancelButtonEnabled = false
|
||||||
model.retryButtonEnabled = false
|
model.retryButtonEnabled = false
|
||||||
model.pauseButtonEnabled = false
|
model.pauseButtonEnabled = false
|
||||||
|
model.previewButtonEnabled = false
|
||||||
model.downloader = null
|
model.downloader = null
|
||||||
downloadDetailsPanel.getLayout().show(downloadDetailsPanel,"select-download")
|
downloadDetailsPanel.getLayout().show(downloadDetailsPanel,"select-download")
|
||||||
return
|
return
|
||||||
@@ -545,6 +546,7 @@ class MainFrameView {
|
|||||||
if (downloader == null)
|
if (downloader == null)
|
||||||
return
|
return
|
||||||
model.downloader = downloader
|
model.downloader = downloader
|
||||||
|
model.previewButtonEnabled = true
|
||||||
downloadDetailsPanel.getLayout().show(downloadDetailsPanel,"download-selected")
|
downloadDetailsPanel.getLayout().show(downloadDetailsPanel,"download-selected")
|
||||||
switch(downloader.getCurrentState()) {
|
switch(downloader.getCurrentState()) {
|
||||||
case Downloader.DownloadState.CONNECTING :
|
case Downloader.DownloadState.CONNECTING :
|
||||||
|
36
gui/src/main/groovy/com/muwire/gui/DownloadPreviewer.groovy
Normal file
36
gui/src/main/groovy/com/muwire/gui/DownloadPreviewer.groovy
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package com.muwire.gui
|
||||||
|
|
||||||
|
import java.awt.Desktop
|
||||||
|
|
||||||
|
import javax.swing.JDialog
|
||||||
|
import javax.swing.JOptionPane
|
||||||
|
import javax.swing.SwingWorker
|
||||||
|
|
||||||
|
import com.muwire.core.download.Downloader
|
||||||
|
|
||||||
|
class DownloadPreviewer extends SwingWorker {
|
||||||
|
|
||||||
|
private final Downloader downloader
|
||||||
|
private final DownloadPreviewView view
|
||||||
|
|
||||||
|
DownloadPreviewer(Downloader downloader, DownloadPreviewView view) {
|
||||||
|
this.downloader = downloader
|
||||||
|
this.view = view
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object doInBackground() throws Exception {
|
||||||
|
downloader.generatePreview()
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void done() {
|
||||||
|
File previewFile = get()
|
||||||
|
view.dialog.setVisible(false)
|
||||||
|
view.mvcGroup.destroy()
|
||||||
|
if (previewFile == null)
|
||||||
|
JOptionPane.showMessageDialog(null, "Generating preview file failed", "Preview Failed", JOptionPane.ERROR_MESSAGE)
|
||||||
|
else
|
||||||
|
Desktop.getDesktop().open(previewFile)
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user