| 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(); |
| } |
| } |