package org.xtest.ui.quickfix;
import org.eclipse.xtend.core.validation.IssueCodes;
import org.eclipse.xtend.ide.edit.OrganizeImportsHandler;
import org.eclipse.xtext.ui.editor.model.edit.IModification;
import org.eclipse.xtext.ui.editor.model.edit.IModificationContext;
import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
import org.eclipse.xtext.ui.editor.quickfix.Fix;
import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor;
import org.eclipse.xtext.validation.Issue;
import com.google.inject.Inject;
/**
* Quickfix provider for Xtest issues
*
* @author Michael Barry
*/
@SuppressWarnings("restriction")
public class XTestQuickfixProvider extends DefaultQuickfixProvider {
@Inject
private OrganizeImportsHandler organizeImportsHandler;
/**
* Invoke organize quickfix
*
* @param issue
* The issue
* @param acceptor
* The resolution acceptor
*/
@Fix(IssueCodes.IMPORT_DUPLICATE)
public void fixDuplicateImport(final Issue issue, IssueResolutionAcceptor acceptor) {
organizeImports(issue, acceptor);
}
/**
* Invoke organize quickfix
*
* @param issue
* The issue
* @param acceptor
* The resolution acceptor
*/
@Fix(IssueCodes.IMPORT_WILDCARD_DEPRECATED)
public void fixDuplicateWildcardUse(final Issue issue, IssueResolutionAcceptor acceptor) {
organizeImports(issue, acceptor);
}
/**
* Invoke organize quickfix
*
* @param issue
* The issue
* @param acceptor
* The resolution acceptor
*/
@Fix(IssueCodes.IMPORT_UNUSED)
public void fixUnusedImport(final Issue issue, IssueResolutionAcceptor acceptor) {
organizeImports(issue, acceptor);
}
/**
* Invoke organize quickfix
*
* @param issue
* The issue
* @param acceptor
* The resolution acceptor
*/
protected void organizeImports(final Issue issue, IssueResolutionAcceptor acceptor) {
acceptor.accept(
issue,
"Organize Imports.",
"Organizes the whole import section. Removes wildcard imports as well as duplicates and unused ones.",
"correction_change.gif", new IModification() {
@Override
public void apply(IModificationContext context) throws Exception {
organizeImportsHandler.doOrganizeImports(context.getXtextDocument());
}
});
}
}