Example: Working with Different Data Displays | 327
Example 8-28. DataDesign.as
package
{
//Main program
import flash.display.Sprite;
import fl.controls.Button;
//Text Fields for Labels
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFieldType;
//Events
import flash.events.MouseEvent;
import flash.events.Event;
public class DataDesign extends Sprite
{
private var dataEntry:Array=[];
private var quarterGraph:QuarterGraph;
private var quarterBar:QuarterBar;
private var quarterList:QuarterList;
private var dataSub:ConcreteSubject;
private var listDisplay:ConcreteObserver;
private var barChart:ConcreteObserver;
private var lineGraph:ConcreteObserver;
private var xpos:uint=250;
private var ypos:uint=250;
private var dt1:Number,dt2:Number,dt3:Number,dt4:Number;
private var dataBtn:Button;
private var barFlag:Boolean=true;
public function DataDesign ( )
{
//Set up concrete subjects and observers
dataSub=new ConcreteSubject( );
listDisplay=new ConcreteObserver( );
barChart=new ConcreteObserver( );
lineGraph=new ConcreteObserver( );
dataSub.subscribeObserver (listDisplay);
dataSub.subscribeObserver (barChart);
dataSub.subscribeObserver (lineGraph);
doText ( );
doDataEntry ( );
doButton ( );
dataBtn.addEventListener (MouseEvent.CLICK,showData);
}
//Data Output to Stage
function showData (ev:Event):void
{
if (barFlag)
{
barFlag=false;