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