Package org.movsim.viewer.ui

Source Code of org.movsim.viewer.ui.Applet

package org.movsim.viewer.ui;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.net.URL;
import java.util.Properties;
import java.util.ResourceBundle;

import javax.swing.JApplet;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

import org.apache.log4j.PropertyConfigurator;
import org.movsim.input.ProjectMetaData;
import org.movsim.simulator.Simulator;
import org.movsim.viewer.graphics.TrafficCanvas;
import org.movsim.viewer.util.LocalizationStrings;

public class Applet extends JApplet {
    private static final long serialVersionUID = 1L;
    private static String DEFAULT_SCENARIO = "/sim/games/routing";

    private CanvasPanel canvasPanel;
    private StatusPanel statusPanel;
    private Component toolBar;

    @Override
    public void init() {
        super.init();

        setLayout(new BorderLayout());
        initializeLogger();
        final ResourceBundle resourceBundle = ResourceBundle.getBundle(LocalizationStrings.class.getName());

        final ProjectMetaData projectMetaData = ProjectMetaData.getInstance();
        projectMetaData.setXmlFromResources(true);
        projectMetaData.setInstantaneousFileOutput(false);
        Properties properties = ViewProperties.loadDefaultProperties();

        String scenario = getParameter("scenario");
        if (scenario == null) {
            scenario = DEFAULT_SCENARIO;
        }
        final String scenarioPath = scenario.substring(0, scenario.lastIndexOf("/")+1);
        projectMetaData.setPathToProjectXmlFile(scenarioPath);
        final String scenarioName = scenario.substring(scenario.lastIndexOf("/")+1);
        projectMetaData.setProjectName(scenarioName);

        final Simulator simulator = new Simulator();
        initLookAndFeel();

        final TrafficCanvas trafficCanvas = new TrafficCanvas(simulator, properties);
        canvasPanel = new CanvasPanel(resourceBundle, trafficCanvas);
        statusPanel = new StatusPanel(resourceBundle, simulator);

        addToolBar(resourceBundle, trafficCanvas);
        addMenu(resourceBundle, simulator, trafficCanvas);

        add(canvasPanel, BorderLayout.CENTER);
        add(toolBar, BorderLayout.NORTH);

        setSize(1280, 800);
        resize(1280, 800);
        canvasPanel.setSize(1280, 800);
        trafficCanvas.setSize(1280, 800);

        canvasPanel.resized();
        canvasPanel.repaint();

        statusPanel.setWithProgressBar(false);
        statusPanel.reset();
        trafficCanvas.setupTrafficScenario(projectMetaData.getProjectName(), projectMetaData.getPathToProjectFile());
        final String projectName = projectMetaData.getProjectName();
        if (projectName.equals("routing") || projectName.equals("ramp_metering")) {
            trafficCanvas.setVehicleColorMode(TrafficCanvas.VehicleColorMode.EXIT_COLOR);
        }
        trafficCanvas.start();
    }

    private void addToolBar(ResourceBundle resourceBundle, TrafficCanvas trafficCanvas) {
        toolBar = new MovSimToolBar(statusPanel, trafficCanvas, resourceBundle);
    }

    private void addMenu(ResourceBundle resourceBundle, Simulator simulator, TrafficCanvas trafficCanvas) {
        final AppletMenu trafficMenus = new AppletMenu(canvasPanel, trafficCanvas, statusPanel, resourceBundle);
        trafficMenus.initMenus(this);
    }

    private void initLookAndFeel() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            System.out.println("set to system LaF");
        } catch (final ClassNotFoundException e) {
            e.printStackTrace();
        } catch (final InstantiationException e) {
            e.printStackTrace();
        } catch (final IllegalAccessException e) {
            e.printStackTrace();
        } catch (final UnsupportedLookAndFeelException e) {
            e.printStackTrace();
        }
        SwingUtilities.updateComponentTreeUI(this);
    }

    /**
     * Initializes the LOG.
     */
    private static void initializeLogger() {
        // Log Levels: DEBUG < INFO < WARN < ERROR;
        final URL log4jConfig = Applet.class.getResource("/config/log4japplet.properties");
        PropertyConfigurator.configure(log4jConfig);
    }

    @Override
    public void resize(int width, int height) {
        super.resize(width, height);
    }

    @Override
    public void resize(Dimension d) {
        super.resize(d);
    }

    @Override
    public void start() {
        super.start();
    }

    @Override
    public void stop() {
        super.stop();
    }

    @Override
    public void destroy() {
        super.destroy();
    }
}
TOP

Related Classes of org.movsim.viewer.ui.Applet

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.