Package trafficjams.model.visualization

Source Code of trafficjams.model.visualization.RoadMapCanvas

package trafficjams.model.visualization;

import trafficjams.model.Numbers;
import trafficjams.model.interfaces.ICrossRoad;
import trafficjams.model.interfaces.IRoad;
import trafficjams.model.interfaces.IVehicle;
import trafficjams.model.registers.RoadMap;
import trafficjams.model.registers.TrafficRegister;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
* Created by IntelliJ IDEA.
* User: Администратор
* Date: 12.11.11
* Time: 19:18
* To change this template use File | Settings | File Templates.
*/
public class RoadMapCanvas extends JPanel {
    static {
        instance = new RoadMapCanvas();
    }

    private static final RoadMapCanvas instance;
    private Timer timer;
    private boolean repaintAllowed = false;

    private RoadMapCanvas(){
        super();
        super.setSize( (int)Numbers.mapWidth, (int)Numbers.mapHeight);
        ActionListener al = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                repaint();
            }
        };
        timer = new Timer(Numbers.repaintInterval, al);
        timer.start();
    }

    public boolean isRepaintAllowed() {
        return repaintAllowed;
    }

    public void setRepaintAllowed(boolean repaintAllowed) {
        this.repaintAllowed = repaintAllowed;
    }

    public static RoadMapCanvas getInstance() {
        return instance;
    }


    @Override
    protected void paintComponent(Graphics g){
        super.paintComponent(g);
        g.setColor(Color.PINK);
        g.drawLine(0,0,0, (int)Numbers.mapHeight);
        g.drawLine(0,0,(int) Numbers.mapWidth,0);
        g.drawLine((int) Numbers.mapWidth,(int)Numbers.mapHeight,0, (int)Numbers.mapHeight);
        g.drawLine((int) Numbers.mapWidth,(int)Numbers.mapHeight,  (int) Numbers.mapWidth,0);

        if (this.repaintAllowed){
            RoadMap map = TrafficRegister.getInstance().getRoadMap();
            if (map == null)
                return;

            g.setColor(Color.yellow);
            for (ICrossRoad cr : map.getL_CrossRoads() ) {
                Point p = cr.getCoord().toAwtPoint();
                g.fillRect(p.x-5,p.y-5, 10, 10);
            }

            g.setColor(Color.blue);
            for (IRoad r : map.getRoads()){
                Point p1 = r.getFCross().getCoord().toAwtPoint();
                Point p2 = r.getLCross().getCoord().toAwtPoint();
                g.drawLine(p1.x, p1.y, p2.x , p2.y);
            }


            for (IVehicle v : TrafficRegister.getInstance().getVehicleRegister().getVehicles()){
                Point p = v.getCoord().toAwtPoint();
                try{
                    float f = ((Float)v.getCurrentPosition().getValue()).floatValue();
                    if (f>=0){
                        g.setColor(Color.red);
                        g.fillOval(p.x - 4 , p.y - 4 , 5 , 5);
                    }else {
                        g.setColor(Color.blue);
                        g.fillOval(p.x , p.y , 5 , 5);
                    }
                }catch (Exception ex){
                    g.setColor(Color.GREEN);
                    g.fillOval(p.x - 3, p.y - 3 , 5 , 5);
                }

            }

        }
    }
}
TOP

Related Classes of trafficjams.model.visualization.RoadMapCanvas

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.