Платформа Netbeans отключает действие

В моем приложении мне нужно отобразить кнопку «Создать проект», если у меня есть роль «admin», иначе, если просто пользователь, действие должно быть отключено, а кнопка вообще не должна отображаться.

Вот мой код:

@ActionID(id = "com.demos.core.action.project.ProjectCreateAction", category = "Actions")
@ActionRegistration(displayName = "com.demos.core.Bundle#action.project.projectcreate", iconBase = "com/demos/core/action/create_project.png")
@ActionReference(path = "Actions/Ribbon/TaskPanes/group-project/set-project",position = 10)
public final class ProjectCreateAction implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        ...
    }
}

В методе actionPerformed() я могу получить роль пользователя, но уже слишком поздно, я вообще не хочу отображать кнопку действия.

Как я могу скрыть эту кнопку действия, если моему пользователю не разрешено ее использовать?


person user2866367    schedule 10.10.2013    source источник


Ответы (1)


Одним из возможных способов является реализация Presenter.Toolbar из пакета org.openide.util.actions следующим образом:

// Some Annotations here
public final class SomeAction extends AbstractAction implements Presenter.Toolbar {

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Some action
    }

    @Override
    public Component getToolbarPresenter() {
        ImageIcon icon = ImageUtilities.loadImageIcon("path/to/image.png", true);
        JButton button = new JButton(icon);
        button.addActionListener(this);
        button.setToolTipText(NbBundle.getMessage(SomeAction.class, "TextID"));
        button.setVisible(SomeUtilityClass.isAdmin());
        return button;
    }
}
person Maksim Pelevin    schedule 28.01.2014