package flow.netbeans.markdown.csl;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import javax.swing.ImageIcon;
import org.netbeans.modules.csl.api.ElementHandle;
import org.netbeans.modules.csl.api.ElementKind;
import org.netbeans.modules.csl.api.HtmlFormatter;
import org.netbeans.modules.csl.api.Modifier;
import org.netbeans.modules.csl.api.StructureItem;
import org.openide.filesystems.FileObject;
import org.openide.util.NbBundle;
import org.pegdown.ast.RootNode;
/**
*
* @author Holger
*/
@NbBundle.Messages({
"TXT_MarkdownTOCRootItem=Contents"
})
public class MarkdownTOCRootItem implements StructureItem {
private final FileObject file;
private final RootNode rootNode;
private final List<? extends StructureItem> nestedItems;
public MarkdownTOCRootItem(FileObject file, RootNode rootNode, List<? extends StructureItem> nestedItems) {
this.file = file;
this.rootNode = rootNode;
this.nestedItems = new ArrayList<StructureItem>(nestedItems);
}
@Override
public String getName() {
return Bundle.TXT_MarkdownTOCRootItem();
}
@Override
public String getSortText() {
return "1Contents";
}
@Override
public String getHtml(HtmlFormatter formatter) {
formatter.appendText(getName());
return formatter.getText();
}
@Override
public ElementHandle getElementHandle() {
return null;
}
@Override
public ElementKind getKind() {
return ElementKind.PACKAGE;
}
@Override
public Set<Modifier> getModifiers() {
return Collections.emptySet();
}
@Override
public boolean isLeaf() {
return nestedItems.isEmpty();
}
@Override
public List<? extends StructureItem> getNestedItems() {
return Collections.unmodifiableList(nestedItems);
}
@Override
public long getPosition() {
return rootNode.getStartIndex();
}
@Override
public long getEndPosition() {
return rootNode.getEndIndex();
}
@Override
public ImageIcon getCustomIcon() {
return null;
}
@Override
public int hashCode() {
int hash = 7;
hash = 83 * hash + (this.file != null ? this.file.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final MarkdownTOCRootItem other = (MarkdownTOCRootItem) obj;
if (this.file != other.file && (this.file == null || !this.file.equals(other.file))) {
return false;
}
return true;
}
}