/******************************************************************************* * Copyright (c) 2017 Red Hat, Inc. * Distributed under license by Red Hat, 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.windup.ui.internal.launch; import java.util.List; import org.eclipse.jface.viewers.ITreeContentProvider; import org.jboss.tools.windup.model.util.MavenUtil.ProjectInfo; import com.google.common.collect.Lists; public class InputTreeContentProvider implements ITreeContentProvider { public static class ProjectInfoRoot { private List<ProjectInfo> children; public ProjectInfoRoot (List<ProjectInfo> children) { this.children = children; } public List<ProjectInfo> getChildren() { return children; } } @Override public Object[] getElements(Object inputElement) { return getChildren(inputElement); } @Override public Object[] getChildren(Object parentElement) { if (parentElement instanceof ProjectInfoRoot) { ProjectInfoRoot root = (ProjectInfoRoot)parentElement; return root.getChildren().stream().toArray(ProjectInfo[]::new); } else if (parentElement instanceof ProjectInfo) { ProjectInfo project = (ProjectInfo)parentElement; List<Object> children = Lists.newArrayList(); children.addAll(project.getProjects()); children.addAll(project.getMissingProjects()); return children.toArray(new Object[children.size()]); } return new Object[0]; } @Override public Object getParent(Object element) { if (element instanceof ProjectInfo) { return ((ProjectInfo)element).getParent(); } return null; } @Override public boolean hasChildren(Object element) { if (element instanceof ProjectInfo) { return ((ProjectInfo)element).hasChildren(); } return element instanceof ProjectInfoRoot; } }