/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.runtime.web.vaadin.databinding.properties;

import org.eclipse.core.databinding.property.list.IListProperty;
import org.eclipse.core.databinding.property.set.ISetProperty;
import org.eclipse.osbp.runtime.web.vaadin.databinding.values.IVaadinObservableSet;

/**
 * {@link IListProperty} for observing an vaadin Component
 * 
 * @noimplement This interface is not intended to be implemented by clients.
 */
public interface IVaadinSetProperty extends ISetProperty {

	/**
	 * Returns an observable list observing this list property on the given
	 * property source.
	 * 
	 * @param source
	 *            the property source
	 * @return an observable list observing this value property on the given
	 *         property source
	 */
	public IVaadinObservableSet observe(Object source);

}
