/**
 * <copyright>
 * Copyright (c) 2008 IBM Corporation and others.
 * 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:
 *     IBM Corporation - initial API and implementation
 * </copyright>
 */
 
package org.eclipse.bpel.ui.details.providers;

import java.util.List;

import org.eclipse.bpel.model.MessageExchange;
import org.eclipse.bpel.model.MessageExchanges;
import org.eclipse.bpel.model.Process;
import org.eclipse.bpel.model.Scope;
import org.eclipse.emf.ecore.EObject;

/**
 * @author Miriam Grundig (MGrundig@de.ibm.com)
 */
public class MessageExchangeContentProvider extends AbstractContentProvider{
	
	/**
	 * @see org.eclipse.bpel.ui.details.providers.AbstractContentProvider#collectElements(java.lang.Object, java.util.List)
	 */
	@Override
	public void collectElements (Object input, List<Object> list)  {
		EObject elem = (EObject) input;
		MessageExchanges messExs;
		List<MessageExchange> children;
		while(elem != null){
			if(elem instanceof Scope){
				messExs = ((Scope)elem).getMessageExchanges();
				if(messExs != null){
					children =  messExs.getChildren(); 
					for(MessageExchange child: children) {
						list.add ( child );
					}
				}
			}
			if (elem instanceof Process){
				messExs = ((Process)elem).getMessageExchanges();
				if(messExs != null){
					children =  messExs.getChildren(); 
					for(MessageExchange child: children) {
						list.add ( child );
					}
				}
			}
			elem = elem.eContainer();
		}
	}
}
