Пример, показывающий Multi Edit в Nattable - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть требование, чтобы при одном щелчке в ячейке было возможно нормальное редактирование, а при двойном щелчке по ячейке должно открываться диалоговое окно для редактирования ячейки. Два возможны индивидуально. Я вижу метод "boolean supportMultiEdit (IConfigRegistry configRegistry, List configLabels)", но нет примера, чтобы показать работу. Кто-нибудь использовал его или может показать его конфигурацию.

1 Ответ

1 голос
/ 30 апреля 2020

Multi edit означает, что можно редактировать несколько ячеек одновременно. Это, конечно же, делается в редакторе, так как нет смысла выполнять мультиредактирование внутри строки. Вам лучше взглянуть на openInline(IConfigRegistry, List<String>) или даже лучше на EditConfigAttributes#OPEN_IN_DIALOG, чтобы решить, что вы ищете.

Но вы на самом деле ищете способ по-разному справиться с открытием редактора при различных взаимодействиях пользовательского интерфейса. Поэтому вам необходимо зарегистрировать соответствующие привязки пользовательского интерфейса. Это уже обсуждалось на форуме NatTable .

. И EditorExample показывает довольно много возможных вариантов конфигурации, доступных для редактирования. И почти каждый редактируемый пример показывает возможности мультиредактирования. Вам просто нужно выбрать несколько ячеек, которые вы хотите отредактировать, а затем начать печатать или нажимать клавишу F2.

Следующий код поможет вам с конфигурацией, основанной на метке, добавленной в действие привязки пользовательского интерфейса:

public class OpenEditorConfiguration extends AbstractRegistryConfiguration {

    @Override
    public void configureRegistry(IConfigRegistry configRegistry) {
        configRegistry.registerConfigAttribute(
            EditConfigAttributes.OPEN_IN_DIALOG,
            Boolean.TRUE,
            DisplayMode.EDIT,
            "open_in_dialog");
    }

    @Override
    public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
        uiBindingRegistry.registerDoubleClickBinding(
            new CellEditorMouseEventMatcher(GridRegion.BODY),
            new IMouseAction() {

                @Override
                public void run(NatTable natTable, MouseEvent event) {
                    int columnPosition = natTable.getColumnPositionByX(event.x);
                    int rowPosition = natTable.getRowPositionByY(event.y);
                    ILayerCell cell = natTable.getCellByPosition(columnPosition, rowPosition);
                    cell.getConfigLabels().add("open_in_dialog");

                    natTable.doCommand(new EditCellCommand(
                        natTable, 
                        natTable.getConfigRegistry(), 
                        cell));
                }
            });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...