001 /* 002 * ScribbleData.java 003 * Part of the Scribble problem set. 004 * 005 * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group. 006 * For more information, see http://www.ai.mit.edu/projects/cs101, the 007 * CS101 homepage or email las@ai.mit.edu. 008 * 009 * Copyright (C) 1998 Massachusetts Institute of Technology. 010 * Please do not redistribute without obtaining permission. 011 */ 012 013 package scribble; 014 015 import java.awt.*; 016 import java.util.*; 017 import cs101.awt.Line; 018 019 /** 020 * ScribbleData is a repository of lines for use with a SmartCanvas. 021 * It has methods to add and clear lines, as well as paint on a given 022 * Graphics context. 023 * 024 * <P>Copyright (c) 1998 Massachusetts Institute of Technology 025 * 026 * @author Lynn Andrea Stein, las@ai.mit.edu 027 * @author Todd C. Parnell, tparnell@ai.mit.edu 028 * @version $Id: ScribbleData.java,v 1.1.1.1 2002/06/05 21:56:35 root Exp $ 029 */ 030 public class ScribbleData { 031 032 /** The Component whose lines we're storing. */ 033 private Component gui; 034 /** Where we store the lines. */ 035 private Vector lines = new Vector(100, 100); 036 037 /** Initilizes an empty ScribbleData. */ 038 public ScribbleData() { 039 } 040 041 /** Initilizes an empty ScribbleData. */ 042 public ScribbleData(Component gui) { 043 this.gui = gui; 044 } 045 046 /** Sets the Component we paint on. */ 047 public void setGUI(Component gui) { 048 this.gui = gui; 049 } 050 051 /** Paints all lines on this onto g. */ 052 protected void paintLines (Graphics g) { 053 for (int i = 0; i < lines.size(); i++) { 054 ((Line)lines.elementAt(i)).drawOn(g); 055 } 056 } 057 058 /** Stores a new line into this. */ 059 public synchronized void addLine (Line newLine) { 060 lines.addElement(newLine); 061 if (this.gui != null) { 062 newLine.drawOn(this.gui.getGraphics()); 063 } 064 } 065 066 /** Clears all Lines from this. */ 067 public synchronized void clearLines() { 068 lines.removeAllElements(); 069 gui.repaint(); 070 } 071 } 072 073 /* 074 * $Log: ScribbleData.java,v $ 075 * Revision 1.1.1.1 2002/06/05 21:56:35 root 076 * CS101 comes to Olin finally. 077 * 078 * Revision 1.1 2000/05/06 22:30:58 mharder 079 * Moved to scribble subdirectory. 080 * 081 * Revision 1.4 1998/07/24 16:44:52 tparnell 082 * Placate new javadoc behavior 083 * 084 * Revision 1.3 1998/07/22 17:59:34 tparnell 085 * modifications to reflect new cs101.* package structure 086 * 087 * Revision 1.2 1998/07/20 18:55:33 tparnell 088 * Added javadoc and logging. Minor code mods for greater consistency 089 * between files. 090 * 091 */ 092 093 094