/*****************************************************************************
* Copyright (c) 2010 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
*****************************************************************************/
package org.eclipse.papyrus.infra.widgets.editors;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.papyrus.infra.widgets.providers.EmptyContentProvider;
import org.eclipse.papyrus.infra.widgets.providers.IStaticContentProvider;
import org.eclipse.papyrus.infra.widgets.providers.WrappedLabelProvider;
import org.eclipse.papyrus.infra.widgets.selectors.ReferenceSelector;
import org.eclipse.swt.widgets.Composite;
/**
* An editor for multivalued references. This editor should be used when
* there is enough vertical space available. If the vertical space is limited,
* CompactMultipleReferenceEditor should be used instead.
*
* @author Camille Letavernier
*
*/
public class MultipleReferenceEditor extends MultipleValueEditor {
/**
* The element selector for the available values
*/
protected ReferenceSelector selector;
protected IStaticContentProvider contentProvider;
/**
*
* Constructor.
*
* @param parent
* The composite in which this editor is created
* @param style
* The style for this editor's list
* @param ordered
* True if the list should be ordered
* @param unique
* True if the list values should be unique
* @param label
* The label for this editor
*/
public MultipleReferenceEditor(Composite parent, int style, boolean ordered, boolean unique, String label) {
super(parent, style, new ReferenceSelector(unique), ordered, unique, label);
this.selector = (ReferenceSelector)super.selector;
//Default providers
setProviders(EmptyContentProvider.instance, new WrappedLabelProvider());
}
/**
*
* Constructor.
*
* @param parent
* The composite in which this editor is created
* @param style
* The style for this editor's list
* @param label
* The label for this editor
*/
public MultipleReferenceEditor(Composite parent, int style, String label) {
this(parent, style, false, false, label);
}
/**
*
* Constructor.
*
* @param parent
* The composite in which this editor is created
* @param style
* The style for this editor's list
*/
public MultipleReferenceEditor(Composite parent, int style) {
this(parent, style, false, false, null);
}
/**
* Sets the Content and Label providers for this editor
*
* @param contentProvider
* The content provider describing the elements that can be selected
* @param labelProvider
* The label provider for the elements
*/
public void setProviders(IStaticContentProvider contentProvider, ILabelProvider labelProvider) {
Assert.isNotNull(contentProvider, "The content provider should be defined"); //$NON-NLS-1$
this.contentProvider = contentProvider;
selector.setContentProvider(contentProvider);
if(labelProvider != null) {
selector.setLabelProvider(labelProvider);
super.setLabelProvider(labelProvider);
}
}
@Override
public void setUnique(boolean unique) {
selector.setUnique(unique);
super.setUnique(unique);
}
}