00001 /* 00002 * To change this template, choose Tools | Templates 00003 * and open the template in the editor. 00004 */ 00005 package org.classroomgaming.cgp; 00006 00007 import java.awt.Canvas; 00008 import java.awt.Graphics; 00009 import java.beans.PropertyChangeEvent; 00010 import java.beans.PropertyChangeListener; 00011 import javax.swing.*; 00012 00017 public class GameViewer extends JComponent implements PropertyChangeListener, Configurator { 00018 00019 private SampleGameMode model; 00020 private Configurator configuration; 00021 // private GameUI userInterface; 00023 private GameUI myGameUI; 00024 00025 public GameObject getModel() { 00026 return (GameObject) model; 00027 } 00028 00029 public GameViewer() { 00030 super(); 00031 configuration = null; 00032 myGameUI = null; 00033 init(); 00034 00035 } 00036 00037 public GameViewer(Configurator c) 00038 { 00039 super(); 00040 configuration = c; 00041 myGameUI = null; 00042 init(); 00043 } 00044 00045 public String getParameter(String s) { 00046 00047 return model.getParameter(s); 00048 } 00049 00050 public ImageLoader getImageLoader() { 00051 return model.getImageLoader(); 00052 } 00053 00054 00055 public void init() { 00056 setSize(640, 480); 00057 00058 00059 model = new SampleGameMode(); 00060 if (configuration == null) 00061 { 00062 ImageManager.getInstance().init(this,model); 00063 model.init(model); 00064 } 00065 else 00066 { 00067 ImageManager.getInstance().init(this,configuration); 00068 model.init(configuration); 00069 } 00070 00071 // gameComponent.setMinimumSize(new Dimension(640,480)); 00072 // add(gameComponent); 00073 00074 // super.add((JComponent)gameComponent); 00075 00076 00077 00078 00079 00080 model.setEnabled(true); 00081 00082 // userInterface = new GameUI(); 00083 // userInterface.setParent(model); 00084 // setUI(userInterface); 00085 //mode.start(); 00086 00087 // ui = null; 00088 updateUI(); 00089 getUI().installUI(this); 00090 this.setEnabled(true); 00091 this.requestFocus(); 00092 start(); 00093 } 00094 00095 @Override 00096 public void paint(Graphics g) { 00097 if (g != null) { 00098 model.render(g); 00099 } 00100 00101 } 00102 00103 public void propertyChange(PropertyChangeEvent e) { 00104 if (e.getPropertyName().equals(FrameTimer.PROP_FRAME)) { 00105 repaint(); 00106 } 00107 } 00108 00109 public void start() { 00110 requestFocus(); 00111 // model.setEnabled(true); 00112 try { 00113 FrameTimer f = (FrameTimer)model.getModule(FrameTimer.CGP_CLASS_ID); 00114 if (f != null) 00115 f.addPropertyChangeListener((PropertyChangeListener) this); 00116 } catch (ClassCastException e) {} 00117 } 00118 00119 public void stop() { 00120 // model.setEnabled(false); 00121 try { 00122 FrameTimer f = (FrameTimer)model.getModule(FrameTimer.PROP_FRAME); 00123 if (f != null) 00124 f.removePropertyChangeListener((PropertyChangeListener) this); 00125 } catch (ClassCastException e) {} 00126 } 00127 00128 public void setUI(GameViewerUI i) { 00129 super.setUI(i); 00130 } 00131 00132 public GameViewerUI getUI() { 00133 if (myGameUI == null) { 00134 myGameUI = new GameUI(this); 00135 } 00136 return myGameUI; 00137 } 00138 00139 @Override 00140 public void updateUI() { 00141 setUI((GameViewerUI) myGameUI); 00142 } 00143 00144 @Override 00145 public String getUIClassID() { 00146 return GameViewerUI.UI_CLASS_ID; 00147 } 00148 }
1.5.8