/*=============================================================================# # Copyright (c) 2005-2016 Stephan Wahlbrink (WalWare.de) and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # Stephan Wahlbrink - initial API and implementation #=============================================================================*/ package de.walware.statet.r.internal.ui.preferences; import org.eclipse.jface.text.AbstractDocument; import org.eclipse.jface.text.templates.TemplateContextType; import de.walware.ecommons.ltk.ui.sourceediting.SourceEditorViewerConfigurator; import de.walware.ecommons.ltk.ui.templates.AbstractTemplatePreferencePage; import de.walware.ecommons.templates.TemplateVariableProcessor; import de.walware.ecommons.text.core.treepartitioner.TreePartitioner; import de.walware.statet.r.core.RCore; import de.walware.statet.r.core.source.RPartitionNodeType; import de.walware.statet.r.internal.ui.RUIPlugin; import de.walware.statet.r.ui.editors.templates.REditorTemplatesContextType; import de.walware.statet.r.ui.sourceediting.RTemplateSourceViewerConfigurator; public class REditorTemplatePreferencePage extends AbstractTemplatePreferencePage { public REditorTemplatePreferencePage() { setPreferenceStore(RUIPlugin.getDefault().getPreferenceStore()); setTemplateStore(RUIPlugin.getDefault().getREditorTemplateStore()); setContextTypeRegistry(RUIPlugin.getDefault().getREditorTemplateContextRegistry()); } @Override protected SourceEditorViewerConfigurator createSourceViewerConfigurator( final TemplateVariableProcessor templateProcessor) { return new RTemplateSourceViewerConfigurator( RCore.WORKBENCH_ACCESS, templateProcessor ); } @Override protected void configureContext(final AbstractDocument document, final TemplateContextType contextType, final SourceEditorViewerConfigurator configurator) { final String partitioning= configurator.getDocumentContentInfo().getPartitioning(); final TreePartitioner partitioner= (TreePartitioner) document.getDocumentPartitioner(partitioning); if (contextType.getId().equals(REditorTemplatesContextType.ROXYGEN_CONTEXTTYPE)) { partitioner.setStartType(RPartitionNodeType.ROXYGEN); } else { partitioner.setStartType(RPartitionNodeType.DEFAULT_ROOT); } partitioner.disconnect(); partitioner.connect(document); document.setDocumentPartitioner(partitioning, partitioner); } }