📄 corbarpflayer.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 + -