/*******************************************************************************
* Copyright (c) 2005, 2012 eBay Inc.
* 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 org.eclipse.vjet.eclipse.internal.ui.browsing;
import java.util.ArrayList;
import java.util.Arrays;
import org.eclipse.vjet.eclipse.core.IImportContainer;
import org.eclipse.dltk.mod.core.IDLTKLanguageToolkit;
import org.eclipse.dltk.mod.core.IMethod;
import org.eclipse.dltk.mod.core.IModelElement;
import org.eclipse.dltk.mod.core.IPackageDeclaration;
import org.eclipse.dltk.mod.core.IParent;
import org.eclipse.dltk.mod.core.IType;
import org.eclipse.dltk.mod.core.ModelException;
import org.eclipse.dltk.mod.ui.browsing.ScriptBrowsingContentProvider;
import org.eclipse.dltk.mod.ui.browsing.ScriptBrowsingPart;
/**
* A base content provider for VJET elements. It provides access to the VJET
* element hierarchy without listening to changes in the VJET model.
*
*
*
*/
public class VjetBrowsingContentProvider extends ScriptBrowsingContentProvider {
/**
* @param provideMembers
* @param browsingPart
* @param languageToolkit
*/
public VjetBrowsingContentProvider(boolean provideMembers,
ScriptBrowsingPart browsingPart,
IDLTKLanguageToolkit languageToolkit) {
super(provideMembers, browsingPart, languageToolkit);
}
@Override
protected Object[] removeImportAndPackageDeclarations(Object[] members) {
ArrayList tempResult = new ArrayList(members.length);
for (int i = 0; i < members.length; i++)
if (!(members[i] instanceof IImportContainer)
&& !(members[i] instanceof IPackageDeclaration))
tempResult.add(members[i]);
return tempResult.toArray();
}
@Override
public boolean hasChildren(Object element) {
if (element instanceof IMethod) {
return false;
}
return super.hasChildren(element);
}
@Override
public Object[] getChildren(Object element) {
if (element instanceof IMethod) {
return NO_CHILDREN;
}
return super.getChildren(element);
}
protected Object[] getChildren(IType type) throws ModelException {
IParent parent = type.getSourceModule();
if (type.getDeclaringType() != null) {
return type.getChildren();
}
// Add import declarations
IModelElement[] members = parent.getChildren();
ArrayList tempResult = new ArrayList(members.length);
for (int i = 0; i < members.length; i++) {
if ((members[i] instanceof IImportContainer)) {
tempResult.add(members[i]);
}
}
tempResult.addAll(Arrays.asList(type.getChildren()));
return tempResult.toArray();
}
}