/*******************************************************************************
* Copyright (c) 2017 Rogue Wave Software Inc. 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:
* Rogue Wave Software Inc. - initial implementation
*******************************************************************************/
package org.eclipse.php.phpunit.model.providers;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.php.phpunit.model.elements.PHPUnitElement;
import org.eclipse.php.phpunit.model.elements.PHPUnitTest;
import org.eclipse.php.phpunit.model.elements.PHPUnitTestGroup;
public class PHPUnitElementTreeContentProvider extends ArrayContentProvider implements ITreeContentProvider {
@Override
public Object[] getChildren(final Object parentElement) {
return get(parentElement);
}
@Override
public Object[] getElements(final Object inputElement) {
return get(inputElement);
}
private synchronized Object[] get(Object inputElement) {
if (inputElement instanceof PHPUnitTestGroup) {
final List<PHPUnitTest> objects = new ArrayList<>();
final PHPUnitTestGroup testGroup = (PHPUnitTestGroup) inputElement;
final Set<PHPUnitTest> children = testGroup.getChildren();
if (children != null) {
objects.addAll(children);
}
return objects.toArray();
}
return Collections.emptyList().toArray();
}
@Override
public Object getParent(final Object element) {
return ((PHPUnitElement) element).getParent();
}
@Override
public boolean hasChildren(final Object element) {
if (element instanceof PHPUnitTestGroup) {
final PHPUnitTestGroup testGroup = (PHPUnitTestGroup) element;
final Set<PHPUnitTest> children = testGroup.getChildren();
return children != null && !children.isEmpty();
}
return false;
}
}