Codename one - опция флажка в меню переполнения - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть форма с основным меню переполнения, которая должна предлагать варианты управления списком элементов этой формы.Одна часть сортирует список различными способами (что работает хорошо), другая часть обеспечивает фильтрацию списка.Например, наличие простого списка покупок элементов, которые можно проверить, и я хочу, чтобы фильтр отображал только «открытые» элементы, но при этом не отмечен, чтобы сосредоточиться на них.

Можно ли добавить ранее собранный компонент в меню переполнения?Это просто диалог, появляющийся в этом месте, поэтому он должен иметь возможность разместить любой компонент по этому вопросу.Однако параметры «Добавить (Материал) CommandToOverflowMenu» позволяют только добавлять команды напрямую или строку, значок, комбинацию слушателя.

Если пользовательский компонент невозможен, я все равно мог бы использовать значок, чтобы отобразить пустойсначала установите флажок, а затем обновите до установленного флажка, после нажатия.Однако, как манипулировать существующим элементом переполнения после его добавления?Я даже не вижу способа удалить ранее добавленные элементы переполнения, поскольку «getOverflowCommands» возвращает Iterable, который не должен использоваться для манипулирования списком.

Есть ли способ сделать это, яя должен настроить свое собственное, настраиваемое, переполненное меню, такое как диалоговое окно?

Спасибо и наилучшими пожеланиями

РЕДАКТИРОВАТЬ С РЕШЕНИЕМ Я создал новый класс для решения моей проблемы:

public class ToggleCommand extends Command {

    private boolean selected;

    private static Image selectedImage = FontImage.createMaterial(FontImage.MATERIAL_RADIO_BUTTON_CHECKED,
            new Label().getUnselectedStyle());
    private static Image unSelectedImage = FontImage.createMaterial(FontImage.MATERIAL_RADIO_BUTTON_UNCHECKED,
            new Label().getUnselectedStyle());

    public ToggleCommand(String command) {
        this(command, selectedImage);
    }

    public ToggleCommand(String command, Image icon) {
        super(command, icon);
        selected = true;
    }

    public boolean isSelected() {
        return selected;
    }

    public void setSelected(boolean selected) {
        this.selected = selected;
        if (selected) {
            this.setIcon(selectedImage);
        } else {
            this.setIcon(unSelectedImage);
        }
    }
}

который вы можете использовать следующим образом:

filterDoneCommand = new ToggleCommand("Show closed?") {
        @Override
        public void actionPerformed(ActionEvent evt) {
            filterDoneCommand.setSelected(!filterDoneCommand.isSelected());
            // do your other stuff
        }
    };
    getToolbar().addCommandToOverflowMenu(filterDoneCommand);

1 Ответ

0 голосов
/ 18 декабря 2018

Меню переполнения не было построено должным образом и, вероятно, должно быть переписано.У нас нет встроенной поддержки опций флажков, и внести изменения, чтобы добавить их, было бы довольно обременительно.

Лучший обходной путь, который я могу придумать, - добавить команду с флажком в виде значка.Затем проверка / снятие отметки, когда команда вызывается.addMaterialCommandToOverflowMenu и аналогичные методы команд возвращают экземпляр Command, который необходимо сохранить для дальнейшего использования в этом случае.

Если вы хотите сделать все возможное, вы можете просто добавить кнопку справабоковую панель инструментов и используйте ее для отображения полностью настроенного меню переполнения.Это может быть проще в некоторых отношениях.

...