Vojtech Szocs has uploaded a new change for review. Change subject: webadmin: Handler cleanup in ModelListTreeViewModel ......................................................................
webadmin: Handler cleanup in ModelListTreeViewModel Handlers registered in ModelListTreeViewModel are now properly removed upon detaching tree widget from the DOM. Change-Id: Ibcf5ee07191a94e4ca157cf6fe4230e0eaafc2f6 Signed-off-by: Vojtech Szocs <vsz...@redhat.com> --- M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/ModelListTreeViewModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/editor/EntityModelCellTree.java 2 files changed, 22 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/67/18667/1 diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/ModelListTreeViewModel.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/ModelListTreeViewModel.java index 6ecc401..cdcf483 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/ModelListTreeViewModel.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/model/ModelListTreeViewModel.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.Set; +import com.google.gwt.event.shared.HandlerRegistration; import org.ovirt.engine.ui.common.uicommon.model.TreeNodeModel; import org.ovirt.engine.ui.common.utils.ElementIdUtils; import org.ovirt.engine.ui.common.widget.tree.TreeModelWithElementId; @@ -159,6 +160,9 @@ private NodeSelectionHandler nodeSelectionHandler; + private final HandlerRegistration selectionModelChangeHandlerReg; + private final List<HandlerRegistration> nodeModelSelectionHandlerRegList = new ArrayList<HandlerRegistration>(); + private String elementIdPrefix = DOM.createUniqueId(); public ModelListTreeViewModel() { @@ -184,7 +188,7 @@ }; // Drive selection - selectionModel.addSelectionChangeHandler(new Handler() { + selectionModelChangeHandlerReg = selectionModel.addSelectionChangeHandler(new Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { Set<M> selectedSet = selectionModel.getSelectedSet(); @@ -222,7 +226,7 @@ if (nodeSelectionHandler == null) { nodeSelectionHandler = new NodeSelectionHandler(display); } - model.addSelectionHandler(nodeSelectionHandler); + nodeModelSelectionHandlerRegList.add(model.addSelectionHandler(nodeSelectionHandler)); // show value display.getSelectionModel().setSelected(model, model.getSelected()); @@ -232,6 +236,13 @@ } } + public void removeHandlers() { + selectionModelChangeHandlerReg.removeHandler(); + for (HandlerRegistration reg : nodeModelSelectionHandlerRegList) { + reg.removeHandler(); + } + } + public AsyncDataProvider<M> getAsyncTreeDataProvider() { return asyncTreeDataProvider; } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/editor/EntityModelCellTree.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/editor/EntityModelCellTree.java index df7e1cd..f28b634 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/editor/EntityModelCellTree.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/widget/editor/EntityModelCellTree.java @@ -1,5 +1,6 @@ package org.ovirt.engine.ui.webadmin.widget.editor; +import com.google.gwt.event.logical.shared.AttachEvent; import org.ovirt.engine.ui.common.uicommon.model.TreeNodeModel; import org.ovirt.engine.ui.common.widget.tree.ElementIdCellTree; import org.ovirt.engine.ui.webadmin.uicommon.model.ModelListTreeViewModel; @@ -22,6 +23,14 @@ public EntityModelCellTree(CellTree.Resources res) { super(new ModelListTreeViewModel<T, M>(), null, res); + addAttachHandler(new AttachEvent.Handler() { + @Override + public void onAttachOrDetach(AttachEvent event) { + if (!event.isAttached()) { + getTreeViewModel().removeHandlers(); + } + } + }); } } -- To view, visit http://gerrit.ovirt.org/18667 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ibcf5ee07191a94e4ca157cf6fe4230e0eaafc2f6 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vojtech Szocs <vsz...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches