1 /*******************************************************************************
2 * Copyright (c) 2000, 2011 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package org.eclipse.jdt.internal.ui.fix;
13 import java.util.ArrayList;
14 import java.util.List;
17 import org.eclipse.core.runtime.CoreException;
19 import org.eclipse.jdt.core.dom.CompilationUnit;
21 import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
22 import org.eclipse.jdt.internal.corext.fix.VariableDeclarationFix;
24 import org.eclipse.jdt.ui.cleanup.CleanUpContext;
25 import org.eclipse.jdt.ui.cleanup.CleanUpRequirements;
26 import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
28 public class VariableDeclarationCleanUp extends AbstractCleanUp {
30 public VariableDeclarationCleanUp(Map<String, String> options) {
34 public VariableDeclarationCleanUp() {
42 public CleanUpRequirements getRequirements() {
43 return new CleanUpRequirements(requireAST(), false, false, null);
46 private boolean requireAST() {
47 boolean addFinal= isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL);
51 return isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS) ||
52 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS) ||
53 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES);
60 public ICleanUpFix createFix(CleanUpContext context) throws CoreException {
61 CompilationUnit compilationUnit= context.getAST();
62 if (compilationUnit == null)
65 boolean addFinal= isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL);
69 return VariableDeclarationFix.createCleanUp(compilationUnit,
70 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS),
71 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS),
72 isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES));
79 public String[] getStepDescriptions() {
80 List<String> result= new ArrayList<String>();
81 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS))
82 result.add(MultiFixMessages.VariableDeclarationCleanUp_AddFinalField_description);
83 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS))
84 result.add(MultiFixMessages.VariableDeclarationCleanUp_AddFinalParameters_description);
85 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES))
86 result.add(MultiFixMessages.VariableDeclarationCleanUp_AddFinalLocals_description);
88 return result.toArray(new String[result.size()]);
95 public String getPreview() {
96 StringBuffer buf= new StringBuffer();
98 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PRIVATE_FIELDS)) {
99 buf.append("private final int i= 0;\n"); //$NON-NLS-1$
101 buf.append("private int i= 0;\n"); //$NON-NLS-1$
103 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_PARAMETERS)) {
104 buf.append("public void foo(final int j) {\n"); //$NON-NLS-1$
106 buf.append("public void foo(int j) {\n"); //$NON-NLS-1$
108 if (isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL) && isEnabled(CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL_LOCAL_VARIABLES)) {
109 buf.append(" final int k;\n"); //$NON-NLS-1$
110 buf.append(" int h;\n"); //$NON-NLS-1$
111 buf.append(" h= 0;\n"); //$NON-NLS-1$
113 buf.append(" int k, h;\n"); //$NON-NLS-1$
114 buf.append(" h= 0;\n"); //$NON-NLS-1$
116 buf.append("}\n"); //$NON-NLS-1$
118 return buf.toString();