blob: b941b44dbe6bbcf5ccd3af1f661779f28abf8cd3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2012 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
*******************************************************************************/
package org.eclipse.bpel.ui.details.providers;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
/**
* Common base class for our content providers.
*/
public abstract class AbstractContentProvider implements IStructuredContentProvider {
protected static final Object[] EMPTY_ARRAY = new Object[0];
/**
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose() {
}
/**
* @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) {
}
/**
* Provide the elements to be shown from this content provider.
* The generic implementation creates a list, then calls collectElements, and
* subsequently returns the array created from the list or the empty array if no
* elements are collected.
*
* Under no circumstances null is returned.
* @param input
* @return
*
*/
public Object[] getElements(Object input) {
if (input == null) {
return EMPTY_ARRAY;
}
List<Object> list = new ArrayList<Object>();
collectElements ( input, list );
return list.isEmpty()? EMPTY_ARRAY : list.toArray();
}
/**
* Collect the elements to be returned by this provider.
* Subclasses will override this method.
*
* @param input the object to provide elements from (input)
* @param list the list in which the elements are to be inserted.
*/
public void collectElements (Object input, List<Object> list) {
// need to override this method.
}
/**
* Collect elements from the input object if the object is a list or an array.
* The method returns true if it discovers that the passed object is "complex",
* meaning it is either an array or a list of objects.
*
* @param input the complex object to look at.
* @param list the list to collect elements into
* @return
*/
public boolean collectComplex ( Object input, List<Object> list) {
Object[] arr = null;
if (input.getClass().isArray()) {
arr = (Object[]) input;
} else if (input instanceof List) {
arr = ((List)input).toArray();
}
if (arr == null) {
return false;
}
for(Object n : arr) {
collectElements(n, list);
}
return arr.length > 0;
}
}