|
Lines 63-68
Link Here
|
| 63 |
import org.eclipse.jdt.internal.corext.textmanipulation.MultiTextEdit; |
63 |
import org.eclipse.jdt.internal.corext.textmanipulation.MultiTextEdit; |
| 64 |
import org.eclipse.jdt.internal.corext.textmanipulation.TextBuffer; |
64 |
import org.eclipse.jdt.internal.corext.textmanipulation.TextBuffer; |
| 65 |
import org.eclipse.jdt.internal.corext.textmanipulation.TextBufferEditor; |
65 |
import org.eclipse.jdt.internal.corext.textmanipulation.TextBufferEditor; |
|
|
66 |
import org.eclipse.jdt.internal.corext.textmanipulation.TextRange; |
| 66 |
import org.eclipse.jdt.internal.corext.util.JavaModelUtil; |
67 |
import org.eclipse.jdt.internal.corext.util.JavaModelUtil; |
| 67 |
import org.eclipse.jdt.internal.corext.util.JdtFlags; |
68 |
import org.eclipse.jdt.internal.corext.util.JdtFlags; |
| 68 |
import org.eclipse.jdt.internal.corext.util.Strings; |
69 |
import org.eclipse.jdt.internal.corext.util.Strings; |
|
Lines 654-659
Link Here
|
| 654 |
typeRefs.addAll(TypeReferenceFinder.perform(declaration)); |
655 |
typeRefs.addAll(TypeReferenceFinder.perform(declaration)); |
| 655 |
MovedMemberAnalyzer analyzer= new MovedMemberAnalyzer(fSource, fSourceBinding, fMemberBindings, target); |
656 |
MovedMemberAnalyzer analyzer= new MovedMemberAnalyzer(fSource, fSourceBinding, fMemberBindings, target); |
| 656 |
declaration.accept(analyzer); |
657 |
declaration.accept(analyzer); |
|
|
658 |
fSource.rewriter.markAsTracked(declaration, new GroupDescription("moved member declaration")); |
| 657 |
targetNeedsSourceImport &= analyzer.targetNeedsSourceImport(); |
659 |
targetNeedsSourceImport &= analyzer.targetNeedsSourceImport(); |
| 658 |
status.merge(analyzer.getStatus()); |
660 |
status.merge(analyzer.getStatus()); |
| 659 |
} |
661 |
} |
|
Lines 664-693
Link Here
|
| 664 |
ITypeBinding binding= (ITypeBinding)iter.next(); |
666 |
ITypeBinding binding= (ITypeBinding)iter.next(); |
| 665 |
fTarget.imports.addImport(binding); |
667 |
fTarget.imports.addImport(binding); |
| 666 |
} |
668 |
} |
| 667 |
|
669 |
// extract updated members |
| 668 |
String[] result= new String[fMembers.length]; |
670 |
String[] updatedMemberSources= new String[fMembers.length]; |
| 669 |
TextBuffer buffer= TextBuffer.create(fSource.unit.getSource()); |
671 |
TextBuffer buffer= TextBuffer.create(fSource.unit.getSource()); |
| 670 |
TextBufferEditor editor= new TextBufferEditor(buffer); |
672 |
TextBufferEditor editor= new TextBufferEditor(buffer); |
| 671 |
MultiTextEdit edit= new MultiTextEdit(); |
673 |
MultiTextEdit edit= new MultiTextEdit(); |
| 672 |
fSource.rewriter.rewriteNode(buffer, edit); |
674 |
fSource.rewriter.rewriteNode(buffer, edit); |
| 673 |
editor.add(edit); |
675 |
editor.add(edit); |
| 674 |
editor.performEdits(new NullProgressMonitor()); |
676 |
editor.performEdits(new NullProgressMonitor()); |
| 675 |
ICompilationUnit wc= (ICompilationUnit)JavaModelUtil.toOriginal(fSource.unit).getWorkingCopy(); |
677 |
for (int i= 0; i < members.length; i++) { |
| 676 |
try { |
678 |
updatedMemberSources[i]= getUpdatedMember(buffer, members[i]); |
| 677 |
wc.getBuffer().setContents(buffer.getContent()); |
|
|
| 678 |
wc.reconcile(); |
| 679 |
for (int i= 0; i < fMembers.length; i++) { |
| 680 |
IMember member= JavaModelUtil.findMemberInCompilationUnit(wc, fMembers[i]); |
| 681 |
result[i]= Strings.trimIndentation(member.getSource(), fPreferences.tabWidth, false); |
| 682 |
} |
| 683 |
|
| 684 |
} finally { |
| 685 |
wc.destroy(); |
| 686 |
} |
679 |
} |
|
|
680 |
|
| 687 |
fSource.removeModifications(); |
681 |
fSource.removeModifications(); |
| 688 |
return result; |
682 |
return updatedMemberSources; |
| 689 |
} |
683 |
} |
| 690 |
|
684 |
|
|
|
685 |
private String getUpdatedMember(TextBuffer buffer, BodyDeclaration declaration) { |
| 686 |
GroupDescription groupDescription= fSource.rewriter.getTrackedNodeData(declaration); |
| 687 |
TextRange textRange= groupDescription.getTextRange(); |
| 688 |
String newSource= buffer.getContent(textRange.getOffset(), textRange.getLength()); |
| 689 |
return Strings.trimIndentation(newSource, fPreferences.tabWidth, false); |
| 690 |
} |
| 691 |
|
| 691 |
private RefactoringStatus moveMembers(BodyDeclaration[] members, String[] sources) throws CoreException { |
692 |
private RefactoringStatus moveMembers(BodyDeclaration[] members, String[] sources) throws CoreException { |
| 692 |
RefactoringStatus result= new RefactoringStatus(); |
693 |
RefactoringStatus result= new RefactoringStatus(); |
| 693 |
TypeDeclaration destination= getDestinationDeclaration(); |
694 |
TypeDeclaration destination= getDestinationDeclaration(); |