show a window while MW is shutting down
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
|
||||
application {
|
||||
title = 'MuWire'
|
||||
startupGroups = ['EventList', 'MainFrame']
|
||||
startupGroups = ['EventList', 'MainFrame', 'ShutdownWindow']
|
||||
autoShutdown = false
|
||||
}
|
||||
|
||||
@@ -16,6 +16,11 @@ mvcGroups {
|
||||
view = 'com.muwire.gui.MainFrameView'
|
||||
controller = 'com.muwire.gui.MainFrameController'
|
||||
}
|
||||
'ShutdownWindow' {
|
||||
model = 'com.muwire.gui.ShutdownWindowModel'
|
||||
view = 'com.muwire.gui.ShutdownWindowView'
|
||||
controller = 'com.muwire.gui.ShutdownWindowController'
|
||||
}
|
||||
'SearchTab' {
|
||||
model = 'com.muwire.gui.SearchTabModel'
|
||||
view = 'com.muwire.gui.SearchTabView'
|
||||
|
@@ -0,0 +1,11 @@
|
||||
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 ShutdownWindowController {
|
||||
}
|
@@ -49,7 +49,7 @@ class Initialize extends AbstractLifecycleHandler {
|
||||
}
|
||||
}
|
||||
|
||||
if (SystemTray.isSupported()) {
|
||||
if (SystemTray.isSupported() && (SystemVersion.isMac() || SystemVersion.isWindows())) {
|
||||
try {
|
||||
def tray = SystemTray.getSystemTray()
|
||||
def url = Initialize.class.getResource("/MuWire-32x32.png")
|
||||
@@ -60,11 +60,17 @@ class Initialize extends AbstractLifecycleHandler {
|
||||
|
||||
def exit = new MenuItem("Exit")
|
||||
exit.addActionListener({
|
||||
application.getWindowManager().findWindow("main-frame").setVisible(false)
|
||||
application.getWindowManager().findWindow("shutdown-window").setVisible(true)
|
||||
Core core = application.getContext().get("core")
|
||||
if (core != null)
|
||||
core.shutdown()
|
||||
if (core != null) {
|
||||
Thread t = new Thread({
|
||||
core.shutdown()
|
||||
application.shutdown()
|
||||
}as Runnable)
|
||||
t.start()
|
||||
}
|
||||
tray.remove(trayIcon)
|
||||
System.exit(0)
|
||||
})
|
||||
|
||||
def showMW = {e ->
|
||||
|
@@ -20,6 +20,7 @@ class Shutdown extends AbstractLifecycleHandler {
|
||||
void execute() {
|
||||
log.info("shutting down")
|
||||
Core core = application.context.get("core")
|
||||
core.shutdown()
|
||||
if (core != null)
|
||||
core.shutdown()
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,9 @@
|
||||
package com.muwire.gui
|
||||
|
||||
import griffon.core.artifact.GriffonModel
|
||||
import griffon.transform.Observable
|
||||
import griffon.metadata.ArtifactProviderFor
|
||||
|
||||
@ArtifactProviderFor(GriffonModel)
|
||||
class ShutdownWindowModel {
|
||||
}
|
@@ -0,0 +1,40 @@
|
||||
package com.muwire.gui
|
||||
|
||||
import griffon.core.GriffonApplication
|
||||
import griffon.core.artifact.GriffonView
|
||||
import griffon.inject.MVCMember
|
||||
import griffon.metadata.ArtifactProviderFor
|
||||
|
||||
import javax.swing.Box
|
||||
import javax.swing.SwingConstants
|
||||
import javax.annotation.Nonnull
|
||||
import javax.inject.Inject
|
||||
|
||||
@ArtifactProviderFor(GriffonView)
|
||||
class ShutdownWindowView {
|
||||
@MVCMember @Nonnull
|
||||
FactoryBuilderSupport builder
|
||||
@MVCMember @Nonnull
|
||||
ShutdownWindowModel model
|
||||
|
||||
void initUI() {
|
||||
builder.with {
|
||||
app = application(size: [320, 80], id: 'shutdown-window',
|
||||
locationRelativeTo : null,
|
||||
title: application.configuration['application.title'],
|
||||
iconImage: imageIcon('/MuWire-48x48.png').image,
|
||||
iconImages: [imageIcon('/MuWire-48x48.png').image,
|
||||
imageIcon('/MuWire-32x32.png').image,
|
||||
imageIcon('/MuWire-16x16.png').image],
|
||||
visible: false ) {
|
||||
panel {
|
||||
vbox {
|
||||
label("MuWire is shutting down, please wait...")
|
||||
Box.createVerticalGlue()
|
||||
progressBar(indeterminate : true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user