improved settings dialogs
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / ui / internal / ConfigurationDialog.java
index 150e4fc..363c427 100644 (file)
@@ -4,7 +4,7 @@
  * 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
  **********************************************************************/
@@ -31,256 +31,282 @@ 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 = WikiEditorPlugin.createConfiguration();
-               isEdit = false;
-       }
-       
-       protected void configureShell(Shell shell) {
-               super.configureShell(shell);
-               if (isEdit)
-                       shell.setText(WikiEditorPlugin.getResource("%editConfig"));
-               else
-                       shell.setText(WikiEditorPlugin.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 String[] types, String sel, final TypeModifyListener listener) {
-               final Combo combo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY);
-               int size = types.length;
-               String[] items = new String[size];
-               int index = -1;
-               for (int i = 0; i < size; i++) {
-                       items[i] = types[i];
-                       if (types[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(types[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, WikiEditorPlugin.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(WikiEditorPlugin.getResource("%configGroup"));
-               
-                
-               createLabel(group, WikiEditorPlugin.getResource("%user"));              
-               fUserName = createText(group, fConfiguration.getUser() + "", new StringModifyListener() {
-                       public void valueChanged(String s) {
-                       fConfiguration.setUser(s);
-                               validateFields();
-                       }
-               });
-               
-               createLabel(group, WikiEditorPlugin.getResource("%password"));          
-               fPassword = createPassword(group, fConfiguration.getPassword() + "", new StringModifyListener() {
-                       public void valueChanged(String s) {
-                               fConfiguration.setPassword(s);
-                               validateFields();
-                       }
-               });
-               
-               createLabel(group, WikiEditorPlugin.getResource("%url"));               
-               fUrl = createText(group, fConfiguration.getURL(), new StringModifyListener() {
-                       public void valueChanged(String s) {
-                               fConfiguration.setURL(s);
-                               validateFields();
-                       }
-               });
-               
-               
-               createLabel(group, WikiEditorPlugin.getResource("%parseType"));         
-               createTypeCombo(group, WikiEditorPlugin.getTypes(), fConfiguration.getType(), new TypeModifyListener() {
-                       public void valueChanged(String fType) {
-                               fConfiguration.setType(fType);
-                       }
-               });
-               
-               return composite;
-       }
-
-       /* (non-Javadoc)
-        * @see org.eclipse.jface.dialogs.Dialog#okPressed()
-        */
-       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;
-
-               String currHostname = fUrl.getText();
-//             if (!isValidHostname(currHostname))
-//                     result = false;
-               
-               String currHostnamePort = fPassword.getText();
-//             try {
-//                     Integer.parseInt(currHostnamePort);
-//             } catch (Exception any) {
-//                     result = false;
-//             }
-               
-               String currMonitorPort = fUserName.getText();
-//             try {
-//                     Integer.parseInt(currMonitorPort);
-//             } catch (Exception any) {
-//                     result = false;
-//             }
-               
-//             if (result && isLocalhost(currHostname)) {
-//                     if (currHostnamePort.equals(currMonitorPort))
-//                             result = false;
-//             }
-               setOKButtonEnabled(result);
-       }
-       
-//     protected static boolean isValidHostname(String host) {
-//             if (host == null || host.trim().length() < 1)
-//                     return false;
-//             if (host.indexOf("/") >= 0)
-//                     return false;
-//             if (host.indexOf("\\") >= 0)
-//                     return false;
-//             if (host.indexOf(" ") >= 0)
-//                     return false;
-//             return true;
-//     }
-       
-//     protected static boolean isLocalhost(String host) {
-//             if (host == null)
-//                     return false;
-//             try {
-//                     if ("localhost".equals(host) || "127.0.0.1".equals(host))
-//                             return true;
-//                     InetAddress localHostaddr = InetAddress.getLocalHost();
-//                     if (localHostaddr.getHostName().equals(host))
-//                             return true;
-//             } catch (Exception e) {
-//                     Trace.trace(Trace.WARNING, "Error checking for localhost", e);
-//             }
-//             return false;
-//     }
+  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 = WikiEditorPlugin.createConfiguration();
+    isEdit = false;
+  }
+
+  protected void configureShell(Shell shell) {
+    super.configureShell(shell);
+    if (isEdit)
+      shell.setText(WikiEditorPlugin.getResource("%editConfig"));
+    else
+      shell.setText(WikiEditorPlugin.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 String[] types, String sel, final TypeModifyListener listener) {
+    final Combo combo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY);
+    int size = types.length;
+    String[] items = new String[size];
+    int index = -1;
+    for (int i = 0; i < size; i++) {
+      items[i] = types[i];
+      if (types[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(types[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, WikiEditorPlugin.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(WikiEditorPlugin.getResource("%configGroup"));
+
+    createLabel(group, WikiEditorPlugin.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(WikiEditorPlugin.getResource("%scrambledPassword")); //$NON-NLS-1$
+    data = new GridData(GridData.FILL_HORIZONTAL);
+    data.widthHint = 300;
+    warningText.setLayoutData(data);
+
+    createLabel(group, WikiEditorPlugin.getResource("%password"));
+    fPassword = createPassword(group, fConfiguration.getPassword() + "", new StringModifyListener() {
+      public void valueChanged(String s) {
+        fConfiguration.setPassword(s);
+        validateFields();
+      }
+    });
+
+    createLabel(group, WikiEditorPlugin.getResource("%url"));
+    fUrl = createText(group, fConfiguration.getURL(), new StringModifyListener() {
+      public void valueChanged(String s) {
+        fConfiguration.setURL(s);
+        validateFields();
+      }
+    });
+
+    createLabel(group, WikiEditorPlugin.getResource("%parseType"));
+    createTypeCombo(group, WikiEditorPlugin.getTypes(), fConfiguration.getType(), new TypeModifyListener() {
+      public void valueChanged(String fType) {
+        fConfiguration.setType(fType);
+      }
+    });
+
+    return composite;
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see org.eclipse.jface.dialogs.Dialog#okPressed()
+   */
+  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;
+
+    String currHostname = fUrl.getText();
+    //         if (!isValidHostname(currHostname))
+    //                 result = false;
+
+    String currHostnamePort = fPassword.getText();
+    //         try {
+    //                 Integer.parseInt(currHostnamePort);
+    //         } catch (Exception any) {
+    //                 result = false;
+    //         }
+
+    String currMonitorPort = fUserName.getText();
+    //         try {
+    //                 Integer.parseInt(currMonitorPort);
+    //         } catch (Exception any) {
+    //                 result = false;
+    //         }
+
+    //         if (result && isLocalhost(currHostname)) {
+    //                 if (currHostnamePort.equals(currMonitorPort))
+    //                         result = false;
+    //         }
+    setOKButtonEnabled(result);
+  }
+
+  //   protected static boolean isValidHostname(String host) {
+  //           if (host == null || host.trim().length() < 1)
+  //                   return false;
+  //           if (host.indexOf("/") >= 0)
+  //                   return false;
+  //           if (host.indexOf("\\") >= 0)
+  //                   return false;
+  //           if (host.indexOf(" ") >= 0)
+  //                   return false;
+  //           return true;
+  //   }
+
+  //   protected static boolean isLocalhost(String host) {
+  //           if (host == null)
+  //                   return false;
+  //           try {
+  //                   if ("localhost".equals(host) || "127.0.0.1".equals(host))
+  //                           return true;
+  //                   InetAddress localHostaddr = InetAddress.getLocalHost();
+  //                   if (localHostaddr.getHostName().equals(host))
+  //                           return true;
+  //           } catch (Exception e) {
+  //                   Trace.trace(Trace.WARNING, "Error checking for localhost", e);
+  //           }
+  //           return false;
+  //   }
 }
\ No newline at end of file