]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Detached UI architecture
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 5 Oct 2008 18:14:50 +0000 (18:14 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 5 Oct 2008 18:14:50 +0000 (18:14 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1709 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

12 files changed:
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/DummyStep.java [deleted file]
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/ComplexPanelValues.java [new file with mode: 0644]
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/MainFrameLabel.java
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogLabel.java [new file with mode: 0644]
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/steps/TestDialogOpen.java [new file with mode: 0644]
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/ComplexPanel.java [new file with mode: 0644]
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/MainFrame.java
sandbox/argeo.slc.jemmytest/src/main/java/org/argeo/slc/jemmytest/uiparts/TestDialog.java
sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/MANIFEST.MF
sandbox/argeo.slc.jemmytest/src/main/resources/META-INF/spring/slc-detached.xml
sandbox/argeo.slc.jemmytest/src/main/slc/conf/applicationContext.xml
sandbox/argeo.slc.jemmytest/src/main/slc/root/jemmyTest/build.xml

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 (file)
index 79f1d21..0000000
+++ /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 (file)
index 0000000..8fb261c
--- /dev/null
@@ -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;
+       }
+
+}
index e8514f6983b9c788b582e979c421576630fd0a1e..607b73d1f19d8929a25a0e093cc02f2b0fa7be7e 100644 (file)
@@ -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 (file)
index 0000000..31ccb2d
--- /dev/null
@@ -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 (file)
index 0000000..bbff9cf
--- /dev/null
@@ -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 (file)
index 0000000..c0f45b8
--- /dev/null
@@ -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();
+       }
+}
index ca17de3205ccf20ee4139431983fb0bdac94032a..114b48d5bfa9b970ac514aa140cee5481f6cc1d4 100644 (file)
@@ -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;
+       }
+
 }
index 1d2af587e09b52039b37ec17367c6f2f6b20994c..883d779c332c12146c0ed7a409d0f27aefe10f79 100644 (file)
@@ -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();
        }
+
 }
index 8137f4babcc992445bed15f5eccdd4f4d4ed4782..7368a243798ea6c4d60b5abea10951ffbf9a77ee 100644 (file)
@@ -1,7 +1,10 @@
 Manifest-Version: 1.0\r
-Export-Package: org.argeo.slc.jemmytest;uses:="org.argeo.slc.detached.\r
- ui,org.apache.commons.logging,org.netbeans.jemmy.operators,org.argeo.\r
- slc.detached"\r
+Export-Package: org.argeo.slc.jemmytest.uiparts;uses:="org.argeo.slc.d\r
+ etached.ui,javax.swing,org.netbeans.jemmy,org.netbeans.jemmy.operator\r
+ s,org.argeo.slc.detached",org.argeo.slc.jemmytest;uses:="org.apache.c\r
+ ommons.logging,org.netbeans.jemmy.operators,org.argeo.slc.detached",o\r
+ rg.argeo.slc.jemmytest.steps;uses:="org.argeo.slc.jemmytest.uiparts,o\r
+ rg.argeo.slc.detached.ui,org.argeo.slc.detached"\r
 Built-By: mbaudier\r
 Tool: Bnd-0.0.255\r
 Bundle-Name: SLC Sandbox JemmyTest\r
@@ -10,14 +13,16 @@ Require-Bundle: org.argeo.slc.detached
 Bundle-Vendor: Argeo\r
 Build-Jdk: 1.6.0\r
 Bundle-Version: 0.11.1.SNAPSHOT\r
-Bnd-LastModified: 1223213686474\r
+Bnd-LastModified: 1223229086154\r
 Bundle-Activator: org.argeo.slc.jemmytest.JemmyTestActivator\r
 Bundle-ManifestVersion: 2\r
 Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
 Bundle-Description: SLC Distribution\r
-Import-Package: org.apache.commons.logging,org.argeo.slc.detached,org.\r
- argeo.slc.detached.ui,org.argeo.slc.jemmytest,org.netbeans.jemmy.oper\r
- ators,org.springframework.beans.factory.xml;version="2.0.8"\r
+Import-Package: javax.swing,org.apache.commons.logging,org.argeo.slc.d\r
+ etached,org.argeo.slc.detached.ui,org.argeo.slc.jemmytest,org.argeo.s\r
+ lc.jemmytest.steps,org.argeo.slc.jemmytest.uiparts,org.netbeans.jemmy\r
+ ,org.netbeans.jemmy.operators,org.springframework.beans.factory.xml;v\r
+ ersion="2.0.8"\r
 Bundle-SymbolicName: org.argeo.slc.sandbox.jemmytest\r
 Bundle-DocURL: http://www.argeo.org\r
 Originally-Created-By: Apache Maven Bundle Plugin\r
index 2fc0e86df907149dc4c42c18cf93ac18c9113662..ffa3c3a1eaa9d42e22459f97e4dc23d68d64c126 100644 (file)
@@ -5,15 +5,43 @@
 
     <import resource="classpath:/org/argeo/slc/detached/spring.xml" />
 
