Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 41691 | Differences between
and this patch

Collapse All | Expand All

(-)core refactoring/org/eclipse/jdt/internal/corext/refactoring/structure/MoveStaticMembersRefactoring.java (-14 / +15 lines)
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();

Return to bug 41691