/* * Ext GWT - Ext for GWT * Copyright(c) 2007-2009, Ext JS, LLC. * licensing@extjs.com * * http://extjs.com/license */ package com.extjs.gxt.ui.client.event; import com.extjs.gxt.ui.client.data.ModelData; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DeferredCommand; /** * A <code>SelectionChangedListener</code> that ignores its own selection * events. Useful when registering the provider with the * <code>SelectionService</code>. */ public class SourceSelectionChangedListener extends SelectionChangedListener<ModelData> { private SelectionProvider<ModelData> provider; public SourceSelectionChangedListener(SelectionProvider<ModelData> provider) { this.provider = provider; } public void selectionChanged(final SelectionChangedEvent<ModelData> event) { SelectionProvider<ModelData> eventProvider = event.getSelectionProvider(); if (eventProvider != provider) { if (provider.getSelection().get(0) != eventProvider.getSelection().get(0)) { DeferredCommand.addCommand(new Command() { public void execute() { provider.setSelection(event.getSelection()); } }); } } } }