package com.aptana.ide.editor.html;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import com.aptana.ide.core.builder.BuildContext;
import com.aptana.ide.core.builder.IProblem;
import com.aptana.ide.core.builder.Warning;
import com.aptana.ide.editor.html.parsing.nodes.HTMLElementNode;
import com.aptana.ide.parsing.nodes.IParseNode;
public class MissingTitleTagBuildParticipant extends HTMLBuildParticipant
{
@Override
public void build(BuildContext context, IProgressMonitor monitor)
{
if (!isHTMLFile(context))
return;
// ok we have an html file
IParseNode root = context.getRootNode();
if (!containsTitleTag(context, root))
{
List<IProblem> problems = new ArrayList<IProblem>();
problems.add(new Warning(3, context.getFile().getFullPath().toPortableString(), -1, 0, 0,
"Missing 'title' tag"));
context.recordNewProblems(problems);
}
}
private boolean containsTitleTag(BuildContext context, IParseNode root)
{
if (root == null)
return false;
IParseNode[] children = root.getChildren();
if (children == null)
return false;
for (IParseNode node : children)
{
if (node instanceof HTMLElementNode)
{
HTMLElementNode elementNode = (HTMLElementNode) node;
String name = elementNode.getName();
if (name.equalsIgnoreCase("title"))
return true;
if (name.equalsIgnoreCase("body"))
return false;
}
boolean containsTitleTag = containsTitleTag(context, node);
if (containsTitleTag)
return true;
}
return false;
}
}