package de.itemis.gmf.runtime.constrainthook;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EObject;
public class ConstraintHookRegistry {
public static ArrayList<ILinkConstraintDefinition> getLinkConstraintDefinitions(EObject container) {
ArrayList<ILinkConstraintDefinition> result = new ArrayList<ILinkConstraintDefinition>();
IConfigurationElement[] configurationElements = Platform.getExtensionRegistry().getConfigurationElementsFor(
"de.itemis.gmf.runtime.extensions.linkConstraintHook");
for (IConfigurationElement configurationElement : configurationElements) {
String definedNsURI = configurationElement.getAttribute("nsURI");
if (container.eClass().getEPackage().getNsURI().equals(definedNsURI)) {
try {
result.add((ILinkConstraintDefinition) configurationElement.createExecutableExtension("class"));
} catch (CoreException e) {
e.printStackTrace();
}
}
}
return result;
}
public static List<INodeConstraintDefinition> getNodeConstraintDefinitions(EObject container) {
List<INodeConstraintDefinition> result = new ArrayList<INodeConstraintDefinition>();
IConfigurationElement[] configurationElements = getConfigurationElements("de.itemis.gmf.runtime.extensions.nodeConstraintHook");
for (IConfigurationElement configurationElement : configurationElements) {
String definedNsURI = configurationElement.getAttribute("nsURI");
if (container.eClass().getEPackage().getNsURI().equals(definedNsURI)) {
try {
result.add((INodeConstraintDefinition) configurationElement.createExecutableExtension("class"));
} catch (CoreException e) {
e.printStackTrace();
}
}
}
return result;
}
private static IConfigurationElement[] getConfigurationElements(String id) {
return Platform.getExtensionRegistry().getConfigurationElementsFor("de.itemis.gmf.runtime.extensions.nodeConstraintHook");
}
}