/******************************************************************************* * Copyright (c) 2000, 2004 John-Mason P. Shackelford and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * John-Mason P. Shackelford - initial API and implementation * IBM Corporation - bug fixes *******************************************************************************/ package org.rubypeople.rdt.internal.ui.preferences; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.source.SourceViewer; import org.eclipse.jface.text.templates.Template; import org.eclipse.jface.text.templates.persistence.TemplatePersistenceData; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.texteditor.templates.TemplatePreferencePage; import org.rubypeople.rdt.internal.ui.RubyPlugin; import org.rubypeople.rdt.internal.ui.rubyeditor.RubySourceViewer; import org.rubypeople.rdt.internal.ui.text.IRubyPartitions; import org.rubypeople.rdt.internal.ui.text.SimpleRubySourceViewerConfiguration; import org.rubypeople.rdt.internal.ui.text.template.contentassist.RubyTemplateAccess; import org.rubypeople.rdt.ui.PreferenceConstants; import org.rubypeople.rdt.ui.text.RubyTextTools; /** * @see org.eclipse.jface.preference.PreferencePage */ public class RubyTemplatePreferencePage extends TemplatePreferencePage { public RubyTemplatePreferencePage() { setPreferenceStore(RubyPlugin.getDefault().getPreferenceStore()); setTemplateStore(RubyTemplateAccess.getDefault().getTemplateStore()); setContextTypeRegistry(RubyTemplateAccess.getDefault().getContextTypeRegistry()); } /* * (non-Javadoc) * * @see org.eclipse.jface.preference.IPreferencePage#performOk() */ public boolean performOk() { boolean ok = super.performOk(); RubyPlugin.getDefault().savePluginPreferences(); return ok; } /* * (non-Javadoc) * * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#createViewer(org.eclipse.swt.widgets.Composite) */ protected SourceViewer createViewer(Composite parent) { IDocument document= new Document(); RubyTextTools tools= RubyPlugin.getDefault().getRubyTextTools(); tools.setupRubyDocumentPartitioner(document, IRubyPartitions.RUBY_PARTITIONING); IPreferenceStore store= RubyPlugin.getDefault().getCombinedPreferenceStore(); SourceViewer viewer= new RubySourceViewer(parent, null, null, false, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL, store); SimpleRubySourceViewerConfiguration configuration= new SimpleRubySourceViewerConfiguration(tools.getColorManager(), store, null, IRubyPartitions.RUBY_PARTITIONING, false); viewer.configure(configuration); viewer.setEditable(false); viewer.setDocument(document); Font font= JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT); viewer.getTextWidget().setFont(font); new RubySourcePreviewerUpdater(viewer, configuration, store); Control control= viewer.getControl(); GridData data= new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL); control.setLayoutData(data); return viewer; } /* * (non-Javadoc) * * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#getFormatterPreferenceKey() */ protected String getFormatterPreferenceKey() { return PreferenceConstants.TEMPLATES_USE_CODEFORMATTER; } /* * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#updateViewerInput() */ protected void updateViewerInput() { IStructuredSelection selection= (IStructuredSelection) getTableViewer().getSelection(); SourceViewer viewer= getViewer(); if (selection.size() == 1 && selection.getFirstElement() instanceof TemplatePersistenceData) { TemplatePersistenceData data= (TemplatePersistenceData) selection.getFirstElement(); Template template= data.getTemplate(); String contextId= template.getContextTypeId(); IDocument doc= viewer.getDocument(); String start= null; if ("rdoc".equals(contextId)) { //$NON-NLS-1$ start= "/**" + doc.getLegalLineDelimiters()[0]; //$NON-NLS-1$ } else start= ""; //$NON-NLS-1$ doc.set(start + template.getPattern()); int startLen= start.length(); viewer.setDocument(doc, startLen, doc.getLength() - startLen); } else { viewer.getDocument().set(""); //$NON-NLS-1$ } } /* * (non-Javadoc) * * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#isShowFormatterSetting() */ protected boolean isShowFormatterSetting() { return false; } }