diff --git a/gui/griffon-app/conf/Config.groovy b/gui/griffon-app/conf/Config.groovy index 9e4af1b1..4d539f15 100644 --- a/gui/griffon-app/conf/Config.groovy +++ b/gui/griffon-app/conf/Config.groovy @@ -21,4 +21,9 @@ mvcGroups { view = 'com.muwire.gui.SearchTabView' controller = 'com.muwire.gui.SearchTabController' } -} \ No newline at end of file + 'Options' { + model = 'com.muwire.gui.OptionsModel' + view = 'com.muwire.gui.OptionsView' + controller = 'com.muwire.gui.OptionsController' + } +} diff --git a/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy b/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy new file mode 100644 index 00000000..a0b6236d --- /dev/null +++ b/gui/griffon-app/controllers/com/muwire/gui/OptionsController.groovy @@ -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 OptionsController { + @MVCMember @Nonnull + OptionsModel model + + @ControllerAction + void click() { + model.clickCount++ + } +} \ No newline at end of file diff --git a/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy b/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy new file mode 100644 index 00000000..36a6e13a --- /dev/null +++ b/gui/griffon-app/models/com/muwire/gui/OptionsModel.groovy @@ -0,0 +1,10 @@ +package com.muwire.gui + +import griffon.core.artifact.GriffonModel +import griffon.transform.Observable +import griffon.metadata.ArtifactProviderFor + +@ArtifactProviderFor(GriffonModel) +class OptionsModel { + @Observable int clickCount = 0 +} \ No newline at end of file diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index 38132e3e..e0ffc23a 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -44,6 +44,11 @@ class MainFrameView { imageIcon('/griffon-icon-16x16.png').image], pack : false, visible : bind { model.coreInitialized }) { + menuBar { + menu (text : "Options") { + menuItem("Configuration", actionPerformed : {mvcGroup.createMVCGroup("Options")}) + } + } borderLayout() panel (border: etchedBorder(), constraints : BorderLayout.NORTH) { borderLayout() diff --git a/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy b/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy new file mode 100644 index 00000000..f3dd73a9 --- /dev/null +++ b/gui/griffon-app/views/com/muwire/gui/OptionsView.groovy @@ -0,0 +1,34 @@ +package com.muwire.gui + +import griffon.core.artifact.GriffonView +import griffon.inject.MVCMember +import griffon.metadata.ArtifactProviderFor + +import javax.swing.JDialog +import javax.swing.SwingConstants +import javax.annotation.Nonnull + +@ArtifactProviderFor(GriffonView) +class OptionsView { + @MVCMember @Nonnull + FactoryBuilderSupport builder + @MVCMember @Nonnull + OptionsModel model + + def d + def p + + void initUI() { + def mainFrame = application.windowManager.findWindow("main-frame") + d = new JDialog(mainFrame, "Options", true) + p = builder.panel { + label(text : "Text") + } + } + + void mvcGroupInit(Map args) { + d.getContentPane().add(p) + d.pack() + d.show() + } +} \ No newline at end of file diff --git a/gui/src/integration-test/groovy/com/muwire/gui/OptionsIntegrationTest.groovy b/gui/src/integration-test/groovy/com/muwire/gui/OptionsIntegrationTest.groovy new file mode 100644 index 00000000..3cc873a0 --- /dev/null +++ b/gui/src/integration-test/groovy/com/muwire/gui/OptionsIntegrationTest.groovy @@ -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 OptionsIntegrationTest { + 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!') + } +} diff --git a/gui/src/test/groovy/com/muwire/gui/OptionsControllerTest.groovy b/gui/src/test/groovy/com/muwire/gui/OptionsControllerTest.groovy new file mode 100644 index 00000000..a14f03a1 --- /dev/null +++ b/gui/src/test/groovy/com/muwire/gui/OptionsControllerTest.groovy @@ -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(OptionsController) +class OptionsControllerTest { + private OptionsController controller + + @Rule + public final GriffonUnitRule griffon = new GriffonUnitRule() + + @Test + void smokeTest() { + fail('Not yet implemented!') + } +} \ No newline at end of file