/* * Copyright (c) 2003-2004 Alex Fitzpatrick and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * Alex Fitzpatrick - initial implementation * * $Id: JSClassesViewContentProvider.java,v 1.1 2004-09-02 18:23:49 jsurfer Exp $ */ package net.sourceforge.phpeclipse.js.ui.views; import net.sourceforge.phpeclipse.js.core.model.JSElement; import net.sourceforge.phpeclipse.js.core.parser.JSSyntaxModelFactory; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; /** * Content provider for the JavaScript classes view. */ class JSClassesViewContentProvider implements IStructuredContentProvider, ITreeContentProvider { private IWorkspace invisibleRoot; /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, * java.lang.Object, java.lang.Object) */ public void inputChanged(Viewer v, Object oldInput, Object newInput) { } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object parent) { if (parent.equals(ResourcesPlugin.getWorkspace())) { if (invisibleRoot == null) invisibleRoot = ((IWorkspace) parent); return getChildren(invisibleRoot); } return getChildren(parent); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ public Object getParent(Object child) { if (child instanceof IProject) { return ((IProject) child).getWorkspace(); } if (child instanceof JSElement) { return ((JSElement) child).getParent(child); } return null; } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ public Object[] getChildren(Object parent) { if (parent instanceof IWorkspace) { return invisibleRoot.getRoot().getProjects(); } if (parent instanceof IProject) { return getClasses((IProject) parent); } if (parent instanceof JSElement) { return ((JSElement) parent).getChildren(parent); } return new Object[0]; } /** * @param project * @return */ private Object[] getClasses(IProject project) { return JSSyntaxModelFactory .getInstance() .getContentOutline(project) .getChildren(); } /* * (non-Javadoc) * * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ public boolean hasChildren(Object parent) { return getChildren(parent).length > 0; } }