diff --git a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java index c9a139cf0dcf04f5b108477a56569103268e7415..f46d33752d4fec1cac99e97f1e9e54a97095c97d 100644 --- a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java +++ b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePlugin.java @@ -41,12 +41,12 @@ public class CopyPastePlugin extends CellDesignerPlugin { /** * Paste action. */ - private PastePluginAction ppa; + private PastePluginAction pastePluginAction; /** * Paste action. */ - private CopyPluginAction cpa; + private CopyPluginAction copyPluginAction; /** * Default constructor. Creates menu and InfoFrame. @@ -58,38 +58,42 @@ public class CopyPastePlugin extends CellDesignerPlugin { win = MainWindow.getLastInstance(); - ppa = new PastePluginAction(this, win); - cpa = new CopyPluginAction(this, win); + pastePluginAction = new PastePluginAction(this, win); + copyPluginAction = new CopyPluginAction(this, win); // create keyboard listener for shortcuts - KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() { - public boolean dispatchKeyEvent(KeyEvent e) { - switch (e.getID()) { - case KeyEvent.KEY_PRESSED: - if (e.getKeyCode() == java.awt.event.KeyEvent.VK_V - && e.isControlDown() - && e.isAltDown()) { - ppa.myActionPerformed(null); - return true; - } else if (e.getKeyCode() == java.awt.event.KeyEvent.VK_C - && e.isControlDown() - && e.isAltDown()) { - cpa.myActionPerformed(null); - return true; - } else { - return false; - } - default: - return false; - } - } - }); + KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(createKeyEventDispatcher()); } catch (Exception exception) { logger.error(exception, exception); } } + protected KeyEventDispatcher createKeyEventDispatcher() { + return new KeyEventDispatcher() { + public boolean dispatchKeyEvent(KeyEvent e) { + switch (e.getID()) { + case KeyEvent.KEY_PRESSED: + if (e.getKeyCode() == java.awt.event.KeyEvent.VK_V + && e.isControlDown() + && e.isAltDown()) { + getPastePluginAction().myActionPerformed(null); + return true; + } else if (e.getKeyCode() == java.awt.event.KeyEvent.VK_C + && e.isControlDown() + && e.isAltDown()) { + getCopyPluginAction().myActionPerformed(null); + return true; + } else { + return false; + } + default: + return false; + } + } + }; + } + // CHECKSTYLE:OFF @Override public void SBaseAdded(PluginSBase arg0) { @@ -126,4 +130,11 @@ public class CopyPastePlugin extends CellDesignerPlugin { } + protected CopyPluginAction getCopyPluginAction() { + return copyPluginAction; + } + + protected PastePluginAction getPastePluginAction() { + return pastePluginAction; + } } \ No newline at end of file diff --git a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java index 136e2735250b04a449ded2223aa83f1dde737e21..1e4df5508ac9fae126c5460915f351b7dc92cf1f 100644 --- a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java +++ b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/CopyPluginAction.java @@ -30,29 +30,37 @@ public class CopyPluginAction extends PluginAction { /** * Plugin that access this action. */ - private CopyPastePlugin plug = null; + private CopyPastePlugin plugin = null; /** * Default constructor. * * @param plugin - * {@link #plug} + * {@link #plugin} * @param win * {@link #window} */ public CopyPluginAction(CopyPastePlugin plugin, MainWindow win) { - this.plug = plugin; + this.plugin = plugin; } @Override public void myActionPerformed(ActionEvent e) { try { CopyAction annotateAction = new CopyAction(); - PluginListOf list = plug.getSelectedAllNode(); - annotateAction.performAnnotation(plug, list); + PluginListOf list = getPlugin().getSelectedAllNode(); + annotateAction.performAnnotation(getPlugin(), list); } catch (Exception ex) { logger.error(ex, ex); } } + protected CopyPastePlugin getPlugin() { + return plugin; + } + + protected void setPlugin(CopyPastePlugin plugin) { + this.plugin = plugin; + } + } \ No newline at end of file diff --git a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java index 97a9187efe2d0ee0d665f10700826ab28a08390c..83cb961f68beabae2004e7d45b38ea1632329d5d 100644 --- a/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java +++ b/CellDesigner-plugin/src/main/java/lcsb/mapviewer/cdplugin/copypaste/PastePluginAction.java @@ -28,29 +28,37 @@ public class PastePluginAction extends PluginAction { /** * Plugin that access this action. */ - private CopyPastePlugin plug = null; + private CopyPastePlugin plugin = null; /** * Default constructor. * * @param plugin - * {@link #plug} + * {@link #plugin} * @param win * {@link #window} */ public PastePluginAction(CopyPastePlugin plugin, MainWindow win) { - this.plug = plugin; + this.setPlugin(plugin); } @Override public void myActionPerformed(ActionEvent e) { try { PasteAction annotateAction = new PasteAction(); - PluginListOf list = plug.getSelectedAllNode(); - annotateAction.performAnnotation(plug, list); + PluginListOf list = getPlugin().getSelectedAllNode(); + annotateAction.performAnnotation(plugin, list); } catch (Exception ex) { logger.error(ex, ex); } } + protected CopyPastePlugin getPlugin() { + return plugin; + } + + protected void setPlugin(CopyPastePlugin plugin) { + this.plugin = plugin; + } + } \ No newline at end of file diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java index 89ae014dcb61dcbaa64e8a4c27e3eb888898fc6a..381af8d102550394dc3285ce6d6945590b603700 100644 --- a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java +++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/CdPluginFunctions.java @@ -1,11 +1,18 @@ package lcsb.mapviewer.cdplugin; +import java.util.List; + +import org.apache.log4j.Logger; +import org.apache.log4j.spi.LoggingEvent; +import org.junit.After; +import org.junit.Before; import org.mockito.Mockito; import jp.sbi.celldesigner.plugin.PluginListOf; import jp.sbi.celldesigner.plugin.PluginReaction; import jp.sbi.celldesigner.plugin.PluginSpecies; import jp.sbi.celldesigner.plugin.PluginSpeciesAlias; +import lcsb.mapviewer.common.EventStorageLoggerAppender; public class CdPluginFunctions { @@ -20,8 +27,30 @@ public class CdPluginFunctions { "</rdf:Description>\n" + "</rdf:RDF>\n"; - public CdPluginFunctions() { - super(); + private EventStorageLoggerAppender appender; + + @Before + public final void _setUp() throws Exception { + Logger.getRootLogger().removeAppender(appender); + appender = new EventStorageLoggerAppender(false); + Logger.getRootLogger().addAppender(appender); + } + + @After + public final void _tearDown() throws Exception { + Logger.getRootLogger().removeAppender(appender); + } + + protected List<LoggingEvent> getWarnings() { + return appender.getWarnings(); + } + + protected List<LoggingEvent> getErrors() { + return appender.getErrors(); + } + + protected List<LoggingEvent> getFatals() { + return appender.getFatals(); } protected PluginListOf createPluginListWithSpecies(int size) { diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java index c1bf57ac7314c77a74e7f762e34914a05a0ef097..4592dfdabccb1b921afe87f405316f55d719a94f 100644 --- a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java +++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/AllCopyPasteTests.java @@ -7,6 +7,7 @@ import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({ CopyActionTest.class, CopyPasteAbstractActionTest.class, + CopyPastePluginTest.class, PasteActionTest.class, }) public class AllCopyPasteTests { diff --git a/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePluginTest.java b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePluginTest.java new file mode 100644 index 0000000000000000000000000000000000000000..ddde8a735011122284b27c63b478826f88584f6d --- /dev/null +++ b/CellDesigner-plugin/src/test/java/lcsb/mapviewer/cdplugin/copypaste/CopyPastePluginTest.java @@ -0,0 +1,67 @@ +package lcsb.mapviewer.cdplugin.copypaste; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.mockito.Mockito.when; + +import java.awt.event.KeyEvent; + +import org.junit.Test; +import org.mockito.Mockito; + +import jp.sbi.celldesigner.plugin.PluginListOf; +import lcsb.mapviewer.cdplugin.CdPluginFunctions; +import lcsb.mapviewer.common.SystemClipboard; + +public class CopyPastePluginTest extends CdPluginFunctions { + + SystemClipboard cp = new SystemClipboard(); + + @Test + public void testConstructor() { + new CopyPastePlugin(); + assertEquals(0, getErrors().size()); + } + + @Test + public void testCopyAction() { + String data = cp.getClipboardContents(); + + CopyPastePlugin plugin = new CopyPastePlugin(); + KeyEvent event = Mockito.mock(KeyEvent.class); + when(event.getID()).thenReturn(KeyEvent.KEY_PRESSED); + when(event.getKeyCode()).thenReturn(java.awt.event.KeyEvent.VK_C); + when(event.isControlDown()).thenReturn(true); + when(event.isAltDown()).thenReturn(true); + + CopyPastePlugin copyPastePlugin = Mockito.mock(CopyPastePlugin.class); + PluginListOf list = createPluginListWithSpecies(1); + when(copyPastePlugin.getSelectedAllNode()).thenReturn(list); + plugin.getCopyPluginAction().setPlugin(copyPastePlugin); + + plugin.createKeyEventDispatcher().dispatchKeyEvent(event); + + String newData = cp.getClipboardContents(); + + assertNotEquals("Data in clipboard didn't change", data, newData); + + } + + @Test + public void testPasteAction() { + CopyPastePlugin plugin = new CopyPastePlugin(); + KeyEvent event = Mockito.mock(KeyEvent.class); + when(event.getID()).thenReturn(KeyEvent.KEY_PRESSED); + when(event.getKeyCode()).thenReturn(java.awt.event.KeyEvent.VK_V); + when(event.isControlDown()).thenReturn(true); + when(event.isAltDown()).thenReturn(true); + + CopyPastePlugin copyPastePlugin = Mockito.mock(CopyPastePlugin.class); + PluginListOf list = createPluginListWithSpecies(1); + when(copyPastePlugin.getSelectedAllNode()).thenReturn(list); + plugin.getPastePluginAction().setPlugin(copyPastePlugin); + + plugin.createKeyEventDispatcher().dispatchKeyEvent(event); + } + +}