-/*
- * (c) Copyright IBM Corp. 2000, 2001.
- * All Rights Reserved.
- */
+/*******************************************************************************
+ * 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.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
-
-import net.sourceforge.phpdt.internal.corext.template.ContextTypeRegistry;
-import net.sourceforge.phpdt.internal.corext.template.Template;
-import net.sourceforge.phpdt.internal.corext.template.TemplateMessages;
-import net.sourceforge.phpdt.internal.corext.template.TemplateTranslator;
-import net.sourceforge.phpdt.internal.ui.dialog.StatusDialog;
-import net.sourceforge.phpdt.internal.ui.dialog.StatusInfo;
-import net.sourceforge.phpdt.internal.ui.text.template.TemplateVariableProcessor;
+
+import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusDialog;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
+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.SWTUtil;
-import net.sourceforge.phpeclipse.IPreferenceConstants;
+import net.sourceforge.phpdt.ui.IContextMenuConstants;
+import net.sourceforge.phpdt.ui.PreferenceConstants;
+import net.sourceforge.phpdt.ui.text.JavaTextTools;
import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpeclipse.phpeditor.PHPSourceViewerConfiguration;
+import net.sourceforge.phpeclipse.phpeditor.JavaSourceViewer;
-import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextListener;
import org.eclipse.jface.text.ITextOperationTarget;
import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.ITextViewerExtension;
import org.eclipse.jface.text.TextEvent;
-import org.eclipse.jface.text.contentassist.ContentAssistant;
-import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
-import org.eclipse.jface.text.contentassist.IContentAssistant;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.jface.text.templates.ContextTypeRegistry;
+import org.eclipse.jface.text.templates.Template;
+import org.eclipse.jface.text.templates.TemplateContextType;
+import org.eclipse.jface.text.templates.TemplateException;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.custom.VerifyKeyListener;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.events.VerifyEvent;
-import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.Widget;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.texteditor.ITextEditorActionConstants;
import org.eclipse.ui.texteditor.IUpdate;
*/
public class EditTemplateDialog extends StatusDialog {
- private static class SimpleJavaSourceViewerConfiguration extends PHPSourceViewerConfiguration {
+ private static class TextViewerAction extends Action implements IUpdate {
- private final IContentAssistProcessor fProcessor;
+ private int fOperationCode = -1;
- // SimpleJavaSourceViewerConfiguration(JavaTextTools tools, ITextEditor editor, IContentAssistProcessor processor) {
- SimpleJavaSourceViewerConfiguration(IContentAssistProcessor processor) {
- super(null);
- fProcessor= processor;
- }
-
- /*
- * @see SourceViewerConfiguration#getContentAssistant(ISourceViewer)
- */
- public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
-
- IPreferenceStore store= PHPeclipsePlugin.getDefault().getPreferenceStore();
-
- ContentAssistant assistant= new ContentAssistant();
- assistant.setContentAssistProcessor(fProcessor, IDocument.DEFAULT_CONTENT_TYPE);
- // Register the same processor for strings and single line comments to get code completion at the start of those partitions.
-// assistant.setContentAssistProcessor(fProcessor, JavaPartitionScanner.JAVA_STRING);
-// assistant.setContentAssistProcessor(fProcessor, JavaPartitionScanner.JAVA_SINGLE_LINE_COMMENT);
-//
-// assistant.setContentAssistProcessor(fProcessor, JavaPartitionScanner.JAVA_DOC);
-
-// assistant.enableAutoInsert(store.getBoolean(ContentAssistPreference.AUTOINSERT));
-// assistant.enableAutoActivation(store.getBoolean(ContentAssistPreference.AUTOACTIVATION));
-// assistant.setAutoActivationDelay(store.getInt(ContentAssistPreference.AUTOACTIVATION_DELAY));
- assistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
- assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
-// assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
-
- Display display= sourceViewer.getTextWidget().getDisplay();
-
- Color background= createColor(store, IPreferenceConstants.PROPOSALS_BACKGROUND, display);
- assistant.setContextInformationPopupBackground(background);
- assistant.setContextSelectorBackground(background);
- assistant.setProposalSelectorBackground(background);
-
- Color foreground= createColor(store, IPreferenceConstants.PROPOSALS_FOREGROUND, display);
- assistant.setContextInformationPopupForeground(foreground);
- assistant.setContextSelectorForeground(foreground);
- assistant.setProposalSelectorForeground(foreground);
-
- return assistant;
- }
+ private ITextOperationTarget fOperationTarget;
/**
- * Creates a color from the information stored in the given preference store.
- * Returns <code>null</code> if there is no such information available.
+ * Creates a new action.
+ *
+ * @param viewer
+ * the viewer
+ * @param operationCode
+ * the opcode
*/
- private Color createColor(IPreferenceStore store, String key, Display display) {
-
- RGB rgb= null;
-
- if (store.contains(key)) {
-
- if (store.isDefault(key))
- rgb= PreferenceConverter.getDefaultColor(store, key);
- else
- rgb= PreferenceConverter.getColor(store, key);
-
- if (rgb != null)
- return new Color(display, rgb);
- }
-
- return null;
- }
- }
-
- private static class TextViewerAction extends Action implements IUpdate {
-
- private int fOperationCode= -1;
- private ITextOperationTarget fOperationTarget;
-
public TextViewerAction(ITextViewer viewer, int operationCode) {
- fOperationCode= operationCode;
- fOperationTarget= viewer.getTextOperationTarget();
+ fOperationCode = operationCode;
+ fOperationTarget = viewer.getTextOperationTarget();
update();
}
-
+
/**
- * Updates the enabled state of the action.
- * Fires a property change if the enabled state changes.
+ * Updates the enabled state of the action. Fires a property change if
+ * the enabled state changes.
*
* @see Action#firePropertyChange(String, Object, Object)
*/
public void update() {
-
- boolean wasEnabled= isEnabled();
- boolean isEnabled= (fOperationTarget != null && fOperationTarget.canDoOperation(fOperationCode));
+
+ boolean wasEnabled = isEnabled();
+ boolean isEnabled = (fOperationTarget != null && fOperationTarget
+ .canDoOperation(fOperationCode));
setEnabled(isEnabled);
-
+
if (wasEnabled != isEnabled) {
- firePropertyChange(ENABLED, wasEnabled ? Boolean.TRUE : Boolean.FALSE, isEnabled ? Boolean.TRUE : Boolean.FALSE);
+ firePropertyChange(ENABLED, wasEnabled ? Boolean.TRUE
+ : Boolean.FALSE, isEnabled ? Boolean.TRUE
+ : Boolean.FALSE);
}
}
-
+
/**
* @see Action#run()
*/
fOperationTarget.doOperation(fOperationCode);
}
}
- }
+ }
private final Template fTemplate;
-
+
private Text fNameText;
+
private Text fDescriptionText;
+
private Combo fContextCombo;
- private SourceViewer fPatternEditor;
+
+ private SourceViewer fPatternEditor;
+
private Button fInsertVariableButton;
- private TemplateTranslator fTranslator= new TemplateTranslator();
- private boolean fSuppressError= true; // #4354
- private Map fGlobalActions= new HashMap(10);
- private List fSelectionActions = new ArrayList(3);
- private Vector fContextTypes= new Vector();
-
- private final TemplateVariableProcessor fProcessor= new TemplateVariableProcessor();
-
- public EditTemplateDialog(Shell parent, Template template, boolean edit) {
+ private boolean fIsNameModifiable;
+
+ private StatusInfo fValidationStatus;
+
+ private boolean fSuppressError = true; // #4354
+
+ private Map fGlobalActions = new HashMap(10);
+
+ private List fSelectionActions = new ArrayList(3);
+
+ private String[][] fContextTypes;
+
+ private ContextTypeRegistry fContextTypeRegistry;
+
+ private final TemplateVariableProcessor fTemplateProcessor = new TemplateVariableProcessor();
+
+ /**
+ * Creates a new dialog.
+ *
+ * @param parent
+ * the shell parent of the dialog
+ * @param template
+ * the template to edit
+ * @param edit
+ * whether this is a new template or an existing being edited
+ * @param isNameModifiable
+ * whether the name of the template may be modified
+ * @param registry
+ * the context type registry to use
+ */
+ public EditTemplateDialog(Shell parent, Template template, boolean edit,
+ boolean isNameModifiable, ContextTypeRegistry registry) {
super(parent);
-
+
setShellStyle(getShellStyle() | SWT.MAX | SWT.RESIZE);
-
- String title= edit
- ? TemplateMessages.getString("EditTemplateDialog.title.edit") //$NON-NLS-1$
- : TemplateMessages.getString("EditTemplateDialog.title.new"); //$NON-NLS-1$
+
+ String title = edit ? PreferencesMessages
+ .getString("EditTemplateDialog.title.edit") //$NON-NLS-1$
+ : PreferencesMessages.getString("EditTemplateDialog.title.new"); //$NON-NLS-1$
setTitle(title);
- fTemplate= template;
-
- ContextTypeRegistry registry= ContextTypeRegistry.getInstance();
- for (Iterator iterator= registry.iterator(); iterator.hasNext(); )
- fContextTypes.add(iterator.next());
+ fTemplate = template;
+ fIsNameModifiable = isNameModifiable;
+
+ // XXX workaround for bug 63313 - disabling prefix until fixed.
+ // String delim= new Document().getLegalLineDelimiters()[0];
+
+ List contexts = new ArrayList();
+ for (Iterator it = registry.contextTypes(); it.hasNext();) {
+ TemplateContextType type = (TemplateContextType) it.next();
+ // if (type.getId().equals("javadoc")) //$NON-NLS-1$
+ // contexts.add(new String[] { type.getId(), type.getName(), "/**" +
+ // delim }); //$NON-NLS-1$
+ // else
+ contexts.add(new String[] { type.getId(), type.getName(), "" }); //$NON-NLS-1$
+ }
+ fContextTypes = (String[][]) contexts.toArray(new String[contexts
+ .size()][]);
+
+ fValidationStatus = new StatusInfo();
+
+ fContextTypeRegistry = registry;
+
+ TemplateContextType type = fContextTypeRegistry.getContextType(template
+ .getContextTypeId());
+ fTemplateProcessor.setContextType(type);
+ }
- if (fContextTypes.size() > 0)
- fProcessor.setContextType(ContextTypeRegistry.getInstance().getContextType((String) fContextTypes.get(0)));
+ /*
+ * @see net.sourceforge.phpdt.internal.ui.dialogs.StatusDialog#create()
+ */
+ public void create() {
+ super.create();
+ // update initial ok button to be disabled for new templates
+ boolean valid = fNameText == null
+ || fNameText.getText().trim().length() != 0;
+ if (!valid) {
+ StatusInfo status = new StatusInfo();
+ status.setError(PreferencesMessages
+ .getString("EditTemplateDialog.error.noname")); //$NON-NLS-1$
+ updateButtonsEnableState(status);
+ }
}
-
+
/*
* @see Dialog#createDialogArea(Composite)
*/
protected Control createDialogArea(Composite ancestor) {
- Composite parent= new Composite(ancestor, SWT.NONE);
- GridLayout layout= new GridLayout();
- layout.numColumns= 2;
+ Composite parent = new Composite(ancestor, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
parent.setLayout(layout);
parent.setLayoutData(new GridData(GridData.FILL_BOTH));
-
- createLabel(parent, TemplateMessages.getString("EditTemplateDialog.name")); //$NON-NLS-1$
-
- Composite composite= new Composite(parent, SWT.NONE);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- layout= new GridLayout();
- layout.numColumns= 3;
- layout.marginWidth= 0;
- layout.marginHeight= 0;
- composite.setLayout(layout);
- fNameText= createText(composite);
- fNameText.addModifyListener(new ModifyListener() {
+ ModifyListener listener = new ModifyListener() {
public void modifyText(ModifyEvent e) {
- if (fSuppressError && (fNameText.getText().trim().length() != 0))
- fSuppressError= false;
-
- updateButtons();
+ doTextWidgetChanged(e.widget);
}
- });
+ };
- createLabel(composite, TemplateMessages.getString("EditTemplateDialog.context")); //$NON-NLS-1$
- fContextCombo= new Combo(composite, SWT.READ_ONLY);
+ if (fIsNameModifiable) {
+ createLabel(parent, PreferencesMessages
+ .getString("EditTemplateDialog.name")); //$NON-NLS-1$
- for (Iterator iterator= fContextTypes.iterator(); iterator.hasNext(); )
- fContextCombo.add((String) iterator.next());
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ layout = new GridLayout();
+ layout.numColumns = 3;
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ composite.setLayout(layout);
- fContextCombo.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- String name= fContextCombo.getText();
- fProcessor.setContextType(ContextTypeRegistry.getInstance().getContextType(name));
+ fNameText = createText(composite);
+ fNameText.addFocusListener(new FocusListener() {
+
+ public void focusGained(FocusEvent e) {
+ }
+
+ public void focusLost(FocusEvent e) {
+ if (fSuppressError) {
+ fSuppressError = false;
+ updateButtons();
+ }
+ }
+ });
+
+ createLabel(composite, PreferencesMessages
+ .getString("EditTemplateDialog.context")); //$NON-NLS-1$
+ fContextCombo = new Combo(composite, SWT.READ_ONLY);
+
+ for (int i = 0; i < fContextTypes.length; i++) {
+ fContextCombo.add(fContextTypes[i][1]);
}
- });
-
- createLabel(parent, TemplateMessages.getString("EditTemplateDialog.description")); //$NON-NLS-1$
- fDescriptionText= createText(parent);
-
- Label patternLabel= createLabel(parent, TemplateMessages.getString("EditTemplateDialog.pattern")); //$NON-NLS-1$
- patternLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
- fPatternEditor= createEditor(parent);
-
- Label filler= new Label(parent, SWT.NONE);
+
+ fContextCombo.addModifyListener(listener);
+ }
+
+ createLabel(parent, PreferencesMessages
+ .getString("EditTemplateDialog.description")); //$NON-NLS-1$
+
+ int descFlags = fIsNameModifiable ? SWT.BORDER : SWT.BORDER
+ | SWT.READ_ONLY;
+ fDescriptionText = new Text(parent, descFlags);
+ fDescriptionText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ fDescriptionText.addModifyListener(listener);
+
+ Label patternLabel = createLabel(parent, PreferencesMessages
+ .getString("EditTemplateDialog.pattern")); //$NON-NLS-1$
+ patternLabel.setLayoutData(new GridData(
+ GridData.VERTICAL_ALIGN_BEGINNING));
+ fPatternEditor = createEditor(parent);
+
+ Label filler = new Label(parent, SWT.NONE);
filler.setLayoutData(new GridData());
-
- composite= new Composite(parent, SWT.NONE);
- layout= new GridLayout();
- layout.marginWidth= 0;
- layout.marginHeight= 0;
- composite.setLayout(layout);
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ composite.setLayout(layout);
composite.setLayoutData(new GridData());
-
- fInsertVariableButton= new Button(composite, SWT.NONE);
- fInsertVariableButton.setLayoutData(getButtonGridData(fInsertVariableButton));
- fInsertVariableButton.setText(TemplateMessages.getString("EditTemplateDialog.insert.variable")); //$NON-NLS-1$
+
+ fInsertVariableButton = new Button(composite, SWT.NONE);
+ fInsertVariableButton
+ .setLayoutData(getButtonGridData(fInsertVariableButton));
+ fInsertVariableButton.setText(PreferencesMessages
+ .getString("EditTemplateDialog.insert.variable")); //$NON-NLS-1$
fInsertVariableButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
fPatternEditor.getTextWidget().setFocus();
- fPatternEditor.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
+ fPatternEditor
+ .doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
}
- public void widgetDefaultSelected(SelectionEvent e) {}
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
});
- fNameText.setText(fTemplate.getName());
fDescriptionText.setText(fTemplate.getDescription());
- fContextCombo.select(getIndex(fTemplate.getContextTypeName()));
-
+ if (fIsNameModifiable) {
+ fNameText.setText(fTemplate.getName());
+ fNameText.addModifyListener(listener);
+ fContextCombo.select(getIndex(fTemplate.getContextTypeId()));
+ } else {
+ fPatternEditor.getControl().setFocus();
+ }
initializeActions();
+ applyDialogFont(parent);
return composite;
}
+ protected void doTextWidgetChanged(Widget w) {
+ if (w == fNameText) {
+ fSuppressError = false;
+ String name = fNameText.getText();
+ fTemplate.setName(name);
+ updateButtons();
+ } else if (w == fContextCombo) {
+ String name = fContextCombo.getText();
+ String contextId = getContextId(name);
+ fTemplate.setContextTypeId(contextId);
+ fTemplateProcessor.setContextType(fContextTypeRegistry
+ .getContextType(contextId));
+ } else if (w == fDescriptionText) {
+ String desc = fDescriptionText.getText();
+ fTemplate.setDescription(desc);
+ }
+ }
+
+ private String getContextId(String name) {
+ if (name == null)
+ return name;
+
+ for (int i = 0; i < fContextTypes.length; i++) {
+ if (name.equals(fContextTypes[i][1])) {
+ return fContextTypes[i][0];
+ }
+ }
+ return name;
+ }
+
+ protected void doSourceChanged(IDocument document) {
+ String text = document.get();
+ String prefix = getPrefix();
+ fTemplate.setPattern(text.substring(prefix.length(), text.length()));
+ fValidationStatus.setOK();
+ TemplateContextType contextType = fContextTypeRegistry
+ .getContextType(fTemplate.getContextTypeId());
+ if (contextType != null) {
+ try {
+ contextType.validate(text);
+ } catch (TemplateException e) {
+ fValidationStatus.setError(e.getLocalizedMessage());
+ }
+ }
+
+ updateUndoAction();
+ updateButtons();
+ }
+
private static GridData getButtonGridData(Button button) {
- GridData data= new GridData(GridData.FILL_HORIZONTAL);
- data.heightHint= SWTUtil.getButtonHeigthHint(button);
-
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.heightHint = SWTUtil.getButtonHeightHint(button);
+
return data;
}
private static Label createLabel(Composite parent, String name) {
- Label label= new Label(parent, SWT.NULL);
+ Label label = new Label(parent, SWT.NULL);
label.setText(name);
label.setLayoutData(new GridData());
}
private static Text createText(Composite parent) {
- Text text= new Text(parent, SWT.BORDER);
- text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
+ Text text = new Text(parent, SWT.BORDER);
+ text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
return text;
}
private SourceViewer createEditor(Composite parent) {
- SourceViewer viewer= new SourceViewer(parent, null, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
- // JavaTextTools tools= JavaPlugin.getDefault().getJavaTextTools();
- IDocument document= new Document(fTemplate.getPattern());
- // IDocumentPartitioner partitioner= tools.createDocumentPartitioner();
- // document.setDocumentPartitioner(partitioner);
- // partitioner.connect(document);
- // viewer.configure(new SimpleJavaSourceViewerConfiguration(tools, null, fProcessor));
- viewer.configure(new SimpleJavaSourceViewerConfiguration(fProcessor));
- viewer.setEditable(true);
+ String prefix = getPrefix();
+ IDocument document = new Document(prefix + fTemplate.getPattern());
+ 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(true);
+ // XXX workaround for bug 63313 - disabling prefix until fixed.
+ // viewer.setDocument(document, prefix.length(), document.getLength() -
+ // prefix.length());
viewer.setDocument(document);
-
- Font font= JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT);
+
+ Font font = JFaceResources
+ .getFont(PreferenceConstants.EDITOR_TEXT_FONT);
viewer.getTextWidget().setFont(font);
-
- Control control= viewer.getControl();
- GridData data= new GridData(GridData.FILL_BOTH);
- data.widthHint= convertWidthInCharsToPixels(60);
- data.heightHint= convertHeightInCharsToPixels(5);
+ new JavaSourcePreviewerUpdater(viewer, configuration, store);
+
+ int nLines = document.getNumberOfLines();
+ if (nLines < 5) {
+ nLines = 5;
+ } else if (nLines > 12) {
+ nLines = 12;
+ }
+
+ Control control = viewer.getControl();
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.widthHint = convertWidthInCharsToPixels(80);
+ data.heightHint = convertHeightInCharsToPixels(nLines);
control.setLayoutData(data);
-
+
viewer.addTextListener(new ITextListener() {
public void textChanged(TextEvent event) {
- try {
- fTranslator.translate(event.getDocumentEvent().getDocument().get());
- } catch (CoreException e) {
- PHPeclipsePlugin.log(e);
- }
-
- updateUndoAction();
- updateButtons();
+ if (event.getDocumentEvent() != null)
+ doSourceChanged(event.getDocumentEvent().getDocument());
}
});
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
updateSelectionDependentActions();
}
});
- if (viewer instanceof ITextViewerExtension) {
- ((ITextViewerExtension) viewer).prependVerifyKeyListener(new VerifyKeyListener() {
- public void verifyKey(VerifyEvent event) {
- handleVerifyKeyPressed(event);
- }
- });
- } else {
- viewer.getTextWidget().addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- handleKeyPressed(e);
- }
-
- public void keyReleased(KeyEvent e) {}
- });
- }
-
+ viewer.prependVerifyKeyListener(new VerifyKeyListener() {
+ public void verifyKey(VerifyEvent event) {
+ handleVerifyKeyPressed(event);
+ }
+ });
+
return viewer;
}
- private void handleKeyPressed(KeyEvent event) {
- if (event.stateMask != SWT.CTRL)
- return;
-
- switch (event.character) {
- case ' ':
- fPatternEditor.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
- break;
-
- // CTRL-Z
- case (int) 'z' - (int) 'a' + 1:
- fPatternEditor.doOperation(ITextOperationTarget.UNDO);
- break;
- }
+ private String getPrefix() {
+ String prefix;
+ int idx = getIndex(fTemplate.getContextTypeId());
+ if (idx != -1)
+ prefix = fContextTypes[idx][2];
+ else
+ prefix = ""; //$NON-NLS-1$
+
+ return prefix;
}
private void handleVerifyKeyPressed(VerifyEvent event) {
if (!event.doit)
return;
- if (event.stateMask != SWT.CTRL)
+ if (event.stateMask != SWT.MOD1)
return;
-
+
switch (event.character) {
- case ' ':
- fPatternEditor.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
- event.doit= false;
- break;
-
- // CTRL-Z
- case (int) 'z' - (int) 'a' + 1:
- fPatternEditor.doOperation(ITextOperationTarget.UNDO);
- event.doit= false;
- break;
+ case ' ':
+ fPatternEditor.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
+ event.doit = false;
+ break;
+
+ // CTRL-Z
+ case 'z' - 'a' + 1:
+ fPatternEditor.doOperation(ITextOperationTarget.UNDO);
+ event.doit = false;
+ break;
}
}
private void initializeActions() {
- TextViewerAction action= new TextViewerAction(fPatternEditor, SourceViewer.UNDO);
- action.setText(TemplateMessages.getString("EditTemplateDialog.undo")); //$NON-NLS-1$
+ TextViewerAction action = new TextViewerAction(fPatternEditor,
+ SourceViewer.UNDO);
+ action
+ .setText(PreferencesMessages
+ .getString("EditTemplateDialog.undo")); //$NON-NLS-1$
fGlobalActions.put(ITextEditorActionConstants.UNDO, action);
- action= new TextViewerAction(fPatternEditor, SourceViewer.CUT);
- action.setText(TemplateMessages.getString("EditTemplateDialog.cut")); //$NON-NLS-1$
+ action = new TextViewerAction(fPatternEditor, SourceViewer.CUT);
+ action.setText(PreferencesMessages.getString("EditTemplateDialog.cut")); //$NON-NLS-1$
fGlobalActions.put(ITextEditorActionConstants.CUT, action);
- action= new TextViewerAction(fPatternEditor, SourceViewer.COPY);
- action.setText(TemplateMessages.getString("EditTemplateDialog.copy")); //$NON-NLS-1$
+ action = new TextViewerAction(fPatternEditor, SourceViewer.COPY);
+ action
+ .setText(PreferencesMessages
+ .getString("EditTemplateDialog.copy")); //$NON-NLS-1$
fGlobalActions.put(ITextEditorActionConstants.COPY, action);
- action= new TextViewerAction(fPatternEditor, SourceViewer.PASTE);
- action.setText(TemplateMessages.getString("EditTemplateDialog.paste")); //$NON-NLS-1$
+ action = new TextViewerAction(fPatternEditor, SourceViewer.PASTE);
+ action.setText(PreferencesMessages
+ .getString("EditTemplateDialog.paste")); //$NON-NLS-1$
fGlobalActions.put(ITextEditorActionConstants.PASTE, action);
- action= new TextViewerAction(fPatternEditor, SourceViewer.SELECT_ALL);
- action.setText(TemplateMessages.getString("EditTemplateDialog.select.all")); //$NON-NLS-1$
+ action = new TextViewerAction(fPatternEditor, SourceViewer.SELECT_ALL);
+ action.setText(PreferencesMessages
+ .getString("EditTemplateDialog.select.all")); //$NON-NLS-1$
fGlobalActions.put(ITextEditorActionConstants.SELECT_ALL, action);
- action= new TextViewerAction(fPatternEditor, SourceViewer.CONTENTASSIST_PROPOSALS);
- action.setText(TemplateMessages.getString("EditTemplateDialog.content.assist")); //$NON-NLS-1$
+ action = new TextViewerAction(fPatternEditor,
+ SourceViewer.CONTENTASSIST_PROPOSALS);
+ action.setText(PreferencesMessages
+ .getString("EditTemplateDialog.content.assist")); //$NON-NLS-1$
fGlobalActions.put("ContentAssistProposal", action); //$NON-NLS-1$
fSelectionActions.add(ITextEditorActionConstants.CUT);
fSelectionActions.add(ITextEditorActionConstants.COPY);
fSelectionActions.add(ITextEditorActionConstants.PASTE);
-
+
// create context menu
- MenuManager manager= new MenuManager(null, null);
+ MenuManager manager = new MenuManager(null, null);
manager.setRemoveAllWhenShown(true);
manager.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager mgr) {
}
});
- StyledText text= fPatternEditor.getTextWidget();
- Menu menu= manager.createContextMenu(text);
+ StyledText text = fPatternEditor.getTextWidget();
+ Menu menu = manager.createContextMenu(text);
text.setMenu(menu);
}
private void fillContextMenu(IMenuManager menu) {
menu.add(new GroupMarker(ITextEditorActionConstants.GROUP_UNDO));
- menu.appendToGroup(ITextEditorActionConstants.GROUP_UNDO, (IAction) fGlobalActions.get(ITextEditorActionConstants.UNDO));
-
- menu.add(new Separator(ITextEditorActionConstants.GROUP_EDIT));
- menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT, (IAction) fGlobalActions.get(ITextEditorActionConstants.CUT));
- menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT, (IAction) fGlobalActions.get(ITextEditorActionConstants.COPY));
- menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT, (IAction) fGlobalActions.get(ITextEditorActionConstants.PASTE));
- menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT, (IAction) fGlobalActions.get(ITextEditorActionConstants.SELECT_ALL));
-
- // menu.add(new Separator(IContextMenuConstants.GROUP_GENERATE));
- // menu.appendToGroup(IContextMenuConstants.GROUP_GENERATE, (IAction) fGlobalActions.get("ContentAssistProposal")); //$NON-NLS-1$
+ menu.appendToGroup(ITextEditorActionConstants.GROUP_UNDO,
+ (IAction) fGlobalActions.get(ITextEditorActionConstants.UNDO));
+
+ menu.add(new Separator(ITextEditorActionConstants.GROUP_EDIT));
+ menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT,
+ (IAction) fGlobalActions.get(ITextEditorActionConstants.CUT));
+ menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT,
+ (IAction) fGlobalActions.get(ITextEditorActionConstants.COPY));
+ menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT,
+ (IAction) fGlobalActions.get(ITextEditorActionConstants.PASTE));
+ menu.appendToGroup(ITextEditorActionConstants.GROUP_EDIT,
+ (IAction) fGlobalActions
+ .get(ITextEditorActionConstants.SELECT_ALL));
+
+ menu.add(new Separator(IContextMenuConstants.GROUP_GENERATE));
+ menu.appendToGroup(IContextMenuConstants.GROUP_GENERATE,
+ (IAction) fGlobalActions.get("ContentAssistProposal")); //$NON-NLS-1$
}
protected void updateSelectionDependentActions() {
- Iterator iterator= fSelectionActions.iterator();
+ Iterator iterator = fSelectionActions.iterator();
while (iterator.hasNext())
- updateAction((String)iterator.next());
+ updateAction((String) iterator.next());
}
protected void updateUndoAction() {
- IAction action= (IAction) fGlobalActions.get(ITextEditorActionConstants.UNDO);
+ IAction action = (IAction) fGlobalActions
+ .get(ITextEditorActionConstants.UNDO);
if (action instanceof IUpdate)
((IUpdate) action).update();
}
protected void updateAction(String actionId) {
- IAction action= (IAction) fGlobalActions.get(actionId);
+ IAction action = (IAction) fGlobalActions.get(actionId);
if (action instanceof IUpdate)
((IUpdate) action).update();
}
- private int getIndex(String context) {
- ContextTypeRegistry registry= ContextTypeRegistry.getInstance();
- registry.getContextType(context);
-
- if (context == null)
+ private int getIndex(String contextid) {
+
+ if (contextid == null)
return -1;
-
- return fContextTypes.indexOf(context);
+
+ for (int i = 0; i < fContextTypes.length; i++) {
+ if (contextid.equals(fContextTypes[i][0])) {
+ return i;
+ }
+ }
+ return -1;
}
-
+
protected void okPressed() {
- fTemplate.setName(fNameText.getText());
- fTemplate.setDescription(fDescriptionText.getText());
- fTemplate.setContext(fContextCombo.getText());
- fTemplate.setPattern(fPatternEditor.getTextWidget().getText());
-
super.okPressed();
}
-
- private void updateButtons() {
- boolean valid= fNameText.getText().trim().length() != 0;
- StatusInfo status= new StatusInfo();
-
+ private void updateButtons() {
+ StatusInfo status;
+
+ boolean valid = fNameText == null
+ || fNameText.getText().trim().length() != 0;
if (!valid) {
- if (fSuppressError)
- status.setError(""); //$NON-NLS-1$
- else
- status.setError(TemplateMessages.getString("EditTemplateDialog.error.noname")); //$NON-NLS-1$
- } else if (fTranslator.getErrorMessage() != null) {
- status.setError(fTranslator.getErrorMessage());
+ status = new StatusInfo();
+ if (!fSuppressError) {
+ status.setError(PreferencesMessages
+ .getString("EditTemplateDialog.error.noname")); //$NON-NLS-1$
+ }
+ } else {
+ status = fValidationStatus;
}
-
updateStatus(status);
}
*/
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
-// WorkbenchHelp.setHelp(newShell, IJavaHelpContextIds.EDIT_TEMPLATE_DIALOG);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(newShell,
+ IJavaHelpContextIds.EDIT_TEMPLATE_DIALOG);
}
-
-}
\ No newline at end of file
+}