001 package com.croftsoft.apps.jogl; 002 003 import java.awt.*; 004 import java.awt.event.*; 005 006 import javax.media.opengl.*; 007 008 import com.croftsoft.core.lang.NullArgumentException; 009 import com.croftsoft.core.lang.lifecycle.Lifecycle; 010 import com.croftsoft.core.lang.lifecycle.Updatable; 011 import com.croftsoft.core.media.jogl.JoglAdapter; 012 import com.croftsoft.core.util.seq.Seq; 013 014 import com.croftsoft.apps.jogl.imp.JoglRendererImp; 015 016 /*********************************************************************** 017 * Jogl view. 018 * 019 * @version 020 * $Id: JoglView.java,v 1.19 2008/05/17 00:18:02 croft Exp $ 021 * @since 022 * 2008-02-10 023 * @author 024 * <a href="https://www.croftsoft.com/">David Wallace Croft</a> 025 ***********************************************************************/ 026 027 public final class JoglView 028 implements Lifecycle, Updatable 029 //////////////////////////////////////////////////////////////////////// 030 //////////////////////////////////////////////////////////////////////// 031 { 032 033 private final Seq<JoglMessage> eventSeq; 034 035 private final GLCanvas glCanvas; 036 037 private final JoglAdapter joglAdapter; 038 039 //////////////////////////////////////////////////////////////////////// 040 //////////////////////////////////////////////////////////////////////// 041 042 public JoglView ( 043 final Seq<JoglMessage> eventSeq, 044 final JoglModel joglModel ) 045 //////////////////////////////////////////////////////////////////////// 046 { 047 NullArgumentException.checkArgs ( 048 this.eventSeq = eventSeq, 049 joglModel ); 050 051 final GLCapabilities glCapabilities = new GLCapabilities ( ); 052 053 glCanvas = new GLCanvas ( glCapabilities ); 054 055 joglAdapter = new JoglAdapter ( new JoglRendererImp ( joglModel ) ); 056 057 glCanvas.addGLEventListener ( joglAdapter ); 058 } 059 060 //////////////////////////////////////////////////////////////////////// 061 // mutator methods 062 //////////////////////////////////////////////////////////////////////// 063 064 public void addKeyListener ( final KeyListener keyListener ) 065 //////////////////////////////////////////////////////////////////////// 066 { 067 glCanvas.addKeyListener ( keyListener ); 068 } 069 070 public void addMouseListener ( final MouseListener mouseListener ) 071 //////////////////////////////////////////////////////////////////////// 072 { 073 glCanvas.addMouseListener ( mouseListener ); 074 } 075 076 public void setContentPane ( final Container contentPane ) 077 //////////////////////////////////////////////////////////////////////// 078 { 079 contentPane.setLayout ( new BorderLayout ( ) ); 080 081 contentPane.add ( glCanvas, BorderLayout.CENTER ); 082 } 083 084 //////////////////////////////////////////////////////////////////////// 085 // lifecycle methods 086 //////////////////////////////////////////////////////////////////////// 087 088 public void init ( ) 089 //////////////////////////////////////////////////////////////////////// 090 { 091 // System.out.println ( "JoglView.init()" ); 092 093 glCanvas.requestFocus ( ); 094 } 095 096 public void start ( ) 097 //////////////////////////////////////////////////////////////////////// 098 { 099 // System.out.println ( "JoglView.start()" ); 100 } 101 102 public void stop ( ) 103 //////////////////////////////////////////////////////////////////////// 104 { 105 // System.out.println ( "JoglView.stop()" ); 106 } 107 108 public void destroy ( ) 109 //////////////////////////////////////////////////////////////////////// 110 { 111 // System.out.println ( "JoglView.destroy()" ); 112 } 113 114 public void update ( ) 115 //////////////////////////////////////////////////////////////////////// 116 { 117 final int size = eventSeq.size ( ); 118 119 for ( int i = 0; i < size; i++ ) 120 { 121 final JoglMessage joglMessage = eventSeq.get ( i ); 122 123 final JoglMessage.Type type = joglMessage.getType ( ); 124 125 switch ( type ) 126 { 127 case CHANGE_PERTURBATION_FACTOR_EVENT: 128 129 Toolkit.getDefaultToolkit ( ).beep ( ); 130 131 break; 132 133 default: 134 135 // ignore 136 } 137 } 138 139 glCanvas.display ( ); 140 } 141 142 //////////////////////////////////////////////////////////////////////// 143 //////////////////////////////////////////////////////////////////////// 144 }