package com.robotoworks.mechanoid.ui.quickfix;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider;
import org.eclipse.xtext.ui.editor.model.edit.IModificationContext;
import org.eclipse.xtext.ui.editor.model.edit.ISemanticModification;
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;
import com.robotoworks.mechanoid.ui.MechanoidLibsInstaller;
import com.robotoworks.mechanoid.ui.Messages;
import com.robotoworks.mechanoid.validation.MechanoidIssueCodes;
public abstract class MechanoidQuickfixProvider extends DefaultQuickfixProvider {
private static final String IMG_ADD_MECHANOID_LIBRARY = "add.gif"; //$NON-NLS-1$
private IJavaProjectProvider projectProvider;
private MechanoidLibsInstaller libsInstaller;
@Inject
public MechanoidQuickfixProvider(IJavaProjectProvider projectProvider, MechanoidLibsInstaller libsInstaller) {
this.projectProvider = projectProvider;
this.libsInstaller = libsInstaller;
}
@Fix(MechanoidIssueCodes.MISSING_MECHANOID_LIBS)
public void addMechanoidToClasspath(final Issue issue, IssueResolutionAcceptor acceptor) {
acceptor.accept(issue,
Messages.MechanoidQuickfixProvider_Button_Add_Mechanoid_Library,
Messages.MechanoidQuickfixProvider_Message_Add_Mechanoid_Library, IMG_ADD_MECHANOID_LIBRARY,
new ISemanticModification() {
public void apply(EObject element, IModificationContext context)
throws Exception {
ResourceSet resourceSet = element.eResource().getResourceSet();
IJavaProject javaProject = projectProvider.getJavaProject(resourceSet);
libsInstaller.install(javaProject, new NullProgressMonitor());
}
});
}
}