package org.marketcetera.photon.commons.ui.databinding; import org.eclipse.core.databinding.ObservablesManager; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.widgets.Composite; import org.marketcetera.util.misc.ClassVersion; /* $License$ */ /** * Convenience base class for Composites that are using data binding to enable * automatic observable disposal. * * @author <a href="mailto:will@marketcetera.com">Will Horn</a> * @version $Id: ObservingComposite.java 16154 2012-07-14 16:34:05Z colin $ * @since 2.0.0 */ @ClassVersion("$Id: ObservingComposite.java 16154 2012-07-14 16:34:05Z colin $") public abstract class ObservingComposite extends Composite { private final ObservablesManager mObservablesManager; /** * Constructor. * * @param parent * parent composite in which to create the widgets */ public ObservingComposite(Composite parent) { super(parent, SWT.NONE); mObservablesManager = new ObservablesManager(); addDisposeListener(new DisposeListener() { @Override public void widgetDisposed(DisposeEvent e) { mObservablesManager.dispose(); } }); } /** * Returns the {@link ObservablesManager} that will be disposed with this * widget. * * @return the observablesManager */ protected ObservablesManager getObservablesManager() { return mObservablesManager; } }