blob: a89e48c6bcf5d8a929ea3e4f803f669330b84a43 [file] [log] [blame]
package org.eclipse.swtbot.generator.jdt.editor;
import java.util.List;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.TitleAreaDialog;
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.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;
import org.eclipse.swtbot.generator.jdt.editor.document.Method;
public class AddMethodDialog extends TitleAreaDialog {
private String title;
private String methodName;
private Text methodText;
private List<Method> methods;
public AddMethodDialog(Shell shell, List<Method> methods) {
super(shell);
this.methods= methods;
setShellStyle(SWT.CLOSE | SWT.MAX | SWT.TITLE | SWT.BORDER | SWT.RESIZE
| getDefaultOrientation());
title = "Add new method";
}
@Override
protected Control createDialogArea(Composite parent) {
setHelpAvailable(false);
getShell().setText(title);
setTitle(title);
Composite area = (Composite) super.createDialogArea(parent);
Composite container = new Composite(area, SWT.NONE);
GridData gridData = new GridData(GridData.FILL_BOTH);
container.setLayout(new GridLayout(2, false));
container.setLayoutData(gridData);
final Label methodLabel = new Label(container, SWT.NONE);
methodLabel.setText("Method name:");
GridData dataMethodText = new GridData();
dataMethodText.grabExcessHorizontalSpace = true;
dataMethodText.horizontalAlignment = GridData.FILL;
methodText = new Text(container, SWT.SINGLE | SWT.BORDER);
methodText.setLayoutData(dataMethodText);
methodText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
for(Method m: methods){
if(m.getName().equals(methodText.getText())){
getButton(IDialogConstants.OK_ID).setEnabled(false);
setMessage("Method " + methodText.getText()+" already exists!", IMessageProvider.WARNING);
return;
}
}
if (!methodText.getText().isEmpty() && !methodText.getText().contains(" ")) {
getButton(IDialogConstants.OK_ID).setEnabled(true);
setMessage("");
} else {
getButton(IDialogConstants.OK_ID).setEnabled(false);
setMessage("Method name " + methodText.getText()
+ " is invalid!", IMessageProvider.WARNING);
}
}
});
return getShell();
}
public String getMethodName() {
return methodName;
}
@Override
protected void okPressed() {
methodName = methodText.getText();
super.okPressed();
}
@Override
protected Point getInitialSize() {
return new Point(300, 200);
}
@Override
protected void createButtonsForButtonBar(Composite parent){
super.createButtonsForButtonBar(parent);
getButton(IDialogConstants.OK_ID).setEnabled(false);
}
}