package com.treelight.krnl;

/**
 * The node types and list types in the system.
 * <p>
 * At the moment, types are defined as Strings. That makes
 * debugging a world easier. At some point, they could be
 * converted to ints, but I suspect that by the time the
 * system is stable enough to do that, the advances in
 * processing speed and storage capacity will have turned
 * the matter into a "don't care".
 *
 * @version 0.1
 * @author Eric Armstrong
 * @see ../NodesAndLists.html
 */
public interface TYPES {
  // Node types  
  public String STRUCTURE_NODE = "STRUCTURE NODE";
  public String TEXT_NODE = "TEXT NODE";    // content
  public String INLINE_NODE = "INLINE NODE";  // content
  public String ATTRIBUTE_NODE = "ATTRIBUTE NODE";
  public String CATEGORY_NODE = "CATEGORY NODE";
  public String VERSION_NODE = "VERSION NODE";
  public String CONTAINED_NODE = "CONTAINED NODE";

  // List types
  public String STRUCTURE_LIST = "STRUCTURE LIST";
  public String CONTENT_LIST = "CONTENT LIST";
  public String ATTRIBUTE_LIST = "ATTRIBUTE LIST";
  public String CATEGORY_LIST = "CATEGORY LIST";
  public String VERSION_LIST = "VERSION LIST";
  public String PARENT_LIST = "PARENT LIST";

  // Link Types
  public String STRUCTURE_LINK = "STRUCTURE LINK";

  // Structure node types (names)
  public String HEADER = "HEADER";
  public String PARAGRAPH = "PARAGRAPH";
  public String ORDERED_LIST = "ORDERED_LIST";
  public String PLAIN_LIST = "PLAIN_LIST";

  // Basic inline node types (names)
  public String BOLD = "BOLD";
  public String ITALIC = "ITALIC";
  public String UNDERLINE = "UNDERLINE";

  // Extended inline node subtypes
  // (expected to be rendered as a combination of one or more basic subtypes
  public String DEF = "DEF";    // usually rendered in italics
  public String LINK = "LINK";  // a reference -- multiple subtypes:
    public String BOOK = "BOOK";        // usually rendered in italics
    public String ARTICLE = "ARTICLE";  // usually rendered in quotes
    public String URL = "URL";          // an HTML page
    public String URN = "URN";          // an item that might exist locally
    public String NODE = "NODE";       // reference to a node in the system

  // Version node types
  public String OLD_VERSION = "OLD VERSION";
  public String UNDO_VERSION = "UNDO VERSION";

  // Display Policies
  static final String SHOW_LINK = "SHOW LINK";
  static final String HIDE_LINK = "HIDE LINK";
  static final String TARGET_CONTENT = "TARGET CONTENT";

}//NodeTypes
