cloudceilingpanel.java
来自「world wind java sdk 源码」· Java 代码 · 共 514 行 · 第 1/2 页
JAVA
514 行
/*
Copyright (C) 2001, 2009 United States Government as represented by
the Administrator of the National Aeronautics and Space Administration.
All Rights Reserved.
*/
package gov.nasa.worldwind.applications.sar;
import gov.nasa.worldwind.geom.LatLon;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
/**
* @author Patrick Murris
* @version $Id: CloudCeilingPanel.java 8959 2009-02-23 15:44:34Z patrickmurris $
*/
public class CloudCeilingPanel extends JPanel
{
public static final String CLOUD_CEILING_OPEN = "CloudCeilingPanel.CloudCeilingOpen";
public static final String CLOUD_CEILING_CHANGE = "CloudCeilingPanel.CloudCeilingChange";
private CloudCeiling cloudCeiling;
private SARTrack track;
private String elevationUnit = SAR2.UNIT_IMPERIAL;
private JLabel descriptionLabel;
private JTextField descriptionTextField;
private JCheckBox enabledCheckBox;
private JButton colorButton;
private JLabel baseElevationLabel;
private JTextField baseElevationTextField;
private JLabel elevationUnitLabel1;
private JLabel elevationUnitLabel2;
private JLabel deltaElevationLabel;
private JTextField deltaElevationTextField;
private ButtonGroup deltaModeGroup;
private JRadioButton deltaPlusRadioButton;
private JRadioButton deltaMinusRadioButton;
private JRadioButton deltaBothRadioButton;
private JLabel segmentsFromLabel;
private JLabel segmentsToLabel;
private JSpinner segmentStartSpinner;
private JSpinner segmentEndSpinner;
private JButton wholeTrackButton;
private JLabel incrementLabel;
private JSpinner incrementSpinner;
private JButton incrementPlusButton;
private JButton incrementMinusButton;
private JButton incrementResetButton;
private JLabel incrementedBaseLabel;
public CloudCeilingPanel()
{
this.initComponents();
}
public CloudCeiling getCloudCeiling()
{
return this.cloudCeiling;
}
public void setCloudCeiling(CloudCeiling cloudCeiling)
{
this.cloudCeiling = cloudCeiling;
this.updateCloudCeiling();
}
public SARTrack getTrack()
{
return this.track;
}
public void setTrack(SARTrack track)
{
this.track = track;
updateSegmentSpinnersList();
this.updateCloudCeiling();
}
public String getElevationUnit()
{
return this.elevationUnit;
}
public void setElevationUnit(String elevationUnit)
{
if (!this.elevationUnit.equals(elevationUnit))
{
this.cloudCeiling.setElevationUnit(elevationUnit);
double baseElevation = getNumberValue(this.baseElevationTextField.getText());
double deltaElevation = getNumberValue(this.deltaElevationTextField.getText());
if (SAR2.UNIT_IMPERIAL.equals(this.elevationUnit))
{
baseElevation = SAR2.feetToMeters(baseElevation);
deltaElevation = SAR2.feetToMeters(deltaElevation);
this.baseElevationTextField.setText(String.format("%.0f", baseElevation));
this.deltaElevationTextField.setText(String.format("%.0f", deltaElevation));
this.elevationUnitLabel1.setText("m");
this.elevationUnitLabel2.setText("m");
}
else
{
baseElevation = SAR2.metersToFeet(baseElevation);
deltaElevation = SAR2.metersToFeet(deltaElevation);
this.baseElevationTextField.setText(String.format("%.0f", baseElevation));
this.deltaElevationTextField.setText(String.format("%.0f", deltaElevation));
this.elevationUnitLabel1.setText("ft");
this.elevationUnitLabel2.setText("ft");
}
this.elevationUnit = elevationUnit;
}
}
private void descriptionTextFieldActionPerformed(ActionEvent event)
{
updateCloudCeiling();
}
private void enabledCheckBoxActionPerformed(ActionEvent event)
{
updateCloudCeiling();
}
private void baseElevationTextFieldActionPerformed(ActionEvent event)
{
Double baseElevation = getNumberValue(this.baseElevationTextField.getText());
this.baseElevationTextField.setText(String.format("%.0f", baseElevation));
this.incrementedBaseLabel.setText(String.format("%.0f", baseElevation));
updateCloudCeiling();
}
private void deltaElevationTextFieldActionPerformed(ActionEvent event)
{
this.deltaElevationTextField.setText(String.format("%.0f",
getNumberValue(this.deltaElevationTextField.getText())));
updateCloudCeiling();
}
private void deltaModeRadioButtonActionPerformed(ActionEvent event) {updateCloudCeiling();}
private void segmentSpinnerStateChanged(ChangeEvent event)
{
int start = Integer.parseInt(((String)this.segmentStartSpinner.getValue()).trim());
int end = Integer.parseInt(((String)this.segmentEndSpinner.getValue()).trim());
if (start > end)
if (event.getSource().equals(this.segmentStartSpinner))
setSegmentSpinnerValue(this.segmentEndSpinner, start);
else
setSegmentSpinnerValue(this.segmentStartSpinner, end);
updateCloudCeiling();
}
private void wholeTrackButtonActionPerformed(ActionEvent event)
{
if (this.track != null && this.track.size() > 0)
{
setSegmentSpinnerValue(this.segmentStartSpinner, 0);
setSegmentSpinnerValue(this.segmentEndSpinner, this.track.size() - 1);
updateCloudCeiling();
}
}
private void incrementButtonActionPerformed(ActionEvent event)
{
Double baseElevation;
if (event.getSource().equals(this.incrementResetButton))
{
baseElevation = getNumberValue(this.baseElevationTextField.getText());
}
else
{
baseElevation = getNumberValue(this.incrementedBaseLabel.getText());
int step = Integer.parseInt(((String)this.incrementSpinner.getValue()).trim());
if (event.getSource().equals(this.incrementPlusButton))
baseElevation += step;
else
baseElevation -= step;
}
this.incrementedBaseLabel.setText(String.format("%.0f", baseElevation));
updateCloudCeiling();
}
private void colorButtonActionPerformed(ActionEvent event)
{
Color c = JColorChooser.showDialog(this, "Choose a color...", ((JButton)event.getSource()).getBackground());
if (c != null)
{
((JButton)event.getSource()).setBackground(c);
updateCloudCeiling();
}
}
private Double getNumberValue(String s)
{
double value;
try
{
value = Double.parseDouble(s);
}
catch (Exception e)
{
value = 0;
}
return value;
}
private void updateSegmentSpinnersList()
{
String[] strings = new String[this.track != null ? this.track.size() : 0];
for (int i = 0; i < strings.length; i++)
strings[i] = String.format("%,4d", i);
if (strings.length == 0)
strings = new String[] {" 0"};
Object startValue = this.segmentStartSpinner.getValue();
Object endValue = this.segmentEndSpinner.getValue();
this.segmentStartSpinner.setModel(new SpinnerListModel(strings));
this.segmentStartSpinner.setValue(startValue);
this.segmentEndSpinner.setModel(new SpinnerListModel(strings));
this.segmentEndSpinner.setValue(endValue);
}
private void setSegmentSpinnerValue(JSpinner spinner, int n)
{
spinner.setValue(String.format("%,4d", n));
}
private void updateCloudCeiling()
{
if (this.cloudCeiling == null)
return;
// Update cloud ceiling
this.cloudCeiling.setName(this.descriptionTextField.getText());
this.cloudCeiling.setEnabled(this.enabledCheckBox.isSelected());
this.cloudCeiling.setElevationBase(getNumberValue(this.incrementedBaseLabel.getText()));
this.cloudCeiling.setElevationDelta(getNumberValue(this.deltaElevationTextField.getText()));
if (this.deltaPlusRadioButton.isSelected())
this.cloudCeiling.setDeltaMode(CloudCeiling.DELTA_MODE_PLUS);
else if (this.deltaMinusRadioButton.isSelected())
this.cloudCeiling.setDeltaMode(CloudCeiling.DELTA_MODE_MINUS);
else if (this.deltaBothRadioButton.isSelected())
this.cloudCeiling.setDeltaMode(CloudCeiling.DELTA_MODE_BOTH);
this.cloudCeiling.setColor(this.colorButton.getBackground());
// Track positions
if (this.track != null && this.track.getPositions().size() > 0)
{
int start = Integer.parseInt(((String)this.segmentStartSpinner.getValue()).trim());
int end = Integer.parseInt(((String)this.segmentEndSpinner.getValue()).trim());
if (end < this.track.getPositions().size() - 1)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?