1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / wizards / html / SomeItemInputDialog.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/SomeItemInputDialog.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/SomeItemInputDialog.java
new file mode 100644 (file)
index 0000000..fdbfeb0
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * $Id: SomeItemInputDialog.java,v 1.3 2006-10-21 23:18:43 pombredanne Exp $
+ * Copyright Narushima Hironori. All rights reserved.
+ */
+package net.sourceforge.phpeclipse.wizards.html;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.IInputValidator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * 
+ */
+public class SomeItemInputDialog extends Dialog {
+
+       String dialogTitle;
+
+       String[] inputMessages;
+
+       IInputValidator[] validators;
+
+       Text[] texts;
+
+       Text error;
+
+       String[] errorMsgs;
+
+       String[] resultValues;
+
+       public SomeItemInputDialog(Shell parentShell, String dialogTitle,
+                       String[] inputMessages, IInputValidator[] validators) {
+               super(parentShell);
+               if (inputMessages.length != validators.length) {
+                       throw new IllegalArgumentException(
+                                       "Specify validator counts and input message count is not same.");
+               }
+
+               this.dialogTitle = dialogTitle;
+               this.inputMessages = (String[]) inputMessages.clone();
+               this.validators = (IInputValidator[]) validators.clone();
+               this.errorMsgs = new String[validators.length];
+
+               setShellStyle(SWT.RESIZE | getShellStyle());
+       }
+
+       protected void configureShell(Shell newShell) {
+               super.configureShell(newShell);
+               newShell.setText(dialogTitle);
+       }
+
+       protected Control createDialogArea(Composite parent) {
+               Composite base = (Composite) super.createDialogArea(parent);
+               GridLayout gl = new GridLayout(2, false);
+               gl.marginWidth = 4;
+               gl.marginHeight = 6;
+               base.setLayout(gl);
+
+               texts = new Text[inputMessages.length];
+               for (int i = 0; i < inputMessages.length; i++) {
+                       new Label(base, SWT.NONE).setText(inputMessages[i] + ":");
+
+                       final int index = i;
+                       Text t = new Text(base, SWT.BORDER);
+                       t.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+                       t.addModifyListener(new ModifyListener() {
+                               public void modifyText(ModifyEvent e) {
+                                       refreshValidator(index);
+                               }
+                       });
+                       texts[i] = t;
+               }
+
+               error = new Text(base, SWT.READ_ONLY);
+               GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+               gd.horizontalSpan = 2;
+               error.setLayoutData(gd);
+
+               return base;
+       }
+
+       void refreshValidator(int index) {
+               String data = texts[index].getText();
+               IInputValidator validator = validators[index];
+               if (validator != null) {
+                       errorMsgs[index] = validator.isValid(data);
+               }
+
+               Button okButton = getButton(IDialogConstants.OK_ID);
+               for (int i = 0; i < errorMsgs.length; i++) {
+                       String msg = errorMsgs[i];
+                       if (msg != null) {
+                               error.setText(msg);
+                               okButton.setEnabled(false);
+                               return;
+                       }
+               }
+               error.setText("");
+               okButton.setEnabled(true);
+       }
+
+       public String[] getValues() {
+               return (String[]) resultValues.clone();
+       }
+
+       protected Point getInitialSize() {
+               Point p = super.getInitialSize();
+               return new Point(p.x * 2, (int) (p.y * 1.25));
+       }
+
+       protected void okPressed() {
+               resultValues = new String[texts.length];
+               for (int i = 0; i < texts.length; i++) {
+                       resultValues[i] = texts[i].getText();
+               }
+               super.okPressed();
+       }
+
+}