[jbosstools-commits] JBoss Tools SVN: r42496 - in trunk/common/plugins: org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java and 1 other directory.
jbosstools-commits at lists.jboss.org
jbosstools-commits at lists.jboss.org
Tue Jul 10 17:42:56 EDT 2012
Author: dazarov
Date: 2012-07-10 17:42:54 -0400 (Tue, 10 Jul 2012)
New Revision: 42496
Modified:
trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/AddSuppressWarningsMarkerResolution.java
trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/ConfigureProblemSeverityResolutionGenerator.java
trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/TempJavaProblemAnnotation.java
Log:
Make Quick Fix "Add @SuppressWarnings" work on Temporary annotations https://issues.jboss.org/browse/JBIDE-12303
Modified: trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/AddSuppressWarningsMarkerResolution.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/AddSuppressWarningsMarkerResolution.java 2012-07-10 21:40:25 UTC (rev 42495)
+++ trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/AddSuppressWarningsMarkerResolution.java 2012-07-10 21:42:54 UTC (rev 42496)
@@ -35,13 +35,18 @@
import org.eclipse.jdt.core.dom.CompilationUnit;
import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.jdt.internal.core.JavaElement;
+import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jpt.common.core.internal.utility.jdt.ASTTools;
import org.eclipse.ltk.core.refactoring.TextChange;
+import org.eclipse.ltk.core.refactoring.TextFileChange;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.text.edits.InsertEdit;
import org.eclipse.text.edits.ReplaceEdit;
@@ -60,7 +65,7 @@
* @author Daniel Azarov
*/
public class AddSuppressWarningsMarkerResolution implements
- IMarkerResolution2 {
+ IMarkerResolution2, IJavaCompletionProposal {
public static final String SUPPRESS_WARNINGS_ANNOTATION = "SuppressWarnings";
public static final String SPACE = " "; //$NON-NLS-1$
public static final String DOT = "."; //$NON-NLS-1$
@@ -73,6 +78,7 @@
private String preferenceKey;
private String label;
private String description;
+ private ICompilationUnit cu;
public AddSuppressWarningsMarkerResolution(IFile file, IJavaElement element, String preferenceKey){
this.file = file;
@@ -92,6 +98,13 @@
description = getPreview();
}
+ public AddSuppressWarningsMarkerResolution(IFile file, IJavaElement element, String preferenceKey, ICompilationUnit compilationUnit){
+ this(file, element, preferenceKey);
+ this.cu = compilationUnit;
+
+ description = getPreview();
+ }
+
private String getPreview(){
TextChange previewChange = getPreviewChange();
@@ -122,12 +135,16 @@
private TextChange getPreviewChange(){
if(element != null && preferenceKey != null){
try {
- ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
+ ICompilationUnit original = (cu != null) ? cu : EclipseUtil.getCompilationUnit(file);
if(original == null) {
return null;
}
+ ICompilationUnit compilationUnit = original.getWorkingCopy(new NullProgressMonitor());
- return getChange(original);
+ TextChange change = getChange(compilationUnit);
+
+ compilationUnit.discardWorkingCopy();
+ return change;
} catch (JavaModelException e) {
CommonUIPlugin.getDefault().logError(e);
}
@@ -156,18 +173,24 @@
@Override
public void run(IMarker marker) {
- if(element != null && preferenceKey != null){
+ ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
+ if(original != null) {
+ do_run(original, false);
+ }
+ }
+
+ private void do_run(ICompilationUnit original, boolean leaveDirty){
+ if(element != null && preferenceKey != null && original != null){
disablePreference();
try {
- ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
- if(original == null) {
- return;
- }
ICompilationUnit compilationUnit = original.getWorkingCopy(new NullProgressMonitor());
CompilationUnitChange change = getChange(compilationUnit);
if(change != null){
+ if(leaveDirty){
+ change.setSaveMode(TextFileChange.LEAVE_DIRTY);
+ }
change.perform(new NullProgressMonitor());
original.reconcile(ICompilationUnit.NO_AST, false, null, new NullProgressMonitor());
}
@@ -451,5 +474,35 @@
}
}
+
+ @Override
+ public void apply(IDocument document) {
+ do_run(cu, true);
+ }
+
+ @Override
+ public Point getSelection(IDocument document) {
+ return null;
+ }
+
+ @Override
+ public String getAdditionalProposalInfo() {
+ return description;
+ }
+
+ @Override
+ public String getDisplayString() {
+ return label;
+ }
+
+ @Override
+ public IContextInformation getContextInformation() {
+ return null;
+ }
+
+ @Override
+ public int getRelevance() {
+ return 100;
+ }
}
Modified: trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/ConfigureProblemSeverityResolutionGenerator.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/ConfigureProblemSeverityResolutionGenerator.java 2012-07-10 21:40:25 UTC (rev 42495)
+++ trunk/common/plugins/org.jboss.tools.common.ui/src/org/jboss/tools/common/ui/marker/ConfigureProblemSeverityResolutionGenerator.java 2012-07-10 21:42:54 UTC (rev 42496)
@@ -12,6 +12,8 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
@@ -85,6 +87,18 @@
}
return null;
}
+
+ private IJavaElement findJavaElement(TempJavaProblemAnnotation annotation, int position){
+ try {
+ ICompilationUnit compilationUnit = annotation.getCompilationUnit();
+ if(compilationUnit != null){
+ return compilationUnit.getElementAt(position);
+ }
+ } catch (CoreException e) {
+ CommonUIPlugin.getDefault().logError(e);
+ }
+ return null;
+ }
private ILocalVariable findParameter(IMethod method, int position) throws JavaModelException{
for(ILocalVariable parameter : method.getParameters()){
@@ -156,9 +170,45 @@
String preferenceKey = getPreferenceKey(annotation);
String preferencePageId = getPreferencePageId(annotation);
if(preferenceKey != null && preferencePageId != null){
+ if(annotation instanceof TempJavaProblemAnnotation){
+ TempJavaProblemAnnotation tAnnotation = (TempJavaProblemAnnotation)annotation;
+ int position = getPosition(tAnnotation);
+ IFile file = getFile(tAnnotation);
+ if(file != null){
+ IJavaElement element = findJavaElement(tAnnotation, position);
+ if(element != null){
+ if(element instanceof IMethod){
+ try{
+ ILocalVariable parameter = findParameter((IMethod)element, position);
+ if(parameter != null){
+ proposals.add(new AddSuppressWarningsMarkerResolution(file, parameter, preferenceKey, tAnnotation.getCompilationUnit()));
+ }
+ }catch(JavaModelException ex){
+ CommonUIPlugin.getDefault().logError(ex);
+ }
+ }
+ proposals.add(new AddSuppressWarningsMarkerResolution(file, element, preferenceKey, tAnnotation.getCompilationUnit()));
+ }
+ }
+ }
proposals.add(new ConfigureProblemSeverityMarkerResolution(preferencePageId, preferenceKey));
}
return proposals;
}
+
+ private int getPosition(TempJavaProblemAnnotation annotation){
+ return annotation.getPosition();
+ }
+
+ private IFile getFile(TempJavaProblemAnnotation annotation){
+ if(annotation.getCompilationUnit() != null){
+ try {
+ return (IFile)annotation.getCompilationUnit().getUnderlyingResource();
+ } catch (JavaModelException e) {
+ CommonUIPlugin.getDefault().logError(e);
+ }
+ }
+ return null;
+ }
}
Modified: trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/TempJavaProblemAnnotation.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/TempJavaProblemAnnotation.java 2012-07-10 21:40:25 UTC (rev 42495)
+++ trunk/common/plugins/org.jboss.tools.common.validation/src/org/jboss/tools/common/validation/java/TempJavaProblemAnnotation.java 2012-07-10 21:42:54 UTC (rev 42496)
@@ -30,4 +30,8 @@
public Map getAttributes() {
return problem.getAttributes();
}
+
+ public int getPosition(){
+ return problem.getSourceStart();
+ }
}
\ No newline at end of file
More information about the jbosstools-commits
mailing list