package fitnesse.revisioncontrol.widgets;
import fitnesse.html.HtmlElement;
import fitnesse.html.HtmlTag;
import fitnesse.html.HtmlUtil;
import fitnesse.html.TagGroup;
import fitnesse.revisioncontrol.CheckinOperationHtmlBuilder;
import fitnesse.revisioncontrol.RevisionControlOperation;
import fitnesse.wiki.PathParser;
import fitnesse.wiki.WikiPage;
import fitnesse.wiki.WikiPagePath;
import fitnesse.wikitext.WikiWidget;
import fitnesse.wikitext.widgets.ParentWidget;
import java.util.List;
import static fitnesse.revisioncontrol.RevisionControlOperation.CHECKIN;
public class DeletedPageWidget extends WikiWidget {
public static final String REGEXP = "^!deletedpage";
private static final String DELETED_MESSAGE = "This page has been deleted, but the deletion " +
"has not been checked into revision control.<br/>You must checkin or revert.";
public DeletedPageWidget(ParentWidget parent, String text) throws Exception {
super(parent);
}
public String render() throws Exception {
TagGroup group = new TagGroup();
group.add(makeDeletedMessage());
group.add(HtmlUtil.HR);
group.add(makeCheckinHtml());
group.add(makeRevertHtml(group));
return group.html();
}
private HtmlTag makeCheckinHtml() throws Exception {
return new DeleteCheckinOperationHtmlBuilder().makeHtml(getPagePath());
}
private HtmlTag makeRevertHtml(TagGroup group) throws Exception {
return RevisionControlOperation.REVERT.makeHtml(getPagePath());
}
private HtmlElement makeDeletedMessage() {
HtmlTag divTag = HtmlUtil.makeDivTag("centered");
HtmlTag headTag = new HtmlTag("H3");
headTag.add(DELETED_MESSAGE);
divTag.add(headTag);
return divTag;
}
private String getPagePath() throws Exception {
WikiPage wikiPage = getWikiPage();
WikiPagePath fullPath = wikiPage.getPageCrawler().getFullPath(wikiPage);
return PathParser.render(fullPath);
}
static class DeleteCheckinOperationHtmlBuilder extends CheckinOperationHtmlBuilder {
public DeleteCheckinOperationHtmlBuilder() {
super(CHECKIN);
}
@Override
protected List<HtmlTag> getHtmlTagsToAddToForm() {
List<HtmlTag> tags = super.getHtmlTagsToAddToForm();
tags.add(HtmlUtil.makeInputTag("hidden", CHECKIN_FOR_DELETED_PAGE, "yes"));
return tags;
}
}
}