show a progress bar while the core loads

This commit is contained in:
Zlatin Balevsky
2019-05-29 21:58:01 +01:00
parent 415b6e5287
commit 0d83314c13
8 changed files with 136 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
application {
title = 'MuWire'
startupGroups = ['EventList']
startupGroups = ['EventList', 'MainFrame']
autoShutdown = true
}
@@ -11,4 +11,9 @@ mvcGroups {
view = 'com.muwire.gui.EventListView'
controller = 'com.muwire.gui.EventListController'
}
'MainFrame' {
model = 'com.muwire.gui.MainFrameModel'
view = 'com.muwire.gui.MainFrameView'
controller = 'com.muwire.gui.MainFrameController'
}
}

View File

@@ -0,0 +1,18 @@
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 MainFrameController {
@MVCMember @Nonnull
MainFrameModel model
@ControllerAction
void click() {
model.clickCount++
}
}

View File

@@ -16,7 +16,6 @@ import griffon.metadata.ArtifactProviderFor
@ArtifactProviderFor(GriffonModel)
class EventListModel {
@Inject @Nonnull GriffonApplication application
@Observable int clickCount = 0
@Observable boolean coreInitialized = false
void mvcGroupInit(Map<String, Object> args) {

View File

@@ -0,0 +1,21 @@
package com.muwire.gui
import javax.annotation.Nonnull
import javax.inject.Inject
import griffon.core.GriffonApplication
import griffon.core.artifact.GriffonModel
import griffon.transform.Observable
import griffon.metadata.ArtifactProviderFor
@ArtifactProviderFor(GriffonModel)
class MainFrameModel {
@Inject @Nonnull GriffonApplication application
@Observable boolean coreInitialized = false
void mvcGroupInit(Map<String, Object> args) {
application.addPropertyChangeListener("core", {e ->
coreInitialized = (e.getNewValue() != null)
})
}
}

View File

@@ -3,6 +3,9 @@ package com.muwire.gui
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.swing.Box
import javax.swing.BoxLayout
import javax.swing.SwingConstants
import javax.annotation.Nonnull
@@ -15,16 +18,20 @@ class EventListView {
void initUI() {
builder.with {
application(size: [320, 160], id: 'event-list',
application(size: [320, 80], id: 'event-list',
title: application.configuration['application.title'],
iconImage: imageIcon('/griffon-icon-48x48.png').image,
iconImages: [imageIcon('/griffon-icon-48x48.png').image,
imageIcon('/griffon-icon-32x32.png').image,
imageIcon('/griffon-icon-16x16.png').image]) {
gridLayout(rows: 2, cols: 1)
label(id: 'clickLabel', text: bind { model.clickCount },
horizontalAlignment: SwingConstants.CENTER)
button(id: 'clickButton', clickAction, enabled: bind {model.coreInitialized})
imageIcon('/griffon-icon-16x16.png').image],
visible: bind { !model.coreInitialized} ) {
panel {
vbox {
label("MuWire is loading, please wait...")
Box.createVerticalGlue()
progressBar(indeterminate : true)
}
}
}
}
}

View File

@@ -0,0 +1,32 @@
package com.muwire.gui
import griffon.core.artifact.GriffonView
import griffon.inject.MVCMember
import griffon.metadata.ArtifactProviderFor
import javax.swing.SwingConstants
import javax.annotation.Nonnull
@ArtifactProviderFor(GriffonView)
class MainFrameView {
@MVCMember @Nonnull
FactoryBuilderSupport builder
@MVCMember @Nonnull
MainFrameModel model
void initUI() {
builder.with {
application(size: [1024, 768], id: 'main-frame',
title: application.configuration['application.title'],
iconImage: imageIcon('/griffon-icon-48x48.png').image,
iconImages: [imageIcon('/griffon-icon-48x48.png').image,
imageIcon('/griffon-icon-32x32.png').image,
imageIcon('/griffon-icon-16x16.png').image],
visible : bind { model.coreInitialized }) {
gridLayout(rows: 2, cols: 1)
label(id: 'clickLabel', text: bind { model.clickCount },
horizontalAlignment: SwingConstants.CENTER)
button(id: 'clickButton', clickAction)
}
}
}
}

View File

@@ -0,0 +1,25 @@
package com.muwire.gui
import griffon.core.test.GriffonFestRule
import org.fest.swing.fixture.FrameFixture
import org.junit.Rule
import org.junit.Test
import static org.junit.Assert.fail
class MainFrameIntegrationTest {
static {
System.setProperty('griffon.swing.edt.violations.check', 'true')
System.setProperty('griffon.swing.edt.hang.monitor', 'true')
}
@Rule
public final GriffonFestRule fest = new GriffonFestRule()
private FrameFixture window
@Test
void smokeTest() {
fail('Not implemented yet!')
}
}

View File

@@ -0,0 +1,21 @@
package com.muwire.gui
import griffon.core.test.GriffonUnitRule
import griffon.core.test.TestFor
import org.junit.Rule
import org.junit.Test
import static org.junit.Assert.fail
@TestFor(MainFrameController)
class MainFrameControllerTest {
private MainFrameController controller
@Rule
public final GriffonUnitRule griffon = new GriffonUnitRule()
@Test
void smokeTest() {
fail('Not yet implemented!')
}
}