blob: ee31630cafc54b28701ae512946e375beafbc986 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2017 IBM Corporation and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
*******************************************************************************/
package org.eclipse.dltk.ui.tests.navigator;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.core.DLTKLanguageManager;
import org.eclipse.dltk.core.IModelElement;
import org.eclipse.dltk.core.IParent;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.core.ModelException;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
public class SimpleModelContentProvider implements ITreeContentProvider {
Object[] NONE_ELEMENTS =new Object[0];
@Override
public Object[] getChildren(Object element) {
if( element instanceof IWorkspaceRoot ){
IWorkspaceRoot root = ((IWorkspaceRoot)element);
return root.getProjects();
}
else if(element instanceof IProject ) {
if(DLTKLanguageManager.hasScriptNature((IProject)element)) {
IScriptProject project = DLTKCore.create((IProject)element);
try {
return project.getChildren();
} catch (ModelException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return NONE_ELEMENTS;
}
else if(element instanceof IParent) {
try {
return ((IParent)element).getChildren();
} catch (ModelException e) {
e.printStackTrace();
}
}
return NONE_ELEMENTS;
}
@Override
public Object getParent(Object element) {
if(element instanceof IModelElement) {
return ((IModelElement)element).getParent();
}
return null;
}
@Override
public boolean hasChildren(Object element) {
Object[] children = getChildren(element);
return children.length > 0;
}
@Override
public Object[] getElements(Object inputElement) {
return getChildren(inputElement);
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// TODO Auto-generated method stub
}
}