/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.cpacs.vampzeroinitializer.gui; import java.util.List; import java.util.Set; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import de.rcenvironment.components.cpacs.vampzeroinitializer.gui.model.Component; import de.rcenvironment.components.cpacs.vampzeroinitializer.gui.model.Discipline; import de.rcenvironment.components.cpacs.vampzeroinitializer.gui.model.Parameter; /** * The tree content provider. * * @author Arne Bachmann * @author Markus Kunde */ public class ParameterTreeContentProvider implements ITreeContentProvider { /** * Current input object. */ private Object input; @Override public Object[] getElements(final Object element) { if (element == null) { return null; } if (element instanceof Set<?>) { return ((Set<?>) element).toArray(new List<?>[] {}); // array of lists with only one // element } return null; } @Override public void dispose() { input = null; } @Override public void inputChanged(final Viewer viewer, final Object from, final Object to) { input = to; } @Override public Object[] getChildren(final Object element) { Object[] ret = new Object[] {}; if (element instanceof Set<?>) { ret = ((Set<?>) element).toArray(new List<?>[] {}); // array of lists with only one // element } else if (element instanceof List<?>) { ret = ((List<?>) element).toArray(new Component[] {}); } else if (element instanceof Component) { ret = ((Component) element).getDisciplines().toArray(new Discipline[] {}); } else if (element instanceof Discipline) { ret = ((Discipline) element).getParameters().toArray(new Parameter[] {}); } return ret; } @Override public Object getParent(final Object element) { Object ret = null; if (element instanceof Set<?>) { // root element ret = null; } else if (element instanceof List<?>) { ret = input; } else if (element instanceof Component) { ret = ((Set<?>) input).iterator().next(); // the only list in the set is the parent of // any component } else if (element instanceof Discipline) { ret = ((Discipline) element).getComponent(); } else if (element instanceof Parameter) { ret = ((Parameter) element).getDiscipline(); } return ret; } @Override public boolean hasChildren(final Object element) { boolean ret = false; if (element instanceof Set<?>) { // root element ret = true; } else if ((element instanceof List<?>) && (((List<?>) element).size() > 0)) { ret = true; } else if ((element instanceof Component) && (((Component) element).getDisciplines().size() > 0)) { ret = true; } else if ((element instanceof Discipline) && (((Discipline) element).getParameters().size() > 0)) { ret = true; } return ret; } }