Package trackerModule.sim.map

Source Code of trackerModule.sim.map.MapTreePane$MyTreeModelListener

package trackerModule.sim.map;

import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

import trackerModule.core.datastructure.TDB;
import trackerModule.core.datastructure.Unit;
import trackerModule.sim.tracker.World;
import unbbayes.util.Debug;
/**
* The Class MapTreePane.
*/
public class MapTreePane  extends JPanel {
 
   /** The Constant serialVersionUID. */
   private static final long serialVersionUID = 7622056294282854984L;
  
   /** The world tree node. */
   DefaultMutableTreeNode worldTreeNode;
  
   /** The tree model. */
   DefaultTreeModel treeModel;
  
   /** The tree. */
   JTree  tree;
  
   /** The parent dialog. */
   MapFrame parentDlg;
  
   /**
    * Instantiates a new map tree pane.
    *
    * @param p the map frame
    */
   public MapTreePane(MapFrame p) {
     super(new GridLayout(1,0));
     parentDlg = p;
    
         worldTreeNode = new DefaultMutableTreeNode("World");
         treeModel = new DefaultTreeModel(worldTreeNode);
         treeModel.addTreeModelListener(new MyTreeModelListener());
        
         // new tree
      tree = new JTree(treeModel);
      tree.setEditable(false);
       tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
      tree.setShowsRootHandles(true);
      
      initTree();  
       
       // Expand all
       for (int i = 0; i < tree.getRowCount(); i++)
        tree.expandRow(i);
      
       // click tree
      tree.addMouseListener(new MouseAdapter() {
      public void mousePressed(MouseEvent e) {
        TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
        if( selPath != null ){
          DefaultMutableTreeNode node =(DefaultMutableTreeNode) selPath.getLastPathComponent();
          if (node.isLeaf()) { 
           
            String curName = (String)node.getUserObject();
            String parentName = (String)node.getParent().toString();
            
            if( parentName.equals("Entity")){
              Unit ship = TDB.This().get("TDBROOT.MODEL.WORLD.SHIPS." + curName);
             
              parentDlg.setCurEntity(ship);
              parentDlg.moveViewport(ship);
            }else{
              parentDlg.map.setCurTile(curName);
              parentDlg.setCurEntity(null);
            }
          }
        }
      }
     });
      
       JScrollPane scrollPane = new JScrollPane(tree);
       add(scrollPane);
     }
  
   /**
    * Select item.
    *
    * @param u the unit
    */
   public void selectItem(Unit u){
     if(u == null){
       return;
     }
     String str = u.getName();
    
     int s = tree.getRowCount();
     for( int i = 0; i < s; i++ ){
       TreePath selPath = tree.getPathForRow(i);
       DefaultMutableTreeNode node =(DefaultMutableTreeNode) selPath.getLastPathComponent();
       String curName = (String)node.getUserObject();
       if( str.equalsIgnoreCase(curName) ){
         tree.setSelectionRow(i);
         return;
       }
     }
    
   }
  
   /**
    *  Initialize the tree.
    */
   public void initTree(){     
     worldTreeNode.removeAllChildren();
       treeModel.reload();
  
       worldTreeNode.add(createEntityTree());
       worldTreeNode.add(createTileTree());
       worldTreeNode.add(createBigPort());
       worldTreeNode.add(createSmallPort());
       worldTreeNode.add(createFishingArea());
       worldTreeNode.add(createMerchantArea());
       worldTreeNode.add(createArea());
       worldTreeNode.add(createUnusualArea());
       worldTreeNode.add(createRoute());
      
       // Expand all
     for (int i = 0; i < tree.getRowCount(); i++)
       tree.expandRow(i);

   }
 
