⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynamictree.java

📁 基于Java的地图数据管理软件。使用MySQL数据库管理系统。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -