/****************************************************************************** * Copyright (c) 2011-2013, Linagora * * 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: * Linagora - initial API and implementation *******************************************************************************/ package com.ebmwebsourcing.petals.common.internal.provisional.emf; import java.util.Collection; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.Viewer; /** * This is a generic {@link IContentProvider} that can be used to perform a get on an {@link EObject}. * <p> * It uses an {@link EStructuralFeature} to introspect the object. * </p> * * @author Micka�l Istria - EBM WebSourcing */ public class EMFFeatureContentProvider implements IStructuredContentProvider { private final EStructuralFeature feature; private EObject eObject; /** * Constructor. * @param feature */ public EMFFeatureContentProvider( EStructuralFeature feature ) { this.feature = feature; } /* * (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider * #dispose() */ @Override public void dispose() { // nothing } /* * (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider * #inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public void inputChanged(Viewer arg0, Object arg1, Object arg2) { this.eObject = (EObject) arg2; } /* * (non-Javadoc) * @see org.eclipse.jface.viewers.IStructuredContentProvider * #getElements(java.lang.Object) */ @Override public Object[] getElements( Object arg0 ) { Object[] result; Object res = this.eObject.eGet( this.feature ); if( res instanceof Collection ) result = ((Collection<?>)res).toArray(); else if( res.getClass().isArray()) result = (Object[]) res; else result = new Object[] { res }; return result; } }