//package ;

import svet.co.DrawingWindows;
import svet.co.TrafficEngine;

import com.evelopers.unimod.adapter.standalone.provider.Timer;
import svetoforTimer.SmartTimer;
import FormEvents.ButtonsEvents;

import com.evelopers.unimod.runtime.ModelEngine;
import com.evelopers.unimod.runtime.QueuedHandler;
import com.evelopers.unimod.runtime.ControlledObjectsManager;
import com.evelopers.unimod.runtime.ControlledObject;
import com.evelopers.unimod.runtime.EventProvidersManager;
import com.evelopers.unimod.runtime.EventProvider;
import com.evelopers.common.exception.CommonException;


public class Main {
    
    public static void main(String[] args) {

        try {

            ModelEngine me = ModelEngine.createStandAlone(
                new QueuedHandler(),
                new Model1EventProcessor(),
                new ControlledObjectsManager() {
                    DrawingWindows o1 = new DrawingWindows();
                    TrafficEngine o2 = new TrafficEngine();
                    /*Sounds o3 = new Sounds();
                    LightDiode o4 = new LightDiode();
                    Commentator o5 = new Commentator();*/
                    
                    public void init(ModelEngine enginethrows CommonException {}
                    public void dispose() {}
                    public ControlledObject getControlledObject(String coName) {
                        if (coName.equals("o1")) { return o1; 
                        else if (coName.equals("o2")) { return o2; 
                        /*else if (coName.equals("o3")) { return o3; }
                        else if (coName.equals("o4")) { return o4; }
                        else if (coName.equals("o5")) { return o5; }*/
                        else {
                                System.out.println("No such object " + coName + 
                                               " (look Main.java)");
                                return null
                        }
                    }
                },
                new EventProvidersManager() {
                    Timer p1 = new Timer();
                    SmartTimer p2 = new SmartTimer();
                    ButtonsEvents p3 = new ButtonsEvents();
                    
                    public void init(ModelEngine enginethrows CommonException {
                        p1.init(engine);
                        p2.init(engine);
                        p3.init(engine);
                    }
                    public void dispose() {
                        p1.dispose();
                        p2.dispose();
                        p3.dispose();
                    }
                    public EventProvider getEventProvider(String epName) {
                        if (epName.equals("p1")) { return p1; 
                        else if (epName.equals("p2")) { return p2; 
                        else return p3; }
                }
            });
            
            me.start();
            
        catch(CommonException e) {
            System.out.println(e.toString());
        }
        
    }

}