blob: 7c19cd899c42b740dd97588c7dc7f467a874caa3 [file] [log] [blame]
package org.eclipse.dltk.tcl.internal.ui.text;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.launching.IInterpreterInstall;
import org.eclipse.dltk.launching.InterpreterContainerHelper;
import org.eclipse.dltk.launching.ScriptRuntime;
import org.eclipse.dltk.tcl.internal.ui.TclUI;
import org.eclipse.dltk.ui.editor.IScriptAnnotation;
import org.eclipse.dltk.ui.text.IAnnotationResolution;
import org.eclipse.jface.text.IDocument;
import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.IMarkerResolution;
final class TclRequirePackageMarkerResolution
implements IMarkerResolution, IAnnotationResolution {
private String pkgName;
private IScriptProject project;
public TclRequirePackageMarkerResolution(String pkgName,
IScriptProject scriptProject) {
this.pkgName = pkgName;
this.project = scriptProject;
}
@Override
public String getLabel() {
final String msg = Messages.TclRequirePackageMarkerResolution_addPackageToBuildpath;
return NLS.bind(msg, pkgName);
}
private boolean resolve() {
final IInterpreterInstall install;
try {
install = ScriptRuntime.getInterpreterInstall(project);
if (install != null) {
final Set<String> names = new HashSet<>();
final Set<String> autoNames = new HashSet<>();
InterpreterContainerHelper.getInterpreterContainerDependencies(
project, names, autoNames);
if (names.add(pkgName)) {
InterpreterContainerHelper
.setInterpreterContainerDependencies(project, names,
autoNames);
return true;
}
}
} catch (CoreException e) {
TclUI.error("require package resolve error", e); //$NON-NLS-1$
}
return false;
}
@Override
public void run(final IMarker marker) {
resolve();
}
@Override
public void run(IScriptAnnotation annotation, IDocument document) {
resolve();
}
}