Hi Eric,

Try to make an asychronous "click", then define a wait condition to wait
till the dialog is opened:

--------------------------------------------
UIThreadRunnable.asyncExec( bot.getDisplay(), new
UIThreadRunnable.VoidResult()
{
    public void run()
    {
        bot.menu("File").menu("Foo...").click();
    }
} );
bot.waitUntil( new DefaultCondition()
{
    public boolean test() throws Exception
    {
        return bot.shell("Foo title") != null;
    }
    public String getFailureMessage()
    {
        return "No dialog";
    }
} );
--------------------------------------------

Hope that helps,
Stefan


[EMAIL PROTECTED] schrieb:
> Hello everybody,
> 
> I am very enthusiast about the framework and I already have a question.
> In my application, I have a command that have a default 
> org.eclipse.core.commands.Handler.
> It opens a dialog like this:
>   @Override
>   public Object execute(final ExecutionEvent event) throws ExecutionException 
> {
>     final FooWizard wizard = new FooWizard();
>     wizard.setWindowTitle(Messages.getString("Foo.title"));
>     final WizardDialog dialog = new WizardDialog(
>       HandlerUtil.getActiveShell(event).getShell(),
>       wizard
>     );
>     dialog.setTitle(Messages.getString("Foo.title")); //$NON-NLS-1$
>     dialog.create();
>     dialog.open();
>     return null;
>   }
> 
> Tested with the code:
>   bot.menu("File").menu("Foo...").click();
>   bot.shell("Foo title").activate();
>   ... (testing dialog) ...
> 
> The click method execute the command which forwards to the active handler. 
> But the execution is stopped at dialog.open() since the command framework is 
> synchronous.
> 
> Do you have any ideas how could I test a such synchronous dialog ?
> 
> I already tried to async the dialog but in this case, a timeout occurs and 
> the dialog is displayed after the end of the test (!).
>   Display.getDefault().asyncExec(new Runnable(){
>     public void run() {
>       final FooWizard wizard = new FooWizard();
>       wizard.setWindowTitle(Messages.getString("Foo.title"));
>       final WizardDialog dialog = new WizardDialog(
>         HandlerUtil.getActiveShell(event).getShell(),
>         wizard
>       );
>       dialog.setTitle(Messages.getString("Foo.title")); //$NON-NLS-1$
>       dialog.create();
>       dialog.open();
>     }
>   });
> 
> Thank you,
>  - Eric.
> 
> --
> Target platform: Eclipse 3.3.2
> SWTBot: SWTBot eclipse 1.2.0.883-dev
> 
> -------------------------------------------------------------------------
> This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
> Build the coolest Linux based applications with Moblin SDK & win great prizes
> Grand prize is a trip for two to an Open Source event anywhere in the world
> http://moblin-contest.org/redirect.php?banner_id=100&url=/
> _______________________________________________
> SWTBot-users mailing list
> SWTBot-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/swtbot-users
> http://swtbot.org/ - a functional testing tool for SWT/Eclipse
> 


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
SWTBot-users mailing list
SWTBot-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/swtbot-users
http://swtbot.org/ - a functional testing tool for SWT/Eclipse

Reply via email to