}
private static RenameSupport createRenameSupport(IModelElement element, String newName, int flags) throws CoreException {
switch (element.getElementType()) {
case IModelElement.SCRIPT_PROJECT:
return new RenameSupport(new RenameScriptProjectProcessor((IScriptProject) element), newName, flags);
case IModelElement.PROJECT_FRAGMENT:
return new RenameSupport(new RenameSourceFolderProcessor((IProjectFragment) element), newName);
case IModelElement.SCRIPT_FOLDER:
// TODO Add namespace support like JDT
return new RenameSupport(new RenameScriptFolderProcessor((IScriptFolder) element), newName, flags);
case IModelElement.SOURCE_MODULE:
return new RenameSupport(new RenameSourceModuleProcessor((ISourceModule) element), newName, flags);
case IModelElement.TYPE:
return new RenameSupport(new RenameTypeProcessor((IType) element), newName, flags);
case IModelElement.METHOD:
return new RenameSupport(new RenameMethodProcessor((IMethod) element), newName, flags);
case IModelElement.FIELD:
if (((IField) element).getDeclaringType() == null) {
return new RenameSupport(new RenameLocalVariableProcessor((IField) element), newName, flags);
} else {
if (PHPFlags.isConstant(((IField) element).getFlags())) {
return new RenameSupport(new RenameConstantProcessor((IField) element), newName, flags);
} else if (PHPFlags.isStatic(((IField) element).getFlags())) {
return new RenameSupport(new RenameStaticPropertyProcessor((IField) element), newName, flags);
} else {
return new RenameSupport(new RenamePropertyProcessor((IField) element), newName, flags);
}
}
default:
return null;
}