/******************************************************************************* * Copyright (c) 2012 BMW Car IT and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ /** * */ package org.jnario.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.jface.text.BadLocationException; import org.eclipse.xtend.ide.quickfix.XtendQuickfixProvider; import org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider; import org.eclipse.xtext.ui.editor.model.IXtextDocument; 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.Fix; import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor; import org.eclipse.xtext.validation.Issue; import org.jnario.ui.buildpath.JnarioLibClasspathAdder; import org.jnario.validation.JnarioIssueCodes; import com.google.inject.Inject; /** * @author Sebastian Benz * */ @SuppressWarnings({ "restriction"}) public class JnarioQuickFixProvider extends XtendQuickfixProvider{ @Inject private IJavaProjectProvider projectProvider; @Inject private JnarioLibClasspathAdder jnarioLibAdder; @Override public void putXtendOnClasspath(Issue issue, IssueResolutionAcceptor acceptor) { } @Fix(JnarioIssueCodes.JNARIO_LIB_NOT_ON_CLASSPATH) public void putJnarioOnClasspath(final Issue issue, IssueResolutionAcceptor acceptor) { acceptor.accept(issue, "Add Jnario libs to classpath", "Add Jnario libs to classpath", "fix_indent.gif", new ISemanticModification() { public void apply(EObject element, IModificationContext context) throws Exception { ResourceSet resourceSet = element.eResource().getResourceSet(); IJavaProject javaProject = projectProvider.getJavaProject(resourceSet); jnarioLibAdder.addLibsToClasspath(javaProject, new NullProgressMonitor()); } }); } protected String getIssueString(final Issue issue, final IXtextDocument xtextDocument) throws BadLocationException { return xtextDocument.get(issue.getOffset(), issue.getLength()); } }