org.eclipse.xtend.ide.quickfix
Class XtendQuickfixProvider

java.lang.Object
  extended by org.eclipse.xtext.ui.editor.quickfix.AbstractDeclarativeQuickfixProvider
      extended by org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider
          extended by org.eclipse.xtend.ide.quickfix.XtendQuickfixProvider
All Implemented Interfaces:
IssueResolutionProvider

public class XtendQuickfixProvider
extends DefaultQuickfixProvider

Author:
Jan Koehnlein - Quickfixes for inconsistent indentation, Sebastian Zarnekow - Quickfixes for misspelled types and constructors, Holger Schill - Quickfixes for missing methods / fields / localVars

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider
IssueResolutionProvider.NullImpl
 
Constructor Summary
XtendQuickfixProvider()
           
 
Method Summary
 void addConstuctorFromSuper(Issue issue, IssueResolutionAcceptor acceptor)
           
 void addThrowsDeclaration(Issue issue, IssueResolutionAcceptor acceptor)
           
protected  void computeArgumentString(XAbstractFeatureCall call, boolean paramNames, IAppendable appendable, boolean isExtension)
           
protected  void computeTypeArguments(XExpression expression, java.util.List<JvmTypeReference> typeArguments, IAppendable appendable)
           
protected  void createImportProposals(JvmDeclaredType contextType, Issue issue, java.lang.String typeSimpleName, org.eclipse.jdt.core.search.IJavaSearchScope searchScope, IssueResolutionAcceptor acceptor)
           
 void createLinkingIssueResolutions(Issue issue, IssueResolutionAcceptor issueResolutionAcceptor)
          Filter quickfixes for types and constructors.
protected  void createNewLocalVariable(java.lang.String elementName, JvmTypeReference expectedType, Issue issue, IssueResolutionAcceptor issueResolutionAcceptor, IModificationContext modificationContext)
           
protected  void createNewXtendField(java.lang.String elementName, JvmTypeReference expectedType, XAbstractFeatureCall call, Issue issue, IssueResolutionAcceptor issueResolutionAcceptor, IModificationContext modificationContext)
           
protected  void createNewXtendFunction(java.lang.String elementName, java.lang.String callText, boolean isExtension, JvmTypeReference expectedType, Issue issue, IssueResolutionAcceptor issueResolutionAcceptor, IModificationContext modificationContext)
           
protected  void createXtendLinkingIssueResolutions(Issue issue, IssueResolutionAcceptor issueResolutionAcceptor)
           
protected  void doCreateNewFieldInClazz(java.lang.String elementName, XAbstractFeatureCall call, JvmTypeReference expectedType, IXtextDocument xtextDocument, int openingBraceOffset)
           
protected  void doCreateNewFunctionInClazz(XAbstractFeatureCall call, XtendClass xtendClazz, JvmTypeReference expectedType, IXtextDocument xtextDocument, java.lang.String callText)
           
protected  XExpression findContainerExpressionInBlockExpression(org.eclipse.emf.ecore.EObject expr)
           
 void fixDuplicateImport(Issue issue, IssueResolutionAcceptor acceptor)
           
 void fixDuplicateWildcardUse(Issue issue, IssueResolutionAcceptor acceptor)
           
 void fixIndentation(Issue issue, IssueResolutionAcceptor acceptor)
           
 void fixMissingOverride(Issue issue, IssueResolutionAcceptor acceptor)
           
 void fixObsoleteOverride(Issue issue, IssueResolutionAcceptor acceptor)
           
 void fixUnusedImport(Issue issue, IssueResolutionAcceptor acceptor)
           
protected  java.lang.String getDefaultValueLiteral(JvmTypeReference type)
           
protected  int getFirstOffsetOfKeyword(org.eclipse.emf.ecore.EObject object, java.lang.String keyword)
           
protected  IScope getImportedTypesScope(org.eclipse.emf.ecore.EObject model, java.lang.String misspelled, IScope actualScope, org.eclipse.jdt.core.search.IJavaSearchScope scope)
           
protected  org.eclipse.jdt.core.search.IJavaSearchScope getJavaSearchScope(org.eclipse.emf.ecore.EObject model)
           
protected  java.lang.String getQualifiedTypeName(char[] packageName, char[][] enclosingTypeNames, char[] simpleTypeName)
           
 java.util.List<IssueResolution> getResolutions(Issue issue)
           
 boolean hasResolutionFor(java.lang.String issueCode)
           
 void implementAbstractMethods(Issue issue, IssueResolutionAcceptor acceptor)
           
protected  void internalDoAddAbstractKeyword(org.eclipse.emf.ecore.EObject element, IModificationContext context)
           
protected  boolean isSimilarTypeName(java.lang.String s0, java.lang.String s1)
           
 void makeClassAbstract(Issue issue, IssueResolutionAcceptor acceptor)
           
protected  void organizeImports(Issue issue, IssueResolutionAcceptor acceptor)
           
 void putXtendOnClasspath(Issue issue, IssueResolutionAcceptor acceptor)
           
protected  void replaceKeyword(Keyword keyword, java.lang.String replacement, org.eclipse.emf.ecore.EObject container, IXtextDocument document)
           
 void surroundWithTryCatch(Issue issue, IssueResolutionAcceptor acceptor)
           
 
Methods inherited from class org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider
fixCrossReferenceImage, fixCrossReferenceLabel, getModificationContextFactory, getQualifiedNameConverter, getResolutionsForLinkingIssue, getScopeProvider, getSimilarityMatcher, getUnresolvedEReference, queryScope
 
Methods inherited from class org.eclipse.xtext.ui.editor.quickfix.AbstractDeclarativeQuickfixProvider
collectMethods, getFixMethodPredicate, getFixMethods, getIssueResolutionAcceptorProvider, getResolutions, setIssueResolutionAcceptorProvider
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XtendQuickfixProvider

public XtendQuickfixProvider()
Method Detail

hasResolutionFor

public boolean hasResolutionFor(java.lang.String issueCode)
Specified by:
hasResolutionFor in interface IssueResolutionProvider
Overrides:
hasResolutionFor in class DefaultQuickfixProvider

getResolutions

public java.util.List<IssueResolution> getResolutions(Issue issue)
Specified by:
getResolutions in interface IssueResolutionProvider
Overrides:
getResolutions in class DefaultQuickfixProvider

createXtendLinkingIssueResolutions

protected void createXtendLinkingIssueResolutions(Issue issue,
                                                  IssueResolutionAcceptor issueResolutionAcceptor)
Since:
2.3

createNewLocalVariable

protected void createNewLocalVariable(java.lang.String elementName,
                                      JvmTypeReference expectedType,
                                      Issue issue,
                                      IssueResolutionAcceptor issueResolutionAcceptor,
                                      IModificationContext modificationContext)
Since:
2.3

createNewXtendFunction

protected void createNewXtendFunction(@NonNull
                                      java.lang.String elementName,
                                      @NonNull
                                      java.lang.String callText,
                                      boolean isExtension,
                                      JvmTypeReference expectedType,
                                      Issue issue,
                                      IssueResolutionAcceptor issueResolutionAcceptor,
                                      IModificationContext modificationContext)
Since:
2.3

doCreateNewFunctionInClazz

protected void doCreateNewFunctionInClazz(@NonNull
                                          XAbstractFeatureCall call,
                                          XtendClass xtendClazz,
                                          @Nullable
                                          JvmTypeReference expectedType,
                                          IXtextDocument xtextDocument,
                                          @NonNull
                                          java.lang.String callText)
                                   throws org.eclipse.jface.text.BadLocationException
Throws:
org.eclipse.jface.text.BadLocationException
Since:
2.3

createNewXtendField

protected void createNewXtendField(java.lang.String elementName,
                                   JvmTypeReference expectedType,
                                   XAbstractFeatureCall call,
                                   Issue issue,
                                   IssueResolutionAcceptor issueResolutionAcceptor,
                                   IModificationContext modificationContext)
Since:
2.3

doCreateNewFieldInClazz

protected void doCreateNewFieldInClazz(@NonNull
                                       java.lang.String elementName,
                                       @NonNull
                                       XAbstractFeatureCall call,
                                       @NonNull
                                       JvmTypeReference expectedType,
                                       @NonNull
                                       IXtextDocument xtextDocument,
                                       int openingBraceOffset)
                                throws org.eclipse.jface.text.BadLocationException
Throws:
org.eclipse.jface.text.BadLocationException
Since:
2.3

getFirstOffsetOfKeyword

protected int getFirstOffsetOfKeyword(org.eclipse.emf.ecore.EObject object,
                                      java.lang.String keyword)
