Bug 575465: [Ltk-Templates] Add 'todo' VariableResolver to
SourceEditorContextType

Change-Id: I191fa171cbc3c18f25a63e1ec024f5fa809f1dba
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/CodeGenerationTemplateContext.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/CodeGenerationTemplateContext.java
index c646b6b..b695648 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/CodeGenerationTemplateContext.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/CodeGenerationTemplateContext.java
@@ -52,9 +52,9 @@
 	}
 	
 	public CodeGenerationTemplateContext(final TemplateContextType contextType,
-			final SourceUnit su, final String lineDelim) {
+			final SourceUnit sourceUnit, final String lineDelim) {
 		this(contextType, lineDelim);
-		this.sourceUnit= su;
+		this.sourceUnit= sourceUnit;
 	}
 	
 	
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java
index 8b6dfd0..9517a91 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/IWorkbenchTemplateContext.java
@@ -21,6 +21,8 @@
 import org.eclipse.statet.jcommons.lang.NonNullByDefault;
 import org.eclipse.statet.jcommons.lang.Nullable;
 
+import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
+
 import org.eclipse.statet.ltk.model.core.element.SourceUnit;
 import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor;
 
@@ -32,11 +34,11 @@
 public interface IWorkbenchTemplateContext {
 	
 	
-	public @Nullable SourceUnit getSourceUnit();
+	@Nullable SourceUnit getSourceUnit();
 	
-	public @Nullable SourceEditor getEditor();
+	@Nullable SourceEditor getEditor();
 	
-	public @Nullable String evaluateInfo(Template template)
+	@Nullable String evaluateInfo(Template template)
 			throws BadLocationException, TemplateException;
 	
 }
diff --git a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorContextType.java b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorContextType.java
index 3638d33..cc99ac6 100644
--- a/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorContextType.java
+++ b/ltk/org.eclipse.statet.ltk.ui/src/org/eclipse/statet/ltk/ui/templates/SourceEditorContextType.java
@@ -42,9 +42,13 @@
 import org.eclipse.statet.jcommons.lang.Nullable;
 import org.eclipse.statet.jcommons.util.StringUtils;
 
+import org.eclipse.statet.ecommons.preferences.core.EPreferences;
+import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
+
 import org.eclipse.statet.internal.ltk.ui.TemplatesMessages;
 import org.eclipse.statet.ltk.core.ElementName;
 import org.eclipse.statet.ltk.core.util.UserInfo;
+import org.eclipse.statet.ltk.issues.core.TaskIssueConfig;
 import org.eclipse.statet.ltk.model.core.element.SourceUnit;
 import org.eclipse.statet.ltk.model.core.element.WorkspaceSourceUnit;
 
@@ -179,7 +183,7 @@
 		@Override
 		protected String resolve(final TemplateContext context) {
 			if (context instanceof IWorkbenchTemplateContext) {
-				final String tag= getTag(((IWorkbenchTemplateContext) context).getSourceUnit());
+				final String tag= getTag((IWorkbenchTemplateContext)context);
 				if (tag != null) {
 					return tag;
 				}
@@ -187,8 +191,10 @@
 			return "TODO"; //$NON-NLS-1$
 		}
 		
-		protected @Nullable String getTag(final @Nullable SourceUnit su) {
-			return null;
+		protected @Nullable String getTag(final IWorkbenchTemplateContext context) {
+			final PreferenceAccess prefs= EPreferences.getContextPrefs(context.getSourceUnit());
+			final var defaultTaskTag= TaskIssueConfig.getConfig(prefs).getDefaultTaskTag();
+			return (defaultTaskTag != null) ? defaultTaskTag.getKeyword() : null;
 		}
 		
 	}
@@ -238,6 +244,7 @@
 		addResolver(new AuthorName());
 		addResolver(new AuthorEmail());
 		addResolver(new Project());
+		addResolver(new Todo());
 	}
 	
 	protected void addEditorVariables() {