@Override public void edit(final M model) { // guard against multiple calls to edit() if (this.model != null) { this.model.getItemsChangedEvent().removeListener(itemsChangedListener); this.model.getPropertyChangedEvent().removeListener(propertyChangedListener); } this.model = model; model.getItemsChangedEvent().addListener(itemsChangedListener); model.getPropertyChangedEvent().addListener(propertyChangedListener); enabled = model.getIsChangable(); setVisible(model.getIsAvailable()); init(model); }