/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
+ * 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
*******************************************************************************/
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.help.WorkbenchHelp;
+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 TextViewerAction extends Action implements IUpdate {
-
+
private int fOperationCode= -1;
private ITextOperationTarget fOperationTarget;
-
- /**
+
+ /**
* Creates a new action.
- *
+ *
* @param viewer the viewer
* @param operationCode the opcode
*/
fOperationTarget= viewer.getTextOperationTarget();
update();
}
-
+
/**
* 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));
setEnabled(isEnabled);
-
+
if (wasEnabled != isEnabled) {
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 boolean fIsNameModifiable;
private StatusInfo fValidationStatus;
- private boolean fSuppressError= true; // #4354
+ private boolean fSuppressError= true; // #4354
private Map fGlobalActions= new HashMap(10);
- private List fSelectionActions = new ArrayList(3);
+ private List fSelectionActions = new ArrayList(3);
private String[][] fContextTypes;
-
- private ContextTypeRegistry fContextTypeRegistry;
-
+
+ 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
*/
public EditTemplateDialog(Shell parent, Template template, boolean edit, boolean isNameModifiable, ContextTypeRegistry registry) {
super(parent);
-
+
setShellStyle(getShellStyle() | SWT.MAX | SWT.RESIZE);
-
+
String title= edit
? PreferencesMessages.getString("EditTemplateDialog.title.edit") //$NON-NLS-1$
: PreferencesMessages.getString("EditTemplateDialog.title.new"); //$NON-NLS-1$
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();
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);
}
-
+
/*
* @see net.sourceforge.phpdt.internal.ui.dialogs.StatusDialog#create()
*/
public void create() {
super.create();
- // update initial ok button to be disabled for new templates
+ // 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();
updateButtonsEnableState(status);
}
}
-
+
/*
* @see Dialog#createDialogArea(Composite)
*/
layout.numColumns= 2;
parent.setLayout(layout);
parent.setLayoutData(new GridData(GridData.FILL_BOTH));
-
+
ModifyListener listener= new ModifyListener() {
public void modifyText(ModifyEvent e) {
doTextWidgetChanged(e.widget);
}
};
-
+
if (fIsNameModifiable) {
- createLabel(parent, PreferencesMessages.getString("EditTemplateDialog.name")); //$NON-NLS-1$
-
+ createLabel(parent, PreferencesMessages.getString("EditTemplateDialog.name")); //$NON-NLS-1$
+
Composite composite= new Composite(parent, SWT.NONE);
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- layout= new GridLayout();
+ layout= new GridLayout();
layout.numColumns= 3;
layout.marginWidth= 0;
layout.marginHeight= 0;
composite.setLayout(layout);
-
+
fNameText= createText(composite);
fNameText.addFocusListener(new FocusListener() {
-
+
public void focusGained(FocusEvent e) {
}
-
+
public void focusLost(FocusEvent e) {
if (fSuppressError) {
fSuppressError= false;
}
}
});
-
- createLabel(composite, PreferencesMessages.getString("EditTemplateDialog.context")); //$NON-NLS-1$
+
+ 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]);
}
-
+
fContextCombo.addModifyListener(listener);
}
-
- createLabel(parent, PreferencesMessages.getString("EditTemplateDialog.description")); //$NON-NLS-1$
-
+
+ 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.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);
+
+ Label filler= new Label(parent, SWT.NONE);
filler.setLayoutData(new GridData());
-
+
Composite composite= new Composite(parent, SWT.NONE);
- layout= new GridLayout();
+ layout= new GridLayout();
layout.marginWidth= 0;
layout.marginHeight= 0;
- composite.setLayout(layout);
+ composite.setLayout(layout);
composite.setLayoutData(new GridData());
-
+
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) {}
applyDialogFont(parent);
return composite;
}
-
+
protected void doTextWidgetChanged(Widget w) {
if (w == fNameText) {
fSuppressError= false;
String name= fNameText.getText();
fTemplate.setName(name);
- updateButtons();
+ updateButtons();
} else if (w == fContextCombo) {
String name= fContextCombo.getText();
String contextId= getContextId(name);
} 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 fContextTypes[i][0];
}
}
return name;
updateUndoAction();
updateButtons();
- }
+ }
private static GridData getButtonGridData(Button button) {
GridData data= new GridData(GridData.FILL_HORIZONTAL);
data.heightHint= SWTUtil.getButtonHeightHint(button);
-
+
return data;
}
private static Text createText(Composite parent) {
Text text= new Text(parent, SWT.BORDER);
- text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
+ text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
return text;
}
// XXX workaround for bug 63313 - disabling prefix until fixed.
// viewer.setDocument(document, prefix.length(), document.getLength() - prefix.length());
viewer.setDocument(document);
-
+
Font font= JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT);
viewer.getTextWidget().setFont(font);
new JavaSourcePreviewerUpdater(viewer, configuration, store);
-
+
int nLines= document.getNumberOfLines();
if (nLines < 5) {
nLines= 5;
} else if (nLines > 12) {
- 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) {
if (event .getDocumentEvent() != null)
}
});
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
updateSelectionDependentActions();
}
handleVerifyKeyPressed(event);
}
});
-
+
return viewer;
}
-
+
private String getPrefix() {
String prefix;
int idx= getIndex(fTemplate.getContextTypeId());
if (event.stateMask != SWT.MOD1)
return;
-
+
switch (event.character) {
case ' ':
fPatternEditor.doOperation(ISourceViewer.CONTENTASSIST_PROPOSALS);
case 'z' - 'a' + 1:
fPatternEditor.doOperation(ITextOperationTarget.UNDO);
event.doit= false;
- break;
+ break;
}
}
fSelectionActions.add(ITextEditorActionConstants.CUT);
fSelectionActions.add(ITextEditorActionConstants.COPY);
fSelectionActions.add(ITextEditorActionConstants.PASTE);
-
+
// create context menu
MenuManager manager= new MenuManager(null, null);
manager.setRemoveAllWhenShown(true);
}
});
- StyledText text= fPatternEditor.getTextWidget();
+ 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.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));
protected void updateSelectionDependentActions() {
Iterator iterator= fSelectionActions.iterator();
while (iterator.hasNext())
- updateAction((String)iterator.next());
+ updateAction((String)iterator.next());
}
protected void updateUndoAction() {
}
private int getIndex(String contextid) {
-
+
if (contextid == null)
return -1;
-
+
for (int i= 0; i < fContextTypes.length; i++) {
if (contextid.equals(fContextTypes[i][0])) {
- return i;
+ return i;
}
}
return -1;
}
-
+
protected void okPressed() {
super.okPressed();
}
-
- private void updateButtons() {
+
+ private void updateButtons() {
StatusInfo status;
boolean valid= fNameText == null || fNameText.getText().trim().length() != 0;
status.setError(PreferencesMessages.getString("EditTemplateDialog.error.noname")); //$NON-NLS-1$
}
} else {
- status= fValidationStatus;
+ 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);
}