-    <bean id="step.mainFrameLabel"
+    <!-- UI Parts -->
+    <bean id="uipart.MainFrame"
+        class="org.argeo.slc.jemmytest.uiparts.MainFrame">
+        <property name="complexPanel" ref="uipart.ComplexPanel" />
+    </bean>
+
+    <bean id="uipart.TestDialog"
+        class="org.argeo.slc.jemmytest.uiparts.TestDialog">
+    </bean>
+
+    <bean id="uipart.ComplexPanel"
+        class="org.argeo.slc.jemmytest.uiparts.ComplexPanel">
+    </bean>
+
+    <!-- Steps -->
+    <bean id="step.MainFrameLabel"
         class="org.argeo.slc.jemmytest.steps.MainFrameLabel">
-        <property name="uiPart" ref="uipart.mainFrame" />
+        <property name="mainFrame" ref="uipart.MainFrame" />
     </bean>
 
-    <bean id="uipart.mainFrame"
-        class="org.argeo.slc.jemmytest.uiparts.MainFrame">
+    <bean id="step.TestDialogOpen"
+        class="org.argeo.slc.jemmytest.steps.TestDialogOpen">
+        <property name="mainFrame" ref="uipart.MainFrame" />
+        <property name="testDialog" ref="uipart.TestDialog" />
+    </bean>
+
+    <bean id="step.TestDialogLabel"
+        class="org.argeo.slc.jemmytest.steps.TestDialogLabel">
+        <property name="testDialog" ref="uipart.TestDialog" />
+    </bean>
+
+    <bean id="step.ComplexPanelValues"
+        class="org.argeo.slc.jemmytest.steps.ComplexPanelValues">
+        <property name="complexPanel" ref="uipart.ComplexPanel" />
     </bean>
 
+    <!-- Runtime -->
     <bean id="slcDetached.driver"
         class="org.argeo.slc.detached.drivers.FileDriver">
         <property name="baseDir" value="file:${slc.workDir}/detached" />
index d21e8072d07556e92c02f375532a6cee2ce41859..50a51628220f0f4b59cee699ec670de18d4a35fc 100644 (file)
@@ -8,9 +8,9 @@
     <import resource="classpath:/META-INF/spring/slc-detached.xml" />
 
     <bean id="detachedTestDef"
-        class="org.argeo.slc.lib.detached.DetachedTestDefinition">
+        parent="slcTemplate.detached.testDefinition"
+        scope="prototype">
         <property name="client" ref="slcDetached.driver" />
-        <property name="step" ref="step.mainFrameLabel" />
     </bean>
 
     <bean id="slcDetached.driver"
@@ -20,7 +20,7 @@
             ref="slcDefault.detached.xmlConverterCastor" />
     </bean>
 
-    <bean id="detachedTestData1"
+    <bean id="testData.mainFrameLabel1"
         class="org.argeo.slc.lib.detached.DetachedTestData"
         scope="prototype">
         <property name="values">
@@ -35,7 +35,7 @@
         </property>
     </bean>
 
-    <bean id="detachedTestData2"
+    <bean id="testData.mainFrameLabel2"
         class="org.argeo.slc.lib.detached.DetachedTestData"
         scope="prototype">
         <property name="values">
             </map>
         </property>
     </bean>
+
+    <bean id="testData.testDialogLabel"
+        class="org.argeo.slc.lib.detached.DetachedTestData"
+        scope="prototype">
+        <property name="expectedValues">
+            <map>
+                <entry key="jemmyTest.labelDialog" value="Dialog open" />
+            </map>
+        </property>
+    </bean>
 </beans>
\ No newline at end of file
index 181335b834dfb9cfa154c53bd6b90aa7ad201072..031d56e9989174ae1271f655ff363107ecf88c2f 100644 (file)
@@ -8,13 +8,39 @@
                        </properties>
                </slc.detached>
 
+               <!-- Main frame label -->
                <slc.test>
-                       <testDefinition bean="detachedTestDef" />
-                       <testData bean="detachedTestData1" />
+                       <testDefinition bean="detachedTestDef">
+                               <override name="step" bean="step.MainFrameLabel" />
+                       </testDefinition>
+                       <testData bean="testData.mainFrameLabel1" />
                </slc.test>
                <slc.test>
-                       <testDefinition bean="detachedTestDef" />
-                       <testData bean="detachedTestData2" />
+                       <testDefinition bean="detachedTestDef">
+                               <override name="step" bean="step.MainFrameLabel" />
+                       </testDefinition>
+                       <testData bean="testData.mainFrameLabel2" />
+               </slc.test>
+
+               <!-- Test dialog -->
+               <slc.test>
+                       <testDefinition bean="detachedTestDef">
+                               <override name="step" bean="step.TestDialogOpen" />
+                       </testDefinition>
+               </slc.test>
+
+               <slc.test>
+                       <testDefinition bean="detachedTestDef">
+                               <override name="step" bean="step.TestDialogLabel" />
+                       </testDefinition>
+                       <testData bean="testData.testDialogLabel" />
+               </slc.test>
+
+               <!-- Complex Panel -->
+               <slc.test>
+                       <testDefinition bean="detachedTestDef">
+                               <override name="step" bean="step.ComplexPanelValues" />
+                       </testDefinition>
                </slc.test>
 
                <slc.detached action="slcDefault.detached.admin.closeSession" />