|
Re: How to dermine if Shift Key is down? [message #462954 is a reply to message #462951] |
Fri, 21 October 2005 21:14 |
Grant Gayed Messages: 2150 Registered: July 2009 |
Senior Member |
|
|
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 07:44 |
Sergey Gomanyuk Messages: 46 Registered: July 2009 |
Member |
|
|
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.03190 seconds