Bug 539020: Add support for configuration of display of code snippets

Change-Id: I7ec8ee5deb2cc0c5cacc7cc2d78d7ed986cce773
diff --git a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java
index ae54785..7b90c90 100644
--- a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java
+++ b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/internal/ide/ui/preferences/CodeGenerationTemplatesConfigurationBlock.java
@@ -76,6 +76,7 @@
 import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
 import org.eclipse.statet.ltk.ui.sourceediting.ViewerSourceEditorAdapter;
 import org.eclipse.statet.ltk.ui.templates.config.EditTemplateDialog;
+import org.eclipse.statet.ltk.ui.templates.config.TemplateConfigUI;
 
 
 /**
@@ -370,7 +371,8 @@
 				EditTemplateDialog.FIX_TEMPLATE,
 				this.fCategoryProvider[item.getCategoryIndex()].getEditTemplateDialogConfiguator(this.fEditTemplateProcessor, this.fProject),
 				this.fEditTemplateProcessor,
-				this.fCategoryProvider[item.getCategoryIndex()].getContextTypeRegistry());
+				this.fCategoryProvider[item.getCategoryIndex()].getContextTypeRegistry(),
+				TemplateConfigUI.PREF_QUALIFIER );
 		if (dialog.open() == Window.OK) {
 			// changed
 			item.fData.setTemplate(dialog.getTemplate());
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java
index df3d994..f648539 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/launching/RConsoleOptionsTab.java
@@ -51,6 +51,7 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.PlatformUI;
 
 import org.eclipse.statet.ecommons.databinding.IntegerValidator;
 import org.eclipse.statet.ecommons.databinding.jface.SWTMultiEnabledObservable;
@@ -63,6 +64,7 @@
 
 import org.eclipse.statet.internal.r.console.ui.Messages;
 import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditorObservable;
 import org.eclipse.statet.nico.core.util.HistoryTrackingConfiguration;
 import org.eclipse.statet.nico.core.util.TrackingConfiguration;
@@ -71,6 +73,7 @@
 import org.eclipse.statet.nico.ui.util.TrackingConfigurationDialog;
 import org.eclipse.statet.r.console.ui.launching.RConsoleLaunching;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 
@@ -122,7 +125,7 @@
 	private ButtonGroup<TrackingConfiguration> trackingButtons;
 	private int trackingMaxCustomId;
 	
-	private SnippetEditor startupSnippetEditor;
+	private SnippetEditor1 startupSnippetEditor;
 	
 	private Button rHelpByStatetControl;
 	private Button rGraphicsByStatetControl;
@@ -285,7 +288,8 @@
 		final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 				RCore.WORKBENCH_ACCESS,
 				templateVariableProcessor );
-		this.startupSnippetEditor= new SnippetEditor(configurator);
+		this.startupSnippetEditor= new SnippetEditor1(configurator, null,
+				PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER );
 		this.startupSnippetEditor.create(container, SnippetEditor.DEFAULT_MULTI_LINE_STYLE);
 		final GridData gd= new GridData(SWT.FILL, SWT.FILL, true, true);
 		gd.heightHint= LayoutUtil.hintHeight(this.startupSnippetEditor.getSourceViewer().getTextWidget(), 8);
diff --git a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java
index 64d565d..a9e1d69 100644
--- a/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java
+++ b/r/org.eclipse.statet.r.console.ui/src/org/eclipse/statet/internal/r/console/ui/snippets/RSnippetPreferencePage.java
@@ -56,6 +56,7 @@
 import org.eclipse.statet.ltk.ui.templates.config.TemplateCategory;
 import org.eclipse.statet.ltk.ui.templates.config.TemplateStoreContribution;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.RUI;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 
@@ -138,7 +139,8 @@
 				final SourceEditorViewerConfigurator configurator,
 				final TemplateVariableProcessor processor, final ContextTypeRegistry registry,
 				final RSnippets snippets) {
-			super(parent, template, edit, flags, configurator, processor, registry);
+			super(parent, template, edit, flags, configurator, processor, registry,
+					RLaunchingUI.LAUNCH_CONFIG_QUALIFIER );
 			this.snippets= snippets;
 		}
 		
@@ -227,7 +229,7 @@
 			final ContextTypeRegistry registry) {
 		return new RSnippetEditDialog(getShell(), template,
 				((command & ButtonGroup.ADD_ANY) != 0), EditTemplateDialog.CUSTOM_TEMPLATE,
-				configurator, processor, registry, this.snippets);
+				configurator, processor, registry, this.snippets );
 	}
 	
 }
diff --git a/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/ui/RLaunchingUI.java b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/ui/RLaunchingUI.java
new file mode 100644
index 0000000..f785d5f
--- /dev/null
+++ b/r/org.eclipse.statet.r.ui/srcDebug/org/eclipse/statet/r/launching/ui/RLaunchingUI.java
@@ -0,0 +1,30 @@
+/*=============================================================================#
+ # Copyright (c) 2017, 2018 Stephan Wahlbrink and others.
+ # 
+ # This program and the accompanying materials are made available under the
+ # terms of the Eclipse Public License 2.0 which is available at
+ # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
+ # which is available at https://www.apache.org/licenses/LICENSE-2.0.
+ # 
+ # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
+ # 
+ # Contributors:
+ #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
+ #=============================================================================*/
+
+package org.eclipse.statet.r.launching.ui;
+
+import org.eclipse.statet.r.ui.RUI;
+
+
+public class RLaunchingUI {
+	
+	
+	public static final String QUALIFIER= RUI.BUNDLE_ID + "/launching"; //$NON-NLS-1$
+	
+	public static final String LAUNCH_CONFIG_QUALIFIER= QUALIFIER + "config"; //$NON-NLS-1$
+	
+	
+	private RLaunchingUI() {}
+	
+}
diff --git a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java
index 5acac73..7eebad9 100644
--- a/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java
+++ b/redocs/org.eclipse.statet.redocs.r/src/org/eclipse/statet/redocs/r/ui/processing/RunRConsoleSnippetOperationSettings.java
@@ -31,6 +31,7 @@
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
+import org.eclipse.ui.PlatformUI;
 
 import org.eclipse.statet.ecommons.databinding.core.util.UpdateableErrorValidator;
 import org.eclipse.statet.ecommons.resources.core.variables.ResourceVariables;
