
Lars Vogel's Eclipse Source Code gives very simple and effective way of installing eclipse source.
A subclass of org.eclipse.ltk.core.refactoring.Refactoring must always be created.As is in this quotation, we need to extend Refactoring.
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IProject project = root.getProject(PROJECT_NAME); project.open(null /* IProgressMonitor */);
IJavaProject javaProject = JavaCore.create(project); IType itype = javaProject.findType("smcho.NewName"); org.eclipse.jdt.core.ICompilationUnit icu = itype.getCompilationUnit();
RefactoringContribution contribution = RefactoringCore.getRefactoringContribution(IJavaRefactorings.RENAME_COMPILATION_UNIT); RenameJavaElementDescriptor descriptor = (RenameJavaElementDescriptor) contribution.createDescriptor();Then, you need to set the name of the project, new class name, and CompilationUnit.
descriptor.setProject(icu.getResource().getProject().getName( )); descriptor.setNewName(NEW_CLASS_NAME); // new name for a Class descriptor.setJavaElement(icu);
RefactoringStatus status = new RefactoringStatus(); try { Refactoring refactoring = descriptor.createRefactoring(status); IProgressMonitor monitor = new NullProgressMonitor(); refactoring.checkInitialConditions(monitor); refactoring.checkFinalConditions(monitor); Change change = refactoring.createChange(monitor); change.perform(monitor); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
public void renameRefactor(String projectName, String oldName, String newName) throws CoreException { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IProject project = root.getProject(projectName); project.open(null /* IProgressMonitor */); IJavaProject javaProject = JavaCore.create(project); IType itype = javaProject.findType(oldName); // you need to include the package name also "smcho.NewName" org.eclipse.jdt.core.ICompilationUnit icu = itype.getCompilationUnit(); RefactoringContribution contribution = RefactoringCore.getRefactoringContribution(IJavaRefactorings.RENAME_COMPILATION_UNIT); RenameJavaElementDescriptor descriptor = (RenameJavaElementDescriptor) contribution.createDescriptor(); descriptor.setProject(icu.getResource().getProject().getName( )); // maybe, you can just use the String descriptor.setNewName(newName); // new name for a Class descriptor.setJavaElement(icu); RefactoringStatus status = new RefactoringStatus(); try { Refactoring refactoring = descriptor.createRefactoring(status); IProgressMonitor monitor = new NullProgressMonitor(); refactoring.checkInitialConditions(monitor); refactoring.checkFinalConditions(monitor); Change change = refactoring.createChange(monitor); change.perform(monitor); } catch (CoreException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }