From b34cc6136db6b5fdc5ce0589e6ea93befc8a2000 Mon Sep 17 00:00:00 2001
From: jsiegle <jsiegle@mit.edu>
Date: Wed, 3 Apr 2013 17:27:37 -0400
Subject: [PATCH] Add rudimentary layout manager to SpikeDisplay

---
 .../Visualization/SpikeDisplayCanvas.cpp      | 64 ++++++++++++++++++-
 .../Visualization/SpikeDisplayCanvas.h        |  6 +-
 2 files changed, 66 insertions(+), 4 deletions(-)

diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp
index e5567d696..ae5f5aae3 100755
--- a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp
+++ b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp
@@ -300,7 +300,7 @@ void SpikeDisplayCanvas::processSpikeEvents()
 
 	 		simSpike.nSamples = 40;
 
-			//spikeDisplay->plotSpike(simSpike);
+			spikeDisplay->plotSpike(simSpike);
 
 		}
 
@@ -316,8 +316,21 @@ void SpikeDisplayCanvas::processSpikeEvents()
 SpikeDisplay::SpikeDisplay(SpikeDisplayCanvas* sdc, Viewport* v) :
 	canvas(sdc), viewport(v)
 {
+
+	minWidth = 300; 
+	maxWidth = 500;
+	minHeight = 100;
+	maxHeight = 200;
+
 	totalHeight = 1000;
 
+	for (int i = 0; i < 10; i++)
+	{
+		SpikePlot* spikePlot = new SpikePlot(canvas, i, 2);
+		spikePlots.add(spikePlot);
+		addAndMakeVisible(spikePlot);
+	}
+
 }
 
 SpikeDisplay::~SpikeDisplay()
@@ -339,6 +352,41 @@ void SpikeDisplay::paint(Graphics& g)
 void SpikeDisplay::resized()
 {
 
+	int w = getWidth();
+
+	int numColumns = w / minWidth;
+	int column, row;
+
+	float width = (float) w / (float) numColumns;
+	float height = width * 0.75;
+
+	for (int i = 0; i < spikePlots.size(); i++)
+	{
+
+		column = i % numColumns;
+		row = i / numColumns;
+		spikePlots[i]->setBounds(width*column,row*height,width,height);
+
+	}
+
+	totalHeight = (int) height*(float(row)+1);
+
+	if (totalHeight < getHeight())
+	{
+		canvas->resized();
+	}
+
+	//setBounds(0,0,getWidth(), totalHeight);
+
+
+	 // layoutManagerX.layOutComponents((Component**) spikePlots.getRawDataPointer(), 
+	 // 							   spikePlots.size(),
+	 // 							   0,
+	 // 							   0,
+	 // 							   getWidth(),
+	 // 							   getHeight(),
+	 // 							   false,
+	 // 							   false);
 }
 
 void SpikeDisplay::mouseDown(const MouseEvent& event)
@@ -346,6 +394,11 @@ void SpikeDisplay::mouseDown(const MouseEvent& event)
 
 }
 
+void SpikeDisplay::plotSpike(const SpikeObject& spike)
+{
+
+}
+
 
 
 
@@ -367,7 +420,14 @@ SpikePlot::~SpikePlot()
 void SpikePlot::paint(Graphics& g)
 {
 
-	g.fillAll(Colours::yellow);
+	g.setColour(Colours::yellow);
+	g.fillRect(10, 10, getWidth()-20, getHeight()-20);
+
+	g.setColour(Colours::black);
+
+	g.drawLine(0, 0, getWidth(), getHeight());
+	g.drawLine(0, getHeight(), getWidth(), 0);
+
 }
 
 void SpikePlot::select()
diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.h b/Source/Processors/Visualization/SpikeDisplayCanvas.h
index 68309cc4f..e80322099 100755
--- a/Source/Processors/Visualization/SpikeDisplayCanvas.h
+++ b/Source/Processors/Visualization/SpikeDisplayCanvas.h
@@ -102,7 +102,7 @@ public:
 
 	void mouseDown(const MouseEvent& event);
 
-	//void plotSpike(const SpikeObject& spike);
+	void plotSpike(const SpikeObject& spike);
 
 
 	int getTotalHeight() {return totalHeight;}
@@ -120,7 +120,9 @@ private:
 	SpikeDisplayCanvas* canvas;
 	Viewport* viewport;
 
-	Array<SpikePlot*> spikePlots;
+	OwnedArray<SpikePlot> spikePlots;
+
+	int maxWidth, maxHeight, minWidth, minHeight;
 
 };
 
-- 
GitLab