X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.phphelp/src/net/sourceforge/phpdt/httpquery/preferences/ConfigurationDialog.java b/net.sourceforge.phpeclipse.phphelp/src/net/sourceforge/phpdt/httpquery/preferences/ConfigurationDialog.java new file mode 100644 index 0000000..68e2e22 --- /dev/null +++ b/net.sourceforge.phpeclipse.phphelp/src/net/sourceforge/phpdt/httpquery/preferences/ConfigurationDialog.java @@ -0,0 +1,260 @@ +/********************************************************************** + * Copyright (c) 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 - Initial API and implementation + **********************************************************************/ +package net.sourceforge.phpdt.httpquery.preferences; + +import java.util.ArrayList; + +import net.sourceforge.phpdt.httpquery.config.IConfigurationWorkingCopy; +import net.sourceforge.phpdt.phphelp.PHPHelpPlugin; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +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.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +/** + * + */ +public class ConfigurationDialog extends Dialog { + protected IConfigurationWorkingCopy fConfiguration; + + protected boolean isEdit; + + private Button okButton; + + private Text fUserName; + + private Text fUrl; + + private Text fPassword; + + interface StringModifyListener { + public void valueChanged(String s); + } + + interface BooleanModifyListener { + public void valueChanged(boolean b); + } + + interface TypeModifyListener { + public void valueChanged(String fType); + } + + /** + * @param parentShell + */ + public ConfigurationDialog(Shell parentShell, IConfigurationWorkingCopy configuration) { + super(parentShell); + this.fConfiguration = configuration; + isEdit = true; + } + + public ConfigurationDialog(Shell parentShell) { + super(parentShell); + fConfiguration = PHPHelpPlugin.createConfiguration(); + isEdit = false; + } + + protected void configureShell(Shell shell) { + super.configureShell(shell); + if (isEdit) + shell.setText(PHPHelpPlugin.getResource("%editConfig")); + else + shell.setText(PHPHelpPlugin.getResource("%newConfig")); + } + + protected Label createLabel(Composite comp, String txt) { + Label label = new Label(comp, SWT.NONE); + label.setText(txt); + label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING)); + return label; + } + + protected Text createPassword(Composite comp, String txt, final StringModifyListener listener) { + final Text text = new Text(comp, SWT.BORDER | SWT.PASSWORD); + if (txt != null) + text.setText(txt); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + text.setLayoutData(data); + if (listener != null) + text.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + listener.valueChanged(text.getText()); + } + }); + return text; + } + + protected Text createText(Composite comp, String txt, final StringModifyListener listener) { + final Text text = new Text(comp, SWT.BORDER); + if (txt != null) + text.setText(txt); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + text.setLayoutData(data); + if (listener != null) + text.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + listener.valueChanged(text.getText()); + } + }); + return text; + } + + protected Combo createTypeCombo(Composite comp, final ArrayList types, String sel, final TypeModifyListener listener) { + final Combo combo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY); + int size = types.size(); + String[] items = new String[size]; + int index = -1; + for (int i = 0; i < size; i++) { + items[i] = (String)types.get(i); + if (items[i].equals(sel)) + index = i; + } + combo.setItems(items); + if (index >= 0) + combo.select(index); + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + combo.setLayoutData(data); + if (listener != null) + combo.addSelectionListener(new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + listener.valueChanged((String)types.get(combo.getSelectionIndex())); + } + + public void widgetDefaultSelected(SelectionEvent e) { + widgetSelected(e); + } + }); + return combo; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) + */ + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + ((GridLayout) composite.getLayout()).numColumns = 2; + + // WorkbenchHelp.setHelp(composite, ContextIds.PREF_DIALOG); + + createLabel(composite, PHPHelpPlugin.getResource("%name")); + fUserName = createText(composite, fConfiguration.getName() + "", new StringModifyListener() { + public void valueChanged(String name) { + fConfiguration.setName(name); + validateFields(); + } + }); + + Group group = new Group(composite, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + group.setLayout(layout); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 2; + + group.setLayoutData(data); + group.setText(PHPHelpPlugin.getResource("%configGroup")); + + createLabel(group, PHPHelpPlugin.getResource("%user")); + fUserName = createText(group, fConfiguration.getUser() + "", new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setUser(s); + validateFields(); + } + }); + + Composite warningComposite = new Composite(group, SWT.NONE); + layout = new GridLayout(); + layout.numColumns = 2; + layout.marginHeight = 0; + layout.marginHeight = 0; + warningComposite.setLayout(layout); + data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 3; + warningComposite.setLayoutData(data); + Label warningLabel = new Label(warningComposite, SWT.NONE); + warningLabel.setImage(getImage(DLG_IMG_MESSAGE_WARNING)); + warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING)); + Label warningText = new Label(warningComposite, SWT.WRAP); + warningText.setText(PHPHelpPlugin.getResource("%scrambledPassword")); //$NON-NLS-1$ + data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = 300; + warningText.setLayoutData(data); + + createLabel(group, PHPHelpPlugin.getResource("%password")); + fPassword = createPassword(group, fConfiguration.getPassword() + "", new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setPassword(s); + validateFields(); + } + }); + + createLabel(group, PHPHelpPlugin.getResource("%url")); + fUrl = createText(group, fConfiguration.getURL(), new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setURL(s); + validateFields(); + } + }); + + createLabel(group, PHPHelpPlugin.getResource("%parseType")); + createTypeCombo(group, PHPHelpPlugin.getTypes(), fConfiguration.getType(), new TypeModifyListener() { + public void valueChanged(String fType) { + fConfiguration.setType(fType); + } + }); + + return composite; + } + + protected void okPressed() { + fConfiguration.save(); + super.okPressed(); + } + + protected Control createButtonBar(Composite parent) { + Control buttonControl = super.createButtonBar(parent); + validateFields(); + return buttonControl; + } + + private void setOKButtonEnabled(boolean curIsEnabled) { + if (okButton == null) + okButton = getButton(IDialogConstants.OK_ID); + + if (okButton != null) + okButton.setEnabled(curIsEnabled); + } + + protected void validateFields() { + boolean result = true; + + setOKButtonEnabled(result); + } + +} \ No newline at end of file