Here I show the process of building one. This one has 10 light elements, but can easily be extended to suit your idea.
It is designed to be controlled using an Arduino devleopment board, but uses logic shift registers, so can be easily controlled by any microcontroller.
The video here shows the unit in action.
The main body is built from electrical trunking, which is available in 2 and 3m sections. This forms a relatively cheap, robust and long enclosure.
The LED light units are 12V DC units from Phenoptix. The PCB was designed by Big Clive and is designed to fit into a standard MR16-type 12V halogen light fitting. They are available in all different colours, including as an RGB array.
Step 1: Parts and tools required
Electrical trunking 100mm x 50mm in 2m lengths.
I got mine from Screwfix (http://www.screwfix.com/p/maxi-trunking-100mm-x-50mm-x-2m-pack-of-6/99297) but its available in all electrical supply places
2 x End caps for the trunking
Again from Screwfix (http://www.screwfix.com/p/tower-end-cap-100-x-50mm-pack-of-2/46339)
Sheet of 'frosted' polypropolyene
I got mine from Paperchase, but you can use thin card or plastic from milk bottles or other stuff here.
10 x 12V LED units.
These were designed by Big Clive (http://www.bigclive.com/) and obtained from Phenoptix (http://www.phenoptix.com/) and have 9 x 'super flux' LEDs on them.
I used 5 green, 3 yellow, 2 red to give an indication of power level.
3mm Machine screws 20mm long
Glue - hot melt glue gun would work, or any general purpose glue.
74HC595 Shift register (http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf)
ULN2003 NPN Darligton transistor array (http://www.datasheetcatalog.org/datasheets/120/489337_DS.pdf)
Piece of strip board (also called veroboard)
When I built mine the total cost of parts was around £100 (including £60 for the LEDs, £20 for the trunking, £5 for the end caps).
58mm hole saw
Hacksaw for plastic
3mm drill bit
Soldering iron and solder
Strip-board cutter (to cut the tracks in the stripboard - you can also use a drill bit to do this)