Since:
2.3

getDefaultValueLiteral

protected java.lang.String getDefaultValueLiteral(JvmTypeReference type)
Since:
2.3

computeArgumentString

protected void computeArgumentString(XAbstractFeatureCall call,
                                     boolean paramNames,
                                     IAppendable appendable,
                                     boolean isExtension)
Since:
2.3

computeTypeArguments

protected void computeTypeArguments(XExpression expression,
                                    java.util.List<JvmTypeReference> typeArguments,
                                    IAppendable appendable)
Since:
2.3

createLinkingIssueResolutions

public void createLinkingIssueResolutions(Issue issue,
                                          IssueResolutionAcceptor issueResolutionAcceptor)
Filter quickfixes for types and constructors.

Overrides:
createLinkingIssueResolutions in class DefaultQuickfixProvider

getJavaSearchScope

protected org.eclipse.jdt.core.search.IJavaSearchScope getJavaSearchScope(org.eclipse.emf.ecore.EObject model)

getImportedTypesScope

protected IScope getImportedTypesScope(org.eclipse.emf.ecore.EObject model,
                                       java.lang.String misspelled,
                                       IScope actualScope,
                                       org.eclipse.jdt.core.search.IJavaSearchScope scope)

isSimilarTypeName

protected boolean isSimilarTypeName(java.lang.String s0,
                                    java.lang.String s1)

getQualifiedTypeName

protected java.lang.String getQualifiedTypeName(char[] packageName,
                                                char[][] enclosingTypeNames,
                                                char[] simpleTypeName)

createImportProposals

protected void createImportProposals(JvmDeclaredType contextType,
                                     Issue issue,
                                     java.lang.String typeSimpleName,
                                     org.eclipse.jdt.core.search.IJavaSearchScope searchScope,
                                     IssueResolutionAcceptor acceptor)
                              throws org.eclipse.jdt.core.JavaModelException
Throws:
org.eclipse.jdt.core.JavaModelException

fixIndentation

public void fixIndentation(Issue issue,
                           IssueResolutionAcceptor acceptor)

fixDuplicateImport

public void fixDuplicateImport(Issue issue,
                               IssueResolutionAcceptor acceptor)

fixDuplicateWildcardUse

public void fixDuplicateWildcardUse(Issue issue,
                                    IssueResolutionAcceptor acceptor)

fixUnusedImport

public void fixUnusedImport(Issue issue,
                            IssueResolutionAcceptor acceptor)

organizeImports

protected void organizeImports(Issue issue,
                               IssueResolutionAcceptor acceptor)

fixMissingOverride

public void fixMissingOverride(Issue issue,
                               IssueResolutionAcceptor acceptor)

fixObsoleteOverride

public void fixObsoleteOverride(Issue issue,
                                IssueResolutionAcceptor acceptor)

replaceKeyword

protected void replaceKeyword(Keyword keyword,
                              java.lang.String replacement,
                              org.eclipse.emf.ecore.EObject container,
                              IXtextDocument document)
                       throws org.eclipse.jface.text.BadLocationException
Throws:
org.eclipse.jface.text.BadLocationException

addConstuctorFromSuper

public void addConstuctorFromSuper(Issue issue,
                                   IssueResolutionAcceptor acceptor)

implementAbstractMethods

public void implementAbstractMethods(Issue issue,
                                     IssueResolutionAcceptor acceptor)

addThrowsDeclaration

public void addThrowsDeclaration(Issue issue,
                                 IssueResolutionAcceptor acceptor)

surroundWithTryCatch

public void surroundWithTryCatch(Issue issue,
                                 IssueResolutionAcceptor acceptor)

findContainerExpressionInBlockExpression

protected XExpression findContainerExpressionInBlockExpression(org.eclipse.emf.ecore.EObject expr)

putXtendOnClasspath

public void putXtendOnClasspath(Issue issue,
                                IssueResolutionAcceptor acceptor)

makeClassAbstract

public void makeClassAbstract(Issue issue,
                              IssueResolutionAcceptor acceptor)

internalDoAddAbstractKeyword

protected void internalDoAddAbstractKeyword(org.eclipse.emf.ecore.EObject element,
                                            IModificationContext context)
                                     throws org.eclipse.jface.text.BadLocationException
Throws:
org.eclipse.jface.text.BadLocationException