/******************************************************************************* * Copyright (c) 2006, 2012 Oracle 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: * Oracle Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.bpel.ui.details.providers; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.eclipse.jface.viewers.IStructuredContentProvider; /** * @author Michal Chmielewski (michal.chmielewski@oracle.com) * @date Jul 18, 2006 * */ public class CompositeContentProvider extends AbstractContentProvider { List fList = new LinkedList(); /** * */ public CompositeContentProvider() { super(); } /** * @param providers */ public CompositeContentProvider (IStructuredContentProvider[] providers) { super(); if (providers != null) { for(int i=0; i<providers.length; i++) { fList.add(providers[i]); } } } public void add ( IStructuredContentProvider provider ) { fList.add ( provider ); } @Override public void collectElements (Object input, List list) { // Check if the input element is a complex one if (collectComplex(input, list)) { return ; } Iterator it = fList.iterator(); while (it.hasNext()) { Object next = it.next(); if (next instanceof AbstractContentProvider) { AbstractContentProvider provider = (AbstractContentProvider) next; provider.collectElements(input, list); } else if (next instanceof IStructuredContentProvider) { IStructuredContentProvider provider = (IStructuredContentProvider) next; Object objs [] = provider.getElements(input); if (objs.length > 0) { for(int j=0; j<objs.length;j++) { list.add(objs[j]); } } } // silently ignore non-conformists ? } } }