package ca.janeg.cb;

import java.awt.Color;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;

/**
 *  A customized DefaultStyledDocument used by the CBTextPane
 *  component to display class details as formatted text.
 *
 *@author     Jane Griscti jane@janeg.ca
 *@created    January 5, 2002
 */
class CBDocument extends DefaultStyledDocument {

    private static Style basicStyle;

    final static String BASIC        = "Basic";
    final static String HEADING      = "Heading";
    final static String BOLD         = "Bold";


    /**  Constructs a new CBDocument object */
    CBDocument() {
        createStyles();
    }


    /**  Adds three styles to the document: Heading, Basic and Bold */
    private void createStyles() {

        // Create the top-level style, with the required font
        basicStyle = addStyle( BASIC, null );
        StyleConstants.setFontFamily( basicStyle, "Courier New" );
        StyleConstants.setFontSize( basicStyle, 14 );
        StyleConstants.setForeground( basicStyle, Color.black );
        StyleConstants.setFirstLineIndent( basicStyle, 50.0f );
        StyleConstants.setSpaceAbove( basicStyle, 6 );
        StyleConstants.setSpaceBelow( basicStyle, 0 );

        // Heading: centered, bold, larger font
        Style s  = addStyle( HEADING, basicStyle );
        StyleConstants.setBold( s, true );
        StyleConstants.setFontSize( s, 16 );
        StyleConstants.setForeground( s, new Color( 0x006699 ) );
        StyleConstants.setAlignment( s, StyleConstants.ALIGN_CENTER );
        StyleConstants.setSpaceBelow( s, 12 );

        // BoldText
        s = addStyle( BOLD, basicStyle );
        StyleConstants.setBold( s, true );
    }

}