X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/preferences/JavaTemplatePreferencePage.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/preferences/JavaTemplatePreferencePage.java new file mode 100644 index 0000000..79c6d07 --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/preferences/JavaTemplatePreferencePage.java @@ -0,0 +1,157 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.preferences; + +import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds; +import net.sourceforge.phpdt.internal.ui.text.IPHPPartitions; +import net.sourceforge.phpdt.internal.ui.text.template.preferences.TemplateVariableProcessor; +import net.sourceforge.phpdt.ui.PreferenceConstants; +import net.sourceforge.phpdt.ui.text.JavaTextTools; +//import net.sourceforge.phpeclipse.PHPeclipsePlugin; +import net.sourceforge.phpeclipse.phpeditor.JavaSourceViewer; +import net.sourceforge.phpeclipse.ui.WebUI; + +import org.eclipse.jface.dialogs.Dialog; +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.TemplateContextType; +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.IWorkbenchPreferencePage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.texteditor.templates.TemplatePreferencePage; + +public class JavaTemplatePreferencePage extends TemplatePreferencePage + implements IWorkbenchPreferencePage { + + private TemplateVariableProcessor fTemplateProcessor; + + public JavaTemplatePreferencePage() { + setPreferenceStore(WebUI.getDefault().getPreferenceStore()); + setTemplateStore(WebUI.getDefault().getTemplateStore()); + setContextTypeRegistry(WebUI.getDefault() + .getTemplateContextRegistry()); + fTemplateProcessor = new TemplateVariableProcessor(); + } + + /* + * @see PreferencePage#createControl(Composite) + */ + public void createControl(Composite parent) { + super.createControl(parent); + PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), + IJavaHelpContextIds.JAVA_EDITOR_PREFERENCE_PAGE); + } + + /* + * @see org.eclipse.jface.preference.IPreferencePage#performOk() + */ + public boolean performOk() { + boolean ok = super.performOk(); + + WebUI.getDefault().savePluginPreferences(); + + return ok; + } + + /* + * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#getFormatterPreferenceKey() + */ + protected String getFormatterPreferenceKey() { + return PreferenceConstants.TEMPLATES_USE_CODEFORMATTER; + } + + /* + * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#createTemplateEditDialog(org.eclipse.jface.text.templates.Template, + * boolean, boolean) + */ + protected Dialog createTemplateEditDialog(Template template, boolean edit, + boolean isNameModifiable) { + return new EditTemplateDialog(getShell(), template, edit, + isNameModifiable, getContextTypeRegistry()); + } + + /* + * @see org.eclipse.ui.texteditor.templates.TemplatePreferencePage#createViewer(org.eclipse.swt.widgets.Composite) + */ + protected SourceViewer createViewer(Composite parent) { + GridData data = new GridData(); + IDocument document = new Document(); + JavaTextTools tools = WebUI.getDefault().getJavaTextTools(); + tools.setupJavaDocumentPartitioner(document, + IPHPPartitions.PHP_PARTITIONING); + IPreferenceStore store = WebUI.getDefault() + .getCombinedPreferenceStore(); + SourceViewer viewer = new JavaSourceViewer(parent, null, null, false, + SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL, store); + TemplateEditorSourceViewerConfiguration configuration = new TemplateEditorSourceViewerConfiguration( + tools.getColorManager(), store, null, fTemplateProcessor); + viewer.configure(configuration); + viewer.setEditable(false); + viewer.setDocument(document); + + Font font = JFaceResources + .getFont(PreferenceConstants.EDITOR_TEXT_FONT); + viewer.getTextWidget().setFont(font); + new JavaSourcePreviewerUpdater(viewer, configuration, store); + + Control control = viewer.getControl(); + data = new GridData(GridData.HORIZONTAL_ALIGN_FILL + | GridData.FILL_VERTICAL); + control.setLayoutData(data); + + return viewer; + } + + /* + * @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(); + TemplateContextType type = WebUI.getDefault() + .getTemplateContextRegistry().getContextType(contextId); + fTemplateProcessor.setContextType(type); + + IDocument doc = viewer.getDocument(); + + String start = null; + if ("javadoc".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$ + } + } +}