Open PHP Help Online Manual in the browser / add other http querie for google and...
[phpeclipse.git] / net.sourceforge.phpeclipse.phphelp / src / net / sourceforge / phpdt / httpquery / preferences / ConfigurationDialog.java
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 (file)
index 0000000..68e2e22
--- /dev/null
@@ -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