+++ /dev/null
-/*
- * $Id: SomeItemInputDialog.java,v 1.2 2005-05-06 00:57:33 stefanbjarni 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();
- }
-
-}