trackpanel.java
来自「world wind java sdk 源码」· Java 代码 · 共 427 行 · 第 1/2 页
JAVA
427 行
/*Copyright (C) 2001, 2007 United States Governmentas represented by the Administrator of theNational Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind.applications.sar;import javax.swing.*;import javax.swing.border.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;import java.util.Hashtable;/** * @author tag * @version $Id: TrackPanel.java 9630 2009-03-24 10:50:46Z dcollins $ */public class TrackPanel extends JPanel{ private String elevationUnit; private String angleFormat; public TrackPanel() { initComponents(); this.scrollPane.addMouseListener(new PositionsContextMenu(this.positionTable)); this.positionTable.addMouseListener(new PositionsContextMenu(this.positionTable)); } public void setTrack(SARTrack sarTrack) { this.positionTable.setSarTrack(sarTrack); } public SARTrack getTrack() { return this.positionTable.getSarTrack(); } public String getElevationUnit() { return this.elevationUnit; } public void setElevationUnit(String unit) { String oldValue = this.elevationUnit; this.elevationUnit = unit; this.positionTable.setElevationUnit(unit); this.positionTable.updateTableData(); this.changeOffsetUnit(oldValue, this.elevationUnit); } public String getAngleFormat() { return this.angleFormat; } public void setAngleFormat(String format) { String oldValue = this.angleFormat; this.angleFormat = format; this.positionTable.setAngleFormat(format); this.positionTable.updateTableData(); } private void visibilityActionPerformed(ActionEvent e) { String vis = this.visibilityFlag.isSelected() ? TrackController.TRACK_ENABLE : TrackController.TRACK_DISABLE; this.positionTable.getSarTrack().firePropertyChange(vis, null, this.positionTable.getSarTrack()); } private void enableTrackExtensionStateChanged(ItemEvent e) { boolean selected = (e.getStateChange() == ItemEvent.SELECTED); this.nextTrackPointButton.setEnabled(selected); this.removeTrackPointButton.setEnabled(selected); String request = selected ? TrackController.BEGIN_TRACK_POINT_ENTRY : TrackController.END_TRACK_POINT_ENTRY; this.positionTable.getSarTrack().firePropertyChange(request, null, this.positionTable.getSarTrack()); } private void nextTrackPositionActionPerformed(ActionEvent e) { this.positionTable.getSarTrack().firePropertyChange(TrackController.MOVE_TO_NEXT_POINT, null, this.positionTable.getSarTrack()); } private void removeTrackPositionActionPerformed(ActionEvent e) { this.positionTable.getSarTrack().firePropertyChange(TrackController.REMOVE_LAST_POINT, null, this.positionTable.getSarTrack()); } private boolean ignoreOffsetChange = false; private void offsetSliderStateChanged(ChangeEvent e) { if (this.ignoreOffsetChange) { this.ignoreOffsetChange = false; return; } int offset = this.offsetToggleCheckBox.isSelected() ? this.offsetSlider.getValue() : 0; this.offsetReadout.setText(Integer.toString(offset)); applyTrackOffset(offset); } private void offsetToggleCheckBoxItemStateChanged(ItemEvent e) { this.offsetRangeSpinner.setEnabled(this.offsetToggleCheckBox.isSelected()); this.offsetReadout.setEnabled(this.offsetToggleCheckBox.isSelected()); this.offsetSlider.setEnabled(this.offsetToggleCheckBox.isSelected()); double offset = this.offsetToggleCheckBox.isSelected() ? Double.parseDouble(this.offsetReadout.getText()) : 0d; applyTrackOffset(offset); } private void offsetReadoutActionPerformed(ActionEvent e) { double offset = this.offsetToggleCheckBox.isSelected() ? Double.parseDouble(this.offsetReadout.getText()) : 0d; this.offsetReadout.setText(Integer.toString((int) offset)); this.ignoreOffsetChange = true; if (offset >= this.offsetSlider.getMaximum()) this.offsetSlider.setValue(this.offsetSlider.getMaximum()); else if (offset <= this.offsetSlider.getMinimum()) this.offsetSlider.setValue(this.offsetSlider.getMinimum()); else this.offsetSlider.setValue((int) offset); applyTrackOffset(offset); } private void offsetRangeSpinnerStateChanged(ChangeEvent e) { int rangeValue = Integer.parseInt(((String)this.offsetRangeSpinner.getValue()).replaceAll("[^0-9]", "")); this.offsetSlider.setMaximum(rangeValue); this.offsetSlider.setMinimum(-rangeValue); Hashtable ht; if (rangeValue <= 100) ht = this.offsetSlider.createStandardLabels(20); else if (rangeValue <= 500) ht = this.offsetSlider.createStandardLabels(100); else if (rangeValue <= 1000) ht = this.offsetSlider.createStandardLabels(200); else ht = this.offsetSlider.createStandardLabels(1000); this.offsetSlider.setLabelTable(ht); int value = Math.min(rangeValue, Math.max(-rangeValue, this.offsetSlider.getValue())); if (value != this.offsetSlider.getValue()) this.offsetSlider.setValue(value); } private void applyTrackOffset(double offset) { // The actual track offset will always be in meters. If the // user is working in imperial units, convert the slider // value to meters before passing it to SarTrack. double trackOffset; if (SAR2.UNIT_IMPERIAL.equals(this.elevationUnit)) trackOffset = SAR2.feetToMeters(offset); else // Default to metric units. trackOffset = offset; this.positionTable.getSarTrack().setOffset(trackOffset); this.positionTable.getSarTrack().firePropertyChange(TrackController.TRACK_MODIFY, null, this.positionTable.getSarTrack()); } private void changeOffsetUnit(String oldUnit, String newUnit) { if (newUnit.equals(oldUnit)) return; //---- offsetSlider ---- int value = this.offsetSlider.getValue(); if (SAR2.UNIT_IMPERIAL.equals(oldUnit)) value = (int) SAR2.feetToMeters(value); else value = (int) SAR2.metersToFeet(value); if (value > this.offsetSlider.getMaximum()) value = this.offsetSlider.getMaximum(); if (value < this.offsetSlider.getMinimum()) value = this.offsetSlider.getMinimum(); this.offsetSlider.setValue(value); //---- offsetReadout ---- this.offsetReadout.setText(Integer.toString(value)); }// private void changeOffsetUnitOld(String oldUnit, String newUnit)// {// int value = this.offsetSlider.getValue();//// //---- offsetSlider ----// if (SAR2.UNIT_IMPERIAL.equals(newUnit))// {// this.offsetSlider.setMaximum(16000);// this.offsetSlider.setMinimum(-16000);// this.offsetSlider.setMajorTickSpacing(3200);// Hashtable ht = this.offsetSlider.createStandardLabels(3200);// this.offsetSlider.setLabelTable(ht);// if (SAR2.UNIT_METRIC.equals(oldUnit))
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?