Package com.bbn.openmap.examples.crew

Source Code of com.bbn.openmap.examples.crew.Crew

// **********************************************************************
//
// <copyright>
//
//  BBN Technologies
//  10 Moulton Street
//  Cambridge, MA 02138
//  (617) 873-8000
//
//  Copyright (C) BBNT Solutions LLC. All rights reserved.
//
// </copyright>
// **********************************************************************
//
// $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/examples/crew/Crew.java,v $
// $RCSfile: Crew.java,v $
// $Revision: 1.3.2.2 $
// $Date: 2005/05/24 18:38:25 $
// $Author: dietrick $
//
// **********************************************************************

package com.bbn.openmap.examples.crew;

import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.InputStream;
import java.util.Properties;

import javax.swing.JFrame;

import com.bbn.openmap.LatLonPoint;
import com.bbn.openmap.Layer;
import com.bbn.openmap.LayerHandler;
import com.bbn.openmap.MapBean;
import com.bbn.openmap.MapHandler;
import com.bbn.openmap.MouseDelegator;
import com.bbn.openmap.MultipleSoloMapComponentException;
import com.bbn.openmap.event.SelectMouseMode;
import com.bbn.openmap.gui.LayersPanel;
import com.bbn.openmap.gui.OMToolSet;
import com.bbn.openmap.gui.ToolPanel;
import com.bbn.openmap.layer.shape.ShapeLayer;

/**
* A sample application incorporating the <code>MapBean</code>.
* This program adds a MouseMode that passes events to the RouteLayer.
* Move the mouse over the three lines, and click on them.
*/
public class Crew extends JFrame {

    /** The name of the resource file. */
    public static String crewResources = "Crew.properties";

    /**
     * The properties acquired from the resource file.
     *
     * @see #crewResources
     */
    private Properties properties;

    /**
     * Create a default Crew instance. The instance will use the
     * default properties.
     */
    public Crew() throws MultipleSoloMapComponentException {
        this(new Properties());
    }

    /**
     * Create a Crew instance with the given properties. The
     * properties override the defaults.
     *
     * @param props The override properties
     */
    public Crew(Properties props) throws MultipleSoloMapComponentException {

        // Initialize the parent class (JFrame)
        super("Crew Example");

        // Use a Border layout manager
        getContentPane().setLayout(new BorderLayout());

        // Call quit when the window's close box is clicked.
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                quit();
            }
        });

        // Store the given properties for later use.
        properties = props;

        // Create the MapHandler, which allows all the components to
        // find each other if they are added to it.
        MapHandler mapHandler = new MapHandler();
        // Create the MapBean.
        MapBean map = new MapBean();
        // Set the map's center property
        map.setCenter(new LatLonPoint(43.0f, -95.0f));
        // Add the MapBean to the MapHandler.
        mapHandler.add(map);

        // Add the map to the JFrame
        getContentPane().add(map, BorderLayout.CENTER);

        // Create a mouse delegator to handle mouse events on the map
        mapHandler.add(new MouseDelegator());
        // Create and add the MouseMode that the RouteLayer wants
        // events from. The MouseDelegator asks all layers which
        // MouseMode they listen to, and hooks them up. When that
        // MouseMode is active, events flow to the top layer, then
        // down to lower layers if the event is not consumed along the
        // way.
        mapHandler.add(new SelectMouseMode());

        // Add a LayerHandler, which manages all layers, on or off.
        mapHandler.add(new LayerHandler());

        // Create and add a Political Background
        Layer layer = createPoliticalLayer();
        if (layer != null)
            mapHandler.add(layer);

        // Create and add a Route Layer. The LayerHandler will find
        // it via the LayerHandler, and then the LayerHandler will add
        // it to the map because layer.isVisible() == true;
        layer = createRouteLayer();
        if (layer != null) {
            layer.setName("Routes");
            mapHandler.add(layer);
        }

        // Add some navigation tools. The ToolPanel will find the
        // OMToolSet (a Tool) in the MapHandler.
        ToolPanel toolPanel = new ToolPanel();
        mapHandler.add(toolPanel);
        mapHandler.add(new OMToolSet());
        // Add the ToolPanel to the JFrame.
        getContentPane().add(toolPanel, BorderLayout.NORTH);

        // Oh, for fun, lets add a GUI to control the layers. A
        // button to launch it will get added to the ToolPanel.
        mapHandler.add(new LayersPanel());

        // You can add other components from the com.bbn.openmap.gui
        // package...
    }

    /**
     * Creates a political boundary map layer. Actually, this method
     * instantiates a DCW Layer (Digital Chart of the World), and sets
     * the layer's parameters so that it will render a political map.
     * <p>
     * Creation of the political layer is controlled by the
     * <code><bold>
     * showPolitical</bold></code> property. See the
     * resource file crew.properties for more information.
     *
     * @return the political layer, or null if an error occurred
     */
    protected Layer createPoliticalLayer() {
        Boolean showPolitical;

        // You can add a showPolitical=false property to the
        // Crew.properties file to make this layer not be added to the
        // application.
        showPolitical = new Boolean(properties.getProperty("showPolitical",
                "true"));

        if (!showPolitical.booleanValue()) {
            return null;
        }

        ShapeLayer politicalLayer = new ShapeLayer();
        politicalLayer.setProperties("political", properties);

        return politicalLayer;
    }

    /**
     * Creates a route layer to display great circle lines on the map.
     *
     * @return the route layer
     * @see RouteLayer
     */
    protected Layer createRouteLayer() {
        return new RouteLayer();
    }

    /**
     * Exits the application.
     */
    protected void quit() {
        System.exit(0);
    }

    /**
     * Launches the application. Reads the resource file, instantiates
     * a application, sizes it and displays it.
     *
     * @param args command line arguments -- ignored
     */
    public static void main(String[] args) {
        Crew crew;
        Properties crewProps = new Properties();
        InputStream propsIn = Crew.class.getResourceAsStream(crewResources);

        if (propsIn == null) {
            System.err.println("Unable to locate resources: " + crewResources);
            System.err.println("Using default resources.");
        } else {
            try {
                crewProps.load(propsIn);
            } catch (java.io.IOException e) {
                System.err.println("Caught IOException loading resources: "
                        + crewResources);
                System.err.println("Using default resources.");
            }
        }

        try {
            crew = new Crew(crewProps);
            crew.setSize(700, 500);
            crew.pack();
            crew.setVisible(true);
        } catch (MultipleSoloMapComponentException msmce) {
            // The MapHandler is only allowed to have one of certain
            // items. These items implement the SoloMapComponent
            // interface. The MapHandler can have a policy that
            // determines what to do when duplicate instances of the
            // same type of object are added - replace or ignore.

            // In this example, this will never happen, since we are
            // controlling that one MapBean, LayerHandler,
            // MouseDelegator, etc is being added to the MapHandler.
        }
    }
}
TOP

Related Classes of com.bbn.openmap.examples.crew.Crew

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.