Title: [734] trunk/extensions/swing/src/java/org/jbehave/threaded/swing: [EK] Fixed comboboxes!

Diff

Modified: trunk/extensions/swing/src/behaviour/org/jbehave/threaded/swing/DefaultWindowWrapperBehaviour.java (733 => 734)

--- trunk/extensions/swing/src/behaviour/org/jbehave/threaded/swing/DefaultWindowWrapperBehaviour.java	2007-05-24 17:25:43 UTC (rev 733)
+++ trunk/extensions/swing/src/behaviour/org/jbehave/threaded/swing/DefaultWindowWrapperBehaviour.java	2007-05-24 17:43:38 UTC (rev 734)
@@ -85,14 +85,29 @@
 	}
     
     public void shouldEnterTextIntoAComboBox() throws Exception {
-        shouldEnterTextIntoComboBox(false);
+        checkForHeadless();
+        DefaultWindowWrapper wrapper = new DefaultWindowWrapper(AFrame.FRAME_NAME);
+        
+        try {
+            AFrame frame = new AFrame();
+            
+            JComboBox comboBox = new JComboBox(new Object[] {"horse", "cow", "sheep"});
+            comboBox.setName("a.combobox");
+            frame.getContentPane().setLayout(new FlowLayout());
+            frame.getContentPane().add(comboBox);
+            frame.pack();
+            frame.setVisible(true);
+            
+            wrapper.enterText("a.combobox", "cow");
+            
+            ensureThat(comboBox.getSelectedItem(), eq("cow"));
+            
+        } finally {
+            wrapper.closeWindow();
+        }
     }
     
-//    public void shouldEnterTextIntoAnEditableComboBox() throws Exception {
-//        shouldEnterTextIntoComboBox(true);
-//    }
-
-    private void shouldEnterTextIntoComboBox(boolean editable) throws ComponentFinderException, TimeoutException {
+    public void shouldEnterTextIntoAnEditableComboBox() throws Exception {
         checkForHeadless();
         DefaultWindowWrapper wrapper = new DefaultWindowWrapper(AFrame.FRAME_NAME);
         
@@ -101,7 +116,7 @@
             
             JComboBox comboBox = new JComboBox(new Object[] {"horse", "cow", "sheep"});
             comboBox.setName("a.combobox");
-            comboBox.setEditable(editable);
+            comboBox.setEditable(true);
             frame.getContentPane().setLayout(new FlowLayout());
             frame.getContentPane().add(comboBox);
             frame.pack();
@@ -109,15 +124,14 @@
             
             wrapper.enterText("a.combobox", "cow");
             
-            ensureThat(comboBox.getSelectedItem(), eq("cow"));
+            ensureThat(comboBox.getEditor().getItem(), eq("cowhorse")); // because we didn't delete the previous value
             
-            
         } finally {
             wrapper.closeWindow();
         }
     }
-	
-	public void shouldFindComponent() throws ComponentFinderException, TimeoutException  {
+
+    public void shouldFindComponent() throws ComponentFinderException, TimeoutException  {
 	    checkForHeadless();
 	    DefaultWindowWrapper wrapper = new DefaultWindowWrapper(AFrame.FRAME_NAME);
         try {

Modified: trunk/extensions/swing/src/java/org/jbehave/threaded/swing/CharacterTyper.java (733 => 734)

--- trunk/extensions/swing/src/java/org/jbehave/threaded/swing/CharacterTyper.java	2007-05-24 17:25:43 UTC (rev 733)
+++ trunk/extensions/swing/src/java/org/jbehave/threaded/swing/CharacterTyper.java	2007-05-24 17:43:38 UTC (rev 734)
@@ -4,13 +4,18 @@
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.EventQueue;
+import java.awt.ItemSelectable;
+import java.awt.TextComponent;
 import java.awt.Toolkit;
 import java.awt.Window;
 import java.awt.event.KeyEvent;
 import java.awt.event.KeyListener;
 
+import javax.swing.JComboBox;
 import javax.swing.JComponent;
 import javax.swing.JFrame;
+import javax.swing.SwingUtilities;
+import javax.swing.text.JTextComponent;
 
 import org.jbehave.core.threaded.TimeoutException;
 
@@ -31,7 +36,15 @@
     }
     
     public void typeIntoComponent(Component component, String text) {
-        QueueingKeyAdapter queuer = new QueueingKeyAdapter(component);
+        focuser.requestFocusOn(component);
+        QueueingAdapter queuer;
+        
+        if (component instanceof JComboBox && ((JComboBox)component).isEditable()) {
+            queuer = new QueueingKeyAdapter(((JComboBox)component).getEditor().getEditorComponent());
+        } else {
+            queuer = new QueueingKeyAdapter(component);
+        }
+        
         try {
             for (int i = 0; i < text.length(); i++) {
                 postKeyEvent(component, text.charAt(i));
@@ -110,5 +123,5 @@
             // TODO Auto-generated method stub
             
         }
-    }       
+    }
 }

Modified: trunk/extensions/swing/src/java/org/jbehave/threaded/swing/DefaultWindowWrapper.java (733 => 734)

--- trunk/extensions/swing/src/java/org/jbehave/threaded/swing/DefaultWindowWrapper.java	2007-05-24 17:25:43 UTC (rev 733)
+++ trunk/extensions/swing/src/java/org/jbehave/threaded/swing/DefaultWindowWrapper.java	2007-05-24 17:43:38 UTC (rev 734)
@@ -60,7 +60,6 @@
 
 	public void enterText(String componentName, String text) throws ComponentFinderException, TimeoutException {
 		Component component = findComponent(componentName);
-		focuser.requestFocusOn(component);
 		typer.typeIntoComponent(component, text);
 	}
 		


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to