diff --git a/experimental/CocoaDebugger/SkInfoPanelView.cpp b/experimental/CocoaDebugger/SkInfoPanelView.cpp
new file mode 100644
index 0000000..31b6b07
--- /dev/null
+++ b/experimental/CocoaDebugger/SkInfoPanelView.cpp
@@ -0,0 +1,41 @@
+#include "SkDebuggerViews.h"
+#include "SkRect.h"
+
+SkInfoPanelView::SkInfoPanelView() {
+    fBGColor = 0xFF999999;
+    fPaint.setColor(fBGColor);
+}
+
+bool SkInfoPanelView::onEvent(const SkEvent& evt) {
+    if (evt.isType(SkDebugger_StateType)) {
+        fMatrix = evt.findString(SkDebugger_Matrix);
+        fClip = evt.findString(SkDebugger_Clip);
+        
+        SkPaint* ptr;
+        if (evt.getMetaData().findPtr(SkDebugger_Paint, (void**)&ptr)) {
+            fPaint = *ptr;
+            fPaintInfo = evt.findString(SkDebugger_PaintInfo);
+        }
+        this->inval(NULL);
+        return true;
+    }
+    return this->INHERITED::onEvent(evt);
+}
+
+void SkInfoPanelView::onDraw(SkCanvas* canvas) {
+    canvas->drawColor(fBGColor);
+    
+    //Display Current Paint
+    SkRect r = {10, 20, 40, 50};
+    canvas->drawRect(r, fPaint);
+    //Display Information
+    SkPaint p;
+    p.setTextSize(SkDebugger_TextSize);
+    p.setAntiAlias(true);
+    int x = 50;
+    canvas->drawText(fPaintInfo.c_str(), fPaintInfo.size(), x, 30, p);
+    canvas->drawText(fMatrix.c_str(), fMatrix.size(), x, 60, p);
+    canvas->drawText(fClip.c_str(), fClip.size(), x, 90, p);
+    
+    this->INHERITED::onDraw(canvas);
+}
\ No newline at end of file
