Decide between single and double click [message #503711] |
Tue, 15 December 2009 07:43  |
Eclipse User |
|
|
|
In a table I need an action for single click and another action for double click. I use this code:
thisMouseListener = new MouseAdapter() {
@Override
public void mouseDoubleClick(MouseEvent e) {
System.out.println("Double click");
}
@Override
public void mouseDown(MouseEvent e) {
System.out.println("Single click");
}
}
The problem is that in RWT there is no MouseEvent.count attribute (like in SWT) and for an double click, I'll receive 2 single click events and 1 double click event. But I do not one to execute the 2 single code events in the case of a double click. Does anyone has an idea how can I decide between them?
Thanks in advance,
Catalin
|
|
|
Re: Decide between single and double click [message #504051 is a reply to message #503711] |
Wed, 16 December 2009 17:51   |
Eclipse User |
|
|
|
Hello Catalin,
As it stands now, it depends on your platform, the browser, and how fast you click.
On my Windows 7 machine, You cannot avoid at least receiving 1 single click event with a double click event. And the order that these occur in depends on the browser:
(normal double clicking)
IE 8.0 - Single, Double, Single
FF 3.5 - Single, Double, Single
Chrome 3.3 - Single, Double, Single
(ultra fast double clicking)
IE 8.0 - Single, Double, Single
FF 3.5 - Double, Single, Single
Chrome 3.0 - Double, Single, Single
To eliminate the second single click event you can use this or similar code:
boolean doubleClick = false;
@Override
public void mouseDoubleClick(MouseEvent e)
{
System.out.println("Double Click "+e.time);
doubleClick = true;
}
@Override
public void mouseUp(MouseEvent e)
{
if (!doubleClick) {
System.out.println("Single Click "+e.time);
}
else {
doubleClick = false;
}
}
Another way is to use the time field of the MouseEvent.
Hope this helps.
|
|
|
|
Re: Decide between single and double click [message #504151 is a reply to message #503711] |
Thu, 17 December 2009 03:31  |
Eclipse User |
|
|
|
Hi,
thank you first for the answers. At the end I found a solution. It's a combination between your ideas.
Here is my solution in case that some is also interested:
selectionListener = new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
// double click behavior
System.out.println("Double-click");
}
public void widgetSelected(final SelectionEvent e) {
// single click behavior
Display display = Display.getDefault();
display.timerExec(display.getDoubleClickTime(), new Runnable() {
public void run() {
if (mouseDoubleClick) {
return;
}
System.out.println("Single-click");
});
}
}
Regards,
Catalin
|
|
|
Powered by
FUDForum. Page generated in 0.06998 seconds