   /**
    * Creates the route.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createRoute() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("RouteView");
     DefaultMutableTreeNode temp = null;  
     for( String str : World.This().mapRoute.keySet() ){
       temp = new DefaultMutableTreeNode(str); t.add(temp);
     }
    
     return t;
   }
  
   /**
    * Creates the big port.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createBigPort() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("BigPort");
     DefaultMutableTreeNode temp = null;  
     for( String str : World.This().listBigPort ){
       temp = new DefaultMutableTreeNode(str); t.add(temp);
     }
    
     return t;
   }
  
   /**
    * Creates the small port.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createSmallPort() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("SmallPort");
     DefaultMutableTreeNode temp = null;  
     for( String str : World.This().listSmallPort ){
       temp = new DefaultMutableTreeNode(str); t.add(temp);
     }
    
     return t;
   }
  
   /**
    * Creates the fishing area.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createFishingArea() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("FishingArea");
     DefaultMutableTreeNode temp = null;  
     for( String str : World.This().listFishingArea ){
       temp = new DefaultMutableTreeNode(str); t.add(temp);
     }
    
     return t;
   }
  
   /**
    * Creates the merchant area.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createMerchantArea() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("MerchantArea");
     DefaultMutableTreeNode temp = null;  
     for( String str : World.This().listMerchantArea ){
       temp = new DefaultMutableTreeNode(str); t.add(temp);
     }
    
     return t;
   }
  
   /**
    * Creates the area.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createArea() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("Area");
     DefaultMutableTreeNode temp = null;  
     for( String str : World.This().listArea ){
       temp = new DefaultMutableTreeNode(str); t.add(temp);
     }
    
     return t;
   }
  
   /**
    * Creates the unusual area.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createUnusualArea() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("UnusualArea");
     DefaultMutableTreeNode temp = null;  
     for( String str : World.This().listUnusualArea ){
       temp = new DefaultMutableTreeNode(str); t.add(temp);
     }
    
     return t;
   }
  
   /**
    * Creates the tile tree.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createTileTree()
   {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("Tile");
     DefaultMutableTreeNode temp = null;  
        
     temp = new DefaultMutableTreeNode("Water"); t.add(temp);  
     temp = new DefaultMutableTreeNode("Land"); t.add(temp)
     return t;
   }
  
   /**
    * Creates the entity tree.
    *
    * @return the default mutable tree node
    */
   private DefaultMutableTreeNode createEntityTree() {
     DefaultMutableTreeNode t = new DefaultMutableTreeNode("Entity");
     DefaultMutableTreeNode temp = null;
    
     Unit ships = TDB.This().get("TDBROOT.MODEL.WORLD.SHIPS");
   
     if( ships != null )
     for( Unit ship : ships.getList() ){ 
       temp = new DefaultMutableTreeNode(ship.getName()); t.add(temp);  
     }
          
     return t;
   }
     
   /**
    * Adds the entity tree.
    *
    * @param tUnit the t unit
    * @param targetTree the target tree
    */
   private void addEntityTree( Unit tUnit, DefaultMutableTreeNode targetTree )
   {
   /*   if( tUnit == null )
       return;
    
     if( tUnit.mapR == null )
       return;
    
      for( String key : tUnit.mapR.keySet() ){
         TDBUnit HostNow = (TDBUnit)(tUnit.mapR.get(key));
         DefaultMutableTreeNode temp = new DefaultMutableTreeNode(key);
        
         targetTree.add(temp);        
         addEntityTree( HostNow, temp );
       }*/
   }
  
   /**
    * The listener interface for receiving myTreeModel events.
    * The class that is interested in processing a myTreeModel
    * event implements this interface, and the object created
    * with that class is registered with a component using the
    * component's <code>addMyTreeModelListener<code> method. When
    * the myTreeModel event occurs, that object's appropriate
    * method is invoked.
    *
    * @see MyTreeModelEvent
    */
   class MyTreeModelListener implements TreeModelListener {
       
        /* (non-Javadoc)
         * @see javax.swing.event.TreeModelListener#treeNodesChanged(javax.swing.event.TreeModelEvent)
         */
        public void treeNodesChanged(TreeModelEvent e) {
            DefaultMutableTreeNode node;
            node = (DefaultMutableTreeNode)(e.getTreePath().getLastPathComponent());

            /*
             * If the event lists children, then the changed
             * node is the child of the node we've already
             * gotten.  Otherwise, the changed node and the
             * specified node are the same.
             */

                int index = e.getChildIndices()[0];
                node = (DefaultMutableTreeNode)(node.getChildAt(index));

            Debug.println("The user has finished editing the node.");
            Debug.println("New value: " + node.getUserObject());
        }
       
        /* (non-Javadoc)
         * @see javax.swing.event.TreeModelListener#treeNodesInserted(javax.swing.event.TreeModelEvent)
         */
        public void treeNodesInserted(TreeModelEvent e) {
        }
       
        /* (non-Javadoc)
         * @see javax.swing.event.TreeModelListener#treeNodesRemoved(javax.swing.event.TreeModelEvent)
         */
        public void treeNodesRemoved(TreeModelEvent e) {
        }
       
        /* (non-Javadoc)
         * @see javax.swing.event.TreeModelListener#treeStructureChanged(javax.swing.event.TreeModelEvent)
         */
        public void treeStructureChanged(TreeModelEvent e) {
        }
     }
}
TOP

Related Classes of trackerModule.sim.map.MapTreePane$MyTreeModelListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.