1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse.ui / src / net / sourceforge / phpdt / internal / ui / preferences / SpellingConfigurationBlock.java
diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/preferences/SpellingConfigurationBlock.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/preferences/SpellingConfigurationBlock.java
deleted file mode 100644 (file)
index f676e4f..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2003 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.File;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import net.sourceforge.phpdt.core.IJavaProject;
-import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
-import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
-import net.sourceforge.phpdt.internal.ui.text.spelling.SpellCheckEngine;
-import net.sourceforge.phpdt.internal.ui.util.PixelConverter;
-import net.sourceforge.phpdt.internal.ui.util.SWTUtil;
-import net.sourceforge.phpdt.internal.ui.wizards.IStatusChangeListener;
-import net.sourceforge.phpdt.ui.PreferenceConstants;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-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.FileDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * Options configuration block for spell-check related settings.
- * 
- * @since 3.0
- */
-public class SpellingConfigurationBlock extends OptionsConfigurationBlock {
-
-       /** Preference keys for the preferences in this block */
-       private static final String PREF_SPELLING_CHECK_SPELLING = PreferenceConstants.SPELLING_CHECK_SPELLING;
-
-       private static final String PREF_SPELLING_IGNORE_DIGITS = PreferenceConstants.SPELLING_IGNORE_DIGITS;
-
-       private static final String PREF_SPELLING_IGNORE_MIXED = PreferenceConstants.SPELLING_IGNORE_MIXED;
-
-       private static final String PREF_SPELLING_IGNORE_SENTENCE = PreferenceConstants.SPELLING_IGNORE_SENTENCE;
-
-       private static final String PREF_SPELLING_IGNORE_UPPER = PreferenceConstants.SPELLING_IGNORE_UPPER;
-
-       private static final String PREF_SPELLING_IGNORE_URLS = PreferenceConstants.SPELLING_IGNORE_URLS;
-
-       private static final String PREF_SPELLING_LOCALE = PreferenceConstants.SPELLING_LOCALE;
-
-       private static final String PREF_SPELLING_PROPOSAL_THRESHOLD = PreferenceConstants.SPELLING_PROPOSAL_THRESHOLD;
-
-       private static final String PREF_SPELLING_USER_DICTIONARY = PreferenceConstants.SPELLING_USER_DICTIONARY;
-
-       private static final String PREF_SPELLING_ENABLE_CONTENTASSIST = PreferenceConstants.SPELLING_ENABLE_CONTENTASSIST;
-
-       /**
-        * Creates a selection dependency between a master and a slave control.
-        * 
-        * @param master
-        *            The master button that controls the state of the slave
-        * @param slave
-        *            The slave control that is enabled only if the master is
-        *            selected
-        */
-       protected static void createSelectionDependency(final Button master,
-                       final Control slave) {
-
-               master.addSelectionListener(new SelectionListener() {
-
-                       public void widgetDefaultSelected(SelectionEvent event) {
-                               // Do nothing
-                       }
-
-                       public void widgetSelected(SelectionEvent event) {
-                               slave.setEnabled(master.getSelection());
-                       }
-               });
-               slave.setEnabled(master.getSelection());
-       }
-
-       /**
-        * Returns the locale codes for the locale list.
-        * 
-        * @param locales
-        *            The list of locales
-        * @return Array of locale codes for the list
-        */
-       protected static String[] getDictionaryCodes(final Set locales) {
-
-               int index = 0;
-               Locale locale = null;
-
-               final String[] codes = new String[locales.size()];
-               for (final Iterator iterator = locales.iterator(); iterator.hasNext();) {
-
-                       locale = (Locale) iterator.next();
-                       codes[index++] = locale.toString();
-               }
-               return codes;
-       }
-
-       /**
-        * Returns the display labels for the locale list.
-        * 
-        * @param locales
-        *            The list of locales
-        * @return Array of display labels for the list
-        */
-       protected static String[] getDictionaryLabels(final Set locales) {
-
-               int index = 0;
-               Locale locale = null;
-
-               final String[] labels = new String[locales.size()];
-               for (final Iterator iterator = locales.iterator(); iterator.hasNext();) {
-
-                       locale = (Locale) iterator.next();
-                       labels[index++] = locale.getDisplayName(SpellCheckEngine
-                                       .getDefaultLocale());
-               }
-               return labels;
-       }
-
-       /**
-        * Validates that the file with the specified absolute path exists and can
-        * be opened.
-        * 
-        * @param path
-        *            The path of the file to validate
-        * @return <code>true</code> iff the file exists and can be opened,
-        *         <code>false</code> otherwise
-        */
-       protected static IStatus validateAbsoluteFilePath(final String path) {
-
-               final StatusInfo status = new StatusInfo();
-               if (path.length() > 0) {
-
-                       final File file = new File(path);
-                       if (!file.isFile() || !file.isAbsolute() || !file.exists()
-                                       || !file.canRead() || !file.canWrite())
-                               status.setError(PreferencesMessages
-                                               .getString("SpellingPreferencePage.dictionary.error")); //$NON-NLS-1$
-
-               }
-               return status;
-       }
-
-       /**
-        * Validates that the specified locale is available.
-        * 
-        * @param locale
-        *            The locale to validate
-        * @return The status of the validation
-        */
-       protected static IStatus validateLocale(final String locale) {
-
-               final StatusInfo status = new StatusInfo(IStatus.ERROR,
-                               PreferencesMessages
-                                               .getString("SpellingPreferencePage.locale.error")); //$NON-NLS-1$
-               final Set locales = SpellCheckEngine.getAvailableLocales();
-
-               Locale current = null;
-               for (final Iterator iterator = locales.iterator(); iterator.hasNext();) {
-
-                       current = (Locale) iterator.next();
-                       if (current.toString().equals(locale))
-                               return new StatusInfo();
-               }
-               return status;
-       }
-
-       /**
-        * Validates that the specified number is positive.
-        * 
-        * @param number
-        *            The number to validate
-        * @return The status of the validation
-        */
-       protected static IStatus validatePositiveNumber(final String number) {
-
-               final StatusInfo status = new StatusInfo();
-               if (number.length() == 0) {
-                       status.setError(PreferencesMessages
-                                       .getString("SpellingPreferencePage.empty_threshold")); //$NON-NLS-1$
-               } else {
-                       try {
-                               final int value = Integer.parseInt(number);
-                               if (value < 0) {
-                                       status
-                                                       .setError(PreferencesMessages
-                                                                       .getFormattedString(
-                                                                                       "SpellingPreferencePage.invalid_threshold", number)); //$NON-NLS-1$
-                               }
-                       } catch (NumberFormatException exception) {
-                               status.setError(PreferencesMessages.getFormattedString(
-                                               "SpellingPreferencePage.invalid_threshold", number)); //$NON-NLS-1$
-                       }
-               }
-               return status;
-       }
-
-       /** The dictionary path field */
-       private Text fDictionaryPath = null;
-
-       /** The status for the workspace dictionary file */
-       private IStatus fFileStatus = new StatusInfo();
-
-       /** The status for the platform locale */
-       private IStatus fLocaleStatus = new StatusInfo();
-
-       /** The status for the proposal threshold */
-       private IStatus fThresholdStatus = new StatusInfo();
-
-       /**
-        * Creates a new spelling configuration block.
-        * 
-        * @param context
-        *            The status change listener
-        * @param project
-        *            The Java project
-        */
-       public SpellingConfigurationBlock(final IStatusChangeListener context,
-                       final IJavaProject project) {
-               super(context, project, getAllKeys());
-
-               IStatus status = validateAbsoluteFilePath((String) fWorkingValues
-                               .get(PREF_SPELLING_USER_DICTIONARY));
-               if (status.getSeverity() != IStatus.OK)
-                       fWorkingValues.put(PREF_SPELLING_USER_DICTIONARY, ""); //$NON-NLS-1$
-
-               status = validateLocale((String) fWorkingValues
-                               .get(PREF_SPELLING_LOCALE));
-               if (status.getSeverity() != IStatus.OK)
-                       fWorkingValues.put(PREF_SPELLING_LOCALE, SpellCheckEngine
-                                       .getDefaultLocale().toString());
-       }
-
-       protected Combo addComboBox(Composite parent, String label, String key,
-                       String[] values, String[] valueLabels, int indent) {
-               ControlData data = new ControlData(key, values);
-
-               GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-               gd.horizontalIndent = indent;
-
-               Label labelControl = new Label(parent, SWT.LEFT | SWT.WRAP);
-               labelControl.setText(label);
-               labelControl.setLayoutData(gd);
-
-               Combo comboBox = new Combo(parent, SWT.READ_ONLY);
-               comboBox.setItems(valueLabels);
-               comboBox.setData(data);
-               gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
-               gd.horizontalSpan = 2;
-               comboBox.setLayoutData(gd);
-               comboBox.addSelectionListener(getSelectionListener());
-
-               fLabels.put(comboBox, labelControl);
-
-               String currValue = (String) fWorkingValues.get(key);
-               comboBox.select(data.getSelection(currValue));
-
-               fComboBoxes.add(comboBox);
-               return comboBox;
-       }
-
-       /*
-        * @see net.sourceforge.phpdt.internal.ui.preferences.OptionsConfigurationBlock#createContents(org.eclipse.swt.widgets.Composite)
-        */
-       protected Control createContents(final Composite parent) {
-
-               Composite composite = new Composite(parent, SWT.NONE);
-               GridLayout layout = new GridLayout();
-               layout.numColumns = 1;
-               composite.setLayout(layout);
-
-               final PixelConverter converter = new PixelConverter(parent);
-
-               layout = new GridLayout();
-               layout.numColumns = 3;
-
-               final String[] trueFalse = new String[] { IPreferenceStore.TRUE,
-                               IPreferenceStore.FALSE };
-
-               Group user = new Group(composite, SWT.NONE);
-               user.setText(PreferencesMessages
-                               .getString("SpellingPreferencePage.preferences.user")); //$NON-NLS-1$
-               user.setLayout(new GridLayout());
-               user.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-               String label = PreferencesMessages
-                               .getString("SpellingPreferencePage.enable.label"); //$NON-NLS-1$
-               final Button master = addCheckBox(user, label,
-                               PREF_SPELLING_CHECK_SPELLING, trueFalse, 0);
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.ignore.digits.label"); //$NON-NLS-1$
-               Control slave = addCheckBox(user, label, PREF_SPELLING_IGNORE_DIGITS,
-                               trueFalse, 20);
-               createSelectionDependency(master, slave);
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.ignore.mixed.label"); //$NON-NLS-1$
-               slave = addCheckBox(user, label, PREF_SPELLING_IGNORE_MIXED, trueFalse,
-                               20);
-               createSelectionDependency(master, slave);
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.ignore.sentence.label"); //$NON-NLS-1$
-               slave = addCheckBox(user, label, PREF_SPELLING_IGNORE_SENTENCE,
-                               trueFalse, 20);
-               createSelectionDependency(master, slave);
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.ignore.upper.label"); //$NON-NLS-1$
-               slave = addCheckBox(user, label, PREF_SPELLING_IGNORE_UPPER, trueFalse,
-                               20);
-               createSelectionDependency(master, slave);
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.ignore.url.label"); //$NON-NLS-1$
-               slave = addCheckBox(user, label, PREF_SPELLING_IGNORE_URLS, trueFalse,
-                               20);
-               createSelectionDependency(master, slave);
-
-               final Group engine = new Group(composite, SWT.NONE);
-               engine.setText(PreferencesMessages
-                               .getString("SpellingPreferencePage.preferences.engine")); //$NON-NLS-1$
-               layout = new GridLayout();
-               layout.numColumns = 4;
-               engine.setLayout(layout);
-               engine.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.dictionary.label"); //$NON-NLS-1$
-               final Set locales = SpellCheckEngine.getAvailableLocales();
-
-               Combo combo = addComboBox(engine, label, PREF_SPELLING_LOCALE,
-                               getDictionaryCodes(locales), getDictionaryLabels(locales), 0);
-               combo.setEnabled(locales.size() > 1);
-
-               new Label(engine, SWT.NONE); // placeholder
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.workspace.dictionary.label"); //$NON-NLS-1$
-               fDictionaryPath = addTextField(engine, label,
-                               PREF_SPELLING_USER_DICTIONARY, 0, 0);
-
-               Button button = new Button(engine, SWT.PUSH);
-               button.setText(PreferencesMessages
-                               .getString("SpellingPreferencePage.browse.label")); //$NON-NLS-1$
-               button.addSelectionListener(new SelectionAdapter() {
-
-                       public void widgetSelected(final SelectionEvent event) {
-                               handleBrowseButtonSelected();
-                       }
-               });
-               button.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
-               SWTUtil.setButtonDimensionHint(button);
-
-               layout = new GridLayout();
-               layout.numColumns = 3;
-
-               Group advanced = new Group(composite, SWT.NONE);
-               advanced.setText(PreferencesMessages
-                               .getString("SpellingPreferencePage.preferences.advanced")); //$NON-NLS-1$
-               layout = new GridLayout();
-               layout.numColumns = 3;
-               advanced.setLayout(layout);
-               advanced.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.proposals.threshold"); //$NON-NLS-1$
-               Text text = addTextField(advanced, label,
-                               PREF_SPELLING_PROPOSAL_THRESHOLD, 0, 0);
-               text.setTextLimit(3);
-               GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
-               data.widthHint = converter.convertWidthInCharsToPixels(4);
-               text.setLayoutData(data);
-
-               label = PreferencesMessages
-                               .getString("SpellingPreferencePage.enable.contentassist.label"); //$NON-NLS-1$
-               addCheckBox(advanced, label, PREF_SPELLING_ENABLE_CONTENTASSIST,
-                               trueFalse, 0);
-
-               return composite;
-       }
-
-       private static String[] getAllKeys() {
-               return new String[] { PREF_SPELLING_USER_DICTIONARY,
-                               PREF_SPELLING_CHECK_SPELLING, PREF_SPELLING_IGNORE_DIGITS,
-                               PREF_SPELLING_IGNORE_MIXED, PREF_SPELLING_IGNORE_SENTENCE,
-                               PREF_SPELLING_IGNORE_UPPER, PREF_SPELLING_IGNORE_URLS,
-                               PREF_SPELLING_LOCALE, PREF_SPELLING_PROPOSAL_THRESHOLD,
-                               PREF_SPELLING_ENABLE_CONTENTASSIST };
-       }
-
-       /*
-        * @see net.sourceforge.phpdt.internal.ui.preferences.OptionsConfigurationBlock#getDefaultOptions()
-        */
-       protected Map getDefaultOptions() {
-
-               final String[] keys = fAllKeys;
-               final Map options = new HashMap();
-               final IPreferenceStore store = PreferenceConstants.getPreferenceStore();
-
-               for (int index = 0; index < keys.length; index++)
-                       options.put(keys[index], store.getDefaultString(keys[index]));
-
-               return options;
-       }
-
-       /*
-        * @see net.sourceforge.phpdt.internal.ui.preferences.OptionsConfigurationBlock#getFullBuildDialogStrings(boolean)
-        */
-       protected final String[] getFullBuildDialogStrings(final boolean workspace) {
-               return null;
-       }
-
-       /*
-        * @see net.sourceforge.phpdt.internal.ui.preferences.OptionsConfigurationBlock#getOptions(boolean)
-        */
-       protected Map getOptions(final boolean inherit) {
-
-               final String[] keys = fAllKeys;
-               final Map options = new HashMap();
-               final IPreferenceStore store = PreferenceConstants.getPreferenceStore();
-
-               for (int index = 0; index < keys.length; index++)
-                       options.put(keys[index], store.getString(keys[index]));
-
-               return options;
-       }
-
-       /**
-        * Handles selections of the browse button.
-        */
-       protected void handleBrowseButtonSelected() {
-
-               final FileDialog dialog = new FileDialog(fDictionaryPath.getShell(),
-                               SWT.OPEN);
-               dialog.setText(PreferencesMessages
-                               .getString("SpellingPreferencePage.filedialog.title")); //$NON-NLS-1$
-               dialog
-                               .setFilterExtensions(new String[] {
-                                               PreferencesMessages
-                                                               .getString("SpellingPreferencePage.filter.dictionary.extension"), PreferencesMessages.getString("SpellingPreferencePage.filter.all.extension") }); //$NON-NLS-1$ //$NON-NLS-2$
-               dialog
-                               .setFilterNames(new String[] {
-                                               PreferencesMessages
-                                                               .getString("SpellingPreferencePage.filter.dictionary.label"), PreferencesMessages.getString("SpellingPreferencePage.filter.all.label") }); //$NON-NLS-1$ //$NON-NLS-2$
-
-               final String path = dialog.open();
-               if (path != null)
-                       fDictionaryPath.setText(path);
-       }
-
-       /*
-        * @see net.sourceforge.phpdt.internal.ui.preferences.OptionsConfigurationBlock#setOptions(java.util.Map)
-        */
-       protected void setOptions(final Map options) {
-
-               final String[] keys = fAllKeys;
-               final IPreferenceStore store = PreferenceConstants.getPreferenceStore();
-
-               for (int index = 0; index < keys.length; index++)
-                       store.setValue(keys[index], (String) fWorkingValues
-                                       .get(keys[index]));
-       }
-
-       /*
-        * @see net.sourceforge.phpdt.internal.ui.preferences.OptionsConfigurationBlock#validateSettings(java.lang.String,java.lang.String)
-        */
-       protected void validateSettings(final String key, final String value) {
-
-               if (key == null || PREF_SPELLING_PROPOSAL_THRESHOLD.equals(key))
-                       fThresholdStatus = validatePositiveNumber((String) fWorkingValues
-                                       .get(PREF_SPELLING_PROPOSAL_THRESHOLD));
-
-               if (key == null || PREF_SPELLING_USER_DICTIONARY.equals(key))
-                       fFileStatus = validateAbsoluteFilePath((String) fWorkingValues
-                                       .get(PREF_SPELLING_USER_DICTIONARY));
-
-               if (key == null || PREF_SPELLING_LOCALE.equals(key))
-                       fLocaleStatus = validateLocale((String) fWorkingValues
-                                       .get(PREF_SPELLING_LOCALE));
-
-               fContext.statusChanged(StatusUtil.getMostSevere(new IStatus[] {
-                               fThresholdStatus, fFileStatus, fLocaleStatus }));
-       }
-}