Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] Mouse Event

Right you need to ensure you send the event from the display thread (just like a mouse click).

We have some helper methods in PlatformGIS to help … here is the internals of them:

To find the current display:

Display display = Display.getCurrent();
        if (display == null) {
            display = Display.getDefault();
        }

And then send it a runnable:

display.asyncExec(runnable);

Our helper method is:

PlatformGIS.asyncInDisplayThread( runnable, true )

Good luck; working with the display thread is an annoying pat of using SWT (or any user interface toolkit)
-- 
Jody Garnett

On Tuesday, 7 February 2012 at 8:56 PM, Alberto Debiasi wrote:

Thanks for the response,
I tried to follow your suggestion:
     
 PointTool pointTool =.....
        IMapDisplay mapDisplay=map.getRenderManager().getMapDisplay();
//I create a mouse event
        MapMouseEvent mouseEvent = new MapMouseEvent(mapDisplay,10,10,0,1,1);       
        pt.mousePressed(mouseEvent);

But I have an exception:

Exception in thread "AWT-EventQueue-0" org.eclipse.swt.SWTException: Invalid thread access
    at org.eclipse.swt.SWT.error(SWT.java:3563)
    at org.eclipse.swt.SWT.error(SWT.java:3481)
    at org.eclipse.swt.SWT.error(SWT.java:3452)
    at net.refractions.udig.tools.edit.MouseTracker.checkAccess(MouseTracker.java:96)
    at net.refractions.udig.tools.edit.MouseTracker.updateState(MouseTracker.java:56)
    at net.refractions.udig.tools.edit.EditToolHandler.handleEvent(EditToolHandler.java:227)
    at net.refractions.udig.tools.edit.AbstractEditTool.onMousePressed(AbstractEditTool.java:235)
    at net.refractions.udig.project.ui.tool.SimpleTool.mousePressed(SimpleTool.java:142)

In particular in the method checkAccess() in the class MouseTracker:

 private void checkAccess() {
        if( Display.getCurrent()==null )
            SWT.error(SWT.ERROR_THREAD_INVALID_ACCESS);
    }


Alberto.

2012/2/6 Jody Garnett <jody.garnett@xxxxxxxxx>
Mouse events are sent to the current tool. Tour can hunt down this
tool (use applicationgis to find the tool manager) and then send it
mouse event objects. You may wish to do so from the display thread.

To simulate mouse and keyboard interaction more generally for test
cases use SWTBot

--
Jody Garnett

On 07/02/2012, at 12:31 AM, Alberto Debiasi <debiasi.alberto@xxxxxxxxx> wrote:

> Hello everybody,
>
> How can I "emulate" the click of the mouse on the map?
>
> For example with a command like this:
>
> .clickOnTheMap(currentMap,coordinates);
>
> Thanks.
> Alberto
> _______________________________________________
> User-friendly Desktop Internet GIS (uDig)
> http://udig.refractions.net
> http://lists.refractions.net/mailman/listinfo/udig-devel
_______________________________________________
udig-users mailing list
udig-users@xxxxxxxxxxxxxxxxxxxxx
http://lists.refractions.net/mailman/listinfo/udig-users



Back to the top