/*******************************************************************************
* This file is part of the Symfony eclipse plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
******************************************************************************/
package com.dubture.symfony.ui.views;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import com.dubture.symfony.core.builder.SymfonyNature;
import com.dubture.symfony.core.log.Logger;
import com.dubture.symfony.core.model.Service;
import com.dubture.symfony.core.model.SymfonyModelAccess;
public class ServiceContentProviderFlatView implements ITreeContentProvider {
private SymfonyModelAccess model = SymfonyModelAccess.getDefault();
private static Object[] EMTPY = {};
@Override
public void dispose()
{
model = null;
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
{
}
@Override
public Object[] getElements(Object inputElement)
{
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
List<IProject> elements = new ArrayList<IProject>();
for (IProject project : projects) {
try {
if (project.hasNature(SymfonyNature.NATURE_ID)) {
elements.add(project);
}
} catch (CoreException e) {
Logger.logException(e);
}
}
return elements.toArray(new IProject[elements.size()]);
}
@Override
public Object[] getChildren(Object parentElement)
{
if (parentElement instanceof IProject) {
IProject project = (IProject) parentElement;
List<Service> services = model.findServices(project.getFullPath());
return services.toArray();
}
return EMTPY;
}
@Override
public Object getParent(Object element)
{
return null;
}
@Override
public boolean hasChildren(Object element)
{
if (element instanceof IProject)
return true;
return false;
}
}