Bug 575365: [Ltk-Issues] Improve definition of TaskTag preferences

Change-Id: I300f6b470488775174c7405ee52d0e7386a5547c
diff --git a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java
index db3b7ce..5ec57d9 100644
--- a/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java
+++ b/ltk/org.eclipse.statet.ltk.core/src/org/eclipse/statet/ltk/issues/core/Issues.java
@@ -23,7 +23,7 @@
 
 import org.eclipse.statet.ecommons.preferences.core.Preference;
 import org.eclipse.statet.ecommons.preferences.core.Preference.EnumListPref;
-import org.eclipse.statet.ecommons.preferences.core.Preference.StringArrayPref;
+import org.eclipse.statet.ecommons.preferences.core.Preference.StringListPref;
 import org.eclipse.statet.ecommons.preferences.core.PreferenceAccess;
 
 import org.eclipse.statet.ltk.issues.core.impl.BasicTaskTag;
@@ -38,20 +38,22 @@
 	public static final String TASK_TAG_KEYWORD_PREF_KEY= "TaskTags.keyword"; //$NON-NLS-1$
 	public static final String TASK_TAG_PRIORITY_PREF_KEY= "TaskTags.priority"; //$NON-NLS-1$
 	
-	public static final Preference<@NonNull String[]> TASK_TAG_KEYWORD_PREF=
-			new StringArrayPref(TASK_TAG_QUALIFIER, TASK_TAG_KEYWORD_PREF_KEY);
+	public static final Preference<List<String>> TASK_TAG_KEYWORD_PREF=
+			new StringListPref(TASK_TAG_QUALIFIER, TASK_TAG_KEYWORD_PREF_KEY);
 	public static final Preference<List<TaskPriority>> TASK_TAG_PRIORITY_PREF=
 			new EnumListPref<>(TASK_TAG_QUALIFIER, TASK_TAG_PRIORITY_PREF_KEY, TaskPriority.class);
 	
 	
-	public static ImList<TaskTag> loadTaskTags(final PreferenceAccess prefs) {
-		final @NonNull String[] keywords= prefs.getPreferenceValue(TASK_TAG_KEYWORD_PREF);
-		final List<TaskPriority> priorities= prefs.getPreferenceValue(TASK_TAG_PRIORITY_PREF);
+	public static ImList<TaskTag> loadTaskTags(final PreferenceAccess prefs,
+			final Preference<List<String>> keywordPerf,
+			final Preference<List<TaskPriority>> priorityPref) {
+		final List<String> keywords= prefs.getPreferenceValue(keywordPerf);
+		final List<TaskPriority> priorities= prefs.getPreferenceValue(priorityPref);
 		
-		if (keywords.length == priorities.size()) {
-			final var array= new @NonNull TaskTag[keywords.length];
+		if (keywords.size() == priorities.size()) {
+			final var array= new @NonNull TaskTag[keywords.size()];
 			for (int i= 0; i < array.length; i++) {
-				array[i]= new BasicTaskTag(keywords[i], priorities.get(i));
+				array[i]= new BasicTaskTag(keywords.get(i), priorities.get(i));
 			}
 			return ImCollections.newList(array);
 		}
@@ -60,6 +62,10 @@
 		}
 	}
 	
+	public static ImList<TaskTag> loadTaskTags(final PreferenceAccess prefs) {
+		return loadTaskTags(prefs, TASK_TAG_KEYWORD_PREF, TASK_TAG_PRIORITY_PREF);
+	}
+	
 	public static ImList<String> getKeywords(final ImList<TaskTag> taskTags) {
 		final var array= new @NonNull String[taskTags.size()];
 		for (int i= 0; i < array.length; i++) {