📄 dynamictree.java
字号:
package net.aetherial.gis.surface;
/*
* This code is based on an example provided by Richard Stanford,
* a tutorial reader.
*/
import java.awt.GridLayout;
import java.awt.Toolkit;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.*;
import java.awt.event.*;
import org.w3c.dom.Node;
import net.aetherial.gis.excel.ExcelFilter;
import net.aetherial.gis.excel.CreateExcelLast;
import java.io.File;
import java.util.Vector;
import net.aetherial.gis.our.FrameOur;
import net.aetherial.gis.cutAndLink.CLFrame;
public class DynamicTree
extends JPanel {
//public int Row=0;
private static boolean foUse = false;
private static boolean fmUse = false;
private FrameMain fm = null;
private FrameOur fo = null;
protected DefaultMutableTreeNode rootNode;
protected DefaultTreeModel treeModel;
protected JTree tree;
private Toolkit toolkit = Toolkit.getDefaultToolkit();
private Node thisNode = null;
//static Node track = null;
//
JPopupMenu jPopupMenu1 = new JPopupMenu();
JMenu jMenu1 = new JMenu();
JMenu jMenu3 = new JMenu();
//JMenuItem jMenuItem2 = new JMenuItem();
JMenuItem jMenuItem3 = new JMenuItem();
JMenuItem jMenuItem4 = new JMenuItem();
//
JPopupMenu jPopupMenu2 = new JPopupMenu();
JMenu jMenu2 = new JMenu();
JMenu jMenu4 = new JMenu();
JMenuItem jMenuItem5 = new JMenuItem();
JMenuItem jMenuItem6 = new JMenuItem();
JMenuItem jMenuItem7 = new JMenuItem();
JMenuItem jMenuItem_CutAndLink = new JMenuItem();
//
public DynamicTree() {
super(new GridLayout(1, 0));
rootNode = new DefaultMutableTreeNode("GPS测量数据");
createNodes(rootNode);
treeModel = new DefaultTreeModel(rootNode);
treeModel.addTreeModelListener(new MyTreeModelListener(this));
//populateTree(this);
tree = new JTree(treeModel);
tree.addKeyListener(new treeKeyAdapter(this));
// tree.registerKeyboardAction();
tree.setEditable(false);
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setShowsRootHandles(true);
tree.addMouseListener(new MyTreeModelListener(this));
JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane);
//
if (ItemValue.IS_JIHUA) {
this.jMenuItem3.setEnabled(false);
this.jMenuItem7.setEnabled(false);
this.jMenuItem5.setEnabled(false);
}
jMenu1.setText("航点插入航迹");
jMenu3.setText("所属航迹");
PopupMenu_jMenuItem_actionAdapter adapter = new
PopupMenu_jMenuItem_actionAdapter(this);
jMenuItem4.setText(" 刷 新 ");
jMenuItem4.addActionListener(adapter);
jMenuItem4.setActionCommand("Fresh_Waypoint");
jMenuItem3.setText("删除航点");
jMenuItem3.addActionListener(adapter);
jMenuItem3.setActionCommand("Delete_Waypoint");
jMenuItem3.setMnemonic(KeyEvent.VK_D);
jPopupMenu1.add(jMenu1);
jPopupMenu1.add(jMenu3);
jPopupMenu1.add(jMenuItem3);
jPopupMenu1.add(jMenuItem4);
//
jMenu2.setText("航迹包含航点");
jMenu4.setText("已经包含的航点");
jMenuItem7.addActionListener(adapter);
jMenuItem7.setText("删除其他航迹");
jMenuItem7.setActionCommand("Create_Excel");
jMenuItem_CutAndLink.addActionListener(adapter);
jMenuItem_CutAndLink.setText("切割与合并(S)");
jMenuItem_CutAndLink.setActionCommand("CutAndLink");
// jMenuItem_CutAndLink.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.ALT_MASK));
//setMnemonic
jMenuItem_CutAndLink.setMnemonic(KeyEvent.VK_S);
jMenuItem6.setText(" 刷 新 ");
jMenuItem6.addActionListener(adapter);
jMenuItem6.setActionCommand("Fresh_Tracks");
jMenuItem5.setText("删除航迹");
jMenuItem5.addActionListener(adapter);
jMenuItem5.setActionCommand("Delete_Tracks");
jMenuItem5.setMnemonic(KeyEvent.VK_D);
jPopupMenu2.add(jMenu2);
jPopupMenu2.add(jMenu4);
jPopupMenu2.add(jMenuItem_CutAndLink);
jPopupMenu2.add(jMenuItem7);
jPopupMenu2.add(jMenuItem5);
jPopupMenu2.add(jMenuItem6);
}
public static void setFoUse(boolean use) {
foUse = use;
}
public static void setFmUse(boolean use) {
fmUse = use;
}
public boolean getFoUse() {
return foUse;
}
public boolean getFmUse() {
return fmUse;
}
public void expandTree(boolean tracks) {
if (tracks) {
tree.expandRow(1);
}
else {
if (tree.isCollapsed(1)) {
tree.expandRow(2);
}
}
}
public void memoryShow() {
int[] pos = null;
Node[] alltrk = null;
Node[] allwpt = null;
// Node node = null;
this.clear();
System.out.println(ItemValue.tracksNum + "track num at 137 in DynamicTree");
if (ItemValue.tracksNum > 0) {
pos = ItemValue.getPosition("track");
alltrk = ItemValue.getTracks();
for (int i = 0; i < alltrk.length; i++) {
// node = ItemValue.getTracks(alltrk[i]);
this.addObject(getTracksRootNode(), ItemValue.getTracksName(alltrk[i]),
pos[i]);
}
}
if (ItemValue.waypointNum > 0) {
pos = ItemValue.getPosition("waypoint");
allwpt = ItemValue.getWaypoint();
if (pos != null) {
for (int i = 0; i < pos.length; i++) {
// node = ItemValue.getWaypoint(pos[i]);
this.addObject(getWaypointRootNode(),
"[" + (i + 1) + "]" +
ItemValue.getWaypointName(allwpt[i]), pos[i]);
}
}
}
}
public void memoryShow(boolean trackExpand, boolean waypointExpand) {
this.memoryShow();
if (trackExpand) {
tree.expandRow(1);
}
if (waypointExpand) {
tree.expandRow(2);
}
}
public void addWaypointJMenuItem(String itemName, int pos) {
JMenuItem jmi = new JMenuItem();
jmi.setText("航迹:" + itemName);
jmi.addActionListener(new PopupMenu_jMenuItem_actionAdapter(this));
jmi.setActionCommand("Waypoint_To_Tracks" + pos);
jMenu1.add(jmi);
}
public void addTracksJMenuItem(String itemName, int pos) {
JMenuItem jmi = new JMenuItem();
jmi.setText("航点:" + itemName);
jmi.addActionListener(new PopupMenu_jMenuItem_actionAdapter(this));
jmi.setActionCommand("Tracks_Include_Waypoint" + pos);
jMenu2.add(jmi);
}
//////////////////////////////////////////
public void addTracksToJMenu3(int waypointPos) {
jMenu3.removeAll();
JMenuItem jmi = new JMenuItem();
String idString = ItemValue.getWaypointTracksID(waypointPos);
if (! (idString.equals(""))) {
int[] pos = ItemValue.getPosition("track");
for (int i = 0; i < pos.length; i++) {
if ( (ItemValue.getTracksID(ItemValue.getTracks(pos[i]))).equals(
idString)) {
//if (ItemValue.getTracksID(pos[i]).equals(idString)) {
jmi.setText("航迹:" + ItemValue.getTracksName(ItemValue.getTracks(pos[i])));
//jmi.setText("航迹:" + idString);
jmi.addActionListener(new PopupMenu_jMenuItem_actionAdapter(this));
jmi.setActionCommand("Show_Tracks" + i);
jMenu3.add(jmi);
}
}
}
}
public void addTracksToJMenu4(int tracksPos) {
jMenu4.removeAll();
JMenuItem jmi = null;
String idString = ItemValue.getTracksID(tracksPos);
if (idString == null) {
return;
}
int[] pos = ItemValue.getPosition("waypoint");
if (pos == null) {
return;
}
for (int i = 0; i < pos.length; i++) {
if (ItemValue.getWaypointTracksID(pos[i]).equals(idString)) {
jmi = new JMenuItem();
jmi.setText("航点:" + ItemValue.getWaypointName(pos[i]));
jmi.addActionListener(new PopupMenu_jMenuItem_actionAdapter(this));
jmi.setActionCommand("Show_Waypoint" + pos[i]);
jMenu4.add(jmi);
jmi = null;
}
}
}
////////////////////////////////////////////////
public DynamicTree(FrameMain fm) {
this();
this.fm = fm;
}
public DynamicTree(FrameOur fo) {
this();
this.fo = fo;
}
private void createNodes(DefaultMutableTreeNode top) {
DefaultMutableTreeNode category = null;
category = new DefaultMutableTreeNode("航迹");
top.add(category);
category = new DefaultMutableTreeNode("航点");
top.add(category);
}
/** Remove all nodes except the root node. */
public void clear() {
jMenu1.removeAll();
jMenu2.removeAll();
rootNode.removeAllChildren();
createNodes(rootNode);
treeModel.reload();
}
/** Remove the currently selected node. */
public void removeCurrentNode() {
TreePath currentSelection = tree.getSelectionPath();
if (currentSelection != null) {
DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
(currentSelection.getLastPathComponent());
MutableTreeNode parent = (MutableTreeNode) (currentNode.getParent());
if (parent != null) {
treeModel.removeNodeFromParent(currentNode);
return;
}
}
// Either there was no selection, or the root was selected.
toolkit.beep();
}
/** Add child to the currently selected node. */
public DefaultMutableTreeNode addObject(Object child) {
DefaultMutableTreeNode parentNode = null;
TreePath parentPath = tree.getSelectionPath();
if (parentPath == null) {
parentNode = rootNode;
}
else {
parentNode = (DefaultMutableTreeNode)
(parentPath.getLastPathComponent());
}
return addObject(parentNode, child, true);
}
public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
Object child) {
if (parent.equals(getTracksRootNode())) {
//addWaypointJMenuItem(child + "");
}
else if (parent.equals(getWaypointRootNode())) {
//addTracksJMenuItem(child + "");
}
return addObject(parent, child, false);
}
public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
Object child, int pos) {
if (parent.equals(getTracksRootNode())) {
addWaypointJMenuItem(child + "", pos);
}
else if (parent.equals(getWaypointRootNode())) {
addTracksJMenuItem(child + "", pos);
}
return addObject(parent, child, false);
}
public DefaultMutableTreeNode addObject(DefaultMutableTreeNode parent,
Object child,
boolean shouldBeVisible) {
DefaultMutableTreeNode childNode =
new DefaultMutableTreeNode(child);
if (parent == null) {
parent = rootNode;
}
treeModel.insertNodeInto(childNode, parent,
parent.getChildCount());
//Make sure the user can see the lovely new node.
if (shouldBeVisible) {
tree.scrollPathToVisible(new TreePath(childNode.getPath()));
}
return childNode;
}
public DefaultMutableTreeNode getTracksRootNode() {
return rootNode.getNextNode();
}
public DefaultMutableTreeNode getWaypointRootNode() {
return rootNode.getNextNode().getNextSibling();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -