/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; /** * ContentProvider for the ProjectTreeViewer of the WorkflowProjectWizard. It provides projects and * folders available in the current workspace. * * @author Oliver Seebach * */ public class ProjectTreeContentProvider implements ITreeContentProvider { @Override public void dispose() { } @Override public void inputChanged(Viewer arg0, Object arg1, Object arg2) { } @Override public Object[] getChildren(Object parentElement) { // Add projects as root nodes if (parentElement instanceof IProject) { IPath path = ((IProject) parentElement).getLocation(); File file = path.toFile(); List<File> projects = new ArrayList<File>(); if (file.listFiles() != null) { for (File f : file.listFiles()) { if (f.isDirectory()) { projects.add(f); getChildren(f); } } } return projects.toArray(); } // Add folders as non-root nodes if (parentElement instanceof File) { File file = (File) parentElement; List<File> folders = new ArrayList<File>(); if (file.isDirectory()) { for (File f : file.listFiles()) { if (f.isDirectory()) { folders.add(f); } } } return folders.toArray(); } return null; } @Override public Object[] getElements(Object arg0) { // Order projects case insensitive alphabetically List<String> projectNames = new ArrayList<String>(); for (IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { projectNames.add(project.getName()); } List<IProject> projects = new ArrayList<IProject>(); Collections.sort(projectNames, String.CASE_INSENSITIVE_ORDER); for (String projectName : projectNames) { IProject project = (IProject) ResourcesPlugin.getWorkspace().getRoot().findMember(projectName); projects.add(project); } return projects.toArray(); } @Override public Object getParent(Object arg0) { return null; } @Override public boolean hasChildren(Object element) { if (getChildren(element) != null && getChildren(element).length > 0 && (element instanceof IProject || element instanceof IFile || element instanceof File)) { return true; } return false; } }