package com.sap.ide.treeprovider.internal.explorer.nodes;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EClass;
import com.sap.ide.treeprovider.INodeExplorer;
import com.sap.ide.treeprovider.RootNodeProvider;
import com.sap.ide.treeprovider.internal.Activator;
/**
* Root tree node for simple component sample
*
* @author D046040
*/
public final class RootNodeComponent extends TreeNodeDomainRoot implements INodeExplorer {
public RootNodeComponent(IProject project) {
super(project, project);
}
@Override
public boolean hasChildren() {
// Simply return true in order to avoid loading MOIN just for
// calculation of the expansion state
return true;
}
public boolean isConnectionInitialized() {
return getConnection() != null;
}
@Override
public Object[] getChildren() {
List<ITreeNode<?>> children = new ArrayList<ITreeNode<?>>();
IExtensionPoint eventListenerPoint = Platform.getExtensionRegistry().getExtensionPoint(
"com.sap.ide.treeprovider.rootNodeDefinition");
for (IConfigurationElement element : eventListenerPoint.getConfigurationElements()) {
if (element.getName().equals("rootNodeProvider")) {
RootNodeProvider provider;
try {
provider = (RootNodeProvider) element.createExecutableExtension("classname");
children.addAll(provider.getChildren(this, getValue(), getConnection()));
} catch (CoreException e) {
Activator.logError(e, true);
} catch (MQLFormatException e) {
Activator.logError(e, true);
}
}
}
return children.toArray();
}
public List<EClass> getTopLevelModelElementTypes() {
List<EClass> result = new ArrayList<EClass>();
IExtensionPoint eventListenerPoint = Platform.getExtensionRegistry().getExtensionPoint(
"com.sap.ide.treeprovider.rootNodeDefinition");
for (IConfigurationElement element : eventListenerPoint.getConfigurationElements()) {
if (element.getName().equals("rootNodeProvider")) {
RootNodeProvider provider;
try {
provider = (RootNodeProvider) element.createExecutableExtension("classname");
result.addAll(provider.getTopLevelModelElementTypes(getConnection()));
} catch (CoreException e) {
Activator.logError(e, true);
}
}
}
return result;
}
}