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 display the contents of a scene at regular intervals. Caution: I own a Timer which creates a thread when running, so be sure to call stop() during shutdown.

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
 int getHeight()
           
 IKeyHandler getKeyHandler()
          Get the handler which receives the keys.
 ISchedulable getMainSchedulable()
          Get the ISchedulable which is scheduled for each frame.
 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.
 void paint(java.awt.Graphics g)
          Swing demands a repainting.
 void setKeyHandler(IKeyHandler keyHandler)
          Set the handler which receives the keys.
 void setMainSchedulable(ISchedulable mainSchedulable)
          Set the main schedulable.
 void setScene(IPainter scene)
          Set the scene
 void stop()
          Stop the timer, so that we may get rid of the timer thread.
 
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 mainSchedulable, keyHandler 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.


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

getMainSchedulable

public ISchedulable getMainSchedulable()
Description copied from interface: IGameController
Get the ISchedulable which is scheduled for each frame.

Specified by:
getMainSchedulable in interface IGameController
Returns:
the mainSchedulable

setMainSchedulable

public void setMainSchedulable(ISchedulable mainSchedulable)
Description copied from interface: IGameController
Set the main schedulable. There is one.

Specified by:
setMainSchedulable in interface IGameController
Parameters:
mainSchedulable - the mainSchedulable to set

getKeyHandler

public IKeyHandler getKeyHandler()
Description copied from interface: IGameController
Get the handler which receives the keys.

Specified by:
getKeyHandler in interface IGameController
Returns:
the keyHandler

setKeyHandler

public void setKeyHandler(IKeyHandler keyHandler)
Description copied from interface: IGameController
Set the handler which receives the keys. There is only one.

Specified by:
setKeyHandler in interface IGameController
Parameters:
keyHandler - the keyHandler to set

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