package net.sourceforge.phpeclipse.externaltools;

import java.io.IOException;
import java.io.InputStream;

import org.eclipse.swt.graphics.Color;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.MessageConsole;
import org.eclipse.ui.console.MessageConsoleStream;

public class PHPConsole {
  private MessageConsole myConsole;

  private MessageConsoleStream stream;

  private boolean hasMessages;

  public PHPConsole() {
    hasMessages = false;
    myConsole = new MessageConsole("PHPeclipse Console", null);
    ConsolePlugin.getDefault().getConsoleManager().addConsoles(new IConsole[] { myConsole });
    ConsolePlugin.getDefault().getConsoleManager().showConsoleView(myConsole);
    //  layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, IPageLayout.BOTTOM, .5f,IPageLayout.ID_EDITOR_AREA);
    stream = myConsole.newMessageStream();
  }

  /**
   * @return
   */
  public Color getColor() {
    return stream.getColor();
  }

  /**
   * @return
   */
  public MessageConsole getConsole() {
    return stream.getConsole();
  }

  /*
   * (non-Javadoc)
   * 
   * @see java.lang.Object#hashCode()
   */
  public int hashCode() {
    return stream.hashCode();
  }

  /**
   * @param message
   */
  public void print(String message) {
    hasMessages = true;
    stream.print(message);
  }

  /**
   *  
   */
  public void println() {
    hasMessages = true;
    stream.println();
  }

  /**
   * @param message
   */
  public void println(String message) {
    hasMessages = true;
    stream.println(message);
  }

  /**
   * @param color
   */
  public void setColor(Color color) {
    stream.setColor(color);
  }

  //  public void reportError(String title, String message) {
  //    if (hasMessages) {
  //      WikiEditorPlugin.getDefault().reportError(title, message);
  //    }
  //  }

  //  public void reportError() {
  //    reportError("Problems listed", "Open console view for problems log!");
  //  }
  /**
   * Creates a string buffer from the given input stream
   */
  public static String getStringFromStream(InputStream stream) throws IOException {
    StringBuffer buffer = new StringBuffer();
    byte[] b = new byte[100];
    int finished = 0;
    while (finished != -1) {
      finished = stream.read(b);
      if (finished != -1) {
        String current = new String(b, 0, finished);
        buffer.append(current);
      }
    }
    return buffer.toString();
  }
}