sysModel.env
Class UnboundedEnv

java.lang.Object
  extended by sysModel.env.AGlobalEnv
      extended by sysModel.env.ASquareEnv
          extended by sysModel.env.UnboundedEnv

public class UnboundedEnv
extends ASquareEnv

Implementation of a square unbounded environment.

Author:
Mathias G. Ricken

Nested Class Summary
protected  class UnboundedEnv.LocalEnvironment
          Concrete local environment for the square unbounded environment.
static class UnboundedEnv.Test_UnboundedEnv
          Test cases for UnboundedEnv.
static class UnboundedEnv.Test_UnboundedEnv_LocalEnv
          Test cases for UnboundedEnv.LocalEnv.
 
Nested classes/interfaces inherited from class sysModel.env.ASquareEnv
ASquareEnv.ASquareLocalEnvironment, ASquareEnv.Direction, ASquareEnv.Location
 
Nested classes/interfaces inherited from class sysModel.env.AGlobalEnv
AGlobalEnv.ALocalEnv, AGlobalEnv.BreedLambda, AGlobalEnv.ILocalEnvVisitor
 
Field Summary
private  LRStruct _localEnvList
          List of local environments in this global environment.
protected  java.awt.geom.Point2D.Double PAN_CENTER
          Center of the pan area.
protected  int PAN_SIZE
          Size of the pan area.
 
Fields inherited from class sysModel.env.AGlobalEnv
_breedLambdas, _cmdFactory, _moveLambdas, _securityManager, _waterColor, OCEAN_BLUE
 
Constructor Summary
UnboundedEnv(ICmdFactory cmdFactory, ISecurityAdapter sm)
          Construct a new square unbounded environment.
 
Method Summary
protected  void addFishToInternalData(AGlobalEnv.ALocalEnv localEnv, AFish fish)
          Add the fish to the global environment.
 java.awt.Dimension getDisplaySize()
          Get size of the display.
 java.awt.geom.Point2D.Double getPanDelta(java.awt.geom.Point2D.Double delta)
          Ask the model how much to pan, given where the user scrolled.
 java.awt.geom.Point2D.Double getViewPosition(java.awt.geom.Point2D.Double pos)
          Ask the model where to scroll, given where the user has scrolled.
 AEnvFactory makeEnvFactory()
          Get the environment settings class.
protected  ASquareEnv.ASquareLocalEnvironment makeLocalEnv(ASquareEnv.Location loc, ASquareEnv.Direction dir)
          Create a local environment for the position.
protected  AGlobalEnv parseEnvironment(Lexer l)
          Factory method for parsing a stream of tokens and creating a global environment from it.
protected  void printHeader(java.io.PrintWriter pw)
          Print file header.
protected  void removeFishFromInternalData(AGlobalEnv.ALocalEnv localEnv)
          Remove the fish from the global environment.
 void returnHome(IScrollAdapter sa)
          The action to be executed if the display should return home.
 
Methods inherited from class sysModel.env.ASquareEnv
editFish, getToolTipText, makeDirection, makeDirection, makeDirection, makeLocalEnv, makeLocation, parseFish
 
Methods inherited from class sysModel.env.AGlobalEnv
addFish, deactivateBreedLambdas, deactivateMoveLambdas, drawBackground, makeDrawCmd, makeEditCmd, makeStepCmd, parse, removeFish, save
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PAN_SIZE

protected final int PAN_SIZE
Size of the pan area.

See Also:
Constant Field Values

PAN_CENTER

protected final java.awt.geom.Point2D.Double PAN_CENTER
Center of the pan area.


_localEnvList

private LRStruct _localEnvList
List of local environments in this global environment.

Constructor Detail

UnboundedEnv

public UnboundedEnv(ICmdFactory cmdFactory,
                    ISecurityAdapter sm)
Construct a new square unbounded environment.

Parameters:
cmdFactory - command factory to use
sm - security manager to control fish actions
Method Detail

addFishToInternalData

protected void addFishToInternalData(AGlobalEnv.ALocalEnv localEnv,
                                     AFish fish)
Add the fish to the global environment.

Specified by:
addFishToInternalData in class AGlobalEnv
Parameters:
localEnv - local environment
fish - fish to add

removeFishFromInternalData

protected void removeFishFromInternalData(AGlobalEnv.ALocalEnv localEnv)
Remove the fish from the global environment.

Specified by:
removeFishFromInternalData in class AGlobalEnv
Parameters:
localEnv - local environment

makeLocalEnv

protected ASquareEnv.ASquareLocalEnvironment makeLocalEnv(ASquareEnv.Location loc,
                                                          ASquareEnv.Direction dir)
Create a local environment for the position.

Specified by:
makeLocalEnv in class ASquareEnv
Parameters:
loc - location
dir - direction
Returns:
local environment

parseEnvironment

protected AGlobalEnv parseEnvironment(Lexer l)
Factory method for parsing a stream of tokens and creating a global environment from it.

Specified by:
parseEnvironment in class AGlobalEnv
Parameters:
l - lexer to use
Returns:
new global environment

makeEnvFactory

public AEnvFactory makeEnvFactory()
Get the environment settings class.

Specified by:
makeEnvFactory in class AGlobalEnv
Returns:
environment settings class

printHeader

protected void printHeader(java.io.PrintWriter pw)
Print file header.

Specified by:
printHeader in class AGlobalEnv
Parameters:
pw - PrintWriter to use

getDisplaySize

public java.awt.Dimension getDisplaySize()
Get size of the display.

Specified by:
getDisplaySize in class AGlobalEnv
Returns:
size of the display in model coordinate units.

returnHome

public void returnHome(IScrollAdapter sa)
The action to be executed if the display should return home.

Specified by:
returnHome in class AGlobalEnv
Parameters:
sa - scroll adapter

getViewPosition

public java.awt.geom.Point2D.Double getViewPosition(java.awt.geom.Point2D.Double pos)
Ask the model where to scroll, given where the user has scrolled. If the environment just acts like a normal panal, it should return pos without modification. If the environment recenters, it should return a position in the middle of the pan area. All coordinates are in model coordinate units.

Specified by:
getViewPosition in class AGlobalEnv
Parameters:
pos - position where the user scrolled to
Returns:
position where the environment wants the view to be
See Also:
IDisplayAdapter.getPanDelta(java.awt.geom.Point2D.Double)

getPanDelta

public java.awt.geom.Point2D.Double getPanDelta(java.awt.geom.Point2D.Double delta)
Ask the model how much to pan, given where the user scrolled. If the environment just acts like a normal panal, it should return (0,0). If the environment recenters, it should return delta without modification. All coordinates are in model coordinate units.

Specified by:
getPanDelta in class AGlobalEnv
Parameters:
delta - how far the user scrolled
Returns:
how far the panel should scroll
See Also:
IDisplayAdapter.getViewPosition(java.awt.geom.Point2D.Double)