Skip to content

Commit

Permalink
Adopt the helpers from jdt.core.manipulation to deal with the CU's pr…
Browse files Browse the repository at this point in the history
…eferences (#1666)

Signed-off-by: Jinbo Wang <jinbwan@microsoft.com>
  • Loading branch information
testforstephen committed Feb 25, 2021
1 parent f667fb5 commit 5283bd1
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ private static TextEdit createTextEditForOverridableMethods(ICompilationUnit cu,
return null;
}

CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(cu.getResource());
CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(cu);
ImportRewriteContext context = new ContextSensitiveImportRewriteContext(astRoot, typeNode.getStartPosition(), importRewrite);
for (IMethodBinding methodBinding : methodBindings) {
MethodDeclaration stub = StubUtility2Core.createImplementationStubCore(cu, astRewrite, importRewrite, context, methodBinding, typeBinding, settings, typeBinding.isInterface(), typeNode, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ private String createNewBody(ImportRewrite importRewrite) throws CoreException {
bindings = new IMethodBinding[0];
}
}
CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(fJavaProject.getProject());
CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(fCompilationUnit);
IMethodBinding[] methodsToOverride = null;
settings.createComments = false;
List<IMethodBinding> result = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public String updateReplacementString(IDocument document, int offset, ImportRewr
methodToOverride= Bindings.findMethodInType(node.getAST().resolveWellKnownType("java.lang.Object"), fMethodName, fParamTypes); //$NON-NLS-1$
}
if (methodToOverride != null) {
CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(fJavaProject.getProject());
CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(fCompilationUnit);
MethodDeclaration stub = StubUtility2Core.createImplementationStubCore(fCompilationUnit, rewrite, importRewrite,
context, methodToOverride, declaringType, settings, declaringType.isInterface(), node,
snippetStringSupport);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -364,8 +364,8 @@ public void createEdit() throws JavaModelException {
TextEdit edit= fDelegateRewrite.getASTRewrite().rewriteAST(document, fDelegateRewrite.getCu().getOptions(true));
edit.apply(document, TextEdit.UPDATE_REGIONS);

int tabWidth = CodeFormatterUtil.getTabWidth(fOriginalRewrite.getCu().getJavaProject());
int identWidth = CodeFormatterUtil.getIndentWidth(fOriginalRewrite.getCu().getJavaProject());
int tabWidth = CodeFormatterUtil.getTabWidth(fOriginalRewrite.getCu());
int identWidth = CodeFormatterUtil.getIndentWidth(fOriginalRewrite.getCu());

String newSource= Strings.trimIndentation(document.get(fTrackedPosition.getStartPosition(), fTrackedPosition.getLength()),
tabWidth, identWidth, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ private MethodDeclaration getStub(ASTRewrite rewrite, ASTNode targetTypeDecl) th
}
decl.setBody(body);

CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(getCompilationUnit().getResource());
CodeGenerationSettings settings = PreferenceManager.getCodeGenerationSettings(getCompilationUnit());
if (settings.createComments && !fSenderBinding.isAnonymous()) {
String string = CodeGeneration.getMethodComment(getCompilationUnit(), fSenderBinding.getName(), decl, null,
String.valueOf('\n'));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ protected ASTRewrite getRewrite() throws CoreException {

createImportRewrite((CompilationUnit) fTypeNode.getRoot());

CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(getCompilationUnit().getJavaProject());
CodeGenerationSettings settings= JavaPreferencesSettings.getCodeGenerationSettings(getCompilationUnit());
if (!settings.createComments) {
settings= null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,12 @@ private AddJavadocCommentProposal(String name, ICompilationUnit cu, int relevanc
protected void addEdits(IDocument document, TextEdit rootEdit) throws CoreException {
try {
String lineDelimiter= TextUtilities.getDefaultLineDelimiter(document);
final IJavaProject project= getCompilationUnit().getJavaProject();
final ICompilationUnit unit= getCompilationUnit();
IRegion region= document.getLineInformationOfOffset(fInsertPosition);

String lineContent= document.get(region.getOffset(), region.getLength());
String indentString= Strings.getIndentString(lineContent, project);
String str= Strings.changeIndent(fComment, 0, project, indentString, lineDelimiter);
String indentString= Strings.getIndentString(lineContent, unit);
String str= Strings.changeIndent(fComment, 0, unit, indentString, lineDelimiter);
InsertEdit edit= new InsertEdit(fInsertPosition, str);
rootEdit.addChild(edit);
if (fComment.charAt(fComment.length() - 1) != '\n') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
import org.eclipse.jdt.core.dom.IVariableBinding;
import org.eclipse.jdt.core.dom.MethodDeclaration;
import org.eclipse.jdt.core.dom.VariableDeclarationFragment;
import org.eclipse.jdt.internal.corext.codemanipulation.CodeGenerationSettings;
import org.eclipse.jdt.internal.corext.refactoring.RefactoringAvailabilityTesterCore;
import org.eclipse.jdt.internal.corext.refactoring.structure.MoveInnerToTopRefactoring;
import org.eclipse.jdt.internal.corext.refactoring.structure.MoveInstanceMethodProcessor;
Expand Down Expand Up @@ -221,7 +222,7 @@ private static MoveDestinationsResponse getInstanceMethodDestinations(CodeAction
}

IMethod method = (IMethod) methodBinding.getJavaElement();
MoveInstanceMethodProcessor processor = new MoveInstanceMethodProcessor(method, PreferenceManager.getCodeGenerationSettings(method.getJavaProject().getProject()));
MoveInstanceMethodProcessor processor = new MoveInstanceMethodProcessor(method, PreferenceManager.getCodeGenerationSettings(unit));
Refactoring refactoring = new MoveRefactoring(processor);
CheckConditionsOperation check = new CheckConditionsOperation(refactoring, CheckConditionsOperation.INITIAL_CONDITONS);
try {
Expand Down Expand Up @@ -448,7 +449,7 @@ private static RefactorWorkspaceEdit moveInstanceMethod(CodeActionParams params,

SubMonitor subMonitor = SubMonitor.convert(monitor, "Moving instance method...", 100);
IMethod method = (IMethod) methodBinding.getJavaElement();
MoveInstanceMethodProcessor processor = new MoveInstanceMethodProcessor(method, PreferenceManager.getCodeGenerationSettings(method.getJavaProject().getProject()));
MoveInstanceMethodProcessor processor = new MoveInstanceMethodProcessor(method, PreferenceManager.getCodeGenerationSettings(unit));
Refactoring refactoring = new MoveRefactoring(processor);
CheckConditionsOperation check = new CheckConditionsOperation(refactoring, CheckConditionsOperation.INITIAL_CONDITONS);
try {
Expand Down Expand Up @@ -514,7 +515,9 @@ private static RefactorWorkspaceEdit moveStaticMember(IMember[] members, String
return new RefactorWorkspaceEdit("Failed to move static member because no members are selected or no destination is specified.");
}

MoveStaticMembersProcessor processor = new MoveStaticMembersProcessor(members, PreferenceManager.getCodeGenerationSettings(members[0].getJavaProject().getProject()));
CodeGenerationSettings settings = members[0].getTypeRoot() instanceof ICompilationUnit ? PreferenceManager.getCodeGenerationSettings((ICompilationUnit) members[0].getTypeRoot())
: PreferenceManager.getCodeGenerationSettings(members[0].getJavaProject().getProject());
MoveStaticMembersProcessor processor = new MoveStaticMembersProcessor(members, settings);
Refactoring refactoring = new MoveRefactoring(processor);
CheckConditionsOperation check = new CheckConditionsOperation(refactoring, CheckConditionsOperation.INITIAL_CONDITONS);
SubMonitor subMonitor = SubMonitor.convert(monitor, "Moving static members...", 100);
Expand Down Expand Up @@ -558,7 +561,7 @@ private static RefactorWorkspaceEdit moveTypeToNewFile(CodeActionParams params,

SubMonitor subMonitor = SubMonitor.convert(monitor, "Moving type to new file...", 100);
try {
MoveInnerToTopRefactoring refactoring = new MoveInnerToTopRefactoring(type, PreferenceManager.getCodeGenerationSettings(unit.getJavaProject().getProject()));
MoveInnerToTopRefactoring refactoring = new MoveInnerToTopRefactoring(type, PreferenceManager.getCodeGenerationSettings(unit));
CheckConditionsOperation check = new CheckConditionsOperation(refactoring, CheckConditionsOperation.ALL_CONDITIONS);
check.run(subMonitor.split(50));
if (check.getStatus().getSeverity() >= RefactoringStatus.FATAL) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
Expand Down Expand Up @@ -256,6 +257,15 @@ public static CodeGenerationSettings getCodeGenerationSettings(IResource resourc
return res;
}

public static CodeGenerationSettings getCodeGenerationSettings(ICompilationUnit cu) {
CodeGenerationSettings res = new CodeGenerationSettings();
res.overrideAnnotation = true;
res.createComments = false;
res.tabWidth = CodeFormatterUtil.getTabWidth(cu);
res.indentWidth = CodeFormatterUtil.getIndentWidth(cu);
return res;
}

/**
* Register the given listener for notification of preferences changes. Calling
* this method multiple times with the same listener has no effect. The given
Expand Down

0 comments on commit 5283bd1

Please sign in to comment.