From a2bd497169faf1c7fdacad42ee74248c96255eb4 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sun, 5 Oct 2008 18:14:50 +0000 Subject: [PATCH] Detached UI architecture git-svn-id: https://svn.argeo.org/slc/trunk@1709 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/slc/jemmytest/DummyStep.java | 53 ------------------- .../jemmytest/steps/ComplexPanelValues.java | 27 ++++++++++ .../slc/jemmytest/steps/MainFrameLabel.java | 8 ++- .../slc/jemmytest/steps/TestDialogLabel.java | 27 ++++++++++ .../slc/jemmytest/steps/TestDialogOpen.java | 33 ++++++++++++ .../slc/jemmytest/uiparts/ComplexPanel.java | 51 ++++++++++++++++++ .../slc/jemmytest/uiparts/MainFrame.java | 19 ++++++- .../slc/jemmytest/uiparts/TestDialog.java | 5 +- .../src/main/resources/META-INF/MANIFEST.MF | 19 ++++--- .../META-INF/spring/slc-detached.xml | 36 +++++++++++-- .../src/main/slc/conf/applicationContext.xml | 18 +++++-- .../src/main/slc/root/jemmyTest/build.xml | 34 ++++++++++-- 12 files changed, 253 insertions(+), 77 deletions(-) delete mode 100644 sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/DummyStep.java create mode 100644 sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/ComplexPanelValues.java create mode 100644 sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogLabel.java create mode 100644 sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogOpen.java create mode 100644 sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/ComplexPanel.java diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/DummyStep.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/DummyStep.java deleted file mode 100644 index 79f1d21b1..000000000 --- a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/DummyStep.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.argeo.slc.jemmytest; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.argeo.slc.detached.DetachedContext; -import org.argeo.slc.detached.DetachedStep; -import org.argeo.slc.detached.DetachedAnswer; -import org.argeo.slc.detached.DetachedRequest; -import org.netbeans.jemmy.operators.JButtonOperator; -import org.netbeans.jemmy.operators.JDialogOperator; -import org.netbeans.jemmy.operators.JFrameOperator; -import org.netbeans.jemmy.operators.JLabelOperator; - -public class DummyStep implements DetachedStep { - private final static Log log = LogFactory.getLog(DummyStep.class); - - public DetachedAnswer execute(DetachedContext detachedContext, - DetachedRequest request) { - - // Find components - JFrameOperator jFrameOperator = new JFrameOperator("HelloWorldSwing"); - JButtonOperator jButtonOperator = new JButtonOperator(jFrameOperator, - "Button"); - JButtonOperator jButtonStartOperator = new JButtonOperator( - jFrameOperator, "Start"); - String label = request.getProperties().getProperty("jemmyTest.label"); - JLabelOperator jLabelOperator = new JLabelOperator(jFrameOperator, - label); - - // Execute actions - jButtonOperator.push(); - jButtonStartOperator.push(); - - // Find some more components - JDialogOperator jDialogOperator = new JDialogOperator("TestDialog"); - JLabelOperator jLabelOperatorDialog = new JLabelOperator( - jDialogOperator, "Dialog Open"); - String textLabelDialog = jLabelOperatorDialog.getText(); - jDialogOperator.close(); - - // Performs checks - String textAfterPush = jLabelOperator.getText(); - log.info("textAfterPush=" + textAfterPush); - - DetachedAnswer answer = new DetachedAnswer(request, - "DummyStep passed!! textAfterPush=" + textAfterPush); - answer.getProperties().setProperty("jemmyTest.label", textAfterPush); - answer.getProperties().setProperty("jemmyTest.labelDialog", - textLabelDialog); - return answer; - } - -} diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/ComplexPanelValues.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/ComplexPanelValues.java new file mode 100644 index 000000000..8fb261c13 --- /dev/null +++ b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/ComplexPanelValues.java @@ -0,0 +1,27 @@ +package org.argeo.slc.jemmytest.steps; + +import org.argeo.slc.detached.DetachedAnswer; +import org.argeo.slc.detached.DetachedContext; +import org.argeo.slc.detached.DetachedRequest; +import org.argeo.slc.detached.ui.UiStep; +import org.argeo.slc.jemmytest.uiparts.ComplexPanel; + +public class ComplexPanelValues extends UiStep { + private ComplexPanel complexPanel; + + protected DetachedAnswer executeUiStep(DetachedContext context, + DetachedRequest request) { + complexPanel.computeTime(); + String time = complexPanel.getTime(); + + DetachedAnswer answer = new DetachedAnswer(request, + "ComplexPanelValues executed"); + answer.getProperties().setProperty("jemmyTest.complexPanel.time", time); + return answer; + } + + public void setComplexPanel(ComplexPanel complexPanel) { + this.complexPanel = complexPanel; + } + +} diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/MainFrameLabel.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/MainFrameLabel.java index e8514f698..607b73d1f 100644 --- a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/MainFrameLabel.java +++ b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/MainFrameLabel.java @@ -7,10 +7,12 @@ import org.argeo.slc.detached.ui.UiStep; import org.argeo.slc.jemmytest.uiparts.MainFrame; public class MainFrameLabel extends UiStep { + private MainFrame mainFrame; protected DetachedAnswer executeUiStep(DetachedContext context, DetachedRequest request) { - MainFrame mainFrame = (MainFrame) getUiPart(); + mainFrame.init(context, request); + mainFrame.changeLabel(); String textAfterPush = mainFrame.getLabelText(); @@ -20,4 +22,8 @@ public class MainFrameLabel extends UiStep { return answer; } + public void setMainFrame(MainFrame mainFrame) { + this.mainFrame = mainFrame; + } + } diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogLabel.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogLabel.java new file mode 100644 index 000000000..31ccb2d96 --- /dev/null +++ b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogLabel.java @@ -0,0 +1,27 @@ +package org.argeo.slc.jemmytest.steps; + +import org.argeo.slc.detached.DetachedAnswer; +import org.argeo.slc.detached.DetachedContext; +import org.argeo.slc.detached.DetachedRequest; +import org.argeo.slc.detached.ui.UiStep; +import org.argeo.slc.jemmytest.uiparts.TestDialog; + +public class TestDialogLabel extends UiStep { + private TestDialog testDialog; + + protected DetachedAnswer executeUiStep(DetachedContext context, + DetachedRequest request) { + String labelText = testDialog.getLabelText(); + testDialog.close(); + + DetachedAnswer answer = new DetachedAnswer(request, + "TestDialogLabel executed"); + answer.getProperties().setProperty("jemmyTest.labelDialog", labelText); + return answer; + } + + public void setTestDialog(TestDialog testDialog) { + this.testDialog = testDialog; + } + +} diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogOpen.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogOpen.java new file mode 100644 index 000000000..bbff9cf79 --- /dev/null +++ b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogOpen.java @@ -0,0 +1,33 @@ +package org.argeo.slc.jemmytest.steps; + +import org.argeo.slc.detached.DetachedAnswer; +import org.argeo.slc.detached.DetachedContext; +import org.argeo.slc.detached.DetachedRequest; +import org.argeo.slc.detached.ui.UiStep; +import org.argeo.slc.jemmytest.uiparts.MainFrame; +import org.argeo.slc.jemmytest.uiparts.TestDialog; + +public class TestDialogOpen extends UiStep { + private MainFrame mainFrame; + private TestDialog testDialog; + + protected DetachedAnswer executeUiStep(DetachedContext context, + DetachedRequest request) { + + mainFrame.openDialog(); + testDialog.init(context, request); + + DetachedAnswer answer = new DetachedAnswer(request, + "TestDialogOpen executed"); + return answer; + } + + public void setTestDialog(TestDialog testDialog) { + this.testDialog = testDialog; + } + + public void setMainFrame(MainFrame mainFrame) { + this.mainFrame = mainFrame; + } + +} diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/ComplexPanel.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/ComplexPanel.java new file mode 100644 index 000000000..c0f45b81d --- /dev/null +++ b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/ComplexPanel.java @@ -0,0 +1,51 @@ +package org.argeo.slc.jemmytest.uiparts; + +import java.awt.Component; +import java.awt.Container; + +import javax.swing.JTextField; + +import org.argeo.slc.detached.DetachedContext; +import org.argeo.slc.detached.DetachedRequest; +import org.argeo.slc.detached.ui.UiPart; +import org.netbeans.jemmy.ComponentChooser; +import org.netbeans.jemmy.operators.ContainerOperator; +import org.netbeans.jemmy.operators.JButtonOperator; +import org.netbeans.jemmy.operators.JTextFieldOperator; + +public class ComplexPanel extends UiPart { + private JButtonOperator buttonTime = null; + private JTextFieldOperator textTime = null; + + protected void initUi(DetachedContext context, DetachedRequest request) { + ContainerOperator complexPanel = new ContainerOperator( + (Container) context.getDynamicRef(MainFrame.PROP_CONTENT_PANE)); + buttonTime = new JButtonOperator(complexPanel, "Now!"); + textTime = new JTextFieldOperator(complexPanel, new ComponentChooser() { + + public boolean checkComponent(Component comp) { + if (comp instanceof JTextField) { + try { + Long.parseLong(((JTextField) comp).getText()); + return true; + } catch (Exception e) { + return false; + } + } else + return false; + } + + public String getDescription() { + return "Find based on text format: has to be a long"; + } + }); + } + + public void computeTime() { + buttonTime.push(); + } + + public String getTime() { + return textTime.getText(); + } +} diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/MainFrame.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/MainFrame.java index ca17de320..114b48d5b 100644 --- a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/MainFrame.java +++ b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/MainFrame.java @@ -1,25 +1,35 @@ package org.argeo.slc.jemmytest.uiparts; +import java.awt.Container; + import org.argeo.slc.detached.DetachedContext; import org.argeo.slc.detached.DetachedRequest; import org.argeo.slc.detached.ui.UiPart; +import org.netbeans.jemmy.operators.ContainerOperator; import org.netbeans.jemmy.operators.JButtonOperator; import org.netbeans.jemmy.operators.JFrameOperator; import org.netbeans.jemmy.operators.JLabelOperator; -public class MainFrame implements UiPart { +public class MainFrame extends UiPart { private JFrameOperator frame = null; private JButtonOperator button = null; private JButtonOperator buttonStart = null; private JLabelOperator label = null; - public void init(DetachedContext context, DetachedRequest request) { + private ComplexPanel complexPanel; + public final static String PROP_CONTENT_PANE = "jemmytest.ui.contentPane"; + + protected void initUi(DetachedContext context, DetachedRequest request) { frame = new JFrameOperator("HelloWorldSwing"); button = new JButtonOperator(frame, "Button"); buttonStart = new JButtonOperator(frame, "Start"); String labelStr = request.getProperties() .getProperty("jemmyTest.label"); label = new JLabelOperator(frame, labelStr); + + context.setDynamicRef(MainFrame.PROP_CONTENT_PANE, frame + .getContentPane()); + complexPanel.init(context, request); } public void changeLabel() { @@ -33,4 +43,9 @@ public class MainFrame implements UiPart { public String getLabelText() { return label.getText(); } + + public void setComplexPanel(ComplexPanel complexPanel) { + this.complexPanel = complexPanel; + } + } diff --git a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/TestDialog.java b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/TestDialog.java index 1d2af587e..883d779c3 100644 --- a/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/TestDialog.java +++ b/sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/TestDialog.java @@ -6,11 +6,11 @@ import org.argeo.slc.detached.ui.UiPart; import org.netbeans.jemmy.operators.JDialogOperator; import org.netbeans.jemmy.operators.JLabelOperator; -public class TestDialog implements UiPart { +public class TestDialog extends UiPart { private JDialogOperator dialog = null; private JLabelOperator label = null; - public void init(DetachedContext context, DetachedRequest request) { + protected void initUi(DetachedContext context, DetachedRequest request) { dialog = new JDialogOperator("TestDialog"); label = new JLabelOperator(dialog, "Dialog Open"); } @@ -22,4 +22,5 @@ public class TestDialog implements UiPart { public void close() { dialog.close(); } + } diff --git a/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/MANIFEST.MF b/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/MANIFEST.MF index 8137f4bab..7368a2437 100644 --- a/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/MANIFEST.MF +++ b/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/MANIFEST.MF @@ -1,7 +1,10 @@ Manifest-Version: 1.0 -Export-Package: org.argeo.slc.jemmytest;uses:="org.argeo.slc.detached. - ui,org.apache.commons.logging,org.netbeans.jemmy.operators,org.argeo. - slc.detached" +Export-Package: org.argeo.slc.jemmytest.uiparts;uses:="org.argeo.slc.d + etached.ui,javax.swing,org.netbeans.jemmy,org.netbeans.jemmy.operator + s,org.argeo.slc.detached",org.argeo.slc.jemmytest;uses:="org.apache.c + ommons.logging,org.netbeans.jemmy.operators,org.argeo.slc.detached",o + rg.argeo.slc.jemmytest.steps;uses:="org.argeo.slc.jemmytest.uiparts,o + rg.argeo.slc.detached.ui,org.argeo.slc.detached" Built-By: mbaudier Tool: Bnd-0.0.255 Bundle-Name: SLC Sandbox JemmyTest @@ -10,14 +13,16 @@ Require-Bundle: org.argeo.slc.detached Bundle-Vendor: Argeo Build-Jdk: 1.6.0 Bundle-Version: 0.11.1.SNAPSHOT -Bnd-LastModified: 1223213686474 +Bnd-LastModified: 1223229086154 Bundle-Activator: org.argeo.slc.jemmytest.JemmyTestActivator Bundle-ManifestVersion: 2 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt Bundle-Description: SLC Distribution -Import-Package: org.apache.commons.logging,org.argeo.slc.detached,org. - argeo.slc.detached.ui,org.argeo.slc.jemmytest,org.netbeans.jemmy.oper - ators,org.springframework.beans.factory.xml;version="2.0.8" +Import-Package: javax.swing,org.apache.commons.logging,org.argeo.slc.d + etached,org.argeo.slc.detached.ui,org.argeo.slc.jemmytest,org.argeo.s + lc.jemmytest.steps,org.argeo.slc.jemmytest.uiparts,org.netbeans.jemmy + ,org.netbeans.jemmy.operators,org.springframework.beans.factory.xml;v + ersion="2.0.8" Bundle-SymbolicName: org.argeo.slc.sandbox.jemmytest Bundle-DocURL: http://www.argeo.org Originally-Created-By: Apache Maven Bundle Plugin diff --git a/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/spring/slc-detached.xml b/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/spring/slc-detached.xml index 2fc0e86df..ffa3c3a1e 100644 --- a/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/spring/slc-detached.xml +++ b/sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/spring/slc-detached.xml @@ -5,15 +5,43 @@ - + + + + + + + + + + + + - + - + + + + + + + + + + + + diff --git a/sandbox/argeo.slc.jemmytest/src/main/slc/conf/applicationContext.xml b/sandbox/argeo.slc.jemmytest/src/main/slc/conf/applicationContext.xml index d21e8072d..50a516282 100644 --- a/sandbox/argeo.slc.jemmytest/src/main/slc/conf/applicationContext.xml +++ b/sandbox/argeo.slc.jemmytest/src/main/slc/conf/applicationContext.xml @@ -8,9 +8,9 @@ + parent="slcTemplate.detached.testDefinition" + scope="prototype"> - - @@ -35,7 +35,7 @@ - @@ -49,4 +49,14 @@ + + + + + + + + \ No newline at end of file diff --git a/sandbox/argeo.slc.jemmytest/src/main/slc/root/jemmyTest/build.xml b/sandbox/argeo.slc.jemmytest/src/main/slc/root/jemmyTest/build.xml index 181335b83..031d56e99 100644 --- a/sandbox/argeo.slc.jemmytest/src/main/slc/root/jemmyTest/build.xml +++ b/sandbox/argeo.slc.jemmytest/src/main/slc/root/jemmyTest/build.xml @@ -8,13 +8,39 @@ + - - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.39.2