@Inject public ToolVolumeListEditor( ToolVolumeProperties toolVolumeProperties, ToolAdminView.ToolAdminViewAppearance appearance) { this.appearance = appearance; listStore = new ListStore<>( new ModelKeyProvider<ToolVolume>() { @Override public String getKey(ToolVolume item) { return getVolumeTag(item); } }); listStoreEditor = new ListStoreEditor<>(listStore); listStore.setAutoCommit(true); ColumnConfig<ToolVolume, String> hostPath = new ColumnConfig<>( toolVolumeProperties.hostPath(), appearance.containerVolumesHostPathWidth(), appearance.containerVolumesHostPathLabel()); ColumnConfig<ToolVolume, String> containerPath = new ColumnConfig<>( toolVolumeProperties.containerPath(), appearance.containerVolumesContainerPathWidth(), appearance.containerVolumesContainerPathLabel()); List<ColumnConfig<ToolVolume, ?>> columns = new ArrayList<>(); columns.add(hostPath); columns.add(containerPath); ColumnModel<ToolVolume> cm = new ColumnModel<>(columns); grid = new Grid<>(listStore, cm); grid.setHeight(100); editing = new GridRowEditing<>(grid); enableGridEditing(hostPath, containerPath); editing.addCancelEditHandler(getCancelHandler()); ((AbstractGridEditing<ToolVolume>) editing).setClicksToEdit(ClicksToEdit.TWO); initWidget(grid); }