blob: cde76e321ea6748b6d97735ee9655ce0cebf4a36 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2019 CEA LIST.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Nicolas Guyomar (Mia-Software) - Bug 342451 - To be able to edit derived facet attributes and derived facet references in a table
*******************************************************************************/
package org.eclipse.modisco.facet.widgets.celleditors;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
public interface INaryEReferenceCellEditor<T extends EObject> {
/**
* Initialize a cell for edition of a n-ary feature. This method must create
* a control inside the given parent to let the user edit the value.
*
* @param parent
* the SWT control that must contain the cell editor
* @param values
* the actual values of the reference
* @param availableValues
* the available value for the reference
* @param feature
* the feature
* @param eObject
* the {@link EObject} being currently edited.
* @param editHandler
* @return the SWT {@link Control} to be used for capturing the new cell
* value
*/
Control activateCell(Composite parent, List<T> values, List<T> availableValues, IModelCellEditHandler editHandler, EObject eObject, EStructuralFeature feature);
/*
* Both lists are given here because in some case, we cannot calculate the the available
* element, for instance when editing FacetReference, we need to have the FacetContext deal with
* it.
*
* The EStructuralFeature is given here so that in the dialog we can know whether it is a
* containment one, which has an impact on the edition. It is also needed to instantiate new
* element, because we need to know its eType.
*
* The EObject is only here for dialog customization for instance. Do not modify it in the
* dialog, the dialog has to return the new values.
*/
/**
* @return the value currently in the control. This is the value that will
* be set on the model element when
* {@link IModelCellEditHandler#commit()} is called.
*/
List<T> getValue();
}