Fixed: [Issue 190] Show protoc's output in Eclipse console.

Added different colors for commands and protoc output.
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ConsolePrinter.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ConsolePrinter.java
index c2c626c..38f6929 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ConsolePrinter.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ConsolePrinter.java
@@ -10,10 +10,16 @@
 
 import static com.google.common.io.Closeables.closeQuietly;
 import static com.google.eclipse.protobuf.ui.util.Workbenches.activeWorkbenchPage;
+import static org.eclipse.core.runtime.Status.OK_STATUS;
 
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.console.*;
+import org.eclipse.ui.progress.UIJob;
 
 /**
  * @author alruiz@google.com (Alex Ruiz)
@@ -21,7 +27,8 @@
 class ConsolePrinter {
   private static final String CONSOLE_NAME = "protoc";
 
-  private MessageConsoleStream out;
+  private MessageConsoleStream signalStream;
+  private MessageConsoleStream outputStream;
 
   static ConsolePrinter createAndDisplayConsole() throws PartInitException {
     MessageConsole console = findConsole();
@@ -47,14 +54,37 @@
   }
 
   private ConsolePrinter(MessageConsole console) {
-    out = console.newMessageStream();
+    signalStream = console.newMessageStream();
+    outputStream = console.newMessageStream();
+    UIJob job = new UIJob("Set colors in protoc console") {
+      @Override public IStatus runInUIThread(IProgressMonitor monitor) {
+        Display display = getDisplay();
+        signalStream.setColor(new Color(display, 0, 0, 255));
+        outputStream.setColor(new Color(display, 255, 0, 0));
+        return OK_STATUS;
+      }
+    };
+    job.schedule();
   }
 
-  void println(String message) {
-    out.println(message);
+  void printSignal(String s) {
+    signalStream.println(s);
+  }
+
+  void printOutput(String s) {
+    outputStream.println(s);
   }
 
   void close() {
-    closeQuietly(out);
+    close(signalStream);
+    close(outputStream);
+  }
+
+  private static void close(MessageConsoleStream stream) {
+    Color color = stream.getColor();
+    if (color != null) {
+      color.dispose();
+    }
+    closeQuietly(stream);
   }
 }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ProtobufBuildParticipant.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ProtobufBuildParticipant.java
index 96de194..57156f6 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ProtobufBuildParticipant.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/protoc/ProtobufBuildParticipant.java
@@ -143,7 +143,7 @@
     ConsolePrinter console = null;
     try {
       console = createAndDisplayConsole();
-      console.println("[command] " + command);
+      console.printSignal(command);
       Process process = Runtime.getRuntime().exec(command);
       processStream(process.getErrorStream(), source, console);
       process.destroy();
@@ -166,7 +166,7 @@
       ProtocMarkerFactory markerFactory = new ProtocMarkerFactory(source);
       while ((line = bufferedReader.readLine()) != null) {
         outputParser.parseAndAddMarkerIfNecessary(line, markerFactory);
-        console.println("[protoc]  " + line);
+        console.printOutput(line);
       }
     } finally {
       closeQuietly(reader);