*******************************************************************************/
package net.sourceforge.phpdt.internal.ui.preferences;
-import java.lang.reflect.InvocationTargetException;
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.util.ExceptionHandler;
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.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
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.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.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;
+ fKey = key;
+ fValues = values;
}
-
+
public String getKey() {
return fKey;
}
-
+
public String getValue(boolean selection) {
- int index= selection ? 0 : 1;
+ int index = selection ? 0 : 1;
return fValues[index];
}
-
+
public String getValue(int index) {
return fValues[index];
- }
-
+ }
+
public int getSelection(String value) {
- for (int i= 0; i < fValues.length; i++) {
- if (value.equals(fValues[i])) {
- return i;
+ if (value != null) {
+ for (int i = 0; i < fValues.length; i++) {
+ if (value.equals(fValues[i])) {
+ return i;
+ }
}
}
- return 0;
+ 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) {
- fContext= context;
- fProject= project;
-
- fWorkingValues= getOptions(true);
-
- fCheckBoxes= new ArrayList();
- fComboBoxes= new ArrayList();
- fTextBoxes= new ArrayList(2);
- fLabels= new HashMap();
+ 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();
}
-
- protected abstract String[] getAllKeys();
-
+
+ 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= getAllKeys();
- for (int i= 0; i < allKeys.length; i++) {
+ 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;
- }
-
+ 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);
+
+ 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);
+
+ 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);
+
+ 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);
+
+ 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);
+
+ Label placeHolder = new Label(parent, SWT.NONE);
placeHolder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
- String currValue= (String)fWorkingValues.get(key);
+
+ 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);
+
+// 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);
+
+ 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);
- textBox.setText(currValue);
+
+ String currValue = (String) fWorkingValues.get(key);
+ if (currValue != null) {
+ textBox.setText(currValue);
+ }
textBox.addModifyListener(getTextModifyListener());
- GridData data= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
if (widthHint != 0) {
- data.widthHint= widthHint;
+ data.widthHint = widthHint;
}
- data.horizontalIndent= indent;
- data.horizontalSpan= 2;
+ 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) {}
-
+ 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() {
+ 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;
+ ControlData data = (ControlData) widget.getData();
+ String newValue = null;
if (widget instanceof Button) {
- newValue= data.getValue(((Button)widget).getSelection());
+ newValue = data.getValue(((Button) widget).getSelection());
} else if (widget instanceof Combo) {
- newValue= data.getValue(((Combo)widget).getSelectionIndex());
+ 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();
+ 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 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();
+ 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= getAllKeys();
- Map actualOptions= getOptions(false);
-
+ 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;
+ 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.equals(oldVal)) {
- hasChanges= true;
+ 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;
+ hasChanges = true;
}
}
}
-
-
+
if (hasChanges) {
- boolean doBuild= false;
- String[] strings= getFullBuildDialogStrings(fProject == null);
+ 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();
+ 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;
+ doBuild = true;
} else if (res != 1) {
return false; // cancel pressed
}
}
setOptions(actualOptions);
if (doBuild) {
- doFullBuild();
+ boolean res = doFullBuild();
+ if (!res) {
+ return false;
+ }
}
}
return true;
}
-
- protected abstract String[] getFullBuildDialogStrings(boolean workspaceSettings);
-
- protected void doFullBuild() {
- ProgressMonitorDialog dialog= new ProgressMonitorDialog(getShell());
- try {
- dialog.run(true, true, new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException {
- monitor.beginTask("", 2); //$NON-NLS-1$
- 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) {
- throw new InvocationTargetException(e);
- } finally {
- monitor.done();
+
+ 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();
}
- });
- } catch (InterruptedException e) {
- // cancelled by user
- } catch (InvocationTargetException e) {
- String title= PreferencesMessages.getString("OptionsConfigurationBlock.builderror.title"); //$NON-NLS-1$
- String message= PreferencesMessages.getString("OptionsConfigurationBlock.builderror.message"); //$NON-NLS-1$
- ExceptionHandler.handle(e, getShell(), title, message);
- }
- }
-
+ 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();
+ fWorkingValues = getDefaultOptions();
updateControls();
validateSettings(null, null);
}
-
+
protected void updateControls() {
// update the UI
- for (int i= fCheckBoxes.size() - 1; i >= 0; i--) {
- Button curr= (Button) fCheckBoxes.get(i);
- ControlData data= (ControlData) curr.getData();
-
- String currValue= (String) fWorkingValues.get(data.getKey());
- curr.setSelection(data.getSelection(currValue) == 0);
+ for (int i = fCheckBoxes.size() - 1; i >= 0; i--) {
+ updateCheckBox((Button) fCheckBoxes.get(i));
}
- for (int i= fComboBoxes.size() - 1; i >= 0; i--) {
- Combo curr= (Combo) fComboBoxes.get(i);
- ControlData data= (ControlData) curr.getData();
-
- String currValue= (String) fWorkingValues.get(data.getKey());
- curr.select(data.getSelection(currValue));
+ for (int i = fComboBoxes.size() - 1; i >= 0; i--) {
+ updateCombo((Combo) fComboBoxes.get(i));
}
- for (int i= fTextBoxes.size() - 1; i >= 0; i--) {
- Text curr= (Text) fTextBoxes.get(i);
- String key= (String) curr.getData();
-
- String currValue= (String) fWorkingValues.get(key);
- curr.setText(currValue);
+ for (int i = fTextBoxes.size() - 1; i >= 0; i--) {
+ updateText((Text) fTextBoxes.get(i));
}
}
-
- 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;
- }
+
+ 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);
}
- return null;
}
-
+
+// 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();
+ 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;
+ 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);
- }
-
-
-
+
+// protected void setComboEnabled(String key, boolean enabled) {
+// Combo combo = getComboBox(key);
+// Label label = (Label) fLabels.get(combo);
+// combo.setEnabled(enabled);
+// label.setEnabled(enabled);
+// }
+
}