⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asrplayer.java

📁 openmap java写的开源数字地图程序. 用applet实现,可以像google map 那样放大缩小地图.
💻 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/layer/asrp/ASRPLayer.java,v $// $RCSfile: ASRPLayer.java,v $// $Revision: 1.1.2.8 $// $Date: 2005/08/25 16:05:44 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.layer.asrp;import com.bbn.openmap.I18n;import com.bbn.openmap.dataAccess.asrp.ASRPConstants;import com.bbn.openmap.dataAccess.asrp.ASRPDirectory;import com.bbn.openmap.dataAccess.asrp.ASRPDirectoryHandler;import com.bbn.openmap.dataAccess.asrp.TransmittalHeaderFile;import com.bbn.openmap.layer.OMGraphicHandlerLayer;import com.bbn.openmap.omGraphics.DrawingAttributes;import com.bbn.openmap.omGraphics.OMGraphicList;import com.bbn.openmap.proj.EqualArc;import com.bbn.openmap.proj.Projection;import com.bbn.openmap.util.DataBounds;import com.bbn.openmap.util.DataBoundsProvider;import com.bbn.openmap.util.Debug;import com.bbn.openmap.util.PropUtils;import java.awt.GridLayout;import java.awt.Component;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeEvent;import java.io.IOException;import java.util.Properties;import javax.swing.JCheckBox;import javax.swing.JPanel;/** * The ASRPLayer displays ASRP data, which is an international, * seamless imagery format, kind of like CADRG. This data must be * displayed on either LLYX or CADRG projections, although the layer * will display coverage rectangles over areas with imagery for * projections that are not the right type, or if the user should zoom * in or out to view the images. The properties for this layer are: * <P> *  * <pre> *   *    *    *    # Paths to TRANSH01.THF files that organize sets of ASRP image directories. *    asrpLayer.thf=thf1;thf2 *    # Alternatively, paths to ASRP directories can be used if the thf property is undefined. *    asrpLayer.asrpDirs=dir1;dir2 *    # Flag to show coverages when images can't be displayed. *    asrpLayer.showCoverage *    # Lastly, the suite of DrawingAttributes properties can be provided to set  *    # the parameters for the coverage rectangles. See DrawingAttributes for more options. *    asrpLayer.lineColor=FFFF0000 *    asrpLayer.fillColor=FFFF0000 *    *     *    * </pre> */public class ASRPLayer extends OMGraphicHandlerLayer implements        DataBoundsProvider, ASRPConstants {    protected ASRPDirectoryHandler asrpHandler;    protected String[] thfPaths = null;    protected String[] asrpDirs = null;    protected boolean showCoverage = true;    protected DrawingAttributes coverageDrawingAttributes;    /**     * Property describing a flag that can be set to show where image     * files are when they cannot be displayed or aren't showing up.     */    public final static String ShowCoverageProperty = "showCoverage";    /**     * The ASRPDirectory can be used to view the images from ASRP     * directories containing GEN, GER, SOU, QAL and IMG files. This     * property is only checked if the THFProperty is not set     * (asrpDir). Should contain a list of semi-colon separated paths     * to ASRP directories containing the files specifed above.     */    public final static String ASRPDirectoryProperty = "asrpDirs";    /**     * A semi-colon separated set of paths to TRANSH01.THF files     * containing information about ASRP images stored in directories     * next to the TRANSH01.THF file.     */    public final static String THFProperty = "thf";    public ASRPLayer() {        setName("ASRP");        setProjectionChangePolicy(new com.bbn.openmap.layer.policy.ListResetPCPolicy(this));        coverageDrawingAttributes = DrawingAttributes.getDefaultClone();    }    public synchronized OMGraphicList prepare() {        OMGraphicList ret = null;        Projection proj = getProjection();        if (proj == null) {            return ret;        }        try {            if (asrpHandler == null) {                asrpHandler = initialize();            }            if (!(proj instanceof EqualArc)) {                fireRequestInfoLine("ASRP data requires an Equal Arc projection (CADRG/LLXY)");            } else {                ret = asrpHandler.getImagesForProjection((EqualArc) proj);            }            if (ret == null && showCoverage) {                ret = asrpHandler.getCoverageBounds(proj,                        coverageDrawingAttributes);            }        } catch (IOException ioe) {            Debug.error("ASRPLayer(" + getName()                    + ") caught exception fetching images:\n"                    + ioe.getMessage());        }        return ret;    }    protected ASRPDirectoryHandler initialize() {        ASRPDirectoryHandler asrpDirHandler = new ASRPDirectoryHandler();        int i;        if (thfPaths != null) {            for (i = 0; i < thfPaths.length; i++) {                try {                    asrpDirHandler.add(new TransmittalHeaderFile(thfPaths[i]));                } catch (IOException ioe) {                    Debug.error("ASRPLayer (" + getName()                            + ") caught exception trying to read "                            + ASRPConstants.TRANS + ": " + ioe.getMessage());                }            }        } else if (asrpDirs != null) {            for (i = 0; i < asrpDirs.length; i++) {                asrpDirHandler.add(new ASRPDirectory(asrpDirs[i]));            }        }        return asrpDirHandler;    }    public ASRPDirectoryHandler getASRPHandler() {        return asrpHandler;    }    public void setASRPHandler(ASRPDirectoryHandler asrpHandlerIn) {        asrpHandler = asrpHandlerIn;    }    /**     * Set the paths used by the layer. Clears out the ASRP List     * currently set. The contents of the provided paths will be     * checked to see if they are paths to TRANSH01.THF files, and     * will be set to the ASRP directory files if they aren't. Call     * doPrepare() on this layer if you want the changes to take     * effect immediately.     */    public void setPaths(String[] pathsIn) {        if (pathsIn != null) {            if (pathsIn[0].indexOf(ASRPConstants.TRANS) != -1) {                thfPaths = pathsIn;            } else {                asrpDirs = pathsIn;            }            asrpHandler = null;// next projection change, we reload.        }    }    /**     * Returns THF paths if they are set, otherwise returns ASRP     * directory paths.     */    public String[] getPaths() {        if (thfPaths != null) {            return thfPaths;        } else {            return asrpDirs;        }    }    public void setProperties(String prefix, Properties props) {        super.setProperties(prefix, props);        coverageDrawingAttributes.setProperties(prefix, props);        prefix = PropUtils.getScopedPropertyPrefix(prefix);        thfPaths = PropUtils.initPathsFromProperties(props, prefix                + THFProperty, thfPaths);        if (thfPaths == null) {            asrpDirs = PropUtils.initPathsFromProperties(props, prefix                    + ASRPDirectoryProperty, asrpDirs);        }        showCoverage = PropUtils.booleanFromProperties(props, prefix                + ShowCoverageProperty, showCoverage);    }    public Properties getProperties(Properties props) {        props = super.getProperties(props);        String prefix = PropUtils.getScopedPropertyPrefix(this);        // find out paths...        if (thfPaths != null) {            String[] p = thfPaths;            StringBuffer pathString = new StringBuffer();            if (p != null) {                for (int i = 0; i < p.length; i++) {                    if (p[i] != null) {                        pathString.append(p[i]);                        if (i < p.length - 1) {                            pathString.append(";"); // separate paths                            // with ;                        }                    }                }            }            props.put(prefix + THFProperty, pathString.toString());        } else {            props.put(prefix + THFProperty, "");        }        if (asrpDirs != null) {            String[] p = asrpDirs;            StringBuffer pathString = new StringBuffer();            if (p != null) {                for (int i = 0; i < p.length; i++) {                    if (p[i] != null) {                        pathString.append(p[i]);                        if (i < p.length - 1) {                            pathString.append(";"); // separate paths                            // with ;                        }                    }                }            }            props.put(prefix + ASRPDirectoryProperty, pathString.toString());        } else {            props.put(prefix + ASRPDirectoryProperty, "");        }        props.put(prefix + ShowCoverageProperty,                new Boolean(showCoverage).toString());        coverageDrawingAttributes.setPropertyPrefix(prefix);        coverageDrawingAttributes.getProperties(props);        return props;    }    public Properties getPropertyInfo(Properties props) {        props = super.getPropertyInfo(props);        String interString;        interString = i18n.get(ASRPLayer.class,                THFProperty,                I18n.TOOLTIP,                "Paths to TRANSH01.THF files, takes precedence over ASRP property.  Separated by ;");        props.put(THFProperty, interString);        interString = i18n.get(ASRPLayer.class,                THFProperty,                "TRANSH01.THF files");        props.put(THFProperty + LabelEditorProperty, interString);        props.put(THFProperty + ScopedEditorProperty,                "com.bbn.openmap.util.propertyEditor.MultiDirFilePropertyEditor");        interString = i18n.get(ASRPLayer.class,                ASRPDirectoryProperty,                I18n.TOOLTIP,                "Paths to ASRP Directories (if no TRANSH01.THF files)");        props.put(ASRPDirectoryProperty, interString);        interString = i18n.get(ASRPLayer.class,                ASRPDirectoryProperty,                "ASRP directories");        props.put(ASRPDirectoryProperty + LabelEditorProperty, interString);        props.put(ASRPDirectoryProperty + ScopedEditorProperty,                "com.bbn.openmap.util.propertyEditor.MultiDirectoryPropertyEditor");        interString = i18n.get(ASRPLayer.class,                ShowCoverageProperty,                I18n.TOOLTIP,                "Show coverage areas when images can't be displayed.");        props.put(ShowCoverageProperty, interString);        interString = i18n.get(ASRPLayer.class,                ShowCoverageProperty,                "Show Coverage Areas");        props.put(ShowCoverageProperty + LabelEditorProperty, interString);        props.put(ShowCoverageProperty + ScopedEditorProperty,                "com.bbn.openmap.util.propertyEditor.YesNoPropertyEditor");        coverageDrawingAttributes.getPropertyInfo(props);        interString = i18n.get(ASRPLayer.class,                DrawingAttributes.linePaintProperty,                I18n.TOOLTIP,                "Edge color for coverage area markings.");        props.put(DrawingAttributes.linePaintProperty, interString);                interString = i18n.get(ASRPLayer.class,                DrawingAttributes.lineWidthProperty,                I18n.TOOLTIP,                "Line Width for coverage area markings.");        props.put(DrawingAttributes.lineWidthProperty, interString);                interString = i18n.get(ASRPLayer.class,                DrawingAttributes.fillPaintProperty,                I18n.TOOLTIP,                "Fill color for coverage area markings.");        props.put(DrawingAttributes.fillPaintProperty, interString);                props.put(initPropertiesProperty, THFProperty + " "                + ASRPDirectoryProperty + " " + ShowCoverageProperty + " "                + DrawingAttributes.linePaintProperty + " "                + DrawingAttributes.lineWidthProperty + " "                + DrawingAttributes.fillPaintProperty);        return props;    }    /**     * DataBoundsInformer interface.     */    public DataBounds getDataBounds() {        DataBounds box = null;        if (asrpHandler != null) {            box = asrpHandler.getDataBounds();        }        return box;    }    public void setShowCoverage(boolean showCoverageIn) {        showCoverage = showCoverageIn;    }    public boolean getShowCoverage() {        return showCoverage;    }    protected JPanel guiPanel = null;    public Component getGUI() {        if (guiPanel == null) {            JPanel gp = new JPanel();            gp.setLayout(new GridLayout(0, 1));            String interString = i18n.get(ASRPLayer.class,                    "showCoverageCheck",                    "Show Coverage");            JCheckBox coverageCheck = new JCheckBox(interString, getShowCoverage());            interString = i18n.get(ASRPLayer.class,                    "showCoverageCheck",                    I18n.TOOLTIP,                    "Show coverage areas when images can't be displayed.");            coverageCheck.setToolTipText(interString);            coverageCheck.addActionListener(new ActionListener() {                public void actionPerformed(ActionEvent ae) {                    JCheckBox jcb = (JCheckBox) ae.getSource();                    setShowCoverage(jcb.isSelected());                    doPrepare();                }            });            coverageDrawingAttributes.getPropertyChangeSupport()                    .addPropertyChangeListener(new PropertyChangeListener() {                        public void propertyChange(PropertyChangeEvent pce) {                            doPrepare();                        }                    });            interString = i18n.get(ASRPLayer.class,                    "coveragePanelTitle",                    "Coverage Controls");            JPanel covPanel = com.bbn.openmap.util.PaletteHelper.createVerticalPanel(interString);            covPanel.add(coverageCheck);            covPanel.add(coverageDrawingAttributes.getGUI());            gp.add(covPanel);            guiPanel = gp;        }        return guiPanel;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -