package mit.edu.concurrencyrefactorings.ui;
import mit.edu.concurrencyrefactorings.Activator;
import mit.edu.concurrencyrefactorings.refactorings.ConvertToConcurrentHashMapRefactoring;
import mit.edu.concurrencyrefactorings.refactorings.ConvertToFJTaskRefactoring;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.search.IJavaSearchScope;
import org.eclipse.jdt.core.search.SearchEngine;
import org.eclipse.jdt.ui.IJavaElementSearchConstants;
import org.eclipse.jdt.ui.JavaUI;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.ui.refactoring.UserInputWizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.SelectionStatusDialog;
public class ConvertToFJTaskInputPage extends UserInputWizardPage implements
IWizardPage {
private final class InputListener implements ModifyListener {
public void modifyText(ModifyEvent event) {
handleInputChanged();
}
}
Text fRecursiveMethod;
Text sequentialThreshold;
Text FJTaskClassName;
//Combo fTypeCombo;
public ConvertToFJTaskInputPage(String name) {
super(name);
}
public void createControl(Composite parent) {
Composite result= new Composite(parent, SWT.NONE);
setControl(result);
GridLayout layout= new GridLayout();
layout.numColumns= 2;
result.setLayout(layout);
Label label= new Label(result, SWT.NONE);
label.setText("&Recursive method:");
fRecursiveMethod= createNameField(result);
fRecursiveMethod.setEditable(false);
Label label2= new Label(result, SWT.NONE);
label2.setText("&FJTask class name:");
FJTaskClassName= createNameField(result);
Label label3= new Label(result, SWT.NONE);
label3.setText("&Sequential threshold:");
sequentialThreshold= createNameField(result);
final ConvertToFJTaskRefactoring refactoring= getConvertToFJTaskRefactoring();
fRecursiveMethod.setText(refactoring.getMethodNameAndSignature());
FJTaskClassName.setText(refactoring.suggestTaskName());
InputListener inputListener = new InputListener();
FJTaskClassName.addModifyListener(inputListener);
sequentialThreshold.addModifyListener(inputListener);
handleInputChanged();
}
private Text createNameField(Composite result) {
Text field= new Text(result, SWT.SINGLE | SWT.LEFT | SWT.BORDER);
field.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return field;
}
private ConvertToFJTaskRefactoring getConvertToFJTaskRefactoring() {
return (ConvertToFJTaskRefactoring) getRefactoring();
}
void handleInputChanged() {
RefactoringStatus status= new RefactoringStatus();
ConvertToFJTaskRefactoring refactoring= getConvertToFJTaskRefactoring();
status.merge(refactoring.setNameForFJTaskSubtype(FJTaskClassName.getText()));
status.merge(refactoring.setSequentialThreshold(sequentialThreshold.getText()));
setPageComplete(!status.hasError());
int severity= status.getSeverity();
String message= status.getMessageMatchingSeverity(severity);
if (severity >= RefactoringStatus.INFO) {
setMessage(message, severity);
} else {
setMessage("", NONE); //$NON-NLS-1$
}
}
}