package basics.gui.toolkit;

import java.awt.Color;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import basics.utl.SysUtl;

public class ConsoleDocument extends DefaultStyledDocument
{
private static final long serialVersionUID = 1L;
SimpleAttributeSet        defaultStyle     = new SimpleAttributeSet();
SimpleAttributeSet        inputStyle       = new SimpleAttributeSet();
SimpleAttributeSet        warnStyle        = new SimpleAttributeSet();
SimpleAttributeSet        doneStyle        = new SimpleAttributeSet();
SimpleAttributeSet        infoStyle        = new SimpleAttributeSet();

public ConsoleDocument()
{
   super();
   StyleConstants.setFontSize(defaultStyle, GU.defaultFontSize);
   StyleConstants.setFontFamily(defaultStyle, GU.defaultFontFamily);
   StyleConstants.setForeground(defaultStyle, Color.blue);
   StyleConstants.setFontSize(warnStyle, GU.defaultFontSize);
   StyleConstants.setFontFamily(warnStyle, GU.defaultFontFamily);
   StyleConstants.setForeground(warnStyle, Color.red);
   StyleConstants.setFontSize(inputStyle, GU.defaultFontSize);
   StyleConstants.setFontFamily(inputStyle, GU.defaultFontFamily);
   StyleConstants.setForeground(inputStyle, Color.black);
   StyleConstants.setFontSize(doneStyle, GU.defaultFontSize);
   StyleConstants.setFontFamily(doneStyle, GU.defaultFontFamily);
   StyleConstants.setForeground(doneStyle, Color.gray);
   StyleConstants.setFontSize(infoStyle, GU.defaultFontSize);
   StyleConstants.setFontFamily(infoStyle, GU.defaultFontFamily);
   StyleConstants.setForeground(infoStyle, Color.decode("0x856300"));
}

public void insertString(int pos, String text)
{
   try
   {
      insertString(pos, text, null);
   }
   catch(Exception e)
   {
      SysUtl.trace(e.getMessage());
      e.printStackTrace();
   }
}

public void insertString(int pos, String text, AttributeSet a) throws BadLocationException
{
   if(text.startsWith("E>"))
   {
      text = text.substring(2);
      //      if (text.toLowerCase().startsWith(GLOBAL.VAL_PREFIX_WARN))
      //      {
      //         text = text.substring(GLOBAL.VAL_PREFIX_WARN.length());
      //         a = warnStyle;
      //      }
      //      else if (text.toLowerCase().startsWith(GLOBAL.VAL_PREFIX_DONE))
      //      {
      //         text = text.substring(GLOBAL.VAL_PREFIX_DONE.length());
      //         a = doneStyle;
      //      }
      //      else if (text.toLowerCase().startsWith(GLOBAL.VAL_PREFIX_INFO))
      //      {
      //         text = text.substring(GLOBAL.VAL_PREFIX_INFO.length());
      //         a = infoStyle;
      //      }
      //      else 
      a = defaultStyle;
   }
   else a = inputStyle;
   super.insertString(pos, text, a);
}

public String toString()
{
   return this.toString();
}
}
