package org.jbehave.eclipse.editor.step;
import java.util.Locale;
import org.jbehave.core.i18n.LocalizedKeywords;
import org.jbehave.eclipse.Keyword;
import org.jbehave.eclipse.util.CharTree;
public class LocalizedStepSupport {
private CharTree<Keyword> keywordTree;
private Locale storyLocale;
private LocalizedKeywords localizedKeywords;
public void setStoryLocale(Locale storyLocale) {
this.storyLocale = storyLocale;
localizedKeywords = null;
keywordTree = null;
}
public Locale getLocale() {
return storyLocale;
}
public CharTree<Keyword> getKeywordTree() {
if (keywordTree == null) {
keywordTree = createKeywordTree();
}
return keywordTree;
}
public LocalizedKeywords getLocalizedKeywords() {
if (localizedKeywords == null) {
localizedKeywords = new LocalizedKeywords(storyLocale);
}
return localizedKeywords;
}
protected CharTree<Keyword> createKeywordTree() {
LocalizedKeywords keywords = getLocalizedKeywords();
CharTree<Keyword> tree = new CharTree<Keyword>('/', null);
for (Keyword keyword : Keyword.values()) {
String asString = keyword.asString(keywords);
tree.push(asString, keyword);
}
return tree;
}
public String given(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().given(), withTrailingSpace);
}
public String and(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().and(), withTrailingSpace);
}
public String asA(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().asA(), withTrailingSpace);
}
public String examplesTable(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().examplesTable(),
withTrailingSpace);
}
public String givenStories(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().givenStories(),
withTrailingSpace);
}
public String ignorable(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().ignorable(), withTrailingSpace);
}
public String inOrderTo(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().inOrderTo(), withTrailingSpace);
}
public String iWantTo(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().iWantTo(), withTrailingSpace);
}
public String soThat(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().soThat(), withTrailingSpace);
}
public String meta(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().meta(), withTrailingSpace);
}
public String narrative(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().narrative(), withTrailingSpace);
}
public String scenario(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().scenario(), withTrailingSpace);
}
public String then(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().then(), withTrailingSpace);
}
public String when(boolean withTrailingSpace) {
return plusSpace(getLocalizedKeywords().when(), withTrailingSpace);
}
private static String plusSpace(String aString, boolean withTrailingSpace) {
return withTrailingSpace ? aString + " " : aString;
}
}