/*****************************************************************************
* Copyright (c) 2008 Bioclipse Project
* 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
*
*****************************************************************************/
package net.bioclipse.spectrum.editor;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.xmlcml.cml.base.CMLElement;
import org.xmlcml.cml.element.CMLConditionList;
import org.xmlcml.cml.element.CMLMetadataList;
import org.xmlcml.cml.element.CMLSubstanceList;
public class JCampContentProvider implements ITreeContentProvider {
public JCampContentProvider() {
}
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
public Object[] getElements(Object inputElement) {
ArrayList parentElementsArray = new ArrayList();
List<CMLElement> mlist = (List<CMLElement>) inputElement;
Iterator<CMLElement> it = mlist.iterator();
while (it.hasNext()) {
CMLElement element = (CMLElement) it.next();
if (element != null) {
parentElementsArray.add(element);
}
}
return parentElementsArray.toArray();
}
public Object[] getChildren(Object parentElement) {
ArrayList childElements = new ArrayList();
CMLElement element = (CMLElement) parentElement;
return element.getChildCMLElements().toArray();
}
public Object getParent(Object element) {
return ((CMLElement)element).getParent();
}
public boolean hasChildren(Object element) {
if (element instanceof CMLMetadataList
&& ((CMLMetadataList) element).getMetadataElements().size() != 0) {
return true;
} else if (element instanceof CMLConditionList
&& ((CMLConditionList) element).getScalarElements().size() != 0) {
return true;
}else if (element instanceof CMLSubstanceList
&& ((CMLSubstanceList) element).getSubstanceElements().size() != 0) {
return true;
}
else {
return false;
}
}
}