< prev index next >

src/org/netbeans/jemmy/operators/Operator.java

Print this page

        

@@ -691,11 +691,11 @@
      * @param state a ComponentChooser defining the state criteria.
      * @throws TimeoutExpiredException if the state has not achieved in a value
      * defined by {@code "ComponentOperator.WaitStateTimeout"}
      */
     public void waitState(final ComponentChooser state) {
-        Waiter<String, Void> stateWaiter = new Waiter<>(new Waitable<String, Void>() {
+        waitState(new Waitable<String, Void>() {
             @Override
             public String actionProduced(Void obj) {
                 return state.checkComponent(getSource()) ? "" : null;
             }
 

@@ -708,16 +708,23 @@
             @Override
             public String toString() {
                 return "Operator.waitState.Waitable{description = " + getDescription() + '}';
             }
         });
-        stateWaiter.setTimeoutsToCloneOf(getTimeouts(), "ComponentOperator.WaitStateTimeout");
+    }
+
+    public <R> R waitState(Waitable<R, Void> waitable) {
+        Waiter<R, Void> stateWaiter = new Waiter<>(waitable);
+        stateWaiter.setTimeoutsToCloneOf(getTimeouts(),
+                "ComponentOperator.WaitStateTimeout");
         stateWaiter.setOutput(getOutput().createErrorOutput());
         try {
-            stateWaiter.waitAction(null);
+            return stateWaiter.waitAction(null);
         } catch (InterruptedException e) {
-            throw (new JemmyException("Waiting of \"" + state.getDescription()
+            Thread.currentThread().interrupt();
+            throw (new JemmyException(
+                    "Waiting of \"" + waitable.getDescription()
                     + "\" state has been interrupted!"));
         }
     }
 
     /**
< prev index next >