[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?

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
>
>
>