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 }