package org.marketcetera.photon.internal.strategy.ui;
import java.io.InputStream;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.databinding.validation.IValidator;
import org.eclipse.core.databinding.validation.ValidationStatus;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.INewWizard;
import org.marketcetera.photon.internal.strategy.StrategyTemplate;
import org.marketcetera.util.misc.ClassVersion;
/* $License$ */
/**
* Wizard to create a new Java strategy script from a template.
*
* @author <a href="mailto:will@marketcetera.com">Will Horn</a>
* @version $Id: NewJavaStrategyWizard.java 16154 2012-07-14 16:34:05Z colin $
* @since 2.0.0
*/
@ClassVersion("$Id: NewJavaStrategyWizard.java 16154 2012-07-14 16:34:05Z colin $")
public final class NewJavaStrategyWizard extends AbstractNewStrategyWizard
implements INewWizard {
private static final IValidator sClassNameValidator = new IValidator() {
@Override
public IStatus validate(Object value) {
final String string = (String) value;
if (StringUtils.isEmpty(string)
|| !validIdentifier(string.toCharArray())) {
return ValidationStatus
.error(Messages.NEW_JAVA_STRATEGY_WIZARD_INVALID_CLASS_NAME
.getText());
}
return ValidationStatus.ok();
}
private boolean validIdentifier(char[] chars) {
if (!Character.isJavaIdentifierStart(chars[0])) {
return false;
}
for (int i = 1; i < chars.length; i++) {
if (!Character.isJavaIdentifierPart(chars[i])) {
return false;
}
}
return true;
}
};
private static final String SCRIPT_EXTENSION = ".java"; //$NON-NLS-1$
private static final String JAVA_STRATEGY_TEMPLATE = "JavaStrategyTemplate.txt"; //$NON-NLS-1$
@Override
protected NewStrategyWizardPage createPage(ISelection selection) {
return new NewStrategyWizardPage(selection,
Messages.NEW_JAVA_STRATEGY_WIZARD__TITLE.getText(),
sClassNameValidator);
}
@Override
protected String getScriptName(String typeName) {
return typeName + SCRIPT_EXTENSION;
}
@Override
protected InputStream openContentStream(String className) {
return StrategyTemplate.createNewScript(JAVA_STRATEGY_TEMPLATE,
className);
}
}