Removed UI.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / preferences / OptionsConfigurationBlock.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/OptionsConfigurationBlock.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/OptionsConfigurationBlock.java
deleted file mode 100644 (file)
index ebf9ed3..0000000
+++ /dev/null
@@ -1,584 +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.util.ArrayList;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.Map.Entry;
-
-import net.sourceforge.phpdt.core.IJavaProject;
-import net.sourceforge.phpdt.core.JavaCore;
-import net.sourceforge.phpdt.internal.ui.wizards.IStatusChangeListener;
-import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-
-import org.eclipse.core.resources.IncrementalProjectBuilder;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.OperationCanceledException;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.SubProgressMonitor;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.IDialogConstants;
-import org.eclipse.jface.dialogs.MessageDialog;
-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.Shell;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Widget;
-
-/**
- * Abstract options configuration block providing a general implementation for
- * setting up an options configuration page.
- * 
- * @since 2.1
- */
-public abstract class OptionsConfigurationBlock {
-
-       protected static class ControlData {
-               private String fKey;
-
-               private String[] fValues;
-
-               public ControlData(String key, String[] values) {
-                       fKey = key;
-                       fValues = values;
-               }
-
-               public String getKey() {
-                       return fKey;
-               }
-
-               public String getValue(boolean selection) {
-                       int index = selection ? 0 : 1;
-                       return fValues[index];
-               }
-
-               public String getValue(int index) {
-                       return fValues[index];
-               }
-
-               public 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
-               }
-       }
-
-       protected Map fWorkingValues;
-
-       protected ArrayList fCheckBoxes;
-
-       protected ArrayList fComboBoxes;
-
-       protected ArrayList fTextBoxes;
-
-       protected HashMap fLabels;
-
-       private SelectionListener fSelectionListener;
-
-       private ModifyListener fTextModifyListener;
-
-       protected IStatusChangeListener fContext;
-
-       protected IJavaProject fProject; // project or null
-
-       protected String[] fAllKeys;
-
-       private Shell fShell;
-
-       public OptionsConfigurationBlock(IStatusChangeListener context,
-                       IJavaProject project, String[] allKeys) {
-               fContext = context;
-               fProject = project;
-               fAllKeys = allKeys;
-
-               fWorkingValues = getOptions(true);
-               testIfOptionsComplete(fWorkingValues, allKeys);
-
-               fCheckBoxes = new ArrayList();
-               fComboBoxes = new ArrayList();
-               fTextBoxes = new ArrayList(2);
-               fLabels = new HashMap();
-       }
-
-       private void testIfOptionsComplete(Map workingValues, String[] allKeys) {
-               for (int i = 0; i < allKeys.length; i++) {
-                       if (workingValues.get(allKeys[i]) == null) {
-                               PHPeclipsePlugin
-                                               .logErrorMessage("preference option missing: " + allKeys[i] + " (" + this.getClass().getName() + ')'); //$NON-NLS-1$//$NON-NLS-2$
-                       }
-               }
-       }
-
-       protected Map getOptions(boolean inheritJavaCoreOptions) {
-               if (fProject != null) {
-                       return fProject.getOptions(inheritJavaCoreOptions);
-               } else {
-                       return JavaCore.getOptions();
-               }
-       }
-
-       protected Map getDefaultOptions() {
-               return JavaCore.getDefaultOptions();
-       }
-
-       public final boolean hasProjectSpecificOptions() {
-               if (fProject != null) {
-                       Map settings = fProject.getOptions(false);
-                       String[] allKeys = fAllKeys;
-                       for (int i = 0; i < allKeys.length; i++) {
-                               if (settings.get(allKeys[i]) != null) {
-                                       return true;
-                               }
-                       }
-               }
-               return false;
-       }
-
-       protected void setOptions(Map map) {
-               if (fProject != null) {
-                       Map oldOptions = fProject.getOptions(false);
-                       fProject.setOptions(map);
-                       firePropertyChangeEvents(oldOptions, map);
-               } else {
-                       JavaCore.setOptions((Hashtable) map);
-               }
-       }
-
-       /**
-        * Computes the differences between the given old and new options and fires
-        * corresponding property change events on the Java plugin's mockup
-        * preference store.
-        * 
-        * @param oldOptions
-        *            The old options
-        * @param newOptions
-        *            The new options
-        */
-       private void firePropertyChangeEvents(Map oldOptions, Map newOptions) {
-               oldOptions = new HashMap(oldOptions);
-               Object source = fProject.getProject();
-               MockupPreferenceStore store = PHPeclipsePlugin.getDefault()
-                               .getMockupPreferenceStore();
-               Iterator iter = newOptions.entrySet().iterator();
-               while (iter.hasNext()) {
-                       Entry entry = (Entry) iter.next();
-
-                       String name = (String) entry.getKey();
-                       Object oldValue = oldOptions.get(name);
-                       Object newValue = entry.getValue();
-
-                       if ((oldValue != null && !oldValue.equals(newValue))
-                                       || (oldValue == null && newValue != null))
-                               store.firePropertyChangeEvent(source, name, oldValue, newValue);
-                       oldOptions.remove(name);
-               }
-
-               iter = oldOptions.entrySet().iterator();
-               while (iter.hasNext()) {
-                       Entry entry = (Entry) iter.next();
-                       store.firePropertyChangeEvent(source, (String) entry.getKey(),
-                                       entry.getValue(), null);
-               }
-       }
-
-       protected Shell getShell() {
-               return fShell;
-       }
-
-       protected void setShell(Shell shell) {
-               fShell = shell;
-       }
-
-       protected abstract Control createContents(Composite parent);
-
-       protected Button addCheckBox(Composite parent, String label, String 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.setText(label);
-               checkBox.setData(data);
-               checkBox.setLayoutData(gd);
-               checkBox.addSelectionListener(getSelectionListener());
-
-               String currValue = (String) fWorkingValues.get(key);
-               checkBox.setSelection(data.getSelection(currValue) == 0);
-
-               fCheckBoxes.add(checkBox);
-
-               return checkBox;
-       }
-
-       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);
-               comboBox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-               comboBox.addSelectionListener(getSelectionListener());
-
-               fLabels.put(comboBox, labelControl);
-
-               Label placeHolder = new Label(parent, SWT.NONE);
-               placeHolder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
-               String currValue = (String) fWorkingValues.get(key);
-               comboBox.select(data.getSelection(currValue));
-
-               fComboBoxes.add(comboBox);
-               return comboBox;
-       }
-
-       protected void addInversedComboBox(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;
-               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 = new Combo(composite, SWT.READ_ONLY);
-               comboBox.setItems(valueLabels);
-               comboBox.setData(data);
-               comboBox.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
-               comboBox.addSelectionListener(getSelectionListener());
-
-               Label labelControl = new Label(composite, SWT.LEFT | SWT.WRAP);
-               labelControl.setText(label);
-               labelControl.setLayoutData(new GridData());
-
-               fLabels.put(comboBox, labelControl);
-
-               String currValue = (String) fWorkingValues.get(key);
-               comboBox.select(data.getSelection(currValue));
-
-               fComboBoxes.add(comboBox);
-       }
-
-       protected Text addTextField(Composite parent, String label, String key,
-                       int indent, int widthHint) {
-               Label labelControl = new Label(parent, SWT.NONE);
-               labelControl.setText(label);
-               labelControl.setLayoutData(new GridData());
-
-               Text textBox = new Text(parent, SWT.BORDER | SWT.SINGLE);
-               textBox.setData(key);
-               textBox.setLayoutData(new GridData());
-
-               fLabels.put(textBox, labelControl);
-
-               String currValue = (String) fWorkingValues.get(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;
-       }
-
-       protected SelectionListener getSelectionListener() {
-               if (fSelectionListener == null) {
-                       fSelectionListener = new SelectionListener() {
-                               public void widgetDefaultSelected(SelectionEvent e) {
-                               }
-
-                               public void widgetSelected(SelectionEvent e) {
-                                       controlChanged(e.widget);
-                               }
-                       };
-               }
-               return fSelectionListener;
-       }
-
-       protected ModifyListener getTextModifyListener() {
-               if (fTextModifyListener == null) {
-                       fTextModifyListener = new ModifyListener() {
-                               public void modifyText(ModifyEvent e) {
-                                       textChanged((Text) e.widget);
-                               }
-                       };
-               }
-               return fTextModifyListener;
-       }
-
-       protected 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;
-               }
-               fWorkingValues.put(data.getKey(), newValue);
-
-               validateSettings(data.getKey(), newValue);
-       }
-
-       protected void textChanged(Text textControl) {
-               String key = (String) textControl.getData();
-               String number = textControl.getText();
-               fWorkingValues.put(key, number);
-               validateSettings(key, number);
-       }
-
-       protected boolean checkValue(String key, String value) {
-               return value.equals(fWorkingValues.get(key));
-       }
-
-       /*
-        * (non-javadoc) Update fields and validate. @param changedKey Key that
-        * changed, or null, if all changed.
-        */
-       protected abstract void validateSettings(String changedKey, String newValue);
-
-       protected String[] getTokens(String text, String separator) {
-               StringTokenizer tok = new StringTokenizer(text, separator); //$NON-NLS-1$
-               int nTokens = tok.countTokens();
-               String[] res = new String[nTokens];
-               for (int i = 0; i < res.length; i++) {
-                       res[i] = tok.nextToken().trim();
-               }
-               return res;
-       }
-
-       public boolean performOk(boolean enabled) {
-               String[] allKeys = fAllKeys;
-               Map actualOptions = getOptions(false);
-
-               // preserve other options
-               boolean hasChanges = false;
-               for (int i = 0; i < allKeys.length; i++) {
-                       String key = allKeys[i];
-                       String oldVal = (String) actualOptions.get(key);
-                       String val = null;
-                       if (enabled) {
-                               val = (String) fWorkingValues.get(key);
-                               if (val != null && !val.equals(oldVal)) {
-                                       hasChanges = true;
-                                       actualOptions.put(key, val);
-                               }
-                       } else {
-                               if (oldVal != null) {
-                                       actualOptions.remove(key);
-                                       hasChanges = true;
-                               }
-                       }
-               }
-
-               if (hasChanges) {
-                       boolean doBuild = false;
-                       String[] strings = getFullBuildDialogStrings(fProject == null);
-                       if (strings != null) {
-                               MessageDialog dialog = new MessageDialog(getShell(),
-                                               strings[0], null, strings[1], MessageDialog.QUESTION,
-                                               new String[] { IDialogConstants.YES_LABEL,
-                                                               IDialogConstants.NO_LABEL,
-                                                               IDialogConstants.CANCEL_LABEL }, 2);
-                               int res = dialog.open();
-                               if (res == 0) {
-                                       doBuild = true;
-                               } else if (res != 1) {
-                                       return false; // cancel pressed
-                               }
-                       }
-                       setOptions(actualOptions);
-                       if (doBuild) {
-                               boolean res = doFullBuild();
-                               if (!res) {
-                                       return false;
-                               }
-                       }
-               }
-               return true;
-       }
-
-       protected abstract String[] getFullBuildDialogStrings(
-                       boolean workspaceSettings);
-
-       protected boolean doFullBuild() {
-
-               Job buildJob = new Job(PreferencesMessages
-                               .getString("OptionsConfigurationBlock.job.title")) { //$NON-NLS-1$
-                       /*
-                        * (non-Javadoc)
-                        * 
-                        * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
-                        */
-                       protected IStatus run(IProgressMonitor monitor) {
-                               try {
-                                       if (fProject != null) {
-                                               monitor
-                                                               .setTaskName(PreferencesMessages
-                                                                               .getFormattedString(
-                                                                                               "OptionsConfigurationBlock.buildproject.taskname", fProject.getElementName())); //$NON-NLS-1$
-                                               fProject.getProject().build(
-                                                               IncrementalProjectBuilder.FULL_BUILD,
-                                                               new SubProgressMonitor(monitor, 1));
-                                               PHPeclipsePlugin.getWorkspace().build(
-                                                               IncrementalProjectBuilder.INCREMENTAL_BUILD,
-                                                               new SubProgressMonitor(monitor, 1));
-                                       } else {
-                                               monitor
-                                                               .setTaskName(PreferencesMessages
-                                                                               .getString("OptionsConfigurationBlock.buildall.taskname")); //$NON-NLS-1$
-                                               PHPeclipsePlugin.getWorkspace().build(
-                                                               IncrementalProjectBuilder.FULL_BUILD,
-                                                               new SubProgressMonitor(monitor, 2));
-                                       }
-                               } catch (CoreException e) {
-                                       return e.getStatus();
-                               } catch (OperationCanceledException e) {
-                                       return Status.CANCEL_STATUS;
-                               } finally {
-                                       monitor.done();
-                               }
-                               return Status.OK_STATUS;
-                       }
-
-                       public boolean belongsTo(Object family) {
-                               return ResourcesPlugin.FAMILY_MANUAL_BUILD == family;
-                       }
-               };
-
-               buildJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory()
-                               .buildRule());
-               buildJob.setUser(true);
-               buildJob.schedule();
-               return true;
-       }
-
-       public void performDefaults() {
-               fWorkingValues = getDefaultOptions();
-               updateControls();
-               validateSettings(null, null);
-       }
-
-       protected 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));
-               }
-       }
-
-       protected void updateCombo(Combo curr) {
-               ControlData data = (ControlData) curr.getData();
-
-               String currValue = (String) fWorkingValues.get(data.getKey());
-               curr.select(data.getSelection(currValue));
-       }
-
-       protected void updateCheckBox(Button curr) {
-               ControlData data = (ControlData) curr.getData();
-
-               String currValue = (String) fWorkingValues.get(data.getKey());
-               curr.setSelection(data.getSelection(currValue) == 0);
-       }
-
-       protected void updateText(Text curr) {
-               String key = (String) curr.getData();
-
-               String currValue = (String) fWorkingValues.get(key);
-               if (currValue != null) {
-                       curr.setText(currValue);
-               }
-       }
-
-       protected Button getCheckBox(String 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;
-       }
-
-       protected Combo getComboBox(String 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;
-       }
-
-       protected void setComboEnabled(String key, boolean enabled) {
-               Combo combo = getComboBox(key);
-               Label label = (Label) fLabels.get(combo);
-               combo.setEnabled(enabled);
-               label.setEnabled(enabled);
-       }
-
-}