--- /dev/null
+/*******************************************************************************
+ * 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.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
+import net.sourceforge.phpdt.internal.ui.util.PixelConverter;
+import net.sourceforge.phpdt.ui.PreferenceConstants;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.jface.preference.PreferencePage;
+//incastrix
+//import org.eclipse.jface.text.Assert;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+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.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * Configures the code assist preferences.
+ *
+ * @since 3.0
+ */
+class CodeAssistConfigurationBlock implements IPreferenceConfigurationBlock {
+
+ private OverlayPreferenceStore fStore;
+
+ private PreferencePage fMainPreferencePage;
+
+ private List fContentAssistColorList;
+
+ private ColorEditor fContentAssistColorEditor;
+
+ private Control fAutoInsertDelayText;
+
+ private Control fAutoInsertJavaTriggerText;
+
+ private Control fAutoInsertJavaDocTriggerText;
+
+ private Control fAutoInsertHTMLTriggerText;
+
+ private Label fAutoInsertDelayLabel;
+
+ private Label fAutoInsertJavaTriggerLabel;
+
+ private Label fAutoInsertJavaDocTriggerLabel;
+
+ private Label fAutoInsertHTMLTriggerLabel;
+
+ // private Button fCompletionInsertsRadioButton;
+ // private Button fCompletionOverwritesRadioButton;
+ /**
+ * List of master/slave listeners when there's a dependency.
+ *
+ * @see #createDependency(Button, String, Control)
+ * @since 3.0
+ */
+ private ArrayList fMasterSlaveListeners = new ArrayList();
+
+ private final String[][] fContentAssistColorListModel = new String[][] {
+ {
+ PreferencesMessages
+ .getString("JavaEditorPreferencePage.backgroundForCompletionProposals"), PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND }, //$NON-NLS-1$
+ {
+ PreferencesMessages
+ .getString("JavaEditorPreferencePage.foregroundForCompletionProposals"), PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND }, //$NON-NLS-1$
+ // {PreferencesMessages.getString("JavaEditorPreferencePage.backgroundForMethodParameters"),
+ // PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND },
+ // //$NON-NLS-1$
+ // {PreferencesMessages.getString("JavaEditorPreferencePage.foregroundForMethodParameters"),
+ // PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND },
+ // //$NON-NLS-1$
+ // {PreferencesMessages.getString("JavaEditorPreferencePage.backgroundForCompletionReplacement"),
+ // PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND },
+ // //$NON-NLS-1$
+ // {PreferencesMessages.getString("JavaEditorPreferencePage.foregroundForCompletionReplacement"),
+ // PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND }
+ // //$NON-NLS-1$
+ };
+
+ private Map fCheckBoxes = new HashMap();
+
+ private SelectionListener fCheckBoxListener = new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ Button button = (Button) e.widget;
+ fStore.setValue((String) fCheckBoxes.get(button), button
+ .getSelection());
+ }
+ };
+
+ private Map fTextFields = new HashMap();
+
+ private ModifyListener fTextFieldListener = new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ Text text = (Text) e.widget;
+ fStore.setValue((String) fTextFields.get(text), text.getText());
+ }
+ };
+
+ private ArrayList fNumberFields = new ArrayList();
+
+ private ModifyListener fNumberFieldListener = new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ numberFieldChanged((Text) e.widget);
+ }
+ };
+
+ public CodeAssistConfigurationBlock(PreferencePage mainPreferencePage,
+ OverlayPreferenceStore store) {
+ Assert.isNotNull(mainPreferencePage);
+ Assert.isNotNull(store);
+ fStore = store;
+ fStore.addKeys(createOverlayStoreKeys());
+ fMainPreferencePage = mainPreferencePage;
+ }
+
+ private OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys() {
+
+ ArrayList overlayKeys = new ArrayList();
+
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.INT,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_AUTOINSERT));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA));
+ overlayKeys
+ .add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.STRING,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_HTML));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_ORDER_PROPOSALS));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_CASE_SENSITIVITY));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_ADDIMPORT));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_INSERT_COMPLETION));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS));
+ overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+ OverlayPreferenceStore.BOOLEAN,
+ PreferenceConstants.CODEASSIST_PREFIX_COMPLETION));
+
+ OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys
+ .size()];
+ overlayKeys.toArray(keys);
+ return keys;
+ }
+
+ /**
+ * Creates page for hover preferences.
+ *
+ * @param parent
+ * the parent composite
+ * @return the control for the preference page
+ */
+ public Control createControl(Composite parent) {
+
+ PixelConverter pixelConverter = new PixelConverter(parent);
+
+ Composite contentAssistComposite = new Composite(parent, SWT.NONE);
+ contentAssistComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ contentAssistComposite.setLayout(layout);
+
+ // addCompletionRadioButtons(contentAssistComposite);
+
+ String label;
+ // label=
+ // PreferencesMessages.getString("JavaEditorPreferencePage.insertSingleProposalsAutomatically");
+ // //$NON-NLS-1$
+ // addCheckBox(contentAssistComposite, label,
+ // PreferenceConstants.CODEASSIST_AUTOINSERT, 0);
+ //
+ // label=
+ // PreferencesMessages.getString("JavaEditorPreferencePage.completePrefixes");
+ // //$NON-NLS-1$
+ // addCheckBox(contentAssistComposite, label,
+ // PreferenceConstants.CODEASSIST_PREFIX_COMPLETION, 0);
+ //
+ // label=
+ // PreferencesMessages.getString("JavaEditorPreferencePage.showOnlyProposalsVisibleInTheInvocationContext");
+ // //$NON-NLS-1$
+ // addCheckBox(contentAssistComposite, label,
+ // PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS, 0);
+ //
+ // label=
+ // PreferencesMessages.getString("JavaEditorPreferencePage.presentProposalsInAlphabeticalOrder");
+ // //$NON-NLS-1$
+ // addCheckBox(contentAssistComposite, label,
+ // PreferenceConstants.CODEASSIST_ORDER_PROPOSALS, 0);
+ //
+ // label=
+ // PreferencesMessages.getString("JavaEditorPreferencePage.automaticallyAddImportInsteadOfQualifiedName");
+ // //$NON-NLS-1$
+ // addCheckBox(contentAssistComposite, label,
+ // PreferenceConstants.CODEASSIST_ADDIMPORT, 0);
+ //
+ // label=
+ // PreferencesMessages.getString("JavaEditorPreferencePage.fillArgumentNamesOnMethodCompletion");
+ // //$NON-NLS-1$
+ // Button master= addCheckBox(contentAssistComposite, label,
+ // PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES, 0);
+ //
+ // label=
+ // PreferencesMessages.getString("JavaEditorPreferencePage.guessArgumentNamesOnMethodCompletion");
+ // //$NON-NLS-1$
+ // Button slave= addCheckBox(contentAssistComposite, label,
+ // PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS, 0);
+ // createDependency(master,
+ // PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES, slave);
+ //
+ label = PreferencesMessages
+ .getString("JavaEditorPreferencePage.enableAutoActivation"); //$NON-NLS-1$
+ final Button autoactivation = addCheckBox(contentAssistComposite,
+ label, PreferenceConstants.CODEASSIST_AUTOACTIVATION, 0);
+ autoactivation.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ updateAutoactivationControls();
+ }
+ });
+
+ Control[] labelledTextField;
+ label = PreferencesMessages
+ .getString("JavaEditorPreferencePage.autoActivationDelay"); //$NON-NLS-1$
+ labelledTextField = addLabelledTextField(contentAssistComposite, label,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY, 4, 0, true);
+ fAutoInsertDelayLabel = getLabelControl(labelledTextField);
+ fAutoInsertDelayText = getTextControl(labelledTextField);
+
+ label = PreferencesMessages
+ .getString("JavaEditorPreferencePage.autoActivationTriggersForJava"); //$NON-NLS-1$
+ labelledTextField = addLabelledTextField(contentAssistComposite, label,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA, 4,
+ 0, false);
+ fAutoInsertJavaTriggerLabel = getLabelControl(labelledTextField);
+ fAutoInsertJavaTriggerText = getTextControl(labelledTextField);
+
+ label = PreferencesMessages
+ .getString("JavaEditorPreferencePage.autoActivationTriggersForJavaDoc"); //$NON-NLS-1$
+ labelledTextField = addLabelledTextField(contentAssistComposite, label,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC,
+ 4, 0, false);
+ fAutoInsertJavaDocTriggerLabel = getLabelControl(labelledTextField);
+ fAutoInsertJavaDocTriggerText = getTextControl(labelledTextField);
+
+ label = PreferencesMessages
+ .getString("JavaEditorPreferencePage.autoActivationTriggersForHTML"); //$NON-NLS-1$
+ labelledTextField = addLabelledTextField(contentAssistComposite, label,
+ PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_HTML, 4,
+ 0, false);
+ fAutoInsertHTMLTriggerLabel = getLabelControl(labelledTextField);
+ fAutoInsertHTMLTriggerText = getTextControl(labelledTextField);
+
+ Label l = new Label(contentAssistComposite, SWT.LEFT);
+ l.setText(PreferencesMessages
+ .getString("JavaEditorPreferencePage.codeAssist.colorOptions")); //$NON-NLS-1$
+ GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ gd.horizontalSpan = 2;
+ l.setLayoutData(gd);
+
+ Composite editorComposite = new Composite(contentAssistComposite,
+ SWT.NONE);
+ layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ editorComposite.setLayout(layout);
+ gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL
+ | GridData.FILL_VERTICAL);
+ gd.horizontalSpan = 2;
+ editorComposite.setLayoutData(gd);
+
+ fContentAssistColorList = new List(editorComposite, SWT.SINGLE
+ | SWT.V_SCROLL | SWT.BORDER);
+ gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
+ | GridData.FILL_HORIZONTAL);
+ gd.heightHint = pixelConverter.convertHeightInCharsToPixels(8);
+ fContentAssistColorList.setLayoutData(gd);
+
+ Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
+ layout = new GridLayout();
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.numColumns = 2;
+ stylesComposite.setLayout(layout);
+ stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ l = new Label(stylesComposite, SWT.LEFT);
+ l.setText(PreferencesMessages
+ .getString("JavaEditorPreferencePage.codeAssist.color")); //$NON-NLS-1$
+ gd = new GridData();
+ gd.horizontalAlignment = GridData.BEGINNING;
+ l.setLayoutData(gd);
+
+ fContentAssistColorEditor = new ColorEditor(stylesComposite);
+ Button colorButton = fContentAssistColorEditor.getButton();
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalAlignment = GridData.BEGINNING;
+ colorButton.setLayoutData(gd);
+
+ fContentAssistColorList.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // do nothing
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ handleContentAssistColorListSelection();
+ }
+ });
+ colorButton.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // do nothing
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ int i = fContentAssistColorList.getSelectionIndex();
+ String key = fContentAssistColorListModel[i][1];
+
+ PreferenceConverter.setValue(fStore, key,
+ fContentAssistColorEditor.getColorValue());
+ }
+ });
+
+ return contentAssistComposite;
+ }
+
+// private void createDependency(final Button master, String masterKey,
+// final Control slave) {
+// indent(slave);
+// boolean masterState = fStore.getBoolean(masterKey);
+// slave.setEnabled(masterState);
+// SelectionListener listener = new SelectionListener() {
+// public void widgetSelected(SelectionEvent e) {
+// slave.setEnabled(master.getSelection());
+// }
+//
+// public void widgetDefaultSelected(SelectionEvent e) {
+// }
+// };
+// master.addSelectionListener(listener);
+// fMasterSlaveListeners.add(listener);
+// }
+
+// private static void indent(Control control) {
+// GridData gridData = new GridData();
+// gridData.horizontalIndent = 20;
+// control.setLayoutData(gridData);
+// }
+
+ private static Text getTextControl(Control[] labelledTextField) {
+ return (Text) labelledTextField[1];
+ }
+
+ private static Label getLabelControl(Control[] labelledTextField) {
+ return (Label) labelledTextField[0];
+ }
+
+ /**
+ * Returns an array of size 2: - first element is of type <code>Label</code> -
+ * second element is of type <code>Text</code> Use
+ * <code>getLabelControl</code> and <code>getTextControl</code> to get
+ * the 2 controls.
+ *
+ * @param composite
+ * the parent composite
+ * @param label
+ * the text field's label
+ * @param key
+ * the preference key
+ * @param textLimit
+ * the text limit
+ * @param indentation
+ * the field's indentation
+ * @param isNumber
+ * <code>true</code> iff this text field is used to e4dit a
+ * number
+ * @return
+ */
+ private Control[] addLabelledTextField(Composite composite, String label,
+ String key, int textLimit, int indentation, boolean isNumber) {
+
+ PixelConverter pixelConverter = new PixelConverter(composite);
+
+ Label labelControl = new Label(composite, SWT.NONE);
+ labelControl.setText(label);
+ GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ gd.horizontalIndent = indentation;
+ labelControl.setLayoutData(gd);
+
+ Text textControl = new Text(composite, SWT.BORDER | SWT.SINGLE);
+ gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ gd.widthHint = pixelConverter
+ .convertWidthInCharsToPixels(textLimit + 1);
+ textControl.setLayoutData(gd);
+ textControl.setTextLimit(textLimit);
+ fTextFields.put(textControl, key);
+ if (isNumber) {
+ fNumberFields.add(textControl);
+ textControl.addModifyListener(fNumberFieldListener);
+ } else {
+ textControl.addModifyListener(fTextFieldListener);
+ }
+
+ return new Control[] { labelControl, textControl };
+ }
+
+// private void addCompletionRadioButtons(Composite contentAssistComposite) {
+// Composite completionComposite = new Composite(contentAssistComposite,
+// SWT.NONE);
+// GridData ccgd = new GridData();
+// ccgd.horizontalSpan = 2;
+// completionComposite.setLayoutData(ccgd);
+// GridLayout ccgl = new GridLayout();
+// ccgl.marginWidth = 0;
+// ccgl.numColumns = 2;
+// completionComposite.setLayout(ccgl);
+//
+// // SelectionListener completionSelectionListener= new SelectionAdapter()
+// // {
+// // public void widgetSelected(SelectionEvent e) {
+// // boolean insert= fCompletionInsertsRadioButton.getSelection();
+// // fStore.setValue(PreferenceConstants.CODEASSIST_INSERT_COMPLETION,
+// // insert);
+// // }
+// // };
+// //
+// // fCompletionInsertsRadioButton= new Button(completionComposite,
+// // SWT.RADIO | SWT.LEFT);
+// // fCompletionInsertsRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionInserts"));
+// // //$NON-NLS-1$
+// // fCompletionInsertsRadioButton.setLayoutData(new GridData());
+// // fCompletionInsertsRadioButton.addSelectionListener(completionSelectionListener);
+// //
+// // fCompletionOverwritesRadioButton= new Button(completionComposite,
+// // SWT.RADIO | SWT.LEFT);
+// // fCompletionOverwritesRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionOverwrites"));
+// // //$NON-NLS-1$
+// // fCompletionOverwritesRadioButton.setLayoutData(new GridData());
+// // fCompletionOverwritesRadioButton.addSelectionListener(completionSelectionListener);
+// }
+
+ public void initialize() {
+ initializeFields();
+
+ for (int i = 0; i < fContentAssistColorListModel.length; i++)
+ fContentAssistColorList.add(fContentAssistColorListModel[i][0]);
+ fContentAssistColorList.getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (fContentAssistColorList != null
+ && !fContentAssistColorList.isDisposed()) {
+ fContentAssistColorList.select(0);
+ handleContentAssistColorListSelection();
+ }
+ }
+ });
+
+ }
+
+ void initializeFields() {
+ Iterator e = fCheckBoxes.keySet().iterator();
+ while (e.hasNext()) {
+ Button b = (Button) e.next();
+ String key = (String) fCheckBoxes.get(b);
+ b.setSelection(fStore.getBoolean(key));
+ }
+
+ e = fTextFields.keySet().iterator();
+ while (e.hasNext()) {
+ Text t = (Text) e.next();
+ String key = (String) fTextFields.get(t);
+ t.setText(fStore.getString(key));
+ }
+
+ // boolean completionInserts=
+ // fStore.getBoolean(PreferenceConstants.CODEASSIST_INSERT_COMPLETION);
+ // fCompletionInsertsRadioButton.setSelection(completionInserts);
+ // fCompletionOverwritesRadioButton.setSelection(! completionInserts);
+
+ updateAutoactivationControls();
+
+ updateStatus(validatePositiveNumber("0")); //$NON-NLS-1$
+
+ // Update slaves
+ Iterator iter = fMasterSlaveListeners.iterator();
+ while (iter.hasNext()) {
+ SelectionListener listener = (SelectionListener) iter.next();
+ listener.widgetSelected(null);
+ }
+ }
+
+ private void updateAutoactivationControls() {
+ boolean autoactivation = fStore
+ .getBoolean(PreferenceConstants.CODEASSIST_AUTOACTIVATION);
+ fAutoInsertDelayText.setEnabled(autoactivation);
+ fAutoInsertDelayLabel.setEnabled(autoactivation);
+
+ fAutoInsertJavaTriggerText.setEnabled(autoactivation);
+ fAutoInsertJavaTriggerLabel.setEnabled(autoactivation);
+
+ fAutoInsertJavaDocTriggerText.setEnabled(autoactivation);
+ fAutoInsertJavaDocTriggerLabel.setEnabled(autoactivation);
+
+ fAutoInsertHTMLTriggerText.setEnabled(autoactivation);
+ fAutoInsertHTMLTriggerLabel.setEnabled(autoactivation);
+ }
+
+ public void performOk() {
+ }
+
+ public void performDefaults() {
+ handleContentAssistColorListSelection();
+ initializeFields();
+ }
+
+ private void handleContentAssistColorListSelection() {
+ int i = fContentAssistColorList.getSelectionIndex();
+ String key = fContentAssistColorListModel[i][1];
+ RGB rgb = PreferenceConverter.getColor(fStore, key);
+ fContentAssistColorEditor.setColorValue(rgb);
+ }
+
+ private void numberFieldChanged(Text textControl) {
+ String number = textControl.getText();
+ IStatus status = validatePositiveNumber(number);
+ if (!status.matches(IStatus.ERROR))
+ fStore.setValue((String) fTextFields.get(textControl), number);
+ updateStatus(status);
+ }
+
+ private IStatus validatePositiveNumber(String number) {
+ StatusInfo status = new StatusInfo();
+ if (number.length() == 0) {
+ status.setError(PreferencesMessages
+ .getString("JavaEditorPreferencePage.empty_input")); //$NON-NLS-1$
+ } else {
+ try {
+ int value = Integer.parseInt(number);
+ if (value < 0)
+ status.setError(PreferencesMessages.getFormattedString(
+ "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
+ } catch (NumberFormatException e) {
+ status.setError(PreferencesMessages.getFormattedString(
+ "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
+ }
+ }
+ return status;
+ }
+
+ private void updateStatus(IStatus status) {
+ fMainPreferencePage.setValid(status.isOK());
+ StatusUtil.applyToStatusLine(fMainPreferencePage, status);
+ }
+
+ private Button addCheckBox(Composite parent, String label, String key,
+ int indentation) {
+ Button checkBox = new Button(parent, SWT.CHECK);
+ checkBox.setText(label);
+
+ GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+ gd.horizontalIndent = indentation;
+ gd.horizontalSpan = 2;
+ checkBox.setLayoutData(gd);
+ checkBox.addSelectionListener(fCheckBoxListener);
+
+ fCheckBoxes.put(checkBox, key);
+
+ return checkBox;
+ }
+
+ /*
+ * @see DialogPage#dispose()
+ */
+ public void dispose() {
+ // nothing to dispose
+ }
+}