/* This file is part of Green.
*
* Copyright (C) 2005 The Research Foundation of State University of New York
* All Rights Under Copyright Reserved, The Research Foundation of S.U.N.Y.
*
* Green is free software, licensed under the terms of the Eclipse
* Public License, version 1.0. The license is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package edu.buffalo.cse.green.dialogs.wizards;
import static edu.buffalo.cse.green.constants.DialogStrings.WIZARD_ADD_METHOD_MESSAGE;
import static edu.buffalo.cse.green.constants.DialogStrings.WIZARD_ADD_METHOD_TITLE;
import static edu.buffalo.cse.green.constants.DialogStrings.WIZARD_ADD_METHOD_TYPE;
import static edu.buffalo.cse.green.dialogs.wizards.NewElementWizardSettings.ClassMethodSettings;
import static edu.buffalo.cse.green.dialogs.wizards.NewElementWizardSettings.InterfaceMethodSettings;
import java.util.List;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.swt.widgets.Composite;
import edu.buffalo.cse.green.PlugIn;
import edu.buffalo.cse.green.editor.model.TypeModel;
/**
* Wizard used for creating methods
*
* @author kfjacobs
* @author zgwang
*/
public class NewMethodWizard extends NewElementWizard {
private NewMethodWizardPage _page;
private String _methodName;
private String _javadocComment;
private TypeModel _parent;
private List<String> _modifiers;
private String _returnTypeName;
private String _parameters;
private boolean _forceImports;
public NewMethodWizard(TypeModel parent) {
super();
_parent = parent;
_methodName = "";
_javadocComment = "";
_returnTypeName = "";
_parameters = "";
_forceImports = false;
setDialogSettings(PlugIn.getDefault().getDialogSettings());
setWindowTitle(WIZARD_ADD_METHOD_TITLE);
}
/**
* @see org.eclipse.jface.wizard.IWizard#addPages()
*/
public void addPages() {
super.addPages();
_page = new NewMethodWizardPage(_parent.getType().getJavaProject());
try {
_page.setInterface(_parent.isInterface());
} catch (JavaModelException e) {
e.printStackTrace();
}
addPage(_page);
}
public boolean canFinish() {
return _page.isCompleted();
}
/**
* @see edu.buffalo.cse.green.dialogs.wizards.GreenWizard#doFinish()
*/
public boolean doFinish() {
boolean result = super.doFinish();
if (_page.getErrorMessage() != null) {
result = false;
}
if (result) {
_methodName = _page.getName();
_javadocComment = _page.getComment();
_modifiers = _page.getModifiers();
_returnTypeName = _page.getTypeName();
_parameters = _page.getParameters();
_forceImports = _page.forceImports();
}
return result;
}
/**
* @return The name of the method.
*/
public String getMethodName() {
return _methodName;
}
/**
* @return the JavaDoc comment of the field.
*/
public String getJavaDocComment() {
return _javadocComment;
}
/**
* @return The modifiers.
*/
public String getModifiers() {
String modifiers = _modifiers.toString();
modifiers = modifiers.replaceAll(",", "");
return modifiers.substring(1, modifiers.length() - 1);
}
/**
* @return The name of the return type.
*/
public String getReturnTypeName() {
return _returnTypeName;
}
/**
* @return The parameters in the method signature
*/
public String getParameters() {
return _parameters;
}
public boolean forceImports() {
return _forceImports;
}
/**
* The page for <code>NewMethodWizard</code>
*
* @author bcmartin
*/
class NewMethodWizardPage extends NewMemberSignatureWizardPage {
public NewMethodWizardPage(IJavaProject project) {
super("NewMethodWizardPage");
setTitle(WIZARD_ADD_METHOD_TITLE);
setDescription(WIZARD_ADD_METHOD_MESSAGE);
}
/**
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
super.createControl(parent);
createMethodParameterControls();
setTypeLabel(WIZARD_ADD_METHOD_TYPE);
setErrorMessage("Invalid name");
//
getWizard().getContainer().updateMessage();
getWizard().getContainer().updateButtons();
}
/**
* @see edu.buffalo.cse.green.dialogs.NewMemberSignatureWizardPage#getSettings()
*/
protected NewElementWizardSettings getSettings() {
return isInterface() ? InterfaceMethodSettings
: ClassMethodSettings;
}
/**
* @see edu.buffalo.cse.green.dialogs.NewMemberSignatureWizardPage#allowVoidType()
*/
protected boolean allowVoidType() {
return true;
}
/**
* @see edu.buffalo.cse.green.dialogs.NewMemberSignatureWizardPage#isField()
*/
protected boolean isField() {
//Used in determining if default veriable name will use preferred
//field prefix.
return false;
}
}
/**
* @see edu.buffalo.cse.green.dialogs.wizards.NewElementWizard#canRunForked()
*/
protected boolean canRunForked() {
return true;
}
}