X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CodeTemplateBlock.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CodeTemplateBlock.java deleted file mode 100644 index d8dc004..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/CodeTemplateBlock.java +++ /dev/null @@ -1,586 +0,0 @@ -/******************************************************************************* - * 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 java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import net.sourceforge.phpdt.internal.corext.template.php.CodeTemplateContextType; -import net.sourceforge.phpdt.internal.ui.text.IPHPPartitions; -import net.sourceforge.phpdt.internal.ui.text.template.preferences.TemplateVariableProcessor; -import net.sourceforge.phpdt.internal.ui.util.PixelConverter; -import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.DialogField; -import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.IDialogFieldListener; -import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.ITreeListAdapter; -import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.LayoutUtil; -import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.SelectionButtonDialogField; -import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.TreeListDialogField; -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 org.eclipse.jface.dialogs.MessageDialog; -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.text.templates.persistence.TemplateReaderWriter; -import org.eclipse.jface.text.templates.persistence.TemplateStore; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; - -/** - */ -public class CodeTemplateBlock { - - private class CodeTemplateAdapter implements ITreeListAdapter, - IDialogFieldListener { - - private final Object[] NO_CHILDREN = new Object[0]; - - public void customButtonPressed(TreeListDialogField field, int index) { - doButtonPressed(index, field.getSelectedElements()); - } - - public void selectionChanged(TreeListDialogField field) { - List selected = field.getSelectedElements(); - field.enableButton(IDX_EDIT, canEdit(selected)); - field.enableButton(IDX_EXPORT, !selected.isEmpty()); - - updateSourceViewerInput(selected); - } - - public void doubleClicked(TreeListDialogField field) { - List selected = field.getSelectedElements(); - if (canEdit(selected)) { - doButtonPressed(IDX_EDIT, selected); - } - } - - public Object[] getChildren(TreeListDialogField field, Object element) { - if (element == COMMENT_NODE || element == CODE_NODE) { - return getTemplateOfCategory(element == COMMENT_NODE); - } - return NO_CHILDREN; - } - - public Object getParent(TreeListDialogField field, Object element) { - if (element instanceof TemplatePersistenceData) { - TemplatePersistenceData data = (TemplatePersistenceData) element; - if (data.getTemplate().getName().endsWith( - CodeTemplateContextType.COMMENT_SUFFIX)) { - return COMMENT_NODE; - } - return CODE_NODE; - } - return null; - } - - public boolean hasChildren(TreeListDialogField field, Object element) { - return (element == COMMENT_NODE || element == CODE_NODE); - } - - public void dialogFieldChanged(DialogField field) { - } - - public void keyPressed(TreeListDialogField field, KeyEvent event) { - } - - } - - private static class CodeTemplateLabelProvider extends LabelProvider { - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) - */ - public Image getImage(Object element) { - return null; - - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) - */ - public String getText(Object element) { - if (element == COMMENT_NODE || element == CODE_NODE) { - return (String) element; - } - TemplatePersistenceData data = (TemplatePersistenceData) element; - Template template = data.getTemplate(); - String name = template.getName(); - if (CodeTemplateContextType.CATCHBLOCK.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.catchblock.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.METHODSTUB.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.methodstub.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.CONSTRUCTORSTUB.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.constructorstub.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.GETTERSTUB.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.getterstub.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.SETTERSTUB.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.setterstub.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.NEWTYPE.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.newtype.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.TYPECOMMENT.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.typecomment.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.FIELDCOMMENT.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.fieldcomment.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.METHODCOMMENT.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.methodcomment.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.OVERRIDECOMMENT.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.overridecomment.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.CONSTRUCTORCOMMENT.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.constructorcomment.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.GETTERCOMMENT.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.gettercomment.label"); //$NON-NLS-1$ - } else if (CodeTemplateContextType.SETTERCOMMENT.equals(name)) { - return PreferencesMessages - .getString("CodeTemplateBlock.settercomment.label"); //$NON-NLS-1$ - } - return template.getDescription(); - } - - } - - private final static int IDX_EDIT = 0; - - private final static int IDX_IMPORT = 2; - - private final static int IDX_EXPORT = 3; - - private final static int IDX_EXPORTALL = 4; - - protected final static Object COMMENT_NODE = PreferencesMessages - .getString("CodeTemplateBlock.templates.comment.node"); //$NON-NLS-1$ - - protected final static Object CODE_NODE = PreferencesMessages - .getString("CodeTemplateBlock.templates.code.node"); //$NON-NLS-1$ - - private static final String PREF_JAVADOC_STUBS = PreferenceConstants.CODEGEN_ADD_COMMENTS; - - private TreeListDialogField fCodeTemplateTree; - - private SelectionButtonDialogField fCreateJavaDocComments; - - protected TemplateStore fTemplates; - - private PixelConverter fPixelConverter; - - private SourceViewer fPatternViewer; - - private Control fSWTWidget; - - private TemplateVariableProcessor fTemplateProcessor; - - public CodeTemplateBlock() { - - fTemplates = PHPeclipsePlugin.getDefault().getCodeTemplateStore(); - fTemplateProcessor = new TemplateVariableProcessor(); - - CodeTemplateAdapter adapter = new CodeTemplateAdapter(); - - String[] buttonLabels = new String[] { - /* IDX_EDIT */PreferencesMessages - .getString("CodeTemplateBlock.templates.edit.button"), //$NON-NLS-1$ - /* */null, - /* IDX_IMPORT */PreferencesMessages - .getString("CodeTemplateBlock.templates.import.button"), //$NON-NLS-1$ - /* IDX_EXPORT */PreferencesMessages - .getString("CodeTemplateBlock.templates.export.button"), //$NON-NLS-1$ - /* IDX_EXPORTALL */PreferencesMessages - .getString("CodeTemplateBlock.templates.exportall.button") //$NON-NLS-1$ - - }; - fCodeTemplateTree = new TreeListDialogField(adapter, buttonLabels, - new CodeTemplateLabelProvider()); - fCodeTemplateTree.setDialogFieldListener(adapter); - fCodeTemplateTree.setLabelText(PreferencesMessages - .getString("CodeTemplateBlock.templates.label")); //$NON-NLS-1$ - - fCodeTemplateTree.enableButton(IDX_EXPORT, false); - fCodeTemplateTree.enableButton(IDX_EDIT, false); - - fCodeTemplateTree.addElement(COMMENT_NODE); - fCodeTemplateTree.addElement(CODE_NODE); - - fCreateJavaDocComments = new SelectionButtonDialogField(SWT.CHECK - | SWT.WRAP); - fCreateJavaDocComments.setLabelText(PreferencesMessages - .getString("CodeTemplateBlock.createcomment.label")); //$NON-NLS-1$ - fCreateJavaDocComments.setSelection(PreferenceConstants - .getPreferenceStore().getBoolean(PREF_JAVADOC_STUBS)); - - fCodeTemplateTree.selectFirstElement(); - } - - protected Control createContents(Composite parent) { - fPixelConverter = new PixelConverter(parent); - fSWTWidget = parent; - - Composite composite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.numColumns = 2; - composite.setLayout(layout); - - fCodeTemplateTree.doFillIntoGrid(composite, 3); - LayoutUtil - .setHorizontalSpan(fCodeTemplateTree.getLabelControl(null), 2); - LayoutUtil - .setHorizontalGrabbing(fCodeTemplateTree.getTreeControl(null)); - - fPatternViewer = createViewer(composite, 2); - - fCreateJavaDocComments.doFillIntoGrid(composite, 2); - - DialogField label = new DialogField(); - label.setLabelText(PreferencesMessages - .getString("CodeTemplateBlock.createcomment.description")); //$NON-NLS-1$ - label.doFillIntoGrid(composite, 2); - - return composite; - - } - - private Shell getShell() { - if (fSWTWidget != null) { - return fSWTWidget.getShell(); - } - return PHPeclipsePlugin.getActiveWorkbenchShell(); - } - - private SourceViewer createViewer(Composite parent, int nColumns) { - Label label = new Label(parent, SWT.NONE); - label.setText(PreferencesMessages - .getString("CodeTemplateBlock.preview")); //$NON-NLS-1$ - GridData data = new GridData(); - data.horizontalSpan = nColumns; - label.setLayoutData(data); - - IDocument document = new Document(); - JavaTextTools tools = PHPeclipsePlugin.getDefault().getJavaTextTools(); - tools.setupJavaDocumentPartitioner(document, - IPHPPartitions.PHP_PARTITIONING); - IPreferenceStore store = PHPeclipsePlugin.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); - data.horizontalSpan = nColumns; - data.heightHint = fPixelConverter.convertHeightInCharsToPixels(5); - control.setLayoutData(data); - - return viewer; - } - - protected TemplatePersistenceData[] getTemplateOfCategory(boolean isComment) { - ArrayList res = new ArrayList(); - TemplatePersistenceData[] templates = fTemplates.getTemplateData(false); - for (int i = 0; i < templates.length; i++) { - TemplatePersistenceData curr = templates[i]; - if (isComment == curr.getTemplate().getName().endsWith( - CodeTemplateContextType.COMMENT_SUFFIX)) { - res.add(curr); - } - } - return (TemplatePersistenceData[]) res - .toArray(new TemplatePersistenceData[res.size()]); - } - - protected static boolean canEdit(List selected) { - return selected.size() == 1 - && (selected.get(0) instanceof TemplatePersistenceData); - } - - protected void updateSourceViewerInput(List selection) { - if (fPatternViewer == null - || fPatternViewer.getTextWidget().isDisposed()) { - return; - } - if (selection.size() == 1 - && selection.get(0) instanceof TemplatePersistenceData) { - TemplatePersistenceData data = (TemplatePersistenceData) selection - .get(0); - Template template = data.getTemplate(); - TemplateContextType type = PHPeclipsePlugin.getDefault() - .getCodeTemplateContextRegistry().getContextType( - template.getContextTypeId()); - fTemplateProcessor.setContextType(type); - fPatternViewer.getDocument().set(template.getPattern()); - } else { - fPatternViewer.getDocument().set(""); //$NON-NLS-1$ - } - } - - protected void doButtonPressed(int buttonIndex, List selected) { - if (buttonIndex == IDX_EDIT) { - edit((TemplatePersistenceData) selected.get(0)); - } else if (buttonIndex == IDX_EXPORT) { - export(selected); - } else if (buttonIndex == IDX_EXPORTALL) { - exportAll(); - } else if (buttonIndex == IDX_IMPORT) { - import_(); - } - } - - private void edit(TemplatePersistenceData data) { - Template newTemplate = new Template(data.getTemplate()); - EditTemplateDialog dialog = new EditTemplateDialog(getShell(), - newTemplate, true, false, PHPeclipsePlugin.getDefault() - .getCodeTemplateContextRegistry()); - if (dialog.open() == Window.OK) { - // changed - data.setTemplate(newTemplate); - fCodeTemplateTree.refresh(data); - fCodeTemplateTree.selectElements(new StructuredSelection(data)); - } - } - - private void import_() { - FileDialog dialog = new FileDialog(getShell()); - dialog.setText(PreferencesMessages - .getString("CodeTemplateBlock.import.title")); //$NON-NLS-1$ - dialog.setFilterExtensions(new String[] { PreferencesMessages - .getString("CodeTemplateBlock.import.extension") }); //$NON-NLS-1$ - String path = dialog.open(); - - if (path == null) - return; - - try { - TemplateReaderWriter reader = new TemplateReaderWriter(); - File file = new File(path); - if (file.exists()) { - InputStream input = new BufferedInputStream( - new FileInputStream(file)); - TemplatePersistenceData[] datas = reader.read(input, null); - for (int i = 0; i < datas.length; i++) { - updateTemplate(datas[i]); - } - } - - fCodeTemplateTree.refresh(); - updateSourceViewerInput(fCodeTemplateTree.getSelectedElements()); - - } catch (FileNotFoundException e) { - openReadErrorDialog(e); - } catch (IOException e) { - openReadErrorDialog(e); - } - - } - - private void updateTemplate(TemplatePersistenceData data) { - TemplatePersistenceData[] datas = fTemplates.getTemplateData(true); - for (int i = 0; i < datas.length; i++) { - String id = datas[i].getId(); - if (id != null && id.equals(data.getId())) { - datas[i].setTemplate(data.getTemplate()); - break; - } - } - } - - private void exportAll() { - export(fTemplates.getTemplateData(false)); - } - - private void export(List selected) { - List datas = new ArrayList(); - for (int i = 0; i < selected.size(); i++) { - Object curr = selected.get(i); - if (curr instanceof TemplatePersistenceData) { - datas.add(curr); - } else { - TemplatePersistenceData[] cat = getTemplateOfCategory(curr == COMMENT_NODE); - datas.addAll(Arrays.asList(cat)); - } - } - export((TemplatePersistenceData[]) datas - .toArray(new TemplatePersistenceData[datas.size()])); - } - - private void export(TemplatePersistenceData[] templates) { - FileDialog dialog = new FileDialog(getShell(), SWT.SAVE); - dialog - .setText(PreferencesMessages - .getFormattedString( - "CodeTemplateBlock.export.title", String.valueOf(templates.length))); //$NON-NLS-1$ - dialog.setFilterExtensions(new String[] { PreferencesMessages - .getString("CodeTemplateBlock.export.extension") }); //$NON-NLS-1$ - dialog.setFileName(PreferencesMessages - .getString("CodeTemplateBlock.export.filename")); //$NON-NLS-1$ - String path = dialog.open(); - - if (path == null) - return; - - File file = new File(path); - - if (file.isHidden()) { - String title = PreferencesMessages - .getString("CodeTemplateBlock.export.error.title"); //$NON-NLS-1$ - String message = PreferencesMessages - .getFormattedString( - "CodeTemplateBlock.export.error.hidden", file.getAbsolutePath()); //$NON-NLS-1$ - MessageDialog.openError(getShell(), title, message); - return; - } - - if (file.exists() && !file.canWrite()) { - String title = PreferencesMessages - .getString("CodeTemplateBlock.export.error.title"); //$NON-NLS-1$ - String message = PreferencesMessages - .getFormattedString( - "CodeTemplateBlock.export.error.canNotWrite", file.getAbsolutePath()); //$NON-NLS-1$ - MessageDialog.openError(getShell(), title, message); - return; - } - - if (!file.exists() || confirmOverwrite(file)) { - try { - OutputStream output = new BufferedOutputStream( - new FileOutputStream(file)); - TemplateReaderWriter writer = new TemplateReaderWriter(); - writer.save(templates, output); - } catch (IOException e) { - openWriteErrorDialog(e); - } - } - - } - - private boolean confirmOverwrite(File file) { - return MessageDialog - .openQuestion( - getShell(), - PreferencesMessages - .getString("CodeTemplateBlock.export.exists.title"), //$NON-NLS-1$ - PreferencesMessages - .getFormattedString( - "CodeTemplateBlock.export.exists.message", file.getAbsolutePath())); //$NON-NLS-1$ - } - - public void performDefaults() { - IPreferenceStore prefs = PHPeclipsePlugin.getDefault() - .getPreferenceStore(); - fCreateJavaDocComments.setSelection(prefs - .getDefaultBoolean(PREF_JAVADOC_STUBS)); - - fTemplates.restoreDefaults(); - - // refresh - fCodeTemplateTree.refresh(); - updateSourceViewerInput(fCodeTemplateTree.getSelectedElements()); - } - - public boolean performOk(boolean enabled) { - IPreferenceStore prefs = PreferenceConstants.getPreferenceStore(); - prefs.setValue(PREF_JAVADOC_STUBS, fCreateJavaDocComments.isSelected()); - PHPeclipsePlugin.getDefault().savePluginPreferences(); - - try { - fTemplates.save(); - } catch (IOException e) { - PHPeclipsePlugin.log(e); - openWriteErrorDialog(e); - } - return true; - } - - public void performCancel() { - try { - fTemplates.load(); - } catch (IOException e) { - openReadErrorDialog(e); - } - } - - private void openReadErrorDialog(Exception e) { - String title = PreferencesMessages - .getString("CodeTemplateBlock.error.read.title"); //$NON-NLS-1$ - - String message = e.getLocalizedMessage(); - if (message != null) - message = PreferencesMessages.getFormattedString( - "CodeTemplateBlock.error.parse.message", message); //$NON-NLS-1$ - else - message = PreferencesMessages - .getString("CodeTemplateBlock.error.read.message"); //$NON-NLS-1$ - MessageDialog.openError(getShell(), title, message); - } - - private void openWriteErrorDialog(Exception e) { - String title = PreferencesMessages - .getString("CodeTemplateBlock.error.write.title"); //$NON-NLS-1$ - String message = PreferencesMessages - .getString("CodeTemplateBlock.error.write.message"); //$NON-NLS-1$ - MessageDialog.openError(getShell(), title, message); - } - -} \ No newline at end of file