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 + -
显示快捷键?