// Copyright (c) 2006 by Leif Frenzel <himself@leiffrenzel.de>
// All rights reserved.
package net.sf.eclipsefp.haskell.ui.internal.editors.cabal.outline;
import net.sf.eclipsefp.haskell.core.cabalmodel.PackageDescription;
import net.sf.eclipsefp.haskell.core.cabalmodel.PackageDescriptionStanza;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
/** <p>the content provider for the tree on the Cabal file editor's
* outline page.</p>
*
* @author Leif Frenzel
*/
class CabalOutlinePageCP implements ITreeContentProvider {
// interface methods of ITreeContentProvider
////////////////////////////////////////////
@Override
public Object[] getElements( final Object inputElement ) {
Object[] result = new Object[ 0 ];
if( inputElement instanceof PackageDescription ) {
PackageDescription pd = ( PackageDescription )inputElement;
result = pd.getStanzas().toArray();
}
return result;
}
@Override
public boolean hasChildren( final Object element ) {
return getChildren( element ).length > 0;
}
@Override
public Object[] getChildren( final Object parentElement ) {
if (parentElement instanceof PackageDescriptionStanza){
return ((PackageDescriptionStanza)parentElement).getStanzas().toArray();
}
return new Object[ 0 ];
}
@Override
public Object getParent( final Object element ) {
return null;
}
@Override
public void dispose() {
// unused
}
@Override
public void inputChanged( final Viewer viewer,
final Object oldInput,
final Object newInput ) {
// unused
}
}