@Override
    public void projectChanged(Project source, ProjectInfo i) {
        if ((i.isSimulationControlStateModified() || i.isSimulationChanged())
                && source.hasSimulation() && source == session.getCurrentProject()) {
            simulationTimer.setDelay(source.getTimerDelay());
            if (source.isSimulationPaused()) {
                simulationTimer.stop();
            } else {
                simulationTimer.start();
            }
        } else if (i.isSimulationChanged() && !source.hasSimulation()) {
            simulationTimer.stop();
        }

        if (i.isCircuitChanged() && source.getCircuit() == null) {
            simulationTimer.stop();
        }
    }