show a progress bar while the core loads
This commit is contained in:
@@ -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'
|
||||
}
|
||||
}
|
@@ -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++
|
||||
}
|
||||
}
|
@@ -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) {
|
||||
|
21
gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy
Normal file
21
gui/griffon-app/models/com/muwire/gui/MainFrameModel.groovy
Normal 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)
|
||||
})
|
||||
}
|
||||
}
|
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
32
gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy
Normal file
32
gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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!')
|
||||
}
|
||||
}
|
@@ -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!')
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user