Author: dazarov
Date: 2011-12-20 20:45:34 -0500 (Tue, 20 Dec 2011)
New Revision: 37477
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AddAnnotationMarkerResolution.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java
Log:
Java Seam and CDI quick fixes: after quick fix, editor is scrolled to the beginning. If
Undo/Redo commands are used, the entire file content gets selected
https://issues.jboss.org/browse/JBIDE-10536
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF 2011-12-21 01:42:46
UTC (rev 37476)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF 2011-12-21 01:45:34
UTC (rev 37477)
@@ -42,7 +42,8 @@
org.jboss.tools.common.ui,
org.jboss.tools.common.el.ui,
org.hibernate.eclipse.libs;bundle-version="3.4.0",
- org.jboss.tools.common.validation
+ org.jboss.tools.common.validation,
+ org.eclipse.jdt.core.manipulation;bundle-version="1.4.0"
Bundle-ActivationPolicy: lazy
Export-Package: org.jboss.tools.seam.ui,
org.jboss.tools.seam.ui.actions,
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java 2011-12-21
01:42:46 UTC (rev 37476)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AbstractSeamMarkerResolution.java 2011-12-21
01:45:34 UTC (rev 37477)
@@ -11,27 +11,24 @@
package org.jboss.tools.seam.ui.marker;
import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jdt.core.IAnnotatable;
-import org.eclipse.jdt.core.IAnnotation;
import org.eclipse.jdt.core.IBuffer;
import org.eclipse.jdt.core.ICompilationUnit;
-import org.eclipse.jdt.core.IImportContainer;
import org.eclipse.jdt.core.IImportDeclaration;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.refactoring.CompilationUnitChange;
import org.eclipse.swt.graphics.Image;
+import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.ui.IMarkerResolution2;
import org.jboss.tools.common.EclipseUtil;
-import org.jboss.tools.common.model.util.EclipseJavaUtil;
+import org.jboss.tools.common.refactoring.MarkerResolutionUtils;
import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.ui.SeamGuiPlugin;
@@ -62,31 +59,21 @@
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
IJavaElement javaElement = compilationUnit.getElementAt(start);
- IType type = compilationUnit.findPrimaryType();
- if(javaElement != null && type != null){
- if(javaElement instanceof IAnnotatable){
- IAnnotation annotation = EclipseJavaUtil.findAnnotation(type,
(IAnnotatable)javaElement, qualifiedName);
- if(annotation != null){
- IBuffer buffer = compilationUnit.getBuffer();
-
- // delete annotation
- buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), "");
-
- // check and delete import
- IImportDeclaration importDeclaration = compilationUnit.getImport(qualifiedName);
- IImportContainer importContainer = compilationUnit.getImportContainer();
- if(importDeclaration != null && importContainer != null){
- int importSize =
importContainer.getSourceRange().getOffset()+importContainer.getSourceRange().getLength();
- String text = buffer.getText(importSize, buffer.getLength()-importSize);
- if(checkImport(text))
- importDeclaration.delete(false, new NullProgressMonitor());
- }
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
- compilationUnit.discardWorkingCopy();
- }
+ if(javaElement != null){
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
+
+ MarkerResolutionUtils.deleteAnnotation(qualifiedName, compilationUnit, javaElement,
edit);
+
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new
NullProgressMonitor());
}
}
-
+ compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
SeamGuiPlugin.getPluginLog().logError(ex);
}
@@ -102,23 +89,7 @@
return null;
}
- private boolean checkImport(String text){
- String name = getShortName();
-
- Pattern p = Pattern.compile(".*\\W"+name+"\\W.*",Pattern.DOTALL);
//$NON-NLS-1$ //$NON-NLS-2$
- Matcher m = p.matcher(text);
- return !m.matches();
- }
- protected String getShortName(){
- int lastDot = qualifiedName.lastIndexOf('.');
- String name;
- if(lastDot < 0)
- name = qualifiedName;
- else
- name = qualifiedName.substring(lastDot+1);
- return name;
- }
protected boolean validateComponentName(String value){
ISeamProject seamProject = getSeamProject();
@@ -151,26 +122,29 @@
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
- final String lineDelim= compilationUnit.findRecommendedLineSeparator();
-
IJavaElement javaElement = compilationUnit.getElementAt(start);
- IType type = getType(javaElement);
- if(type != null){
- IImportDeclaration importDeclaration = compilationUnit.getImport(qualifiedName);
- if(importDeclaration == null || !importDeclaration.exists())
- compilationUnit.createImport(qualifiedName, null, new NullProgressMonitor());
-
- IBuffer buffer = compilationUnit.getBuffer();
-
- String name="";
+ if(javaElement != null){
+ javaElement = compilationUnit.findPrimaryType();
+ String param = "";
if(insertName){
- name="(\""+generateComponentName(compilationUnit.findPrimaryType().getElementName())+"\")";
+ param=
"(\""+generateComponentName(compilationUnit.findPrimaryType().getElementName())+"\")";
}
- buffer.replace(type.getSourceRange().getOffset(), 0,
annotationString+name+lineDelim);
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
- compilationUnit.discardWorkingCopy();
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
+
+ MarkerResolutionUtils.addAnnotation(qualifiedName, compilationUnit, javaElement,
param, edit);
+
+
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new
NullProgressMonitor());
+ }
}
+ compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
SeamGuiPlugin.getPluginLog().logError(ex);
}
@@ -189,7 +163,7 @@
if(importDeclaration == null || !importDeclaration.exists())
compilationUnit.createImport(qualifiedName, null, new NullProgressMonitor());
- String annotation = getShortName();
+ String annotation = MarkerResolutionUtils.getShortName(qualifiedName);
String methodName = annotation.toLowerCase();
IMethod oldMethod = type.getMethod(methodName, new String[]{});
@@ -215,43 +189,36 @@
}
}
- protected void renameAnnotation(String annotationString, String importName, boolean
generate){
+ protected void renameAnnotation(String param, String importName, boolean generate){
try{
ICompilationUnit original = EclipseUtil.getCompilationUnit(file);
ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
IJavaElement javaElement = compilationUnit.getElementAt(start);
- IType type = getType(javaElement);
- if(type != null){
- IAnnotation annotation = EclipseJavaUtil.findAnnotation(type, type, qualifiedName);
- if(annotation != null){
- IImportDeclaration importDeclaration = compilationUnit.getImport(qualifiedName);
- if(importDeclaration == null || !importDeclaration.exists())
- compilationUnit.createImport(qualifiedName, null, new NullProgressMonitor());
- if(importName != null){
- importDeclaration = compilationUnit.getImport(importName);
- if(importDeclaration == null || !importDeclaration.exists())
- compilationUnit.createImport(importName, null, new NullProgressMonitor());
-
- }
+ if(javaElement != null){
+ if(generate){
+ param=
"(\""+generateComponentName(compilationUnit.findPrimaryType().getElementName())+"\")";
+ }
- IBuffer buffer = compilationUnit.getBuffer();
-
- String name = "";
- if(generate)
- name=
"(\""+generateComponentName(compilationUnit.findPrimaryType().getElementName())+"\")";
-
- buffer.replace(annotation.getSourceRange().getOffset(),
annotation.getSourceRange().getLength(), annotationString+name);
- compilationUnit.commitWorkingCopy(false, new NullProgressMonitor());
- compilationUnit.discardWorkingCopy();
+ CompilationUnitChange change = new CompilationUnitChange("",
compilationUnit);
+
+ MultiTextEdit edit = new MultiTextEdit();
+
+ change.setEdit(edit);
+
+ MarkerResolutionUtils.updateAnnotation(qualifiedName, compilationUnit, javaElement,
param, edit);
+
+
+ if(edit.hasChildren()){
+ change.perform(new NullProgressMonitor());
+ original.reconcile(ICompilationUnit.NO_AST, false, null, new
NullProgressMonitor());
}
}
+ compilationUnit.discardWorkingCopy();
}catch(CoreException ex){
SeamGuiPlugin.getPluginLog().logError(ex);
}
}
-
-
public String getLabel() {
return label;
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AddAnnotationMarkerResolution.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AddAnnotationMarkerResolution.java 2011-12-21
01:42:46 UTC (rev 37476)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/AddAnnotationMarkerResolution.java 2011-12-21
01:45:34 UTC (rev 37477)
@@ -26,7 +26,7 @@
}
public void run(IMarker marker) {
- addAnnotation("@"+getShortName(), insertName); //$NON-NLS-1$
+ addAnnotation("", insertName); //$NON-NLS-1$
}
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java 2011-12-21
01:42:46 UTC (rev 37476)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/ChangeScopeMarkerResolution.java 2011-12-21
01:45:34 UTC (rev 37477)
@@ -30,6 +30,6 @@
}
public void run(IMarker marker) {
- renameAnnotation("@Scope("+scopeName+")",
"org.jboss.seam.ScopeType", false); //$NON-NLS-1$
+ renameAnnotation("("+scopeName+")",
"org.jboss.seam.ScopeType", false); //$NON-NLS-1$
}
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java 2011-12-21
01:42:46 UTC (rev 37476)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/RenameAnnotationMarkerResolution.java 2011-12-21
01:45:34 UTC (rev 37477)
@@ -25,6 +25,6 @@
}
public void run(IMarker marker) {
- renameAnnotation("@"+getShortName(), null, true); //$NON-NLS-1$
+ renameAnnotation("", null, true); //$NON-NLS-1$
}
}
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java 2011-12-21
01:42:46 UTC (rev 37476)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/marker/SeamProblemMarkerResolutionGenerator.java 2011-12-21
01:45:34 UTC (rev 37477)
@@ -21,7 +21,6 @@
import org.eclipse.ui.IMarkerResolutionGenerator2;
import org.jboss.tools.common.text.ITextSourceReference;
import org.jboss.tools.seam.core.ISeamComponent;
-import org.jboss.tools.seam.core.ISeamComponentDeclaration;
import org.jboss.tools.seam.core.ISeamJavaComponentDeclaration;
import org.jboss.tools.seam.core.ISeamProject;
import org.jboss.tools.seam.core.ISeamProperty;