package edu.colorado.phet.movingman.ladybug
import edu.colorado.phet.common.phetcommon.application.Module
import edu.colorado.phet.common.phetcommon.model.clock.IClock
import java.awt.Color
class LadybugModule(clock: ScalaClock) extends Module("my module", clock) {
val model = new LadybugModel
val canvas = new LadybugCanvas
private val vectorVisibilityModel = new VectorVisibilityModel
private val pathVisibilityModel = new PathVisibilityModel
setSimulationPanel(canvas)
canvas setBackground new Color(200, 255, 240)
clock.addClockListener(model.update(_))
canvas.addNode(new LadybugNode(model, model.ladybug, canvas.transform, vectorVisibilityModel))
val solidTrace = new LadybugSolidTraceNode(model, canvas.transform, () => pathVisibilityModel.lineVisible, pathVisibilityModel)
canvas.addNode(solidTrace)
val dotTrace = new LadybugDotTraceNode(model, canvas.transform, () => pathVisibilityModel.dotsVisible, pathVisibilityModel)
canvas.addNode(dotTrace)
val controlPanel = new LadybugControlPanel(this)
setControlPanel(controlPanel)
setClockControlPanel(new LadybugClockControlPanel(this))
def getVectorVisibilityModel = vectorVisibilityModel
def getPathVisibilityModel = pathVisibilityModel
def getLadybugMotionModel = model.getLadybugMotionModel()
def clearTrace = {
solidTrace.clearTrace
dotTrace.clearTrace
}
def setMotionManual() = model.getLadybugMotionModel().motion = LadybugMotionModel.MANUAL //todo encapsulate
def resetAll() = {
model.resetAll()
vectorVisibilityModel.resetAll()
pathVisibilityModel.resetAll()
controlPanel.resetAll()
}
}