[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform.swt] Re: How to dermine if Shift Key is down?
|
Thanks a lot. It's exactly what I need.
"Grant Gayed" <grant_gayed@xxxxxxxxxx> wrote in message
news:djblob$9ak$1@xxxxxxxxxxxxxxxxxxx
> 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@xxxxxxxxx> wrote in message
> news:djbci9$t9n$1@xxxxxxxxxxxxxxxxxxx
>> 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@xxxxxxxxx
>> phone: +7 (095) 912-5317 (4428 additional)
>> cell: +7 (909) 159-1066
>>
>>
>>
>
>