@@ -47,7 +48,9 @@
 import org.eclipse.statet.docmlet.base.ui.processing.DocProcessingOperationSettings;
 import org.eclipse.statet.internal.redocs.r.Messages;
 import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 
@@ -57,7 +60,7 @@
 	
 	private IObservableValue<String> snippetValue;
 	
-	private SnippetEditor snippetEditor;
+	private SnippetEditor1 snippetEditor;
 	private VariableText2 snippetVariableResolver;
 	
 	
@@ -106,7 +109,8 @@
 			final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 					RCore.WORKBENCH_ACCESS,
 					templateVariableProcessor );
-			final SnippetEditor editor= new SnippetEditor(configurator, null, null, true) {
+			final SnippetEditor1 editor= new SnippetEditor1(configurator, null,
+					PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER, true ) {
 				@Override
 				protected void fillToolMenu(final Menu menu) {
 					{	final MenuItem item= new MenuItem(menu, SWT.PUSH);
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java
index 4df1357..8d20b2b 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/RweaveTab.java
@@ -54,6 +54,7 @@
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.statushandlers.StatusManager;
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
@@ -68,9 +69,10 @@
 import org.eclipse.statet.ecommons.ui.workbench.ResourceInputComposite;
 
 import org.eclipse.statet.internal.redocs.tex.r.RedocsTexRPlugin;
-import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.r.cmd.ui.launching.RCmdLaunching;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 import org.eclipse.statet.redocs.r.ui.RedocsRUIResources;
@@ -237,7 +239,7 @@
 	private ILaunchConfigurationListener fLaunchConfigurationListener;
 	private Button fSkipSelectControl;
 	private Button fConsoleSelectControl;
-	private SnippetEditor fConsoleCommandEditor;
+	private SnippetEditor1 fConsoleCommandEditor;
 	
 	private Button fConsoleCommandInsertButton;
 	private Button fCmdLaunchSelectControl;
@@ -336,8 +338,9 @@
 		final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 				RCore.WORKBENCH_ACCESS,
 				templateVariableProcessor );
-		this.fConsoleCommandEditor= new SnippetEditor(configurator);
-		this.fConsoleCommandEditor.create(group, SnippetEditor.DEFAULT_MULTI_LINE_STYLE);
+		this.fConsoleCommandEditor= new SnippetEditor1(configurator, null,
+				PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER );
+		this.fConsoleCommandEditor.create(group, SnippetEditor1.DEFAULT_MULTI_LINE_STYLE);
 		gd= new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
 		gd.heightHint= LayoutUtil.hintHeight(this.fConsoleCommandEditor.getSourceViewer().getTextWidget(), 5);
 		gd.horizontalIndent= LayoutUtil.defaultIndent();
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java
index d9bb635..153e845 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/processing/TexTab.java
@@ -53,6 +53,7 @@
 import org.eclipse.texlipse.builder.Builder;
 import org.eclipse.texlipse.builder.BuilderChooser;
 import org.eclipse.texlipse.builder.BuilderRegistry;
+import org.eclipse.ui.PlatformUI;
 
 import org.eclipse.statet.jcommons.collections.ImCollections;
 
@@ -66,8 +67,9 @@
 import org.eclipse.statet.ecommons.ui.util.VariableFilterUtils;
 import org.eclipse.statet.ecommons.ui.workbench.ResourceInputComposite;
 
-import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor;
+import org.eclipse.statet.ltk.ui.sourceediting.SnippetEditor1;
 import org.eclipse.statet.r.core.RCore;
+import org.eclipse.statet.r.launching.ui.RLaunchingUI;
 import org.eclipse.statet.r.ui.sourceediting.RSourceViewerConfigurator;
 import org.eclipse.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator;
 import org.eclipse.statet.redocs.r.ui.RedocsRUIResources;
@@ -155,7 +157,7 @@
 	private Button fBuildTexFileEclipseControl;
 	private BuilderChooser fBuildTexTypeChooser;
 	private Button fBuildTexFileRControl;
-	private SnippetEditor fConsoleCommandEditor;
+	private SnippetEditor1 fConsoleCommandEditor;
 	private Combo fOutputFormatControl;
 	
 	
@@ -305,7 +307,8 @@
 			final RSourceViewerConfigurator configurator= new RTemplateSourceViewerConfigurator(
 					RCore.WORKBENCH_ACCESS,
 					templateVariableProcessor );
-			this.fConsoleCommandEditor= new SnippetEditor(configurator, null, null, true) {
+			this.fConsoleCommandEditor= new SnippetEditor1(configurator, null,
+					PlatformUI.getWorkbench(), RLaunchingUI.LAUNCH_CONFIG_QUALIFIER, true ) {
 				@Override
 				protected void fillToolMenu(final Menu menu) {
 					{	final MenuItem item= new MenuItem(menu, SWT.PUSH);
@@ -352,7 +355,7 @@
 					}
 				}
 			};
-			this.fConsoleCommandEditor.create(composite, SnippetEditor.DEFAULT_MULTI_LINE_STYLE);
+			this.fConsoleCommandEditor.create(composite, SnippetEditor1.DEFAULT_MULTI_LINE_STYLE);
 			final GridData gd= new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
 			gd.heightHint= LayoutUtil.hintHeight(this.fConsoleCommandEditor.getSourceViewer().getTextWidget(), 5);
 			gd.horizontalIndent= LayoutUtil.defaultIndent();