16 сентября 2013 г.

swt jface button dropdown popup menu

Хочу я, чтобы при нажатии на кнопку вываливалось меню. Ну типа как Start-меню в винде. Всё очень просто - по нажатию кнопки создаём и разворачиваем в месте тыкания мышкой.
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Menu;
...
final Button mainMenuButton = new Button(composite, SWT.PUSH);
mainMenuButton.setText("¿?");
mainMenuButton.setLayoutData( ... );
mainMenuButton.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent event) {
        Menu dropMenu = createMainMenu( getShell() );
        Point point = mainMenuButton.toDisplay(new Point(event.x, event.y));
        dropMenu.setLocation( point.x, point.y+mainMenuButton.getBounds().height );
        dropMenu.setVisible(true);
    }
});
Далее на чистом SWT как-то так:
public static Menu createMainMenu( final Shell shell )
{
    Menu dropMenu = new Menu(shell, SWT.POP_UP);
    ...
    MenuItem item0 = new MenuItem(dropMenu, SWT.PUSH);
    item0.setText(...);
    item0.addListener(SWT.Selection, ...);
    ....
    return dropMenu;
}
На JFace как-то так:
public Menu createMainMenu( final Shell shell )
{
    MenuManager popManager = new MenuManager();
    popManager.add(new ActionOne(shell));
    ...
    popManager.add(new Separator());
    ...
    Menu dropMenu = popManager.createContextMenu(shell);
    return dropMenu;
}

Комментариев нет:

Отправить комментарий