de.unifreiburg.twodeedoo.view
Class SceneView

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by de.unifreiburg.twodeedoo.view.SceneView
All Implemented Interfaces:
IGameController, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class SceneView
extends javax.swing.JComponent
implements IGameController

I'm a Swing widget, I feed an IActivity with events and have a IPainter paint my window at regular intervals.

Caution: I own a Timer which creates a thread when running, so be sure to call stop() during shutdown.

You probably want to register a IGameControlListener to be notified when the activity wants the game to end.

Author:
anton
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.BaselineResizeBehavior
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SceneView(int width, int height)
          Init.
 
Method Summary
 void addGameControlListener(IGameControlListener listener)
           
 int getHeight()
           
 java.awt.Dimension getPreferredSize()
          How big do we want the window to be?
 int getWidth()
           
 void initKey()
          Prepare for keyboard input.
 void initTimer()
          Start the timer for regular model updates.
 boolean isActivitySwitched()
          Has IGameController.switchToActivity(IActivity) been called since the start of this event distribution cycle?
 void paint(java.awt.Graphics g)
          Swing demands a repainting.
 void quitGame()
          Quit the game intentionally.
 void removeGameControlListener(IGameControlListener listener)
           
 void restartGame()
          Restart the game from the beginning.
 void setScene(IPainter scene)
          Set the scene
 void stop()
          Stop the timer, so that we may get rid of the timer thread.
 void switchToActivity(IActivity newActivity)
          Tell the simulator to run a new activity instead of the current activity.
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SceneView

public SceneView(int width,
                 int height)
Init. This installs dummy instances for activity and scene. Replace them using setters when you feel like it.

Method Detail

paint

public void paint(java.awt.Graphics g)
Swing demands a repainting. Paint the scene and schedule the next update.

Overrides:
paint in class javax.swing.JComponent

initTimer

public void initTimer()
Start the timer for regular model updates.


stop

public void stop()
Stop the timer, so that we may get rid of the timer thread. Call this before closing the window.


initKey

public void initKey()
Prepare for keyboard input. Window must be visible.


addGameControlListener

public void addGameControlListener(IGameControlListener listener)

removeGameControlListener

public void removeGameControlListener(IGameControlListener listener)

setScene

public void setScene(IPainter scene)
Set the scene

Parameters:
scene - something that can paint to a Graphics, usually an IScene.

getPreferredSize

public java.awt.Dimension getPreferredSize()
How big do we want the window to be?

Overrides:
getPreferredSize in class javax.swing.JComponent

switchToActivity

public void switchToActivity(IActivity newActivity)
Description copied from interface: IGameController
Tell the simulator to run a new activity instead of the current activity.

Specified by:
switchToActivity in interface IGameController
Parameters:
newActivity - another activity.

quitGame

public void quitGame()
Description copied from interface: IGameController
Quit the game intentionally. This usually even exits the program.

Specified by:
quitGame in interface IGameController

restartGame

public void restartGame()
Description copied from interface: IGameController
Restart the game from the beginning. If that isn't possible, quit.

Specified by:
restartGame in interface IGameController

isActivitySwitched

public boolean isActivitySwitched()
Description copied from interface: IGameController
Has IGameController.switchToActivity(IActivity) been called since the start of this event distribution cycle?

Specified by:
isActivitySwitched in interface IGameController
Returns:
true if it has.

getWidth

public int getWidth()
Overrides:
getWidth in class javax.swing.JComponent
Returns:
the width

getHeight

public int getHeight()
Overrides:
getHeight in class javax.swing.JComponent
Returns:
the height