📄 installeddata.java
字号:
/*Copyright (C) 2001, 2008 United States Government as represented bythe Administrator of the National Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind.examples;import gov.nasa.worldwind.*;import gov.nasa.worldwind.avlist.*;import gov.nasa.worldwind.data.*;import gov.nasa.worldwind.geom.*;import gov.nasa.worldwind.globes.*;import gov.nasa.worldwind.layers.*;import gov.nasa.worldwind.terrain.*;import gov.nasa.worldwind.util.*;import gov.nasa.worldwind.view.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import javax.swing.filechooser.*;import java.awt.*;import java.awt.event.*;import java.beans.PropertyChangeEvent;import java.util.Hashtable;/** * @author dcollins * @version $Id: InstalledData.java 9411 2009-03-16 21:03:25Z tgaskins $ */public class InstalledData extends ApplicationTemplate{ public static final String DATA_SOURCE_DESCRIPTOR = "DataSourceDescriptor"; public static final String ACTION_COMMAND_VERTICAL_EXAGGERATION = "ActionCommandVerticalExaggeration"; public static class AppFrame extends ApplicationTemplate.AppFrame { private Controller controller; private LayerPanel layerPanel; private InstalledDataPanel installedDataPanel; private JFileChooser installDataFileChooser; public AppFrame() { super(true, false, false); this.controller = new Controller(this); this.makeComponents(); this.makeDataFileChoosers(); this.layoutComponents(); this.controller.refreshInstalled(); } public Controller getController() { return this.controller; } public LayerPanel getLayerPanel() { return this.layerPanel; } public InstalledDataPanel getInstalledDataPanel() { return this.installedDataPanel; } public JFileChooser getInstallDataFileChooser() { return this.installDataFileChooser; } private void makeDataFileChoosers() { DataStoreProducerFilter filter = new TiledRasterProducerFilter(TiledImageProducer.class); this.installDataFileChooser.addChoosableFileFilter(filter); filter = new TiledRasterProducerFilter(TiledElevationProducer.class); this.installDataFileChooser.addChoosableFileFilter(filter); filter = new DataStoreProducerFilter(WWDotNetLayerSetInstaller.class); this.installDataFileChooser.addChoosableFileFilter(filter); } private void makeComponents() { WorldWindow wwd = this.getWwd(); ElevationModel defaultModel = wwd.getModel().getGlobe().getElevationModel(); CompoundElevationModel compoundModel = new CompoundElevationModel(); compoundModel.addElevationModel(defaultModel); wwd.getModel().getGlobe().setElevationModel(compoundModel); this.layerPanel = new LayerPanel(wwd); this.installedDataPanel = new InstalledDataPanel(); this.installedDataPanel.addActionListener(this.controller); this.installedDataPanel.getPropertiesButton().setEnabled(false); this.installDataFileChooser = new JFileChooser(); this.installDataFileChooser.setMultiSelectionEnabled(true); this.installDataFileChooser.setAcceptAllFileFilterUsed(false); } private void layoutComponents() { JPanel panel = new JPanel(new BorderLayout()); { panel.setBorder(new EmptyBorder(10, 0, 10, 0)); JPanel controlPanel = new JPanel(new BorderLayout(0, 10)); controlPanel.setBorder(new EmptyBorder(20, 10, 20, 10)); JPanel vePanel = new JPanel(new BorderLayout(0, 5)); { JLabel label = new JLabel("Vertical Exaggeration"); vePanel.add(label, BorderLayout.NORTH); int MIN_VE = 1; int MAX_VE = 8; int curVe = (int) this.getWwd().getSceneController().getVerticalExaggeration(); curVe = curVe < MIN_VE ? MIN_VE : (curVe > MAX_VE ? MAX_VE : curVe); JSlider slider = new JSlider(MIN_VE, MAX_VE, curVe); slider.setMajorTickSpacing(1); slider.setPaintTicks(true); slider.setSnapToTicks(true); Hashtable<Integer, JLabel> labelTable = new Hashtable<Integer, JLabel>(); labelTable.put(1, new JLabel("1x")); labelTable.put(2, new JLabel("2x")); labelTable.put(4, new JLabel("4x")); labelTable.put(8, new JLabel("8x")); slider.setLabelTable(labelTable); slider.setPaintLabels(true); slider.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { double ve = ((JSlider) e.getSource()).getValue(); ActionEvent ae = new ActionEvent(ve, 0, ACTION_COMMAND_VERTICAL_EXAGGERATION); controller.actionPerformed(ae); } }); vePanel.add(slider, BorderLayout.SOUTH); } controlPanel.add(vePanel, BorderLayout.SOUTH); controlPanel.add(vePanel, BorderLayout.SOUTH); panel.add(controlPanel, BorderLayout.SOUTH); this.layerPanel = new LayerPanel(this.getWwd(), null); panel.add(this.layerPanel, BorderLayout.CENTER); } this.getContentPane().add(panel, BorderLayout.WEST); this.getContentPane().add(this.installedDataPanel, BorderLayout.SOUTH); } } public static class DataStoreProducerFilter extends FileFilter { private Class<? extends DataStoreProducer> producerClass; private AVList parameters; public DataStoreProducerFilter(Class<? extends DataStoreProducer> producerClass, AVList parameters) { this.producerClass = producerClass; this.parameters = parameters; } public DataStoreProducerFilter(Class<? extends DataStoreProducer> producerClass) { this.producerClass = producerClass; this.parameters = new AVListImpl(); } public DataStoreProducer createProducer() throws Exception { return this.producerClass.newInstance(); } public Class<? extends DataStoreProducer> getProducerClass() { return this.producerClass; } public AVList getParameters() { return this.parameters; } public boolean accept(java.io.File f) { //noinspection SimplifiableIfStatement if (f.isDirectory()) return true; DataStoreProducer producer; try { producer = this.createProducer(); } catch (Exception e) { Logging.logger().log(java.util.logging.Level.SEVERE, "ExceptionCreatingProducer", e); return false; } DataSource source = new BasicDataSource(f); return producer.acceptsDataSource(source); } public String getDescription() { DataStoreProducer producer; try { producer = this.createProducer(); } catch (Exception e) { Logging.logger().log(java.util.logging.Level.SEVERE, "ExceptionCreatingProducer", e); return null; } return producer.getDataSourceDescription(); } public Object showControls(java.awt.Component component, java.io.File[] selectedFiles) { return this; } } public static class TiledRasterProducerFilter extends DataStoreProducerFilter { public TiledRasterProducerFilter(Class<? extends DataStoreProducer> producerClass, AVList parameters) { super(producerClass, parameters); } public TiledRasterProducerFilter(Class<? extends DataStoreProducer> producerClass) { super(producerClass); } public Object showControls(java.awt.Component component, java.io.File[] selectedFiles) { Object o = JOptionPane.showInputDialog(component, "Name:", null, JOptionPane.QUESTION_MESSAGE, null, null, "New Data Set"); if (o == null) return null; this.getParameters().setValue(AVKey.DATASET_NAME, o.toString()); this.getParameters().setValue(AVKey.DATA_CACHE_NAME, o.toString()); return o; } } public static class Controller implements ActionListener { private AppFrame appFrame; public Controller(AppFrame appFrame) { this.appFrame = appFrame; } public AppFrame getAppFrame() { return this.appFrame; } public void actionPerformed(ActionEvent event) { if (InstalledDataPanel.REFRESH_ACTION_COMMAND.equals(event.getActionCommand())) { this.refreshInstalled(); } else if (InstalledDataPanel.INSTALL_ACTION_COMMAND.equals(event.getActionCommand())) { this.selectAndInstall(); } else if (InstalledDataPanel.UNINSTALL_ACTION_COMMAND.equals(event.getActionCommand()))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -