blob: 69e548129fbd8eacd3050e9b80f3c0dca5d2d55c [file] [log] [blame]
package org.eclipse.dltk.tcl.internal.ui.text;
import java.util.Map;
import org.eclipse.core.resources.IMarker;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.tcl.core.TclPackagesManager;
import org.eclipse.dltk.tcl.internal.ui.TclInterpreterMessages;
import org.eclipse.dltk.tcl.internal.ui.preferences.ProjectBuildJob;
import org.eclipse.dltk.ui.dialogs.MultipleInputDialog;
import org.eclipse.dltk.ui.editor.IScriptAnnotation;
import org.eclipse.dltk.ui.text.IAnnotationResolution;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.window.Window;
import org.eclipse.ui.IMarkerResolution;
import org.eclipse.ui.PlatformUI;
final class TclGlobalVariableSourceCorrectionMarkerResolution
implements IMarkerResolution, IAnnotationResolution {
private String sourceName;
private IScriptProject project;
public TclGlobalVariableSourceCorrectionMarkerResolution(String pkgName,
IScriptProject scriptProject) {
this.sourceName = pkgName;
this.project = scriptProject;
}
@Override
public String getLabel() {
return "Add variable '" + this.sourceName
+ "' to list of project global variables";
}
private boolean resolve() {
MultipleInputDialog dialog = new MultipleInputDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
TclInterpreterMessages.GlobalVariableBlock_AddTitle);
dialog.addLabelField("Name: " + sourceName);
dialog.addVariablesField("Value", null, true);
if (dialog.open() != Window.OK) {
return false;
}
String value = dialog.getStringValue("Value");
if (value != null && value.length() > 0) {
Map<String, String> emap = TclPackagesManager
.getVariables(project.getElementName());
if (!emap.containsKey(sourceName)) {
emap.put(sourceName, value);
TclPackagesManager.setVariables(project.getElementName(), emap);
new ProjectBuildJob(project.getProject()).schedule(500);
}
}
return true;
}
@Override
public void run(final IMarker marker) {
resolve();
}
@Override
public void run(IScriptAnnotation annotation, IDocument document) {
resolve();
}
}