How to dermine if Shift Key is down? [message #462951] |
Fri, 21 October 2005 14:35  |
Eclipse User |
|
|
|
I tried following:
displayKeysListener = new Listener() {
public void handleEvent(Event event) {
if(event.keyCode == SWT.SHIFT) {
if(event.type == SWT.KeyDown) {
Utilities.setShiftKeyDown(true);
} else if(event.type == SWT.KeyUp) {
Utilities.setShiftKeyDown(false);
}
}
}
};
Display d = getWorkbench().getDisplay();
d.addFilter(SWT.KeyDown, displayKeysListener);
d.addFilter(SWT.KeyUp, displayKeysListener);
It works until popup menu in Eclipse view invoked, display doesn't send any
key events while menu is active. Why? How to find out if Shift key had been
pressed just before action from popup menu was invoked?
Sergey Gomanyuk,
ISP RAS,
junior research assistant,
e-mail: sergg@ispras.ru
phone: +7 (095) 912-5317 (4428 additional)
cell: +7 (909) 159-1066
|
|
|
Re: How to dermine if Shift Key is down? [message #462954 is a reply to message #462951] |
Fri, 21 October 2005 17:14   |
Eclipse User |
|
|
|
I'm assuming that you mean the user is holding Shift while selecting the
menu item:
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell (display);
shell.setBounds(10,10,200,200);
Menu menu = new Menu(shell, SWT.POP_UP);
shell.setMenu(menu);
MenuItem item = new MenuItem(menu, SWT.NONE);
item.setText("item");
item.addListener(SWT.Selection, new Listener (){
public void handleEvent(Event event) {
System.out.print("item selected with modifiers: ");
if ((event.stateMask & SWT.SHIFT) != 0) System.out.print("Shift
");
if ((event.stateMask & SWT.CTRL) != 0) System.out.print("Ctrl
");
if ((event.stateMask & SWT.ALT) != 0) System.out.print("Alt");
System.out.println();
}
});
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
Grant
"Sergey V. Gomanyuk" <sergg@ispras.ru> wrote in message
news:djbci9$t9n$1@news.eclipse.org...
> I tried following:
>
> displayKeysListener = new Listener() {
> public void handleEvent(Event event) {
> if(event.keyCode == SWT.SHIFT) {
> if(event.type == SWT.KeyDown) {
> Utilities.setShiftKeyDown(true);
> } else if(event.type == SWT.KeyUp) {
> Utilities.setShiftKeyDown(false);
> }
> }
> }
> };
> Display d = getWorkbench().getDisplay();
> d.addFilter(SWT.KeyDown, displayKeysListener);
> d.addFilter(SWT.KeyUp, displayKeysListener);
>
>
> It works until popup menu in Eclipse view invoked, display doesn't send
any
> key events while menu is active. Why? How to find out if Shift key had
been
> pressed just before action from popup menu was invoked?
> Sergey Gomanyuk,
> ISP RAS,
> junior research assistant,
> e-mail: sergg@ispras.ru
> phone: +7 (095) 912-5317 (4428 additional)
> cell: +7 (909) 159-1066
>
>
>
|
|
|
Re: How to dermine if Shift Key is down? [message #463033 is a reply to message #462954] |
Tue, 25 October 2005 03:44  |
Eclipse User |
|
|
|
Thanks a lot. It's exactly what I need.
"Grant Gayed" <grant_gayed@ca.ibm.com> wrote in message
news:djblob$9ak$1@news.eclipse.org...
> I'm assuming that you mean the user is holding Shift while selecting the
> menu item:
>
> public static void main(String[] args) {
> Display display = new Display();
> Shell shell = new Shell (display);
> shell.setBounds(10,10,200,200);
> Menu menu = new Menu(shell, SWT.POP_UP);
> shell.setMenu(menu);
> MenuItem item = new MenuItem(menu, SWT.NONE);
> item.setText("item");
> item.addListener(SWT.Selection, new Listener (){
> public void handleEvent(Event event) {
> System.out.print("item selected with modifiers: ");
> if ((event.stateMask & SWT.SHIFT) != 0) System.out.print("Shift
> ");
> if ((event.stateMask & SWT.CTRL) != 0) System.out.print("Ctrl
> ");
> if ((event.stateMask & SWT.ALT) != 0) System.out.print("Alt");
> System.out.println();
> }
> });
> shell.open();
> while (!shell.isDisposed()) {
> if (!display.readAndDispatch()) display.sleep();
> }
> display.dispose();
> }
>
> Grant
>
> "Sergey V. Gomanyuk" <sergg@ispras.ru> wrote in message
> news:djbci9$t9n$1@news.eclipse.org...
>> I tried following:
>>
>> displayKeysListener = new Listener() {
>> public void handleEvent(Event event) {
>> if(event.keyCode == SWT.SHIFT) {
>> if(event.type == SWT.KeyDown) {
>> Utilities.setShiftKeyDown(true);
>> } else if(event.type == SWT.KeyUp) {
>> Utilities.setShiftKeyDown(false);
>> }
>> }
>> }
>> };
>> Display d = getWorkbench().getDisplay();
>> d.addFilter(SWT.KeyDown, displayKeysListener);
>> d.addFilter(SWT.KeyUp, displayKeysListener);
>>
>>
>> It works until popup menu in Eclipse view invoked, display doesn't send
> any
>> key events while menu is active. Why? How to find out if Shift key had
> been
>> pressed just before action from popup menu was invoked?
>> Sergey Gomanyuk,
>> ISP RAS,
>> junior research assistant,
>> e-mail: sergg@ispras.ru
>> phone: +7 (095) 912-5317 (4428 additional)
>> cell: +7 (909) 159-1066
>>
>>
>>
>
>
|
|
|
Powered by
FUDForum. Page generated in 0.04180 seconds