/*
Copyright (C) 2001, 2008 United States Government
as represented by the Administrator of the
National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.examples;
import gov.nasa.worldwind.globes.FlatGlobe;
import gov.nasa.worldwind.WorldWindow;
import javax.swing.*;
import javax.swing.border.CompoundBorder;
import javax.swing.border.TitledBorder;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
* Panel to control a flat world projection.
*
* @author Patrick Murris
* @version $Id: FlatWorldPanel.java 5217 2008-04-30 05:08:02Z tgaskins $
*/
public class FlatWorldPanel extends JPanel
{
private WorldWindow wwd;
private FlatGlobe globe;
private String projection;
private JComboBox projectionCombo;
public FlatWorldPanel(WorldWindow wwd)
{
super(new GridLayout(0, 1, 0, 0));
this.wwd = wwd;
this.globe = (FlatGlobe)wwd.getModel().getGlobe();
this.makePanel();
}
private JPanel makePanel()
{
JPanel controlPanel = this;
// Projection combo
JPanel comboPanel = new JPanel(new GridLayout(0, 2, 0, 0));
comboPanel.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
comboPanel.add(new JLabel(" Projection:"));
this.projectionCombo = new JComboBox(new String[] {"Mercator", "Lat-Lon", "Modified Sin.", "Sinusoidal"});
this.projectionCombo.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent actionEvent)
{
String item = (String) projectionCombo.getSelectedItem();
if(item.equals("Lat-Lon"))
{
projection = FlatGlobe.PROJECTION_LAT_LON;
}
else if(item.equals("Mercator"))
{
projection = FlatGlobe.PROJECTION_MERCATOR;
}
else if(item.equals("Sinusoidal"))
{
projection = FlatGlobe.PROJECTION_SINUSOIDAL;
}
else if(item.equals("Modified Sin."))
{
projection = FlatGlobe.PROJECTION_MODIFIED_SINUSOIDAL;
}
update();
}
});
comboPanel.add(this.projectionCombo);
controlPanel.add(comboPanel);
controlPanel.setBorder(
new CompoundBorder(BorderFactory.createEmptyBorder(9, 9, 9, 9), new TitledBorder("Flat World")));
controlPanel.setToolTipText("Set the current projection");
return controlPanel;
}
// Update globe projection
private void update()
{
// Update globe projection
this.globe.setProjection(this.projection);
this.wwd.redraw();
}
}