public class MultipleInputDialog extends Dialog {
protected static final String FIELD_NAME = "FIELD_NAME"; //$NON-NLS-1$
+
protected static final int TEXT = 100;
+
protected static final int BROWSE = 101;
+
protected static final int VARIABLE = 102;
-
+
protected Composite panel;
-
+
protected List fieldList = new ArrayList();
+
protected List controlList = new ArrayList();
+
protected List validators = new ArrayList();
+
protected Map valueMap = new HashMap();
private String title;
-
-
-
+
public MultipleInputDialog(Shell shell, String title) {
super(shell);
this.title = title;
setShellStyle(getShellStyle() | SWT.RESIZE);
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
*/
protected void configureShell(Shell shell) {
if (title != null) {
shell.setText(title);
}
-
+
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jface.dialogs.Dialog#createButtonBar(org.eclipse.swt.widgets.Composite)
*/
protected Control createButtonBar(Composite parent) {
validateFields();
return bar;
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
protected Control createDialogArea(Composite parent) {
- Composite container = (Composite)super.createDialogArea(parent);
+ Composite container = (Composite) super.createDialogArea(parent);
container.setLayout(new GridLayout(2, false));
container.setLayoutData(new GridData(GridData.FILL_BOTH));
-
+
panel = new Composite(container, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
panel.setLayout(layout);
panel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
+
for (Iterator i = fieldList.iterator(); i.hasNext();) {
- FieldSummary field = (FieldSummary)i.next();
- switch(field.type) {
- case TEXT:
- createTextField(field.name, field.initialValue, field.allowsEmpty);
- break;
- case BROWSE:
- createBrowseField(field.name, field.initialValue, field.allowsEmpty);
- break;
- case VARIABLE:
- createVariablesField(field.name, field.initialValue, field.allowsEmpty);
- break;
+ FieldSummary field = (FieldSummary) i.next();
+ switch (field.type) {
+ case TEXT:
+ createTextField(field.name, field.initialValue,
+ field.allowsEmpty);
+ break;
+ case BROWSE:
+ createBrowseField(field.name, field.initialValue,
+ field.allowsEmpty);
+ break;
+ case VARIABLE:
+ createVariablesField(field.name, field.initialValue,
+ field.allowsEmpty);
+ break;
}
}
-
+
fieldList = null; // allow it to be gc'd
Dialog.applyDialogFont(container);
return container;
}
-
- public void addBrowseField(String labelText, String initialValue, boolean allowsEmpty) {
- fieldList.add(new FieldSummary(BROWSE, labelText, initialValue, allowsEmpty));
+
+ public void addBrowseField(String labelText, String initialValue,
+ boolean allowsEmpty) {
+ fieldList.add(new FieldSummary(BROWSE, labelText, initialValue,
+ allowsEmpty));
}
- public void addTextField(String labelText, String initialValue, boolean allowsEmpty) {
- fieldList.add(new FieldSummary(TEXT, labelText, initialValue, allowsEmpty));
+
+ public void addTextField(String labelText, String initialValue,
+ boolean allowsEmpty) {
+ fieldList.add(new FieldSummary(TEXT, labelText, initialValue,
+ allowsEmpty));
}
- public void addVariablesField(String labelText, String initialValue, boolean allowsEmpty) {
- fieldList.add(new FieldSummary(VARIABLE, labelText, initialValue, allowsEmpty));
+
+ public void addVariablesField(String labelText, String initialValue,
+ boolean allowsEmpty) {
+ fieldList.add(new FieldSummary(VARIABLE, labelText, initialValue,
+ allowsEmpty));
}
- protected void createTextField(String labelText, String initialValue, boolean allowEmpty) {
+ protected void createTextField(String labelText, String initialValue,
+ boolean allowEmpty) {
Label label = new Label(panel, SWT.NONE);
label.setText(labelText);
label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
-
+
final Text text = new Text(panel, SWT.SINGLE | SWT.BORDER);
text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
text.setData(FIELD_NAME, labelText);
-
+
// make sure rows are the same height on both panels.
- label.setSize(label.getSize().x, text.getSize().y);
-
+ label.setSize(label.getSize().x, text.getSize().y);
+
if (initialValue != null) {
text.setText(initialValue);
}
-
+
if (!allowEmpty) {
validators.add(new Validator() {
public boolean validate() {
}
});
}
-
+
controlList.add(text);
}
-
- protected void createBrowseField(String labelText, String initialValue, boolean allowEmpty) {
+
+ protected void createBrowseField(String labelText, String initialValue,
+ boolean allowEmpty) {
Label label = new Label(panel, SWT.NONE);
label.setText(labelText);
label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
-
+
Composite comp = new Composite(panel, SWT.NONE);
GridLayout layout = new GridLayout();
- layout.marginHeight=0;
- layout.marginWidth=0;
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
comp.setLayout(layout);
comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
+
final Text text = new Text(comp, SWT.SINGLE | SWT.BORDER);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = 200;
text.setData(FIELD_NAME, labelText);
// make sure rows are the same height on both panels.
- label.setSize(label.getSize().x, text.getSize().y);
-
+ label.setSize(label.getSize().x, text.getSize().y);
+
if (initialValue != null) {
text.setText(initialValue);
}
}
});
}
-
- Button button = createButton(comp, IDialogConstants.IGNORE_ID, "&Browse...", false);
+
+ Button button = createButton(comp, IDialogConstants.IGNORE_ID,
+ "&Browse...", false);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
DirectoryDialog dialog = new DirectoryDialog(getShell());
- dialog.setMessage("Select a file:");
+ dialog.setMessage("Select a file:");
String currentWorkingDir = text.getText();
if (!currentWorkingDir.trim().equals("")) { //$NON-NLS-1$
File path = new File(currentWorkingDir);
if (path.exists()) {
dialog.setFilterPath(currentWorkingDir);
- }
+ }
}
-
+
String selectedDirectory = dialog.open();
if (selectedDirectory != null) {
text.setText(selectedDirectory);
- }
+ }
}
});
controlList.add(text);
-
+
}
-
-
- public void createVariablesField(String labelText, String initialValue, boolean allowEmpty) {
+
+ public void createVariablesField(String labelText, String initialValue,
+ boolean allowEmpty) {
Label label = new Label(panel, SWT.NONE);
label.setText(labelText);
label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
-
+
Composite comp = new Composite(panel, SWT.NONE);
GridLayout layout = new GridLayout();
- layout.marginHeight=0;
- layout.marginWidth=0;
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
comp.setLayout(layout);
comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
-
+
final Text text = new Text(comp, SWT.SINGLE | SWT.BORDER);
GridData data = new GridData(GridData.FILL_HORIZONTAL);
data.widthHint = 200;
text.setData(FIELD_NAME, labelText);
// make sure rows are the same height on both panels.
- label.setSize(label.getSize().x, text.getSize().y);
-
+ label.setSize(label.getSize().x, text.getSize().y);
+
if (initialValue != null) {
text.setText(initialValue);
}
}
});
}
-
- Button button = createButton(comp, IDialogConstants.IGNORE_ID, "Varia&bles...", false);
+
+ Button button = createButton(comp, IDialogConstants.IGNORE_ID,
+ "Varia&bles...", false);
button.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
- StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell());
+ StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(
+ getShell());
int code = dialog.open();
if (code == IDialogConstants.OK_ID) {
String variable = dialog.getVariableExpression();
});
controlList.add(text);
-
+
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
protected void okPressed() {
- for (Iterator i = controlList.iterator(); i.hasNext(); ) {
- Control control = (Control)i.next();
+ for (Iterator i = controlList.iterator(); i.hasNext();) {
+ Control control = (Control) i.next();
if (control instanceof Text) {
- valueMap.put(control.getData(FIELD_NAME), ((Text)control).getText());
+ valueMap.put(control.getData(FIELD_NAME), ((Text) control)
+ .getText());
}
}
controlList = null;
super.okPressed();
}
-
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.eclipse.jface.window.Window#open()
*/
public int open() {
applyDialogFont(panel);
return super.open();
}
-
+
public Object getValue(String key) {
return valueMap.get(key);
}
-
+
public String getStringValue(String key) {
- return (String) getValue(key);
+ return (String) getValue(key);
}
-
+
public void validateFields() {
- for(Iterator i = validators.iterator(); i.hasNext(); ) {
+ for (Iterator i = validators.iterator(); i.hasNext();) {
Validator validator = (Validator) i.next();
if (!validator.validate()) {
getButton(IDialogConstants.OK_ID).setEnabled(false);
getButton(IDialogConstants.OK_ID).setEnabled(true);
}
-// /* (non-Javadoc)
-// * @see org.eclipse.jface.window.Window#getInitialLocation(org.eclipse.swt.graphics.Point)
-// */
-// protected Point getInitialLocation(Point initialSize) {
-// Point initialLocation= DialogSettingsHelper.getInitialLocation(getDialogSettingsSectionName());
-// if (initialLocation != null) {
-// return initialLocation;
-// }
-// return super.getInitialLocation(initialSize);
-// }
-
-
+ // /* (non-Javadoc)
+ // * @see
+ // org.eclipse.jface.window.Window#getInitialLocation(org.eclipse.swt.graphics.Point)
+ // */
+ // protected Point getInitialLocation(Point initialSize) {
+ // Point initialLocation=
+ // DialogSettingsHelper.getInitialLocation(getDialogSettingsSectionName());
+ // if (initialLocation != null) {
+ // return initialLocation;
+ // }
+ // return super.getInitialLocation(initialSize);
+ // }
+
protected String getDialogSettingsSectionName() {
return IDebugUIConstants.PLUGIN_ID + ".MULTIPLE_INPUT_DIALOG_2"; //$NON-NLS-1$
}
-
-// /* (non-Javadoc)
-// * @see org.eclipse.jface.window.Window#getInitialSize()
-// */
-// protected Point getInitialSize() {
-// Point size = super.getInitialSize();
-// return DialogSettingsHelper.getInitialSize(getDialogSettingsSectionName(), size);
-// }
-
-// /* (non-Javadoc)
-// * @see org.eclipse.jface.window.Window#close()
-// */
-// public boolean close() {
-// DialogSettingsHelper.persistShellGeometry(getShell(), getDialogSettingsSectionName());
-// return super.close();
-// }
+
+ // /* (non-Javadoc)
+ // * @see org.eclipse.jface.window.Window#getInitialSize()
+ // */
+ // protected Point getInitialSize() {
+ // Point size = super.getInitialSize();
+ // return
+ // DialogSettingsHelper.getInitialSize(getDialogSettingsSectionName(),
+ // size);
+ // }
+
+ // /* (non-Javadoc)
+ // * @see org.eclipse.jface.window.Window#close()
+ // */
+ // public boolean close() {
+ // DialogSettingsHelper.persistShellGeometry(getShell(),
+ // getDialogSettingsSectionName());
+ // return super.close();
+ // }
protected class FieldSummary {
int type;
+
String name;
+
String initialValue;
+
boolean allowsEmpty;
-
- public FieldSummary(int type, String name, String initialValue, boolean allowsEmpty) {
+
+ public FieldSummary(int type, String name, String initialValue,
+ boolean allowsEmpty) {
this.type = type;
this.name = name;
this.initialValue = initialValue;
this.allowsEmpty = allowsEmpty;
}
}
-
+
protected class Validator {
boolean validate() {
return true;