001 /* 002 * cs101 DefaultFrame 003 * $Id: DefaultFrame.java,v 1.2 2002/11/25 15:20:08 gus Exp $ 004 * 005 * Developed for "Rethinking CS101", a project of Lynn Andrea Stein's AP Group. 006 * For more information, see <a href="http://www.ai.mit.edu/projects/cs101/">the 007 * CS101 homepage</a> or email <las@ai.mit.edu>. 008 * 009 * Copyright (C) 1996 Massachusetts Institute of Technology. 010 * Please do not redistribute without obtaining permission. 011 */ 012 013 package cs101.awt; 014 015 import java.awt.*; 016 import java.awt.event.*; 017 018 019 020 /** 021 * Simple top level that deals with one component and sizing. 022 * 023 * <P>Copyright (c) 1996, 1998, 1999 Massachusetts Institute of Technology 024 * 025 * @author Paul K. Njoroge, pnjoroge@mit.edu 026 * @author Todd C. Parnell, tparnell@ai.mit.edu 027 * @author <nathanw@mit.edu> 028 * @author Lynn Andrea Stein, las@ai.mit.edu 029 * @version $Id: DefaultFrame.java,v 1.2 2002/11/25 15:20:08 gus Exp $ 030 */ 031 public class DefaultFrame extends Frame { 032 /** The Component to display. */ 033 protected Component c; 034 035 /** Default Frame dimensions. Initialized in constructor **/ 036 private Dimension defaultDimension; 037 038 /** 039 * Creates a new frame surrounding the supplied component. 040 * Does not show the frame. To show the frame, use init(). 041 * 042 * In the absence of a user-specified dimension, this is where 043 * defaultDimension gets its value. 044 * 045 * @see #DefaultFrame( Component, Dimension ) 046 * @see #init 047 * 048 * @param c Component to display. 049 */ 050 public DefaultFrame(Component c) 051 { 052 this(c, (new Dimension(400,300))); 053 } 054 055 /** 056 * Creates a new frame of the specified size surrounding the 057 * supplied component. Does not show the frame. To show the frame, 058 * use init(). 059 * 060 * @see #DefaultFrame( Component, Dimension ) 061 * @see #init 062 * 063 * @param c Component to display. 064 * @param x preferred horizontal dimension of the Frame (in pixels) 065 * @param y preferred vertical dimension of the Frame (in pixels) 066 */ 067 public DefaultFrame(Component c, int x , int y) 068 { 069 this(c,(new Dimension(x,y))); 070 } 071 072 /** 073 * Creates a new frame of the specified Dimension surrounding the 074 * supplied component. Does not show the frame. To show the frame, 075 * use init(). 076 * 077 * This frame supplies a quit button (which kills off the entire 078 * application) and the title "Default". Use setTitle to change the 079 * title. 080 * 081 * @see #DefaultFrame( Component, Dimension ) 082 * @see #init 083 * 084 * @param c Component to display. 085 * @param d preferred Dimension of the Frame (in pixels) 086 */ 087 public DefaultFrame(Component c, Dimension d) 088 { 089 super("Default"); 090 this.c=c; 091 this.defaultDimension=d; 092 this.pack(); 093 094 this.addWindowListener(new WindowAdapter() 095 { 096 public void windowClosing(WindowEvent e) 097 { 098 DefaultFrame.this.dispose(); 099 System.exit(0); 100 } 101 }); 102 103 setLayout(new FlowLayout()); 104 Button QuitButton = new Button("Quit"); 105 106 this.add(QuitButton); 107 108 QuitButton.addActionListener(new ActionListener() 109 { 110 public void actionPerformed(ActionEvent evt) 111 112 { 113 DefaultFrame.this.dispose(); 114 System.exit(0); 115 } 116 }); 117 } 118 119 /** 120 * This method overrides Frame's default getPreferredSize() in case 121 * component doesn't specify its own preferences. Without this 122 * method, the DefaultFrame has a disconcerting tendency to paint 123 * itself into a tiny little corner.... 124 * 125 * @see java.awt.Frame#getPreferredSize() 126 * 127 * @return the default dimension supplied to (or by) the constructor 128 */ 129 public Dimension getPreferredSize(){ 130 return this.defaultDimension; 131 } 132 133 /** 134 * Make the frame appear 135 */ 136 public void init() { 137 this.add("Center",c); 138 this.show(); 139 } 140 141 } 142 143 /* 144 * $Log: DefaultFrame.java,v $ 145 * Revision 1.2 2002/11/25 15:20:08 gus 146 * fix javadoc error. 147 * 148 * Revision 1.1.1.1 2002/06/05 21:56:32 root 149 * CS101 comes to Olin finally. 150 * 151 * Revision 1.10 1999/11/01 01:52:15 mharder 152 * Fixed NullPointerException in constructor 153 * 154 * Revision 1.9 1999/08/16 16:56:47 jsmthng 155 * Updated to make JavaDoc happy. 156 * 157 * Revision 1.8 1999/07/27 18:55:50 las 158 * Patched up DefaultFrame (mostly docs) and DefaultGameFrame (aesthetics 159 * and docs). 160 * 161 * Capitalized the name of the GameControllable interface. 162 * 163 * Moved the other four interfaces (Pausable, Resetable, Startable, 164 * Stoppable) to cs101.util as they really have nothing to do w/awt or 165 * windowing in particular. 166 * 167 * Also, added unpause() to Pausable as it doesn't make much sense to be 168 * able to pause but not unpause something. 169 * 170 * Revision 1.7 1999/07/13 20:42:47 pnjoroge 171 * This is a new implementation of DefaultGameFrame. The frame has 172 * four functionalities that have to be implemented by the user . This 173 * include start, stop, resetand pause. 174 * 175 * Revision 1.6 1998/07/24 17:06:27 tparnell 176 * Placate new javadoc behavior 177 * 178 * Revision 1.5 1998/07/22 18:18:35 tparnell 179 * migration from cs101.util to cs101.* 180 * 181 * Revision 1.4 1998/07/21 19:26:55 tparnell 182 * added javadoc 183 * 184 * Revision 1.3 1998/06/03 19:05:01 tparnell 185 * added log to bottom of file 186 * 187 */ 188 189 190 191