sysModel.env
Class NoGridEnv

java.lang.Object
  extended by sysModel.env.AGlobalEnv
      extended by sysModel.env.NoGridEnv

public class NoGridEnv
extends AGlobalEnv

An environment that does not use grids to place fish.

Author:
Mathias Ricken

Nested Class Summary
static class NoGridEnv.Direction
          Concrete direction class.
protected  class NoGridEnv.LocalEnvironment
          Concrete local environment for the square unbounded environment.
static class NoGridEnv.Location
          Concrete location class.
static class NoGridEnv.Test_NoGridEnv
          Test cases for NoGridEnv.
static class NoGridEnv.Test_NoGridEnv_LocalEnv
          Test cases for NoGridEnv.LocalEnv.
 
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.
private  int _rotSteps
          Number of steps for complete rotation.
private static java.awt.geom.Point2D.Double PAN_CENTER
           
private static int PAN_SIZE
           
 
Fields inherited from class sysModel.env.AGlobalEnv
_breedLambdas, _cmdFactory, _moveLambdas, _securityManager, _waterColor, OCEAN_BLUE
 
Constructor Summary
NoGridEnv(ICmdFactory cmdFactory, ISecurityAdapter sm)
          Create a new environment without grids.
NoGridEnv(ICmdFactory cmdFactory, ISecurityAdapter sm, int rotSteps, java.awt.Color waterColor)
          Create a new environment without grids.
 
Method Summary
protected  void addFishToInternalData(AGlobalEnv.ALocalEnv localEnv, AFish fish)
          Add the fish to the global environment.
protected  NoGridEnv.LocalEnvironment createLocalEnvironment(NoGridEnv.Location loc, NoGridEnv.Direction dir)
          Create a local environment with the given data.
 ILambda editFish(AGlobalEnv.ALocalEnv le, IFishFactory fishFactory, int button)
          Edit the fish.
 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.
 ILambda getToolTipText(java.awt.geom.Point2D.Double p)
          Get a tool tip description for a specific place in the environment.
 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.
private  AGlobalEnv.ALocalEnv makeLocalEnv(NoGridEnv.Location loc, NoGridEnv.Direction dir)
          Create a local environment for the position.
 AGlobalEnv.ALocalEnv makeLocalEnv(java.awt.geom.Point2D.Double p)
          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 parseFish(Lexer l)
          Parse fish and add them to the environment.
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.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

private static int PAN_SIZE

PAN_CENTER

private static java.awt.geom.Point2D.Double PAN_CENTER

_localEnvList

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


_rotSteps

private int _rotSteps
Number of steps for complete rotation.

Constructor Detail

NoGridEnv

public NoGridEnv(ICmdFactory cmdFactory,
                 ISecurityAdapter sm)
Create a new environment without grids. Note: This constructor needs to exist and be public for the "environment selection" dialog to work.

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

NoGridEnv

public NoGridEnv(ICmdFactory cmdFactory,
                 ISecurityAdapter sm,
                 int rotSteps,
                 java.awt.Color waterColor)
Create a new environment without grids.

Parameters:
cmdFactory - command factory to use
sm - security manager to control fish actions
rotSteps - rotation steps
waterColor - color of the water
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

public AGlobalEnv.ALocalEnv makeLocalEnv(java.awt.geom.Point2D.Double p)
Create a local environment for the position.

Specified by:
makeLocalEnv in class AGlobalEnv
Parameters:
p - position
Returns:
local environment

makeLocalEnv

private AGlobalEnv.ALocalEnv makeLocalEnv(NoGridEnv.Location loc,
                                          NoGridEnv.Direction dir)
Create a local environment for the position.

Parameters:
loc - location
dir - direction
Returns:
local environment

createLocalEnvironment

protected NoGridEnv.LocalEnvironment createLocalEnvironment(NoGridEnv.Location loc,
                                                            NoGridEnv.Direction dir)
Create a local environment with the given data.

Parameters:
loc - location
dir - direction
Returns:
new local environment

editFish

public ILambda editFish(AGlobalEnv.ALocalEnv le,
                        IFishFactory fishFactory,
                        int button)
Edit the fish.

Specified by:
editFish in class AGlobalEnv
Parameters:
le - local environment
fishFactory -
button -
Returns:
lambda to edit the fish

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

parseFish

protected void parseFish(Lexer l)
Parse fish and add them to the environment.

Specified by:
parseFish in class AGlobalEnv
Parameters:
l - parser to read from

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)

getToolTipText

public ILambda getToolTipText(java.awt.geom.Point2D.Double p)
Get a tool tip description for a specific place in the environment.

Specified by:
getToolTipText in class AGlobalEnv
Parameters:
p - mouse coordinates
Returns:
lambda for the simulation controller to execute. Must return the tooltip string.