001    package pnc;
002    import java.awt.*;
003    import cs101.awt.ColorField;
004    import cs101.util.semaphore.GBS;
005    
006    public
007    class SingleBuffer extends Buffer {
008      private ColorField buffer;
009    
010      public SingleBuffer() {
011        // setup super class instance variables
012        super();
013        this.read = new GBS(true, "Read");
014        this.write = new GBS(false, "Write");
015        this.bufferPanel = new Panel();
016    
017        // setup my instance variables
018        this.buffer = new ColorField(false, new Dimension(30,30),
019                                     Color.blue, Color.lightGray);
020    
021        // add display panel for buffer
022        this.bufferPanel.add(this.buffer);
023        
024      }
025    
026      public void produce() {
027        this.write.request();
028        this.buffer.changeState(true);
029        this.read.release();
030      }
031    
032     public void consume() {
033        this.read.request();
034        this.buffer.changeState(false);
035        this.write.release();
036     }
037    
038    }