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

📄 corbarpflayer.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/corba/com/bbn/openmap/layer/rpf/corba/CorbaRpfLayer.java,v $// $RCSfile: CorbaRpfLayer.java,v $// $Revision: 1.3.2.2 $// $Date: 2005/08/09 21:17:58 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.layer.rpf.corba;/*  Java Core  */import java.util.Properties;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JSlider;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import com.bbn.openmap.event.ProjectionEvent;import com.bbn.openmap.layer.rpf.RpfFrameProvider;import com.bbn.openmap.layer.rpf.RpfLayer;import com.bbn.openmap.layer.rpf.RpfViewAttributes;import com.bbn.openmap.omGraphics.OMGraphicList;import com.bbn.openmap.util.PaletteHelper;import com.bbn.openmap.util.PropUtils;/** * An RpfLayer that uses a CORBA-based RpfFrameProvider. JDK 1.2 and * the <BR> * com.sun.image.codec.jpeg package is required, as well as some <BR> * CORBA implementation. Tested with Visibroker 3.3. *  * <BR> * #----------------------------- <BR> * # Additional Properties for RpfLayer <BR> * #----------------------------- <BR> * layer.jpegQuality= <quality between 0.4 and 1.0> # ior | name * property, ior takes precidence if both are listed. layer.ior= <URL * for ior file> layer.name= <CORBA name for server> <BR> */public class CorbaRpfLayer extends RpfLayer {    /** Property to change the quickRedraw setting. T/F */    public static final String QuickRedrawProperty = ".quickRedraw";    /**     * Flag to attempt to redraw the images already in the cache while     * waiting for new frames. Works better for slower servers.     * Default value is false.     */    protected boolean quickRedraw = false;    /**     * Keep a copy in case the frame provider goes away. It's     * happened.     */    protected Properties props = null;    /**     * The default constructor for the Layer. All of the attributes     * are set to their default values. Use this construct if you are     * going to use a standard properties file, which will set the     * paths.     */    public CorbaRpfLayer() {        super();        setFrameProvider((RpfFrameProvider) new CRFPClient());    }    /**     * Set all the RPF properties from a properties object.     */    public void setProperties(String prefix, java.util.Properties properties) {        super.setProperties(prefix, properties);        props = properties;        ((CRFPClient) frameProvider).setProperties(prefix, properties);        quickRedraw = PropUtils.booleanFromProperties(properties, prefix                + QuickRedrawProperty, false);    }    public void removed(java.awt.Container cont) {        super.removed(cont);        finalize();    }    /**     * Clear the frame cache.     */    public void clearCache() {        if (this.cache != null) {            // This is bad, and is changed from the RpfLayer. Make            // sure this never happens.            //          this.cache.setViewAttributes(null);            //          this.cache.setFrameProvider(null);            this.cache.clearCaches();        }        // This, too must never happen.        frameProvider = null;        setGraphicList(null);        this.cache = null;    }    /**     * When the layer is deleted, it should sign off from the server,     * so that it can free up it's cache for it.     */    public void finalize() {        // Check just in case, although this should never happen.        if (frameProvider != null) {            ((CRFPClient) frameProvider).finalize();        }    }    /**     * Creates the RpfFrameProvider. If one is already here, nothing     * happens.     *      * @param pathsToRPFDirs Array of strings that list the paths to     *        RPF directories.     */    public void setPaths(String[] pathsToRPFDirs) {        RpfFrameProvider frameProvider = getFrameProvider();        if (frameProvider != null) {            return;        }        setFrameProvider((RpfFrameProvider) new CRFPClient());        if (props != null && frameProvider != null) {            // Set default settings...            ((CRFPClient) frameProvider).setProperties(getPropertyPrefix(),                    props);        }        this.cache = null;    }    /**     * The projectionListener interface method that lets the Layer     * know when the projection has changes, and therefore new     * graphics have to created /supplied for the screen.     *      * @param e The projection event, most likely fired from a map     *        bean.     */    public void projectionChanged(ProjectionEvent e) {        projectionChanged(e, false);    }    /**     * Prepares the graphics for the layer. The only thing this method     * does that is different than the RpfLayer is that if the current     * OMGraphicList is not null, then it is reprojected and redrawn.     *      * @return OMGraphicList of images and text.     */    public OMGraphicList prepare() {        OMGraphicList oldList = getGraphicList();        if (oldList != null) {            oldList.generate(getProjection());            if (getCoverage() != null) {                getCoverage().generate(getProjection());            }            repaint();        }        return super.prepare();    }    /**     * Provides the palette widgets to control the options of showing     * maps, or attribute text.     *      * @return Component object representing the palette widgets.     */    public java.awt.Component getGUI() {        JCheckBox showMapsCheck, showInfoCheck, lockSeriesCheck;        Box box = Box.createVerticalBox();        Box box1 = Box.createVerticalBox();        Box box2 = Box.createVerticalBox();        JPanel topbox = new JPanel();        showMapsCheck = new JCheckBox("Show Images", viewAttributes.showMaps);        showMapsCheck.setActionCommand(showMapsCommand);        showMapsCheck.addActionListener(this);        showInfoCheck = new JCheckBox("Show Attributes", viewAttributes.showInfo);        showInfoCheck.setActionCommand(showInfoCommand);        showInfoCheck.addActionListener(this);        boolean locked = viewAttributes.chartSeries.equalsIgnoreCase(RpfViewAttributes.ANY) ? false                : true;        String lockedTitle = locked ? (lockedButtonTitle + " - " + viewAttributes.chartSeries)                : unlockedButtonTitle;        lockSeriesCheck = new JCheckBox(lockedTitle, locked);        lockSeriesCheck.setActionCommand(lockSeriesCommand);        lockSeriesCheck.addActionListener(this);        box1.add(showMapsCheck);        box1.add(showInfoCheck);        box1.add(lockSeriesCheck);        if (coverage != null) {            JCheckBox showCoverageCheck = new JCheckBox("Show Coverage Tool", false);            showCoverageCheck.setActionCommand(showCoverageCommand);            showCoverageCheck.addActionListener(this);            box1.add(showCoverageCheck);        }        topbox.add(box1);        topbox.add(box2);        box.add(topbox);        JPanel opaquePanel = PaletteHelper.createPaletteJPanel("Map Opaqueness");        JSlider opaqueSlide = new JSlider(JSlider.HORIZONTAL, 0/* min */, 255/* max */, viewAttributes.opaqueness/* inital */);        java.util.Hashtable dict = new java.util.Hashtable();        dict.put(new Integer(0), new JLabel("clear"));        dict.put(new Integer(255), new JLabel("opaque"));        opaqueSlide.setLabelTable(dict);        opaqueSlide.setPaintLabels(true);        opaqueSlide.setMajorTickSpacing(50);        opaqueSlide.setPaintTicks(true);        opaqueSlide.addChangeListener(new ChangeListener() {            public void stateChanged(ChangeEvent ce) {                JSlider slider = (JSlider) ce.getSource();                if (!slider.getValueIsAdjusting()) {                    getViewAttributes().opaqueness = slider.getValue();                    // Notify the server...                    getFrameProvider().setViewAttributes(getViewAttributes());                    fireRequestInfoLine("RPF Opaqueness set to "                            + getViewAttributes().opaqueness                            + " for future requests.");                }            }        });        opaquePanel.add(opaqueSlide);        box.add(opaquePanel);        if (getViewAttributes().colorModel == com.bbn.openmap.omGraphics.OMRasterObject.COLORMODEL_DIRECT) {            JPanel qualityPanel = PaletteHelper.createPaletteJPanel("Image JPEG Quality/Time");            JSlider qualitySlide = new JSlider(JSlider.HORIZONTAL, 0/* min */, 100/* max */, (int) (((CRFPClient) frameProvider).jpegQuality * 100)/* inital */);            java.util.Hashtable dict2 = new java.util.Hashtable();            dict2.put(new Integer(0), new JLabel("Less"));            dict2.put(new Integer(100), new JLabel("More"));            qualitySlide.setLabelTable(dict2);            qualitySlide.setPaintLabels(true);            qualitySlide.setMajorTickSpacing(20);            qualitySlide.setPaintTicks(true);            qualitySlide.addChangeListener(new ChangeListener() {                public void stateChanged(ChangeEvent ce) {                    JSlider slider = (JSlider) ce.getSource();                    if (!slider.getValueIsAdjusting()) {                        ((CRFPClient) getFrameProvider()).jpegQuality = (float) (slider.getValue()) / 100f;                        fireRequestInfoLine("RPF Image JPEG Quality set to "                                + ((CRFPClient) getFrameProvider()).jpegQuality                                + " for future requests.");                    }                }            });            qualityPanel.add(qualitySlide);            box.add(qualityPanel);        }        JPanel subbox2 = new JPanel();        JButton redraw = new JButton("Redraw RPF Layer");        redraw.addActionListener(this);        subbox2.add(redraw);        box.add(subbox2);        return box;    }}

⌨️ 快捷键说明

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