Bug 539016: Consolidate LTK templates configuration pages in config package
Change-Id: I4dd7716d7036a41d5e47249848c6aa3ce1d34663
diff --git a/r/org.eclipse.statet.ide.ui/META-INF/MANIFEST.MF b/r/org.eclipse.statet.ide.ui/META-INF/MANIFEST.MF
index ddd76b5..87171cc 100644
--- a/r/org.eclipse.statet.ide.ui/META-INF/MANIFEST.MF
+++ b/r/org.eclipse.statet.ide.ui/META-INF/MANIFEST.MF
@@ -32,7 +32,6 @@
org.eclipse.statet.base.ext.ui.wizards,
org.eclipse.statet.base.ui,
org.eclipse.statet.base.ui.contentfilter,
- org.eclipse.statet.base.ui.sourceeditors,
org.eclipse.statet.ecommons.debug.ui.util,
org.eclipse.statet.ecommons.ui.dialogs.groups,
org.eclipse.statet.ecommons.workbench.search.ui
diff --git a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ui/sourceeditors/ExtEditorTemplatesPage.java b/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ui/sourceeditors/ExtEditorTemplatesPage.java
deleted file mode 100644
index 03aad23..0000000
--- a/r/org.eclipse.statet.ide.ui/src/org/eclipse/statet/base/ui/sourceeditors/ExtEditorTemplatesPage.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*=============================================================================#
- # Copyright (c) 2008, 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.base.ui.sourceeditors;
-
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.text.AbstractDocument;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.jface.text.source.SourceViewer;
-import org.eclipse.jface.text.templates.DocumentTemplateContext;
-import org.eclipse.jface.text.templates.Template;
-import org.eclipse.jface.text.templates.TemplateContextType;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.editors.text.EditorsUI;
-import org.eclipse.ui.texteditor.templates.AbstractTemplatesPage;
-import org.eclipse.ui.texteditor.templates.ITemplatesPage;
-
-import org.eclipse.statet.ecommons.preferences.ui.SettingsUpdater;
-import org.eclipse.statet.ecommons.templates.TemplateVariableProcessor;
-import org.eclipse.statet.ecommons.text.ui.TextViewerEditorColorUpdater;
-import org.eclipse.statet.ecommons.text.ui.TextViewerJFaceUpdater;
-import org.eclipse.statet.ecommons.ui.ISettingsChangedHandler;
-import org.eclipse.statet.ecommons.ui.util.UIAccess;
-
-import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
-import org.eclipse.statet.ltk.ui.sourceediting.SourceEditor1;
-import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
-import org.eclipse.statet.ltk.ui.sourceediting.ViewerSourceEditorAdapter;
-import org.eclipse.statet.ltk.ui.sourceediting.assist.TemplateProposal;
-
-
-/**
- * Abstract {@link ITemplatesPage} for StatextEditor1/SourceViewerConfigurator
- */
-public abstract class ExtEditorTemplatesPage extends AbstractTemplatesPage {
-
-
- private final SourceEditor1 fEditor;
-
- private ISourceEditor fPreviewEditor;
- private final TemplateVariableProcessor fPreviewTemplateProcessor;
- private final TemplateVariableProcessor fEditTemplateProcessor;
-
- private SourceEditorViewerConfigurator fCurrentPreviewConfigurator;
- private TextViewerJFaceUpdater fCurrentPreviewUpdater;
-
-
- protected ExtEditorTemplatesPage(final SourceEditor1 editor, final ISourceViewer viewer) {
- super(editor, viewer);
-
- this.fEditor = editor;
-
- this.fPreviewTemplateProcessor = new TemplateVariableProcessor();
- this.fEditTemplateProcessor = new TemplateVariableProcessor();
- }
-
-
- protected SourceEditor1 getEditor() {
- return this.fEditor;
- }
-
-
- @Override
- protected boolean isValidTemplate(final IDocument document, final Template template,
- final int offset, final int length) {
- final String[] contextIds = getContextTypeIds(document, offset);
- for (int i= 0; i < contextIds.length; i++) {
- if (contextIds[i].equals(template.getContextTypeId())) {
- final DocumentTemplateContext context = createContext(document, template, offset, length);
- return context.canEvaluate(template);
- }
- }
- return false;
- }
-
- @Override
- protected void insertTemplate(final Template template, final IDocument document) {
- final ISourceEditor sourceEditor = this.fEditor.getAdapter(ISourceEditor.class);
- if (!sourceEditor.isEditable(true)) {
- return;
- }
- final SourceViewer sourceViewer = sourceEditor.getViewer();
- final Point selectedRange = sourceViewer.getSelectedRange();
- final DocumentTemplateContext context = createContext(document, template, selectedRange.x, selectedRange.y);
- if (context == null) {
- return;
- }
- final IRegion region = new Region(selectedRange.x, selectedRange.y);
- final TemplateProposal proposal = new TemplateProposal(template, context, region, null, 0);
- this.fEditor.getSite().getPage().activate(this.fEditor);
- proposal.apply(sourceViewer, (char) 0, 0, region.getOffset());
- }
-
- @Override
- protected SourceViewer createPatternViewer(final Composite parent) {
- final SourceViewer viewer = new SourceViewer(parent, null, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
- viewer.setEditable(false);
- viewer.getTextWidget().setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT));
- new TextViewerEditorColorUpdater(viewer, EditorsUI.getPreferenceStore());
-
- final IDocument document = new Document();
- viewer.setDocument(document);
-
- this.fPreviewEditor = new ViewerSourceEditorAdapter(viewer, null);
- new SettingsUpdater(new ISettingsChangedHandler() {
- @Override
- public void handleSettingsChanged(final Set<String> groupIds, final Map<String, Object> options) {
- if (ExtEditorTemplatesPage.this.fCurrentPreviewConfigurator != null) {
- ExtEditorTemplatesPage.this.fCurrentPreviewConfigurator.handleSettingsChanged(groupIds, options);
- }
- }
- }, viewer.getControl());
-
- return viewer;
- }
-
- @Override
- protected void updatePatternViewer(final Template template) {
- final SourceViewer patternViewer = getPatternViewer();
- if (patternViewer == null || !(UIAccess.isOkToUse(patternViewer.getControl())) ) {
- return;
- }
-
- if (template != null) {
- final SourceEditorViewerConfigurator configurator = getTemplatePreviewConfig(template, this.fPreviewTemplateProcessor);
- final TemplateContextType type = getContextTypeRegistry().getContextType(template.getContextTypeId());
- this.fPreviewTemplateProcessor.setContextType(type);
-
- if (configurator != this.fCurrentPreviewConfigurator) {
- if (this.fCurrentPreviewUpdater != null) {
- this.fCurrentPreviewUpdater.dispose();
- this.fCurrentPreviewUpdater = null;
- }
- if (this.fCurrentPreviewConfigurator != null) {
- this.fCurrentPreviewConfigurator.unconfigureTarget();
- }
-
- this.fCurrentPreviewConfigurator = configurator;
- this.fCurrentPreviewConfigurator.setTarget(this.fPreviewEditor);
- this.fCurrentPreviewUpdater = new TextViewerJFaceUpdater(patternViewer,
- this.fCurrentPreviewConfigurator.getSourceViewerConfiguration().getPreferences() );
-
- final AbstractDocument document = new Document();
- this.fCurrentPreviewConfigurator.getDocumentSetupParticipant().setup(document);
- configureDocument(document, type, configurator);
- document.set(template.getPattern());
- patternViewer.setDocument(document);
- }
- else {
- final AbstractDocument document = (AbstractDocument) patternViewer.getDocument();
- document.set(""); //$NON-NLS-1$
- configureDocument(document, type, configurator);
- document.set(template.getPattern());
- }
-
- }
- else {
- patternViewer.getDocument().set(""); //$NON-NLS-1$
- }
- patternViewer.setSelectedRange(0, 0);
- }
-
- @Override
- protected Template editTemplate(final Template template, final boolean edit, final boolean isNameModifiable) {
- final SourceEditorViewerConfigurator configurator = getTemplateEditConfig(template, this.fEditTemplateProcessor);
- final org.eclipse.statet.ltk.ui.templates.EditTemplateDialog dialog = new org.eclipse.statet.ltk.ui.templates.EditTemplateDialog(
- getSite().getShell(), template, edit,
- org.eclipse.statet.ltk.ui.templates.EditTemplateDialog.EDITOR_TEMPLATE,
- configurator, this.fEditTemplateProcessor, getContextTypeRegistry()) {
-
- @Override
- protected void configureForContext(final TemplateContextType contextType) {
- super.configureForContext(contextType);
- final SourceViewer sourceViewer = getSourceViewer();
- final AbstractDocument document = (AbstractDocument) sourceViewer.getDocument();
- ExtEditorTemplatesPage.this.configureDocument(document, contextType, getSourceViewerConfigurator());
- }
- };
- if (dialog.open() == Window.OK) {
- return dialog.getTemplate();
- }
- return null;
- }
-
-
- protected abstract DocumentTemplateContext createContext(final IDocument document, final Template template, final int offset, final int length);
-
- protected abstract SourceEditorViewerConfigurator getTemplatePreviewConfig(final Template template, final TemplateVariableProcessor templateProcessor);
-
- protected abstract SourceEditorViewerConfigurator getTemplateEditConfig(final Template template, final TemplateVariableProcessor templateProcessor);
-
- /**
- * Can be implemented to configure the document when the context is changed
- *
- * @param document the document to adapt
- * @param contextType the new context
- * @param configurator the configurator of the viewer/document (preview or edit)
- */
- protected void configureDocument(final AbstractDocument document, final TemplateContextType contextType, final SourceEditorViewerConfigurator configurator) {
- }
-
-}
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 18f782f..ae54785 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
@@ -75,7 +75,7 @@
import org.eclipse.statet.ltk.ui.sourceediting.ISourceEditor;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
import org.eclipse.statet.ltk.ui.sourceediting.ViewerSourceEditorAdapter;
-import org.eclipse.statet.ltk.ui.templates.EditTemplateDialog;
+import org.eclipse.statet.ltk.ui.templates.config.EditTemplateDialog;
/**
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 7fc10f7..64d565d 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
@@ -49,8 +49,8 @@
import org.eclipse.statet.internal.r.console.ui.RConsoleUIPlugin;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
-import org.eclipse.statet.ltk.ui.templates.EditTemplateDialog;
import org.eclipse.statet.ltk.ui.templates.config.CodeTemplateConfigurationBlock;
+import org.eclipse.statet.ltk.ui.templates.config.EditTemplateDialog;
import org.eclipse.statet.ltk.ui.templates.config.ITemplateCategoryConfiguration;
import org.eclipse.statet.ltk.ui.templates.config.ITemplateContribution;
import org.eclipse.statet.ltk.ui.templates.config.TemplateCategory;
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/REditorTemplatesPage.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/REditorTemplatesPage.java
index f984f27..1dc3e11 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/REditorTemplatesPage.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/editors/REditorTemplatesPage.java
@@ -30,9 +30,9 @@
import org.eclipse.statet.ecommons.templates.TemplateVariableProcessor;
import org.eclipse.statet.ecommons.text.core.treepartitioner.TreePartitioner;
-import org.eclipse.statet.base.ui.sourceeditors.ExtEditorTemplatesPage;
import org.eclipse.statet.internal.r.ui.RUIPlugin;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
+import org.eclipse.statet.ltk.ui.templates.config.AbstractEditorTemplatesPage;
import org.eclipse.statet.r.core.RCore;
import org.eclipse.statet.r.core.source.IRDocumentConstants;
import org.eclipse.statet.r.core.source.RPartitionNodeType;
@@ -44,7 +44,7 @@
/**
* Page for {@link REditor} / {@link TemplatesView}
*/
-public class REditorTemplatesPage extends ExtEditorTemplatesPage {
+public class REditorTemplatesPage extends AbstractEditorTemplatesPage {
private SourceEditorViewerConfigurator fRPreviewConfigurator;
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/REditorTemplatesPreferencePage.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/REditorTemplatesPreferencePage.java
index ce49d1e..4ae645f 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/REditorTemplatesPreferencePage.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/internal/r/ui/preferences/REditorTemplatesPreferencePage.java
@@ -22,7 +22,7 @@
import org.eclipse.statet.internal.r.ui.RUIPlugin;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
-import org.eclipse.statet.ltk.ui.templates.AbstractTemplatesPreferencePage;
+import org.eclipse.statet.ltk.ui.templates.config.AbstractTemplatesPreferencePage;
import org.eclipse.statet.r.core.RCore;
import org.eclipse.statet.r.core.source.RPartitionNodeType;
import org.eclipse.statet.r.ui.editors.templates.REditorTemplateContextType;
diff --git a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveEditorTemplatesPage.java b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveEditorTemplatesPage.java
index 66ffb24..79b3bf9 100644
--- a/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveEditorTemplatesPage.java
+++ b/redocs/org.eclipse.statet.redocs.tex.r/src/org/eclipse/statet/internal/redocs/tex/r/ui/editors/LtxRweaveEditorTemplatesPage.java
@@ -28,9 +28,9 @@
import org.eclipse.statet.ecommons.templates.TemplateVariableProcessor;
-import org.eclipse.statet.base.ui.sourceeditors.ExtEditorTemplatesPage;
import org.eclipse.statet.internal.r.ui.RUIPlugin;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
+import org.eclipse.statet.ltk.ui.templates.config.AbstractEditorTemplatesPage;
import org.eclipse.statet.r.core.RCore;
import org.eclipse.statet.r.core.source.IRDocumentConstants;
import org.eclipse.statet.r.ui.editors.templates.REditorContext;
@@ -44,7 +44,7 @@
*
* At moment only for R templates.
*/
-public class LtxRweaveEditorTemplatesPage extends ExtEditorTemplatesPage {
+public class LtxRweaveEditorTemplatesPage extends AbstractEditorTemplatesPage {
private SourceEditorViewerConfigurator rPreviewConfigurator;
diff --git a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveEditorTemplatesPage.java b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveEditorTemplatesPage.java
index ff27281..9114b4f 100644
--- a/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveEditorTemplatesPage.java
+++ b/redocs/org.eclipse.statet.redocs.wikitext.r/src/org/eclipse/statet/internal/redocs/wikitext/r/ui/editors/WikidocRweaveEditorTemplatesPage.java
@@ -28,9 +28,9 @@
import org.eclipse.statet.ecommons.templates.TemplateVariableProcessor;
-import org.eclipse.statet.base.ui.sourceeditors.ExtEditorTemplatesPage;
import org.eclipse.statet.internal.r.ui.RUIPlugin;
import org.eclipse.statet.ltk.ui.sourceediting.SourceEditorViewerConfigurator;
+import org.eclipse.statet.ltk.ui.templates.config.AbstractEditorTemplatesPage;
import org.eclipse.statet.r.core.RCore;
import org.eclipse.statet.r.core.source.IRDocumentConstants;
import org.eclipse.statet.r.ui.editors.templates.REditorContext;
@@ -45,7 +45,7 @@
*
* At moment only for R templates.
*/
-public class WikidocRweaveEditorTemplatesPage extends ExtEditorTemplatesPage {
+public class WikidocRweaveEditorTemplatesPage extends AbstractEditorTemplatesPage {
private SourceEditorViewerConfigurator rPreviewConfigurator;