trackspanel.java

来自「world wind java sdk 源码」· Java 代码 · 共 194 行

JAVA
194
字号
/*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 gov.nasa.worldwind.render.PatternFactory;import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.image.*;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.util.ArrayList;/** * @author tag * @version $Id: TracksPanel.java 8342 2009-01-06 16:57:35Z patrickmurris $ */public class TracksPanel extends JPanel{    private String elevationUnit;    private String angleFormat;    private JTabbedPane tracksTabbedPane;    public TracksPanel()    {        initComponents();    }    private void initComponents()    {        this.tracksTabbedPane = new JTabbedPane();        //======== this ========        setLayout(new BorderLayout());        //======== tracksTabbedPane ========        {            this.tracksTabbedPane.setMinimumSize(new Dimension(361, 223));            this.tracksTabbedPane.setPreferredSize(new Dimension(361, 223));            this.tracksTabbedPane.addChangeListener(new ChangeListener()            {                public void stateChanged(ChangeEvent e)                {                    tracksTabbedPaneStateChanged(e);                }            });        }        add(this.tracksTabbedPane, BorderLayout.CENTER);    }    public SARTrack getCurrentTrack()    {        Component c = this.tracksTabbedPane.getSelectedComponent();        return c != null ? ((TrackPanel) c).getTrack() : null;    }    public Iterable<SARTrack> getAllTracks()    {        ArrayList<SARTrack> tracks = new ArrayList<SARTrack>();        for (int i = 0; i < this.tracksTabbedPane.getTabCount(); i++)        {            TrackPanel tp = (TrackPanel) this.tracksTabbedPane.getComponentAt(i);            if (tp.getTrack() != null)                tracks.add(tp.getTrack());        }        return tracks;    }    public void addTrack(SARTrack track)    {        TrackPanel tp = new TrackPanel();        tp.setTrack(track);        tp.setElevationUnit(this.elevationUnit);        tp.setAngleFormat(this.angleFormat);        this.tracksTabbedPane.addTab(track.getName(), makeColorCircle(track.getColor()), tp);        track.addPropertyChangeListener(new PropertyChangeListener()        {            @SuppressWarnings({"StringEquality"})            public void propertyChange(PropertyChangeEvent propertyChangeEvent)            {                if (propertyChangeEvent.getPropertyName() == TrackController.TRACK_REMOVE)                    removeTrack((SARTrack) propertyChangeEvent.getSource());                else if (propertyChangeEvent.getPropertyName() == TrackController.TRACK_NAME)                    renameTrack((SARTrack) propertyChangeEvent.getSource());                else if (propertyChangeEvent.getPropertyName() == TrackController.TRACK_DIRTY_BIT)                    updateTrackDirty((SARTrack) propertyChangeEvent.getSource());            }        });        this.tracksTabbedPane.setSelectedComponent(tp);    }    public String getElevationUnit()    {        return this.elevationUnit;    }    public void setElevationUnit(String unit)    {        this.elevationUnit = unit;        for (int i = 0; i < this.tracksTabbedPane.getTabCount(); i++)        {            TrackPanel tp = (TrackPanel) this.tracksTabbedPane.getComponentAt(i);            tp.setElevationUnit(unit);        }    }    public String getAngleFormat()    {        return this.angleFormat;    }    public void setAngleFormat(String format)    {        this.angleFormat = format;        for (int i = 0; i < this.tracksTabbedPane.getTabCount(); i++)        {            TrackPanel tp = (TrackPanel) this.tracksTabbedPane.getComponentAt(i);            tp.setAngleFormat(format);        }    }    private void removeTrack(SARTrack track)    {        TrackPanel tp = this.getTrackPanel(track);        if (tp != null)            this.tracksTabbedPane.remove(tp);    }    private void renameTrack(SARTrack track)    {        int index = getTrackPanelIndex(track);        if (index != -1)            this.tracksTabbedPane.setTitleAt(index, track.getName());    }    private void updateTrackDirty(SARTrack track)    {        int index = getTrackPanelIndex(track);        if (index != -1)            this.tracksTabbedPane.setTitleAt(index, track.getName() + (track.isDirty() ? "*" : ""));    }    private TrackPanel getTrackPanel(SARTrack track)    {        for (int i = 0; i < this.tracksTabbedPane.getTabCount(); i++)        {            TrackPanel tp = (TrackPanel) this.tracksTabbedPane.getComponentAt(i);            if (tp.getTrack() == track)                return tp;        }        return null;    }    private int getTrackPanelIndex(SARTrack track)    {        for (int i = 0; i < this.tracksTabbedPane.getTabCount(); i++)        {            TrackPanel tp = (TrackPanel) this.tracksTabbedPane.getComponentAt(i);            if (tp.getTrack() == track)                return i;        }        return -1;    }    @SuppressWarnings({"UnusedDeclaration"})    private void tracksTabbedPaneStateChanged(ChangeEvent e)    {        SARTrack track = this.getCurrentTrack();        if (track == null)            return;        track.firePropertyChange(TrackController.TRACK_CURRENT, null, track);    }    private static Icon makeColorCircle(Color color)    {        BufferedImage bi = PatternFactory.createPattern(            PatternFactory.PATTERN_CIRCLE, new Dimension(16, 16), .9f,color);        return new ImageIcon(bi);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?