/* 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_FIELD_MESSAGE;
import static edu.buffalo.cse.green.constants.DialogStrings.WIZARD_ADD_FIELD_TITLE;
import static edu.buffalo.cse.green.constants.DialogStrings.WIZARD_ADD_FIELD_TYPE;
import static edu.buffalo.cse.green.dialogs.wizards.NewElementWizardSettings.ClassFieldSettings;
import static edu.buffalo.cse.green.dialogs.wizards.NewElementWizardSettings.InterfaceFieldSettings;
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;
/**
* @author tomhicks
* @author zgwang
*/
public class NewFieldWizard extends NewElementWizard {
private NewFieldWizardPage fPage;
private String _fieldName;
private String _javadocComment;
private TypeModel _parent;
private List<String> _modifiers;
private String _typeName;
private boolean _forceImports;
public NewFieldWizard(TypeModel parent) {
super();
_parent = parent;
_fieldName = "";
_javadocComment = "";
_typeName = "";
_forceImports = false;
setDialogSettings(PlugIn.getDefault().getDialogSettings());
setWindowTitle(WIZARD_ADD_FIELD_TITLE);
}
/**
* @see org.eclipse.jface.wizard.IWizard#addPages()
*/
public void addPages() {
super.addPages();
fPage = new NewFieldWizardPage(_parent.getType().getJavaProject());
addPage(fPage);
try {
fPage.setInterface(_parent.isInterface());
} catch (JavaModelException e) {
e.printStackTrace();
}
}
public boolean canFinish() {
return fPage.isCompleted();
}
/**
* @see edu.buffalo.cse.green.dialogs.wizards.GreenWizard#doFinish()
*/
public boolean doFinish() {
boolean result = super.doFinish();
if (fPage.getErrorMessage() != null) {
result = false;
}
if (result) {
_fieldName = fPage.getName();
_javadocComment = fPage.getComment();
_modifiers = fPage.getModifiers();
_typeName = fPage.getTypeName();
_forceImports = fPage.forceImports();
}
return result;
}
/**
* @return The name of the field.
*/
public String getFieldName() {
return _fieldName;
}
/**
* @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 type.
*/
public String getTypeName() {
return _typeName;
}
public boolean forceImports() {
return _forceImports;
}
/**
* The page for <code>NewFieldWizard</code>.
*
* @author bcmartin
*/
class NewFieldWizardPage extends NewMemberSignatureWizardPage {
public NewFieldWizardPage(IJavaProject project) {
super("AddFieldWizardPage");
setTitle(WIZARD_ADD_FIELD_TITLE);
setDescription(WIZARD_ADD_FIELD_MESSAGE);
}
/**
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
super.createControl(parent);
setTypeLabel(WIZARD_ADD_FIELD_TYPE);
}
/**
* @see edu.buffalo.cse.green.dialogs.NewMemberSignatureWizardPage#getSettings()
*/
protected NewElementWizardSettings getSettings() {
return isInterface() ? InterfaceFieldSettings : ClassFieldSettings;
}
/**
* @see edu.buffalo.cse.green.dialogs.NewMemberSignatureWizardPage#allowVoidType()
*/
protected boolean allowVoidType() {
return false;
}
/**
* @see edu.buffalo.cse.green.dialogs.NewMemberSignatureWizardPage#isField()
*/
protected boolean isField() {
//Used in determining if default variable name will use preferred
//field prefix.
return true;
}
}
/**
* @see edu.buffalo.cse.green.dialogs.wizards.NewElementWizard#canRunForked()
*/
protected boolean canRunForked() {
return true;
}
}