Действие в контекстное меню подменю Java JFace SWT Eclipse - PullRequest
5 голосов
/ 11 сентября 2010

У меня небольшая проблема с Eclipse Plug-In в разработке.

Существует представление , которое сопоставимо с списком ,Там есть список пользователей.Моя проблема в том, что я хотел бы добавить контекстное меню .
Идея состоит в том, чтобы выполнить щелчок правой кнопкой мыши на пользователе, и меню должно появиться.Пока все хорошо ... но проблема в том, что я не хочу ни одного меню.Я хотел бы иметь запись «установить статус» для этого контекстного меню, и когда вы наводите курсор на эту запись, меню должно быть расширено, чтобы показывать такие вещи, как «прочь», «занят», «невидим» и так далее ...
Может ли кто-нибудь помочь мне добиться этого?

Я уже выполнил соответствующее действие и добавил дополнение к MenuManager .

public SessionViewContextMenu(ViewPart sessionView, TableViewer viewer,
    final Action action) {

    MenuManager manager = new MenuManager("#PopupMenu");

    manager.setRemoveAllWhenShown(true);
    manager.addMenuListener(new IMenuListener() {

        public void menuAboutToShow(IMenuManager manager) {
            manager.add(action);
        }
    });

Соответствующее действие выглядит следующим образом:

public Action(...) {

    super(provider, "Bla Bla");

    // some fancy picture
    setImageDescriptor(...);

    // setId(ACTION_ID);

    setToolTipText("Bla Bla");

    update();
}

Все работает нормально (по крайней мере, контекстное меню показывает запись).Теперь я бы хотел расширить меню, когда вы наводите курсор на / выбираете соответствующее действие.Таким образом, меню должно расшириться и показать некоторые другие возможности здесь ...
Любая помощь по созданию рекурсивного контекстного меню очень ценится!

Надеюсь, вы понимаете проблему ине стесняйтесь спрашивать у Дор разъяснения

1 Ответ

11 голосов
/ 12 сентября 2010

Просто создайте подменю и добавьте действия в это подменю.
Вот быстрый фрагмент, который должен прояснить использование:

            // submenu for a specific user
            MenuManager subMenu = new MenuManager("Change Status", null);

            // Actions for the sub menu
            subMenu.add(someAction);

            // add the action to the submenu
            manager.add(subMenu);

Надеюсь, это поможет!

Составьте:

public SessionViewContextMenu(ViewPart sessionView, TableViewer viewer,
final Action action) {

MenuManager manager = new MenuManager("#PopupMenu");

manager.setRemoveAllWhenShown(true);
manager.addMenuListener(new IMenuListener() {

    public void menuAboutToShow(IMenuManager manager) {
        manager.add(action);

        // submenu for a specific user
        MenuManager subMenu = new MenuManager("Change Status", null);

        // Actions for the sub menu
        subMenu.add(someAction);

        // add the action to the submenu
        manager.add(subMenu);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...