X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/SpellingConfigurationBlock.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/SpellingConfigurationBlock.java deleted file mode 100644 index f676e4f..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/SpellingConfigurationBlock.java +++ /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 true iff the file exists and can be opened, - * false 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 })); - } -}