diff --git a/core/src/main/groovy/com/muwire/core/Core.groovy b/core/src/main/groovy/com/muwire/core/Core.groovy index 7585e190..63dd1959 100644 --- a/core/src/main/groovy/com/muwire/core/Core.groovy +++ b/core/src/main/groovy/com/muwire/core/Core.groovy @@ -48,6 +48,8 @@ import com.muwire.core.trust.TrustSubscriptionEvent import com.muwire.core.update.UpdateClient import com.muwire.core.upload.UploadManager import com.muwire.core.util.MuWireLogManager +import com.muwire.core.content.ContentControlEvent +import com.muwire.core.content.ContentManager import groovy.util.logging.Log import net.i2p.I2PAppContext @@ -90,6 +92,7 @@ public class Core { private final DirectoryWatcher directoryWatcher final FileManager fileManager final UploadManager uploadManager + final ContentManager contentManager private final Router router @@ -289,6 +292,11 @@ public class Core { trustSubscriber = new TrustSubscriber(eventBus, i2pConnector, props) eventBus.register(UILoadedEvent.class, trustSubscriber) eventBus.register(TrustSubscriptionEvent.class, trustSubscriber) + + log.info("initializing content manager") + contentManager = new ContentManager() + eventBus.register(ContentControlEvent.class, contentManager) + eventBus.register(QueryEvent.class, contentManager) } public void startServices() { diff --git a/gui/griffon-app/conf/Config.groovy b/gui/griffon-app/conf/Config.groovy index 3e1a209d..79f10922 100644 --- a/gui/griffon-app/conf/Config.groovy +++ b/gui/griffon-app/conf/Config.groovy @@ -41,4 +41,9 @@ mvcGroups { view = 'com.muwire.gui.TrustListView' controller = 'com.muwire.gui.TrustListController' } + 'content-panel' { + model = 'com.muwire.gui.ContentPanelModel' + view = 'com.muwire.gui.ContentPanelView' + controller = 'com.muwire.gui.ContentPanelController' + } } diff --git a/gui/griffon-app/controllers/com/muwire/gui/ContentPanelController.groovy b/gui/griffon-app/controllers/com/muwire/gui/ContentPanelController.groovy new file mode 100644 index 00000000..c64cf437 --- /dev/null +++ b/gui/griffon-app/controllers/com/muwire/gui/ContentPanelController.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 ContentPanelController { + @MVCMember @Nonnull + ContentPanelModel model + + @ControllerAction + void click() { + model.clickCount++ + } +} \ No newline at end of file diff --git a/gui/griffon-app/models/com/muwire/gui/ContentPanelModel.groovy b/gui/griffon-app/models/com/muwire/gui/ContentPanelModel.groovy new file mode 100644 index 00000000..5439df61 --- /dev/null +++ b/gui/griffon-app/models/com/muwire/gui/ContentPanelModel.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 ContentPanelModel { + @Observable int clickCount = 0 +} \ No newline at end of file diff --git a/gui/griffon-app/views/com/muwire/gui/ContentPanelView.groovy b/gui/griffon-app/views/com/muwire/gui/ContentPanelView.groovy new file mode 100644 index 00000000..e4f5033f --- /dev/null +++ b/gui/griffon-app/views/com/muwire/gui/ContentPanelView.groovy @@ -0,0 +1,47 @@ +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 java.awt.event.WindowAdapter +import java.awt.event.WindowEvent + +import javax.annotation.Nonnull + +@ArtifactProviderFor(GriffonView) +class ContentPanelView { + @MVCMember @Nonnull + FactoryBuilderSupport builder + @MVCMember @Nonnull + ContentPanelModel model + + def dialog + def mainFrame + def mainPanel + + void initUI() { + mainFrame = application.windowManager.findWindow("main-frame") + dialog = new JDialog(mainFrame, "Content Control Panel", true) + + mainPanel = builder.panel { + label("Stuff goes here") + } + } + + void mvcGroupInit(Map args) { + dialog.getContentPane().add(mainPanel) + dialog.pack() + dialog.setLocationRelativeTo(mainFrame) + dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE) + dialog.addWindowListener(new WindowAdapter() { + public void windowClosed(WindowEvent e) { + mvcGroup.destroy() + } + }) + dialog.show() + } +} \ 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 89e4b088..be51437f 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -72,6 +72,7 @@ class MainFrameView { menuBar { menu (text : "Options") { menuItem("Configuration", actionPerformed : {mvcGroup.createMVCGroup("Options")}) + menuItem("Content Control", actionPerformed : {mvcGroup.createMVCGroup("content-panel")}) } menu (text : "Status") { menuItem("MuWire", actionPerformed : {mvcGroup.createMVCGroup("mu-wire-status")}) diff --git a/gui/src/integration-test/groovy/com/muwire/gui/ContentPanelIntegrationTest.groovy b/gui/src/integration-test/groovy/com/muwire/gui/ContentPanelIntegrationTest.groovy new file mode 100644 index 00000000..aeb0fd85 --- /dev/null +++ b/gui/src/integration-test/groovy/com/muwire/gui/ContentPanelIntegrationTest.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 ContentPanelIntegrationTest { + 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/ContentPanelControllerTest.groovy b/gui/src/test/groovy/com/muwire/gui/ContentPanelControllerTest.groovy new file mode 100644 index 00000000..1ad0b29d --- /dev/null +++ b/gui/src/test/groovy/com/muwire/gui/ContentPanelControllerTest.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(ContentPanelController) +class ContentPanelControllerTest { + private ContentPanelController controller + + @Rule + public final GriffonUnitRule griffon = new GriffonUnitRule() + + @Test + void smokeTest() { + fail('Not yet implemented!') + } +} \ No newline at end of file