?? exampleapplication.java
字號:
// **********************************************************************
//
// <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/plugin/esri/ExampleApplication.java,v
// $
// $RCSfile: ExampleApplication.java,v $
// $Revision: 1.2.2.2 $
// $Date: 2005/08/09 21:17:49 $
// $Author: dietrick $
//
// **********************************************************************
package com.bbn.openmap.plugin.esri;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileOutputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Vector;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import com.bbn.openmap.LatLonPoint;
import com.bbn.openmap.Layer;
import com.bbn.openmap.LayerHandler;
import com.bbn.openmap.MapBean;
import com.bbn.openmap.MouseDelegator;
import com.bbn.openmap.dataAccess.shape.DbfTableModel;
import com.bbn.openmap.dataAccess.shape.EsriGraphicList;
import com.bbn.openmap.dataAccess.shape.EsriPolyline;
import com.bbn.openmap.dataAccess.shape.EsriPolylineList;
import com.bbn.openmap.dataAccess.shape.output.DbfOutputStream;
import com.bbn.openmap.dataAccess.shape.output.ShpOutputStream;
import com.bbn.openmap.dataAccess.shape.output.ShxOutputStream;
import com.bbn.openmap.event.NavMouseMode;
import com.bbn.openmap.event.SelectMouseMode;
import com.bbn.openmap.gui.DefaultHelpMenu;
import com.bbn.openmap.gui.LayersMenu;
import com.bbn.openmap.gui.MouseModePanel;
import com.bbn.openmap.gui.OMToolSet;
import com.bbn.openmap.gui.Tool;
import com.bbn.openmap.gui.ToolPanel;
import com.bbn.openmap.layer.GraticuleLayer;
import com.bbn.openmap.omGraphics.OMGraphic;
/*
* ExampleApplication illustrates three uses of the EsriLayer: 1) how
* to create new geometry and tabular data at run time, 2) how to load
* geometry and tabular data from a file system or a web server, and
* 3) how to save a layer conforming to Esri's shape file format
* specification. @author Doug Van Auken
*/
public class ExampleApplication extends JFrame {
private EsriLayer _drawableLayer = null;
private MapBean _mapBean = null;
private Layer _layers[] = null;
private LayerHandler _layerHandler = null;
private OMToolSet _omts = null;
private ToolPanel _toolPanel = null;
private JMenuBar _menuBar = null;
private MouseDelegator _mouseDelegator = null;
private MouseModePanel _mouseModePanel = null;
/* Menu bar declarations */
private DefaultHelpMenu _defaultHelpMenu = null;
private JMenu _fileMenu = null;
private LayersMenu _layersMenu = null;
private JMenuItem _openFileChooser = null;
private JMenuItem _saveFileChooser = null;
private JMenuItem _showTable = null;
private JMenuItem _httpExample = null;
private JMenuItem _exit = null;
private JMenuItem _addShape = null;
private JMenuItem _setModel = null;
/*
* Constructor.
*/
public ExampleApplication() {
_mapBean = new MapBean();
_menuBar = new JMenuBar();
_toolPanel = new ToolPanel();
_omts = new OMToolSet();
_omts.findAndInit(_mapBean);
_mouseDelegator = new MouseDelegator(_mapBean);
_mouseModePanel = new MouseModePanel(_mouseDelegator);
NavMouseMode nmm = new NavMouseMode();
SelectMouseMode smm = new SelectMouseMode();
_mouseDelegator.addMouseMode(nmm);
_mouseDelegator.addMouseMode(smm);
setupUI();
}
/**
* Presents a JOptionPane to the user to enable them to specify
* which file to retreive
*
* @return A string denoting the location of the file to retreive
*/
public String getRemoteFile() {
Object urls[] = {
"http://www.somewebserver.com/omdemo/resources/cities",
"http://www.somewebserver.com/omdemo/resources/rivers",
"http://www.somewebserver.com/omdemo/resources/southwest",
"http://www.somewebserver.com/omdemo/resources/states" };
String url = (String) JOptionPane.showInputDialog(null,
"Select a url",
"Input",
JOptionPane.INFORMATION_MESSAGE,
null,
urls,
urls[0]);
return url;
}
/**
* Presents a JOptionPane to the user to enable them to pick which
* layer should be persisted to file.
*
* @return The layer the user selected
*/
private EsriLayer pickEsriLayer() {
Layer[] layers = _layerHandler.getLayers();
Vector vector = new Vector();
for (int n = 0; n <= layers.length - 1; n++) {
if (layers[n] instanceof EsriLayer) {
String name = layers[n].getName();
vector.add(name);
}
}
Object[] objects = vector.toArray();
if (objects.length > 0) {
String selected = (String) JOptionPane.showInputDialog(null,
"Choose one",
"Input",
JOptionPane.INFORMATION_MESSAGE,
null,
objects,
objects[0]);
for (int n = 0; n <= layers.length - 1; n++) {
String name = layers[n].getName();
if (name.equalsIgnoreCase(selected)) {
return (EsriLayer) layers[n];
}
}
}
return null;
}
/**
* Sets up user interface.
*/
public void setupUI() {
getContentPane().setLayout(new BorderLayout());
setSize(640, 480);
_mapBean.setCenter(new LatLonPoint(43.0f, -95.0f));
_mapBean.setScale(120000000f);
_layers = new Layer[1];
Properties props = new Properties();
props.put("prettyName", "Graticule");
props.put("showRuler", "true");
props.put("show1And5Lines", "true");
props.put("threshold", "2");
props.put("10DegreeColor", "FF000000");
props.put("5DegreeColor", "FF009900");
props.put("1DegreeColor", "FF003300");
props.put("equatorColor", "FFFF0000");
props.put("dateLineColor", "FF000099");
props.put("specialLineColor", "FF000000");
props.put("textColor", "FF000000");
GraticuleLayer graticule = new GraticuleLayer();
graticule.setProperties(props);
_layers[0] = graticule;
//Finish setting up the GUI.
_layerHandler = new LayerHandler(_layers);
_layerHandler.addLayerListener(_mapBean);
_layersMenu = new LayersMenu(_layerHandler);
_fileMenu = new JMenu("File");
_httpExample = new JMenuItem("HTTP Example");
_httpExample.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String url = stripExtension(getRemoteFile(), "shp");
URL dbf = null, shp = null, shx = null;
dbf = new URL(url + ".dbf");
shp = new URL(url + ".shp");
shx = new URL(url + ".shx");
EsriLayer layer = new EsriLayer(url, dbf, shp, shx);
_layerHandler.addLayer(layer);
} catch (Exception exception) {
System.out.println(exception);
}
}
});
_showTable = new JMenuItem("Show Table");
_showTable.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
EsriLayer layer = pickEsriLayer();
showTable(layer);
}
});
_setModel = new JMenuItem("Set Model");
_setModel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
try {
_drawableLayer = new EsriLayer("Drawable Layer", 3, 1); //Create
// a
// polyline
// layer
_drawableLayer.setName("Drawable Layer");
_layerHandler.addLayer(_drawableLayer);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -