wip on file preview

This commit is contained in:
Zlatin Balevsky
2019-11-10 14:50:19 +00:00
parent 036971cfe5
commit bd873211c0
8 changed files with 134 additions and 6 deletions

View File

@@ -106,4 +106,9 @@ mvcGroups {
view = 'com.muwire.gui.SharedFileView'
controller = 'com.muwire.gui.SharedFileController'
}
'download-preview' {
model = "com.muwire.gui.DownloadPreviewModel"
view = "com.muwire.gui.DownloadPreviewView"
controller = "com.muwire.gui.DownloadPreviewController"
}
}

View File

@@ -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
}

View File

@@ -208,11 +208,9 @@ class MainFrameController {
@ControllerAction
void preview() {
def downloader = model.downloads[selectedDownload()].downloader
File previewFile = downloader.generatePreview()
if (previewFile != null)
Desktop.getDesktop().open(previewFile)
else
JOptionPane.showMessageDialog(null, "Failed to generate preview", "Failed to generate preveiw", JOptionPane.ERROR_MESSAGE)
def params = [:]
params['downloader'] = downloader
mvcGroup.createMVCGroup("download-preview", params)
}
@ControllerAction

View File

@@ -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
}

View File

@@ -100,6 +100,7 @@ class MainFrameModel {
@Observable boolean retryButtonEnabled
@Observable boolean pauseButtonEnabled
@Observable boolean clearButtonEnabled
@Observable boolean previewButtonEnabled
@Observable String resumeButtonText
@Observable boolean addCommentButtonEnabled
@Observable boolean subscribeButtonEnabled

View File

@@ -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()
}
}

View File

@@ -216,7 +216,7 @@ class MainFrameView {
button(text: "Pause", enabled : bind {model.pauseButtonEnabled}, pauseAction)
button(text: bind { model.resumeButtonText }, enabled : bind {model.retryButtonEnabled}, resumeAction)
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)
}
}
@@ -537,6 +537,7 @@ class MainFrameView {
model.cancelButtonEnabled = false
model.retryButtonEnabled = false
model.pauseButtonEnabled = false
model.previewButtonEnabled = false
model.downloader = null
downloadDetailsPanel.getLayout().show(downloadDetailsPanel,"select-download")
return
@@ -545,6 +546,7 @@ class MainFrameView {
if (downloader == null)
return
model.downloader = downloader
model.previewButtonEnabled = true
downloadDetailsPanel.getLayout().show(downloadDetailsPanel,"download-selected")
switch(downloader.getCurrentState()) {
case Downloader.DownloadState.CONNECTING :