Нужен множественный выбор в GWT CellList

Я хотел бы выбрать несколько ячеек в компоненте CellList; Я новичок в GWT, кто-нибудь, пожалуйста, помогите. Чтобы получить множественный выбор, как мне изменить приведенный ниже код?

public class HelloWorld implements EntryPoint {
private static final List<String> DAYS = Arrays.asList("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
        "Friday", "Saturday");

public void onModuleLoad() {
    // Create a cell to render each value.
    TextCell textCell = new TextCell();

    // Create a CellList that uses the cell.
    CellList<String> cellList = new CellList<String>(textCell);
    cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);

    // Add a selection model to handle user selection.
    final SingleSelectionModel<String> selectionModel = new SingleSelectionModel<String>();
    cellList.setSelectionModel(selectionModel);
    selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
        public void onSelectionChange(SelectionChangeEvent event) {
            String selected = selectionModel.getSelectedObject();
            if (selected != null) {
                // Window.alert("You selected: " + selected);
            }
        }
    });

    cellList.setRowCount(DAYS.size(), true);

    // Push the data into the widget.
    cellList.setRowData(0, DAYS);

    // Add it to the root panel.
    RootPanel.get("gwtCellListBox").add(cellList);
}
}

person MishkuMoss    schedule 30.06.2016    source источник
comment
Привет, я попробовал с приведенным ниже кодом для множественного выбора, и он хорошо работал с нажатием и удержанием клавиши Ctrl. Но я хотел бы сделать этот множественный выбор, используя без нажатия и удерживания Ctrl   -  person MishkuMoss    schedule 30.06.2016
comment
final MultiSelectionModel‹String› selectModel = new MultiSelectionModel‹String›(); cellList.setSelectionModel(selectModel); selectModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { public void onSelectionChange(SelectionChangeEvent event) { Set‹String› selected = selectModel.getSelectedSet(); if (selected!= null) { //Window.alert(Вы выбрали: + selected ); } } });   -  person MishkuMoss    schedule 30.06.2016
comment
Я предлагаю вам добавить столбец флажков для множественного выбора, если вам нужна помощь, дайте мне знать.   -  person Youssef Lahoud    schedule 30.06.2016


Ответы (2)


Во-первых, вам нужен файл MultiSelectionModel. Затем, если вы хотите удерживать клавишу Ctrl, используйте DefaultSelectionEventManager вместо CellPreviewEvent.Handler с пользовательским EventTranslator, который всегда возвращает TOGGLE и false.

person Thomas Broyer    schedule 30.06.2016

Попробуй это

public class HelloWorld implements EntryPoint {
private static final List<String> DAYS = Arrays.asList("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday",
        "Friday", "Saturday");

public void onModuleLoad() {
    // Create a cell to render each value.
    TextCell textCell = new TextCell();

    // Create a CellList that uses the cell.
    CellList<String> cellList = new CellList<String>(textCell);
    cellList.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);

    // Add a selection model to handle user selection.
     final MultiSelectionModel<String> selectionModel = new MultiSelectionModel<String>();
     cellList.setSelectionModel(selectionModel);
     selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
     public void onSelectionChange(SelectionChangeEvent event) {

        Set<String> selectedItems = selectionModel.getSelectedSet();

        for (String s : selectedItems) {
            System.out.println(s);
            Window.alert("You selected: " + s);
        }
    }
});

    cellList.setRowCount(DAYS.size(), true);

    // Push the data into the widget.
    cellList.setRowData(0, DAYS);

    // Add it to the root panel.
    RootPanel.get("gwtCellListBox").add(cellList);
}
}
person Clement Amarnath    schedule 30.06.2016