diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java')
-rw-r--r-- | jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java | 979 |
1 files changed, 0 insertions, 979 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java b/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java deleted file mode 100644 index f26a66055..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.ui/src/org/eclipse/jst/jsf/ui/internal/validation/OptionsConfigurationBlock.java +++ /dev/null @@ -1,979 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2006 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * Cameron Bateman/Oracle - adapted for use in JSF validation tooling - *******************************************************************************/ -package org.eclipse.jst.jsf.ui.internal.validation; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ProjectScope; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.preferences.DefaultScope; -import org.eclipse.core.runtime.preferences.IScopeContext; -import org.eclipse.core.runtime.preferences.InstanceScope; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.dialogs.MessageDialogWithToggle; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jst.jsf.core.internal.IJSFPreferenceModel; -import org.eclipse.jst.jsf.core.internal.JSFCorePlugin; -import org.eclipse.jst.jsf.ui.internal.JSFUiPlugin; -import org.eclipse.jst.jsf.validation.internal.ELValidationPreferences.Severity; -import org.eclipse.swt.SWT; -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.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.Label; -import org.eclipse.swt.widgets.Link; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; -import org.eclipse.swt.widgets.Widget; -import org.eclipse.ui.forms.events.ExpansionAdapter; -import org.eclipse.ui.forms.events.ExpansionEvent; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer; -import org.eclipse.ui.preferences.IWorkingCopyManager; -import org.eclipse.ui.preferences.WorkingCopyManager; -import org.osgi.service.prefs.BackingStoreException; - -/** - * Abstract options configuration block providing a general implementation for setting up - * an options configuration page. - * - * @since 2.1 - */ -abstract class OptionsConfigurationBlock -{ - /** - * The preference model to be used - */ - protected final IJSFPreferenceModel _prefs; - - static final class Key - { - private String fQualifier; - private String fKey; - - Key(String qualifier, String key) { - fQualifier= qualifier; - fKey= key; - } - - /** - * @return the key name - */ - public String getName() { - return fKey; - } - -// private IEclipsePreferences getNode(IScopeContext context, IWorkingCopyManager manager) { -// IEclipsePreferences node= context.getNode(fQualifier); -// if (manager != null) { -// return manager.getWorkingCopy(node); -// } -// return node; -// -// } - - /** - * @param prefModel - * @param context - * @param manager - * @return the value stored for the key - */ - public Object getStoredValue(IJSFPreferenceModel prefModel, IScopeContext context, IWorkingCopyManager manager) - { - return prefModel.getStoredValueByKey(context, fKey); - } - - /** - * @param prefModel - * @param context - * @param manager - * @return the stored value in prefModel under context for - * this key - */ - public Object getCurValue(IJSFPreferenceModel prefModel, IScopeContext context, IWorkingCopyManager manager) { - //return getNode(context, manager).get(fKey, null); - return prefModel.getValueByKey(context, fKey); - } - - /** - * @param prefModel - * @param lookupOrder - * @param ignoreTopScope - * @param manager - * @return the stored value in the prefModelunder context - * using the list of lookupOrder for precedence of scopes - * in which to look. Return first found based on order in lookupOrder - */ - public Object getCurValue(IJSFPreferenceModel prefModel, IScopeContext[] lookupOrder, boolean ignoreTopScope, IWorkingCopyManager manager) { - for (int i= ignoreTopScope ? 1 : 0; i < lookupOrder.length; i++) { - Object value= getCurValue(prefModel, lookupOrder[i], manager); - if (value != null) { - return value; - } - } - return null; - } - - /** - * Set the stored value - * @param prefModel - * @param context - * @param value - * @param manager - * @return the old value or null if none - */ - public Object setCurValue(IJSFPreferenceModel prefModel, IScopeContext context, Object value, IWorkingCopyManager manager) { - return prefModel.setValueByKey(context, fKey, value); -// if (value != null) { -// getNode(context, manager).put(fKey, value); -// } else { -// getNode(context, manager).remove(fKey); -// } - } - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - public String toString() { - return fQualifier + '/' + fKey; - } - - /** - * @return the plugin qualifier - */ - public String getQualifier() { - return fQualifier; - } - - } - - - static class ControlData { - private Key fKey; - private String[] fValues; - - ControlData(Key key, String[] values) { - fKey= key; - fValues= values; - } - - Key getKey() { - return fKey; - } - - String getValue(boolean selection) { - int index= selection ? 0 : 1; - return fValues[index]; - } - - String getValue(int index) { - return fValues[index]; - } - - int getSelection(String value) { - if (value != null) { - for (int i= 0; i < fValues.length; i++) { - if (value.equals(fValues[i])) { - return i; - } - } - } - return fValues.length -1; // assume the last option is the least severe - } - } - - private static final String REBUILD_COUNT_KEY= "preferences_build_requested"; //$NON-NLS-1$ - - private static final String SETTINGS_EXPANDED= "expanded"; //$NON-NLS-1$ - - private final ArrayList fCheckBoxes; - private final ArrayList fComboBoxes; - private final ArrayList fTextBoxes; - private final HashMap fLabels; - private final ArrayList fExpandedComposites; - - private SelectionListener fSelectionListener; - private ModifyListener fTextModifyListener; - - // TODO: protected IStatusChangeListener fContext; - private final IProject fProject; // project or null - private final Key[] fAllKeys; - - private IScopeContext[] fLookupOrder; - - private Shell fShell; - - private final IWorkingCopyManager fManager; - private IWorkbenchPreferenceContainer fContainer; - - private Map fDisabledProjectSettings; // null when project specific settings are turned off - - private int fRebuildCount; /// used to prevent multiple dialogs that ask for a rebuild - - OptionsConfigurationBlock(/*IStatusChangeListener context,*/IJSFPreferenceModel prefs, IProject project, Key[] allKeys, IWorkbenchPreferenceContainer container) { - //fContext= context; - fProject= project; - fAllKeys= allKeys; - fContainer= container; - _prefs = prefs; - - if (container == null) { - fManager= new WorkingCopyManager(); - } else { - fManager= container.getWorkingCopyManager(); - } - - if (fProject != null) { - fLookupOrder= new IScopeContext[] { - new ProjectScope(fProject), - new InstanceScope(), - new DefaultScope() - }; - } else { - fLookupOrder= new IScopeContext[] { - new InstanceScope(), - new DefaultScope() - }; - } - - testIfOptionsComplete(allKeys); - if (fProject == null || hasProjectSpecificOptions(fProject)) { - fDisabledProjectSettings= null; - } else { - fDisabledProjectSettings= new IdentityHashMap(); - for (int i= 0; i < allKeys.length; i++) { - Key curr= allKeys[i]; - fDisabledProjectSettings.put(curr, curr.getCurValue(_prefs, fLookupOrder, false, fManager)); - } - } - - fCheckBoxes= new ArrayList(); - fComboBoxes= new ArrayList(); - fTextBoxes= new ArrayList(2); - fLabels= new HashMap(); - fExpandedComposites= new ArrayList(); - - fRebuildCount= getRebuildCount(); - } - - /** - * @return the preference container - */ - protected final IWorkbenchPreferenceContainer getPreferenceContainer() { - return fContainer; - } - - /** - * @param plugin - * @param key - * @return construct a new Key based on the on the plugin id and - * preference key - */ - protected static Key getKey(String plugin, String key) { - return new Key(plugin, key); - } - - /** - * @param key - * @return construct a new Key for a JSF core plugin preference - */ - protected final static Key getJSFCoreKey(String key) { - return getKey(JSFCorePlugin.PLUGIN_ID, key); - } - - private void testIfOptionsComplete(Key[] allKeys) { - for (int i= 0; i < allKeys.length; i++) { - if (allKeys[i].getCurValue(_prefs, fLookupOrder, false, fManager) == null) { - JSFUiPlugin.log(IStatus.ERROR, "preference option missing: " + allKeys[i] + " (" + this.getClass().getName() +')'); //$NON-NLS-1$//$NON-NLS-2$ - } - } - } - - private int getRebuildCount() { - return fManager.getWorkingCopy(new DefaultScope().getNode(JavaUI.ID_PLUGIN)).getInt(REBUILD_COUNT_KEY, 0); - } - - private void incrementRebuildCount() { - fRebuildCount++; - fManager.getWorkingCopy(new DefaultScope().getNode(JavaUI.ID_PLUGIN)).putInt(REBUILD_COUNT_KEY, fRebuildCount); - } - -// public void selectOption(String key, String qualifier) { -// for (int i= 0; i < fAllKeys.length; i++) { -// Key curr= fAllKeys[i]; -// if (curr.getName().equals(key) && curr.getQualifier().equals(qualifier)) { -// selectOption(curr); -// } -// } -// } -// -// public void selectOption(Key key) { -// Control control= findControl(key); -// if (control != null) { -// if (!fExpandedComposites.isEmpty()) { -// ExpandableComposite expandable= getParentExpandableComposite(control); -// if (expandable != null) { -// for (int i= 0; i < fExpandedComposites.size(); i++) { -// ExpandableComposite curr= (ExpandableComposite) fExpandedComposites.get(i); -// curr.setExpanded(curr == expandable); -// } -// expandedStateChanged(expandable); -// } -// } -// control.setFocus(); -// } -// } - - - /** - * @param project - * @return true if there are project specific overrides in the - * preferences for 'project' - */ - public final boolean hasProjectSpecificOptions(IProject project) { - if (project != null) { - IScopeContext projectContext= new ProjectScope(project); - Key[] allKeys= fAllKeys; - for (int i= 0; i < allKeys.length; i++) { - if (allKeys[i].getCurValue(_prefs, projectContext, fManager) != null) { - return true; - } - } - } - return false; - } - - /** - * @return the shell hosting the UI - */ - protected Shell getShell() { - return fShell; - } - - /** - * Set the shell hosting the UI. - * @param shell - */ - protected void setShell(Shell shell) { - fShell= shell; - } - - /** - * @param parent - * @return the parent of the UI control to be created - */ - protected abstract Control createContents(Composite parent); - -// protected Button addCheckBox(Composite parent, String label, Key key, String[] values, int indent) { -// ControlData data= new ControlData(key, values); -// -// GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL); -// gd.horizontalSpan= 3; -// gd.horizontalIndent= indent; -// -// Button checkBox= new Button(parent, SWT.CHECK); -// checkBox.setFont(JFaceResources.getDialogFont()); -// checkBox.setText(label); -// checkBox.setData(data); -// checkBox.setLayoutData(gd); -// checkBox.addSelectionListener(getSelectionListener()); -// -// makeScrollableCompositeAware(checkBox); -// -// String currValue= getValue(key); -// checkBox.setSelection(data.getSelection(currValue) == 0); -// -// fCheckBoxes.add(checkBox); -// -// return checkBox; -// } - - /** - * @param parent - * @param label - * @param key - * @param values - * @param indent - * @param widthHint - * @param listener - * @return a check box styled button with a related link - */ - protected Button addCheckBoxWithLink(Composite parent, String label, Key key, String[] values, int indent, int widthHint, SelectionListener listener) { - ControlData data= new ControlData(key, values); - - GridData gd= new GridData(GridData.FILL, GridData.FILL, true, false); - gd.horizontalSpan= 3; - gd.horizontalIndent= indent; - - Composite composite= new Composite(parent, SWT.NONE); - GridLayout layout= new GridLayout(); - layout.marginHeight= 0; - layout.marginWidth= 0; - layout.numColumns= 2; - composite.setLayout(layout); - composite.setLayoutData(gd); - - Button checkBox= new Button(composite, SWT.CHECK); - checkBox.setFont(JFaceResources.getDialogFont()); - checkBox.setData(data); - checkBox.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, false, false)); - checkBox.addSelectionListener(getSelectionListener()); - - gd= new GridData(GridData.FILL, GridData.CENTER, true, false); - gd.widthHint= widthHint; - - Link link= new Link(composite, SWT.NONE); - link.setText(label); - link.setLayoutData(gd); - if (listener != null) { - link.addSelectionListener(listener); - } - - makeScrollableCompositeAware(link); - makeScrollableCompositeAware(checkBox); - - String currValue= getValue(key); - checkBox.setSelection(data.getSelection(currValue) == 0); - - fCheckBoxes.add(checkBox); - - return checkBox; - } - - /** - * @param parent - * @param label - * @param key - * @param values - * @param valueLabels - * @param indent - * @return a Combo box added to parent with the label and key - */ - protected Combo addComboBox(Composite parent, String label, Key key, String[] values, String[] valueLabels, int indent) { - GridData gd= new GridData(GridData.FILL, GridData.CENTER, true, false, 2, 1); - gd.horizontalIndent= indent; - - Label labelControl= new Label(parent, SWT.LEFT); - labelControl.setFont(JFaceResources.getDialogFont()); - - labelControl.setText(label); - labelControl.setLayoutData(gd); - - Combo comboBox= newComboControl(parent, key, values, valueLabels); - comboBox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - fLabels.put(comboBox, labelControl); - - return comboBox; - } - - Combo addInversedComboBox(Composite parent, String label, Key key, String[] values, String[] valueLabels, int indent) { - GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); - gd.horizontalIndent= indent; - gd.horizontalSpan= 3; - - Composite composite= new Composite(parent, SWT.NONE); - GridLayout layout= new GridLayout(); - layout.marginHeight= 0; - layout.marginWidth= 0; - layout.numColumns= 2; - composite.setLayout(layout); - composite.setLayoutData(gd); - - Combo comboBox= newComboControl(composite, key, values, valueLabels); - comboBox.setFont(JFaceResources.getDialogFont()); - comboBox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - - Label labelControl= new Label(composite, SWT.LEFT | SWT.WRAP); - labelControl.setText(label); - labelControl.setLayoutData(new GridData()); - - fLabels.put(comboBox, labelControl); - return comboBox; - } - - Combo newComboControl(Composite composite, Key key, String[] values, String[] valueLabels) { - ControlData data= new ControlData(key, values); - - Combo comboBox= new Combo(composite, SWT.READ_ONLY); - comboBox.setItems(valueLabels); - comboBox.setData(data); - comboBox.addSelectionListener(getSelectionListener()); - comboBox.setFont(JFaceResources.getDialogFont()); - - makeScrollableCompositeAware(comboBox); - - String currValue= getValue(key); - comboBox.select(data.getSelection(currValue)); - - fComboBoxes.add(comboBox); - return comboBox; - } - - Text addTextField(Composite parent, String label, Key key, int indent, int widthHint) { - Label labelControl= new Label(parent, SWT.WRAP); - labelControl.setText(label); - labelControl.setFont(JFaceResources.getDialogFont()); - labelControl.setLayoutData(new GridData()); - - Text textBox= new Text(parent, SWT.BORDER | SWT.SINGLE); - textBox.setData(key); - textBox.setLayoutData(new GridData()); - - makeScrollableCompositeAware(textBox); - - fLabels.put(textBox, labelControl); - - String currValue= getValue(key); - if (currValue != null) { - textBox.setText(currValue); - } - textBox.addModifyListener(getTextModifyListener()); - - GridData data= new GridData(GridData.HORIZONTAL_ALIGN_FILL); - if (widthHint != 0) { - data.widthHint= widthHint; - } - data.horizontalIndent= indent; - data.horizontalSpan= 2; - textBox.setLayoutData(data); - - fTextBoxes.add(textBox); - return textBox; - } - - ScrolledPageContent getParentScrolledComposite(Control control) { - Control parent= control.getParent(); - while (!(parent instanceof ScrolledPageContent) && parent != null) { - parent= parent.getParent(); - } - if (parent instanceof ScrolledPageContent) { - return (ScrolledPageContent) parent; - } - return null; - } - - ExpandableComposite getParentExpandableComposite(Control control) { - Control parent= control.getParent(); - while (!(parent instanceof ExpandableComposite) && parent != null) { - parent= parent.getParent(); - } - if (parent instanceof ExpandableComposite) { - return (ExpandableComposite) parent; - } - return null; - } - - private void makeScrollableCompositeAware(Control control) { - ScrolledPageContent parentScrolledComposite= getParentScrolledComposite(control); - if (parentScrolledComposite != null) { - parentScrolledComposite.adaptChild(control); - } - } - - ExpandableComposite createStyleSection(Composite parent, String label, int nColumns) { - ExpandableComposite excomposite= new ExpandableComposite(parent, SWT.NONE, ExpandableComposite.TWISTIE | ExpandableComposite.CLIENT_INDENT); - excomposite.setText(label); - excomposite.setExpanded(false); - excomposite.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT)); - excomposite.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, nColumns, 1)); - excomposite.addExpansionListener(new ExpansionAdapter() { - public void expansionStateChanged(ExpansionEvent e) { - expandedStateChanged((ExpandableComposite) e.getSource()); - } - }); - fExpandedComposites.add(excomposite); - makeScrollableCompositeAware(excomposite); - return excomposite; - } - - final void expandedStateChanged(ExpandableComposite expandable) { - ScrolledPageContent parentScrolledComposite= getParentScrolledComposite(expandable); - if (parentScrolledComposite != null) { - parentScrolledComposite.reflow(true); - } - } - - void restoreSectionExpansionStates(IDialogSettings settings) { - for (int i= 0; i < fExpandedComposites.size(); i++) { - ExpandableComposite excomposite= (ExpandableComposite) fExpandedComposites.get(i); - if (settings == null) { - excomposite.setExpanded(i == 0); // only expand the first node by default - } else { - excomposite.setExpanded(settings.getBoolean(SETTINGS_EXPANDED + String.valueOf(i))); - } - } - } - - void storeSectionExpansionStates(IDialogSettings settings) { - for (int i= 0; i < fExpandedComposites.size(); i++) { - ExpandableComposite curr= (ExpandableComposite) fExpandedComposites.get(i); - settings.put(SETTINGS_EXPANDED + String.valueOf(i), curr.isExpanded()); - } - } - - SelectionListener getSelectionListener() { - if (fSelectionListener == null) { - fSelectionListener= new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) {/*do nothing*/} - - public void widgetSelected(SelectionEvent e) { - controlChanged(e.widget); - } - }; - } - return fSelectionListener; - } - - ModifyListener getTextModifyListener() { - if (fTextModifyListener == null) { - fTextModifyListener= new ModifyListener() { - public void modifyText(ModifyEvent e) { - textChanged((Text) e.widget); - } - }; - } - return fTextModifyListener; - } - - void controlChanged(Widget widget) { - ControlData data= (ControlData) widget.getData(); - String newValue= null; - if (widget instanceof Button) { - newValue= data.getValue(((Button)widget).getSelection()); - } else if (widget instanceof Combo) { - newValue= data.getValue(((Combo)widget).getSelectionIndex()); - } else { - return; - } - String oldValue= setValue(data.getKey(), newValue); - validateSettings(data.getKey(), oldValue, newValue); - } - - void textChanged(Text textControl) { - Key key= (Key) textControl.getData(); - String number= textControl.getText(); - String oldValue= setValue(key, number); - validateSettings(key, oldValue, number); - } - - boolean checkValue(Key key, String value) { - return value.equals(getValue(key)); - } - - String getValue(Key key) { - if (fDisabledProjectSettings != null) { - return (String) fDisabledProjectSettings.get(key); - } - return key.getCurValue(_prefs, fLookupOrder, false, fManager).toString(); - } - - - boolean getBooleanValue(Key key) { - return Boolean.valueOf(getValue(key)).booleanValue(); - } - - String setValue(Key key, String value) { - if (fDisabledProjectSettings != null) { - return (String) fDisabledProjectSettings.put(key, value); - } - Object newValue = key.setCurValue(_prefs, fLookupOrder[0], Severity.valueOfString(value), fManager); - return newValue != null ? newValue.toString() : ""; - } - - String setValue(Key key, boolean value) { - return setValue(key, String.valueOf(value)); - } - - /** - * Returns the value as actually stored in the preference store. - * @param key - * @return the value as actually stored in the preference store. - */ - Object getStoredValue(Key key) { - return key.getCurValue(_prefs, fLookupOrder, false, fManager); - } - - /** - * Update fields and validate. - * @param changedKey Key that changed, or null, if all changed. - * @param oldValue - * @param newValue - */ - protected abstract void validateSettings(Key changedKey, String oldValue, String newValue); - - - String[] getTokens(String text, String separator) { - StringTokenizer tok= new StringTokenizer(text, separator); - int nTokens= tok.countTokens(); - String[] res= new String[nTokens]; - for (int i= 0; i < res.length; i++) { - res[i]= tok.nextToken().trim(); - } - return res; - } - - private boolean getChanges(IScopeContext currContext, List changedSettings) { - boolean needsBuild= false; - for (int i= 0; i < fAllKeys.length; i++) { - Key key= fAllKeys[i]; - Object oldVal= key.getStoredValue(_prefs, currContext, null); - Object val= key.getCurValue(_prefs, currContext, fManager); - if (val == null) { - if (oldVal != null) { - changedSettings.add(key); - needsBuild |= !oldVal.equals(key.getCurValue(_prefs, fLookupOrder, true, fManager)); - } - } else if (!val.equals(oldVal)) { - changedSettings.add(key); - needsBuild |= oldVal != null || !val.equals(key.getCurValue(_prefs, fLookupOrder, true, fManager)); - } - } - return needsBuild; - } - - void useProjectSpecificSettings(boolean enable) { - boolean hasProjectSpecificOption= fDisabledProjectSettings == null; - if (enable != hasProjectSpecificOption && fProject != null) { - if (enable) { - for (int i= 0; i < fAllKeys.length; i++) { - Key curr= fAllKeys[i]; - String val= (String) fDisabledProjectSettings.get(curr); - curr.setCurValue(_prefs, fLookupOrder[0], Severity.valueOfString(val), fManager); - } - fDisabledProjectSettings= null; - updateControls(); - validateSettings(null, null, null); - } else { - fDisabledProjectSettings= new IdentityHashMap(); - for (int i= 0; i < fAllKeys.length; i++) { - Key curr= fAllKeys[i]; - Object oldSetting= curr.getCurValue(_prefs, fLookupOrder, false, fManager); - fDisabledProjectSettings.put(curr, oldSetting); - curr.setCurValue(_prefs, fLookupOrder[0], null, fManager); // clear project settings - } - } - } - } - - boolean areSettingsEnabled() { - return fDisabledProjectSettings == null || fProject == null; - } - - - boolean performOk() { - return processChanges(fContainer); - } - -// public boolean performApply() { -// return processChanges(null); // apply directly -// } - - boolean processChanges(IWorkbenchPreferenceContainer container) { - IScopeContext currContext= fLookupOrder[0]; - - List /* <Key>*/ changedOptions= new ArrayList(); - boolean needsBuild= getChanges(currContext, changedOptions); - if (changedOptions.isEmpty()) { - return true; - } - if (needsBuild) { - int count= getRebuildCount(); - if (count > fRebuildCount) { - needsBuild= false; // build already requested - fRebuildCount= count; - } - } - - boolean doBuild= false; - - final String showBuildWarningKey = JSFCorePlugin.PLUGIN_ID + "." + "buildwarning_dont_show_again"; - final IPreferenceStore prefStore = JSFCorePlugin.getDefault().getPreferenceStore(); - final boolean showDialog = !MessageDialogWithToggle.ALWAYS.equals(prefStore.getString(showBuildWarningKey)); - - if (needsBuild && showDialog) { - String[] strings= getFullBuildDialogStrings(fProject == null); - if (strings != null) { - MessageDialogWithToggle.openInformation - (getShell(), strings[0], strings[1], - PreferencesMessages.ProblemSeveritiesConfigurationBlock_buildwarning_dont_show_again - , false, prefStore, showBuildWarningKey); -// int res= dialog.open(); -// if (res == 0) { -// doBuild= true; -// } else if (res != 1) { -// return false; // cancel pressed -// } - } - } - if (container != null) { - // no need to apply the changes to the original store: will be done by the page container - if (doBuild) { // post build - incrementRebuildCount(); - // TODO: container.registerUpdateJob(CoreUtility.getBuildJob(fProject)); - } - } else { - // apply changes right away - try { - fManager.applyChanges(); - } catch (BackingStoreException e) { - JSFUiPlugin.log(IStatus.ERROR, "Error applying changes", e); - return false; - } - if (doBuild) { - //CoreUtility.getBuildJob(fProject).schedule(); - } - - } - return true; - } - - abstract String[] getFullBuildDialogStrings(boolean workspaceSettings); - - -// public void performDefaults() { -// for (int i= 0; i < fAllKeys.length; i++) { -// Key curr= fAllKeys[i]; -// String defValue= curr.getStoredValue(fLookupOrder, true, fManager); -// setValue(curr, defValue); -// } -// -// settingsUpdated(); -// updateControls(); -// validateSettings(null, null, null); -// } - - /** - * @since 3.1 - */ - void performRevert() { - for (int i= 0; i < fAllKeys.length; i++) { - Key curr= fAllKeys[i]; - String origValue= curr.getCurValue(_prefs, fLookupOrder, false, null).toString(); - setValue(curr, origValue); - } - - updateControls(); - validateSettings(null, null, null); - } - - void dispose() { - // do nothing; sub-class should override - } - - void updateControls() { - // update the UI - for (int i= fCheckBoxes.size() - 1; i >= 0; i--) { - updateCheckBox((Button) fCheckBoxes.get(i)); - } - for (int i= fComboBoxes.size() - 1; i >= 0; i--) { - updateCombo((Combo) fComboBoxes.get(i)); - } - for (int i= fTextBoxes.size() - 1; i >= 0; i--) { - updateText((Text) fTextBoxes.get(i)); - } - } - - void updateCombo(Combo curr) { - ControlData data= (ControlData) curr.getData(); - - String currValue= getValue(data.getKey()); - curr.select(data.getSelection(currValue)); - } - - void updateCheckBox(Button curr) { - ControlData data= (ControlData) curr.getData(); - - String currValue= getValue(data.getKey()); - curr.setSelection(data.getSelection(currValue) == 0); - } - - void updateText(Text curr) { - Key key= (Key) curr.getData(); - - String currValue= getValue(key); - if (currValue != null) { - curr.setText(currValue); - } - } - - Button getCheckBox(Key key) { - for (int i= fCheckBoxes.size() - 1; i >= 0; i--) { - Button curr= (Button) fCheckBoxes.get(i); - ControlData data= (ControlData) curr.getData(); - if (key.equals(data.getKey())) { - return curr; - } - } - return null; - } - - Combo getComboBox(Key key) { - for (int i= fComboBoxes.size() - 1; i >= 0; i--) { - Combo curr= (Combo) fComboBoxes.get(i); - ControlData data= (ControlData) curr.getData(); - if (key.equals(data.getKey())) { - return curr; - } - } - return null; - } - - Text getTextControl(Key key) { - for (int i= fTextBoxes.size() - 1; i >= 0; i--) { - Text curr= (Text) fTextBoxes.get(i); - ControlData data= (ControlData) curr.getData(); - if (key.equals(data.getKey())) { - return curr; - } - } - return null; - } - - Control findControl(Key key) { - Combo comboBox= getComboBox(key); - if (comboBox != null) { - return comboBox; - } - Button checkBox= getCheckBox(key); - if (checkBox != null) { - return checkBox; - } - Text text= getTextControl(key); - if (text != null) { - return text; - } - return null; - } - - void setComboEnabled(Key key, boolean enabled) { - Combo combo= getComboBox(key); - Label label= (Label) fLabels.get(combo); - combo.setEnabled(enabled); - label.setEnabled(enabled); - } -} |