diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..49ab0265 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,5 @@ +group = com.muwire +version = 0.0.1 +groovyVersion = 2.4.15 +slf4jVersion = 1.7.25 +spockVersion = 1.1-groovy-2.4 diff --git a/gui/griffon-app/conf/Config.groovy b/gui/griffon-app/conf/Config.groovy new file mode 100644 index 00000000..84710723 --- /dev/null +++ b/gui/griffon-app/conf/Config.groovy @@ -0,0 +1,31 @@ +import griffon.util.AbstractMapResourceBundle; + +import javax.annotation.Nonnull; +import java.util.Map; + +import static griffon.util.CollectionUtils.map; +import static java.util.Collections.singletonList; + +public class Config extends AbstractMapResourceBundle { + @Override + protected void initialize(@Nonnull Map entries) { + map(entries) + .e("application", map() + .e("title", "MuWire") + .e("startupGroups", singletonList("container")) + .e("autoShutdown", true) + ) + .e("mvcGroups", map() + .e("container", map() + .e("model", "com.muwire.gui.EventListModel") + .e("view", "com.muwire.gui.EventListView") + .e("controller", "com.muwire.gui.EventListController") + ) + .e("editor", map() + .e("model", "com.muwire.gui.EventListModel") + .e("view", "com.muwire.gui.EventListView") + .e("controller", "com.muwire.gui.EventListController") + ) + ); + } +} diff --git a/gui/griffon-app/controllers/com/muwire/gui/EventListController.groovy b/gui/griffon-app/controllers/com/muwire/gui/EventListController.groovy new file mode 100644 index 00000000..39bf8483 --- /dev/null +++ b/gui/griffon-app/controllers/com/muwire/gui/EventListController.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 EventListController { + @MVCMember @Nonnull + EventListModel model + + @ControllerAction + void click() { + model.clickCount++ + } +} \ No newline at end of file diff --git a/gui/griffon-app/i18n/messages.properties b/gui/griffon-app/i18n/messages.properties new file mode 100644 index 00000000..e69de29b diff --git a/gui/griffon-app/models/com/muwire/gui/EventListModel.groovy b/gui/griffon-app/models/com/muwire/gui/EventListModel.groovy new file mode 100644 index 00000000..fd02fe8b --- /dev/null +++ b/gui/griffon-app/models/com/muwire/gui/EventListModel.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 EventListModel { + @Observable int clickCount = 0 +} \ No newline at end of file diff --git a/gui/griffon-app/resources/application.properties b/gui/griffon-app/resources/application.properties new file mode 100644 index 00000000..98f2ac8f --- /dev/null +++ b/gui/griffon-app/resources/application.properties @@ -0,0 +1,5 @@ +application.name=${application_name} +application.version=${application_version} +build.date=${build_date} +build.time=${build_time} +build.revision=${build_revision} \ No newline at end of file diff --git a/gui/griffon-app/resources/griffon-icon-128x128.png b/gui/griffon-app/resources/griffon-icon-128x128.png new file mode 100644 index 00000000..b0b4327e Binary files /dev/null and b/gui/griffon-app/resources/griffon-icon-128x128.png differ diff --git a/gui/griffon-app/resources/griffon-icon-16x16.png b/gui/griffon-app/resources/griffon-icon-16x16.png new file mode 100644 index 00000000..90e269e9 Binary files /dev/null and b/gui/griffon-app/resources/griffon-icon-16x16.png differ diff --git a/gui/griffon-app/resources/griffon-icon-24x24.png b/gui/griffon-app/resources/griffon-icon-24x24.png new file mode 100644 index 00000000..0d1bb731 Binary files /dev/null and b/gui/griffon-app/resources/griffon-icon-24x24.png differ diff --git a/gui/griffon-app/resources/griffon-icon-256x256.png b/gui/griffon-app/resources/griffon-icon-256x256.png new file mode 100644 index 00000000..3cdabd25 Binary files /dev/null and b/gui/griffon-app/resources/griffon-icon-256x256.png differ diff --git a/gui/griffon-app/resources/griffon-icon-32x32.png b/gui/griffon-app/resources/griffon-icon-32x32.png new file mode 100644 index 00000000..2c9c1e1a Binary files /dev/null and b/gui/griffon-app/resources/griffon-icon-32x32.png differ diff --git a/gui/griffon-app/resources/griffon-icon-48x48.png b/gui/griffon-app/resources/griffon-icon-48x48.png new file mode 100644 index 00000000..3577b8e5 Binary files /dev/null and b/gui/griffon-app/resources/griffon-icon-48x48.png differ diff --git a/gui/griffon-app/resources/griffon-icon-64x64.png b/gui/griffon-app/resources/griffon-icon-64x64.png new file mode 100644 index 00000000..fe403f87 Binary files /dev/null and b/gui/griffon-app/resources/griffon-icon-64x64.png differ diff --git a/gui/griffon-app/resources/griffon.png b/gui/griffon-app/resources/griffon.png new file mode 100644 index 00000000..4a38291d Binary files /dev/null and b/gui/griffon-app/resources/griffon.png differ diff --git a/gui/griffon-app/resources/resources.properties b/gui/griffon-app/resources/resources.properties new file mode 100644 index 00000000..e69de29b diff --git a/gui/griffon-app/views/com/muwire/gui/EventListView.groovy b/gui/griffon-app/views/com/muwire/gui/EventListView.groovy new file mode 100644 index 00000000..98b66752 --- /dev/null +++ b/gui/griffon-app/views/com/muwire/gui/EventListView.groovy @@ -0,0 +1,31 @@ +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 EventListView { + @MVCMember @Nonnull + FactoryBuilderSupport builder + @MVCMember @Nonnull + EventListModel model + + void initUI() { + builder.with { + application(size: [320, 160], 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) + } + } + } +} \ No newline at end of file diff --git a/gui/src/integration-test/groovy/com/muwire/gui/EventListIntegrationTest.groovy b/gui/src/integration-test/groovy/com/muwire/gui/EventListIntegrationTest.groovy new file mode 100644 index 00000000..e898e623 --- /dev/null +++ b/gui/src/integration-test/groovy/com/muwire/gui/EventListIntegrationTest.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 EventListIntegrationTest { + 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/main/groovy/com/muwire/gui/Launcher.groovy b/gui/src/main/groovy/com/muwire/gui/Launcher.groovy new file mode 100644 index 00000000..4e3630d7 --- /dev/null +++ b/gui/src/main/groovy/com/muwire/gui/Launcher.groovy @@ -0,0 +1,10 @@ +package com.muwire.gui + +import griffon.swing.SwingGriffonApplication + +class Launcher { + + public static void main(String[] args) { + SwingGriffonApplication.main(args) + } +} diff --git a/gui/src/test/groovy/com/muwire/gui/EventListControllerTest.groovy b/gui/src/test/groovy/com/muwire/gui/EventListControllerTest.groovy new file mode 100644 index 00000000..c4b18d87 --- /dev/null +++ b/gui/src/test/groovy/com/muwire/gui/EventListControllerTest.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(EventListController) +class EventListControllerTest { + private EventListController controller + + @Rule + public final GriffonUnitRule griffon = new GriffonUnitRule() + + @Test + void smokeTest() { + fail('Not yet implemented!') + } +} \ No newline at end of file