/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.ui.viewsupport;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.teiid.designer.ui.UiConstants;
import org.teiid.designer.ui.explorer.ModelExplorerLabelProvider;
/**
* ModelWorkspaceTreeProvider is a basic ITreeContentProvider and ILabelProvider ModelWorkspace.
* It does not allow navigation into a model and works only with IProject and IResource objects.
* This class does not perform any filtering of the workspace; use a ViewFilter if you wish to do that.
*
* @since 8.0
*/
public class ModelWorkspaceTreeProvider extends ModelExplorerLabelProvider implements ITreeContentProvider {
private static final Object[] NO_CHILDREN = new Object[0];
private ITreeContentProvider modelContentProvider = ModelObjectContentProvider.getInstance();
/**
* Construct an instance of ModelWorkspaceTreeProvider.
*/
public ModelWorkspaceTreeProvider( ) {
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
@Override
public Object[] getChildren(Object parentElement) {
if ( parentElement instanceof IFolder ) {
try {
return ((IFolder) parentElement).members();
} catch (CoreException e) {
UiConstants.Util.log(e);
return NO_CHILDREN;
}
}
if ( parentElement instanceof IFile ) {
return NO_CHILDREN;
} else if ( parentElement instanceof IProject ) {
try {
return ((IProject) parentElement).members();
} catch (CoreException e) {
UiConstants.Util.log(e);
return NO_CHILDREN;
}
} else {
return modelContentProvider.getChildren(parentElement);
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
@Override
public Object getParent(Object element) {
return modelContentProvider.getParent(element);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
@Override
public boolean hasChildren(Object element) {
if ( element instanceof IFile ) {
return false;
}
return true;//modelContentProvider.hasChildren(element);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
@Override
public Object[] getElements(Object inputElement) {
Object[] result = ((IWorkspaceRoot) inputElement).getProjects();
return result;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
modelContentProvider.inputChanged(viewer, oldInput, newInput);
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void addListener(ILabelProviderListener listener) {
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override
public void removeListener(ILabelProviderListener listener) {
}
}