/*******************************************************************************
* Copyright (c) 2009 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.smooks.configuration.editors;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.jboss.tools.smooks.configuration.editors.wizard.IViewerInitor;
import org.jboss.tools.smooks.configuration.editors.wizard.ViewerInitorStore;
/**
* @author Dart (dpeng@redhat.com)
* <p>
* Apr 12, 2009
*/
public class CompoundStructuredDataContentProvider implements ITreeContentProvider {
private List<ITreeContentProvider> contentProviderList = new ArrayList<ITreeContentProvider>();
public CompoundStructuredDataContentProvider() {
Collection<IViewerInitor> lists = ViewerInitorStore.getInstance().getViewerInitorCollection();
for (Iterator<IViewerInitor> iterator = lists.iterator(); iterator.hasNext();) {
IViewerInitor viewerInitor = (IViewerInitor) iterator.next();
contentProviderList.add(viewerInitor.getTreeContentProvider());
}
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.
* Object)
*/
public Object[] getChildren(Object parentElement) {
for (Iterator<?> iterator = contentProviderList.iterator(); iterator.hasNext();) {
ITreeContentProvider provider = (ITreeContentProvider) iterator.next();
Object[] objs = provider.getChildren(parentElement);
if (objs == null || objs.length == 0) {
continue;
}
return objs;
}
return new Object[] {};
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object
* )
*/
public Object getParent(Object element) {
for (Iterator<?> iterator = contentProviderList.iterator(); iterator.hasNext();) {
ITreeContentProvider provider = (ITreeContentProvider) iterator.next();
Object parent = provider.getParent(element);
if (parent == null) {
continue;
}
return parent;
}
return null;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.
* Object)
*/
public boolean hasChildren(Object element) {
for (Iterator<?> iterator = contentProviderList.iterator(); iterator.hasNext();) {
ITreeContentProvider provider = (ITreeContentProvider) iterator.next();
boolean parent = provider.hasChildren(element);
if (!parent) {
continue;
}
return parent;
}
return false;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java
* .lang.Object)
*/
public Object[] getElements(Object inputElement) {
if(inputElement instanceof List<?>){
return ((List<?>)inputElement).toArray();
}
for (Iterator<?> iterator = contentProviderList.iterator(); iterator.hasNext();) {
ITreeContentProvider provider = (ITreeContentProvider) iterator.next();
Object[] objs = provider.getElements(inputElement);
if (objs == null || objs.length == 0) {
continue;
}
return objs;
}
return new Object[] {};
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
for (Iterator<?> iterator = contentProviderList.iterator(); iterator.hasNext();) {
ITreeContentProvider provider = (ITreeContentProvider) iterator.next();
provider.dispose();
}
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface
* .viewers.Viewer, java.lang.Object, java.lang.Object)
*/
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}