Author: dazarov
Date: 2011-12-27 19:45:26 -0500 (Tue, 27 Dec 2011)
New Revision: 37567
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIFileChange.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRefactoringProcessor.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRenameProcessor.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllDisposerAnnotationsProcessor.java
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllInjectedConstructorsProcessor.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/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java 2011-12-28
00:05:31 UTC (rev 37566)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/AddQualifiersToBeanProcessor.java 2011-12-28
00:45:26 UTC (rev 37567)
@@ -21,7 +21,6 @@
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.CompositeChange;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.TextFileChange;
import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
import org.eclipse.text.edits.MultiTextEdit;
import org.jboss.tools.cdi.core.CDICoreMessages;
@@ -87,11 +86,7 @@
ICompilationUnit compilationUnit = original.getWorkingCopy(pm);
- TextFileChange fileChange = new CDIFileChange(file.getName(), file);
- if(CDIFileChange.getAndReloadEditor(file) != null)
- fileChange.setSaveMode(TextFileChange.LEAVE_DIRTY);
- else
- fileChange.setSaveMode(TextFileChange.FORCE_SAVE);
+ CDIFileChange fileChange = new CDIFileChange(file);
MultiTextEdit edit = new MultiTextEdit();
@@ -107,11 +102,7 @@
fileChange.setEdit(edit);
rootChange.add(fileChange);
}
- fileChange = new CDIFileChange(file2.getName(), file2);
- if(CDIFileChange.getAndReloadEditor(file2) != null)
- fileChange.setSaveMode(TextFileChange.LEAVE_DIRTY);
- else
- fileChange.setSaveMode(TextFileChange.FORCE_SAVE);
+ fileChange = new CDIFileChange(file2);
edit = new MultiTextEdit();
}else{
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIFileChange.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIFileChange.java 2011-12-28
00:05:31 UTC (rev 37566)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIFileChange.java 2011-12-28
00:45:26 UTC (rev 37567)
@@ -13,60 +13,85 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jdt.internal.ui.javaeditor.EditorUtility;
+import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.jface.text.IDocument;
+import org.eclipse.ltk.core.refactoring.Change;
+import org.eclipse.ltk.core.refactoring.MultiStateTextFileChange;
+import org.eclipse.ltk.core.refactoring.RefactoringStatus;
+import org.eclipse.ltk.core.refactoring.TextChange;
import org.eclipse.ltk.core.refactoring.TextFileChange;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PartInitException;
-import org.jboss.tools.cdi.core.CDICorePlugin;
+import org.eclipse.text.edits.TextEdit;
+import org.eclipse.text.edits.UndoEdit;
-public class CDIFileChange extends TextFileChange{
+public class CDIFileChange extends MultiStateTextFileChange{
+ private IFile file;
+ private CDITextChange rootChange = null;
- public CDIFileChange(String name, IFile file) {
- super(name, file);
+ public CDIFileChange(IFile file) {
+ super(file.getName(), file);
+ this.file = file;
+ setSaveMode(TextFileChange.FORCE_SAVE);
}
-
- @Override
- protected void releaseDocument(final IDocument document, IProgressMonitor pm)
- throws CoreException {
- super.releaseDocument(document, pm);
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- IEditorPart editor = getEditor(getFile());
- if(editor != null){
- editor.doSave(new NullProgressMonitor());
- }
- }
-
- });
+
+ public IFile getFile(){
+ return file;
}
- public static IEditorPart getAndReloadEditor(IFile file){
- IEditorInput input = EditorUtility.getEditorInput(file);
-
- if(EditorUtility.isOpenInEditor(input) != null){
- try {
- return EditorUtility.openInEditor(input, false);
- } catch (PartInitException e) {
- CDICorePlugin.getDefault().logError(e);
- }
- }
- return null;
+ public void setEdit(TextEdit edit) {
+ rootChange = new CDITextChange();
+ rootChange.setEdit(edit);
+ super.addChange(rootChange);
}
- public static IEditorPart getEditor(IFile file){
- IEditorInput input = EditorUtility.getEditorInput(file);
+ public TextEdit getEdit(){
+ return rootChange.getEdit();
+ }
+
+ public void addEdit(TextEdit edit){
+ rootChange.addEdit(edit);
+ }
+
+ class CDITextChange extends TextChange{
+
+ protected CDITextChange() {
+ super("");
+ }
+
+ @Override
+ protected IDocument acquireDocument(IProgressMonitor pm)
+ throws CoreException {
+ return null;
+ }
+
+ @Override
+ protected void commit(IDocument document, IProgressMonitor pm)
+ throws CoreException {
+ }
+
+ @Override
+ protected void releaseDocument(IDocument document, IProgressMonitor pm)
+ throws CoreException {
+ }
+
+ @Override
+ protected Change createUndoChange(UndoEdit edit) {
+ return null;
+ }
+
+ @Override
+ public void initializeValidationData(IProgressMonitor pm) {
+ }
+
+ @Override
+ public RefactoringStatus isValid(IProgressMonitor pm)
+ throws CoreException, OperationCanceledException {
+ return null;
+ }
+
+ @Override
+ public Object getModifiedElement() {
+ return null;
+ }
- IWorkbenchWindow[] windows =
CDICorePlugin.getDefault().getWorkbench().getWorkbenchWindows();
- for(IWorkbenchWindow window : windows){
- IEditorPart editor = window.getActivePage().findEditor(input);
- if(editor != null)
- return editor;
- }
- return null;
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRefactoringProcessor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRefactoringProcessor.java 2011-12-28
00:05:31 UTC (rev 37566)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRefactoringProcessor.java 2011-12-28
00:45:26 UTC (rev 37567)
@@ -18,7 +18,6 @@
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.ltk.core.refactoring.CompositeChange;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.TextFileChange;
import org.eclipse.text.edits.MultiTextEdit;
import org.jboss.tools.cdi.core.CDICoreMessages;
import org.jboss.tools.cdi.core.CDICoreNature;
@@ -30,7 +29,7 @@
public abstract class CDIRefactoringProcessor extends AbstractCDIProcessor {
protected IFile file;
- protected TextFileChange change;
+ protected CDIFileChange change;
protected IClassBean bean;
public CDIRefactoringProcessor(IFile file, String label){
@@ -44,17 +43,12 @@
protected void createRootChange(){
rootChange = new CompositeChange(getLabel());
- change = new CDIFileChange(file.getName(), file);
+ change = new CDIFileChange(file);
- if(CDIFileChange.getAndReloadEditor(file) != null)
- change.setSaveMode(TextFileChange.LEAVE_DIRTY);
- else
- change.setSaveMode(TextFileChange.FORCE_SAVE);
-
MultiTextEdit root = new MultiTextEdit();
change.setEdit(root);
rootChange.add(change);
- rootChange.markAsSynthetic();
+ //rootChange.markAsSynthetic();
}
private IClassBean findClassBean(){
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRenameProcessor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRenameProcessor.java 2011-12-28
00:05:31 UTC (rev 37566)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/CDIRenameProcessor.java 2011-12-28
00:45:26 UTC (rev 37567)
@@ -20,7 +20,6 @@
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
-import org.eclipse.ltk.core.refactoring.TextFileChange;
import org.eclipse.osgi.util.NLS;
import org.eclipse.text.edits.MultiTextEdit;
import org.eclipse.text.edits.ReplaceEdit;
@@ -36,7 +35,7 @@
* @author Daniel Azarov
*/
public abstract class CDIRenameProcessor extends AbstractCDIProcessor {
- protected TextFileChange lastChange;
+ protected CDIFileChange lastChange;
protected IFile declarationFile=null;
private String newName;
@@ -85,24 +84,19 @@
}
// lets collect all changes for the same files in one MultiTextEdit
- protected TextFileChange getChange(IFile file){
+ protected CDIFileChange getChange(IFile file){
if(lastChange != null && lastChange.getFile().equals(file))
return lastChange;
for(int i=0; i < rootChange.getChildren().length; i++){
- TextFileChange change = (TextFileChange)rootChange.getChildren()[i];
+ CDIFileChange change = (CDIFileChange)rootChange.getChildren()[i];
if(change.getFile().equals(file)){
lastChange = change;
return lastChange;
}
}
- lastChange = new CDIFileChange(file.getName(), file);
+ lastChange = new CDIFileChange(file);
- if(CDIFileChange.getAndReloadEditor(file) != null)
- lastChange.setSaveMode(TextFileChange.LEAVE_DIRTY);
- else
- lastChange.setSaveMode(TextFileChange.FORCE_SAVE);
-
MultiTextEdit root = new MultiTextEdit();
lastChange.setEdit(root);
rootChange.add(lastChange);
@@ -121,7 +115,7 @@
protected void change(IFile file, int offset, int length, String text){
String key = file.getFullPath().toString()+" "+offset;
if(!keys.contains(key)){
- TextFileChange change = getChange(file);
+ CDIFileChange change = getChange(file);
TextEdit edit = new ReplaceEdit(offset, length, text);
change.addEdit(edit);
keys.add(key);
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllDisposerAnnotationsProcessor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllDisposerAnnotationsProcessor.java 2011-12-28
00:05:31 UTC (rev 37566)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllDisposerAnnotationsProcessor.java 2011-12-28
00:45:26 UTC (rev 37567)
@@ -16,19 +16,19 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.TextEdit;
+import org.eclipse.text.edits.MultiTextEdit;
import org.jboss.tools.cdi.core.CDIConstants;
-import org.jboss.tools.cdi.core.CDIUtil;
import org.jboss.tools.cdi.core.IBeanMethod;
import org.jboss.tools.cdi.core.IClassBean;
import org.jboss.tools.cdi.core.IProducer;
import org.jboss.tools.cdi.core.IProducerMethod;
-import org.jboss.tools.common.text.ITextSourceReference;
public class DeleteAllDisposerAnnotationsProcessor extends CDIRefactoringProcessor {
private IMethod method;
@@ -38,7 +38,7 @@
this.method = method;
}
- private void changeDisposers(IClassBean bean) {
+ private void changeDisposers(IClassBean bean) throws JavaModelException {
Set<IBeanMethod> disposers = bean.getDisposers();
if (disposers.isEmpty()) {
return;
@@ -51,15 +51,19 @@
IProducerMethod producerMethod = (IProducerMethod) producer;
Set<IBeanMethod> disposerMethods =
producer.getCDIProject().resolveDisposers(producerMethod);
boundDisposers.addAll(disposerMethods);
+ ICompilationUnit original = producerMethod.getMethod().getCompilationUnit();
+ ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
for (IBeanMethod disposerMethod : disposerMethods) {
if(!disposerMethod.getMethod().isSimilar(method)){
- Set<ITextSourceReference> disposerDeclarations =
CDIUtil.getAnnotationPossitions(disposerMethod,
CDIConstants.DISPOSES_ANNOTATION_TYPE_NAME);
- for (ITextSourceReference declaration : disposerDeclarations) {
- TextEdit edit = new ReplaceEdit(declaration.getStartPosition(),
declaration.getLength(), "");
- change.addEdit(edit);
- }
+ CDIMarkerResolutionUtils.deleteAnnotation(CDIConstants.DISPOSES_ANNOTATION_TYPE_NAME,
compilationUnit, disposerMethod.getMethod().getParameters()[0],
(MultiTextEdit)change.getEdit());
+// Set<ITextSourceReference> disposerDeclarations =
CDIUtil.getAnnotationPossitions(disposerMethod,
CDIConstants.DISPOSES_ANNOTATION_TYPE_NAME);
+// for (ITextSourceReference declaration : disposerDeclarations) {
+// TextEdit edit = new ReplaceEdit(declaration.getStartPosition(),
declaration.getLength(), "");
+// change.addEdit(edit);
+// }
}
}
+ compilationUnit.discardWorkingCopy();
}
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllInjectedConstructorsProcessor.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllInjectedConstructorsProcessor.java 2011-12-28
00:05:31 UTC (rev 37566)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/internal/core/refactoring/DeleteAllInjectedConstructorsProcessor.java 2011-12-28
00:45:26 UTC (rev 37567)
@@ -10,22 +10,22 @@
******************************************************************************/
package org.jboss.tools.cdi.internal.core.refactoring;
-import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
+import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.TextEdit;
+import org.eclipse.text.edits.MultiTextEdit;
import org.jboss.tools.cdi.core.CDIConstants;
import org.jboss.tools.cdi.core.IBeanMethod;
import org.jboss.tools.cdi.core.IClassBean;
-import org.jboss.tools.common.java.IAnnotationDeclaration;
public class DeleteAllInjectedConstructorsProcessor extends CDIRefactoringProcessor {
private IMethod method;
@@ -35,22 +35,26 @@
this.method = method;
}
- private void changeConstructors(IClassBean bean) {
+ private void changeConstructors(IClassBean bean) throws JavaModelException {
Set<IBeanMethod> constructors = bean.getBeanConstructors();
if(constructors.size()>1) {
- Set<IAnnotationDeclaration> injects = new
HashSet<IAnnotationDeclaration>();
+ //Set<IAnnotationDeclaration> injects = new
HashSet<IAnnotationDeclaration>();
+ ICompilationUnit original =
constructors.iterator().next().getMethod().getCompilationUnit();
+ ICompilationUnit compilationUnit = original.getWorkingCopy(new
NullProgressMonitor());
for (IBeanMethod constructor : constructors) {
if(!constructor.getMethod().isSimilar(method)){
- IAnnotationDeclaration inject =
constructor.getAnnotation(CDIConstants.INJECT_ANNOTATION_TYPE_NAME);
- if(inject!=null) {
- injects.add(inject);
- }
+ CDIMarkerResolutionUtils.deleteAnnotation(CDIConstants.INJECT_ANNOTATION_TYPE_NAME,
compilationUnit, constructor.getMethod(), (MultiTextEdit)change.getEdit());
+ //IAnnotationDeclaration inject =
constructor.getAnnotation(CDIConstants.INJECT_ANNOTATION_TYPE_NAME);
+ //if(inject!=null) {
+ // injects.add(inject);
+ //}
}
}
- for (IAnnotationDeclaration inject : injects) {
- TextEdit edit = new ReplaceEdit(inject.getStartPosition(), inject.getLength(),
"");
- change.addEdit(edit);
- }
+ compilationUnit.discardWorkingCopy();
+ //for (IAnnotationDeclaration inject : injects) {
+ // TextEdit edit = new ReplaceEdit(inject.getStartPosition(), inject.getLength(),
"");
+ // change.addEdit(edit);
+ //}
}
}