/*******************************************************************************
* Copyright (c) 2013 Cloud Bees, 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:
* Cloud Bees, Inc. - initial API and implementation
*******************************************************************************/
package com.cloudbees.eclipse.ui.views;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
public class CBContentProvider implements IStructuredContentProvider, ITreeContentProvider {
private CBTreeView owner;
public CBContentProvider(final CBTreeView owner) {
this.owner = owner;
}
public void dispose() {
this.owner = null;
}
public void inputChanged(final Viewer viewer, final Object oldInput, final Object newInput) {
for (ICBTreeProvider provider : this.owner.getProviders()) {
if (provider.getContentProvider()==null) {
continue;
}
provider.getContentProvider().inputChanged(viewer, oldInput, newInput);
}
}
public Object[] getChildren(final Object parentElement) {
List<Object> children = new ArrayList<Object>();
for (ICBTreeProvider provider : this.owner.getProviders()) {
if (provider.getContentProvider()==null) {
continue;
}
Object[] chlds = provider.getContentProvider().getChildren(parentElement);
if (chlds != null) {
children.addAll(Arrays.asList(chlds));
}
}
return children.toArray(new Object[children.size()]);
}
public Object getParent(final Object element) {
for (ICBTreeProvider provider : this.owner.getProviders()) {
if (provider.getContentProvider()==null) {
continue;
}
Object parent = provider.getContentProvider().getParent(element);
if (parent != null) {
return parent;
}
}
return null;
}
public boolean hasChildren(final Object element) {
for (ICBTreeProvider provider : this.owner.getProviders()) {
if (provider.getContentProvider()==null) {
continue;
}
if (provider.getContentProvider().hasChildren(element)) {
return true;
}
}
return false;
}
public Object[] getElements(final Object inputElement) {
return getChildren(inputElement);
}
}