ComponentTreeTableModel.java
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:3k
源码类别:

xml/soap/webservice

开发平台:

Java

  1. /*
  2.  * Created on 20.06.2005
  3.  *
  4.  */
  5. package org.jdesktop.demo.swingx.common;
  6. import java.awt.Component;
  7. import java.awt.Container;
  8. import java.awt.Dimension;
  9. import java.awt.Point;
  10. import java.util.ArrayList;
  11. import java.util.Enumeration;
  12. import java.util.List;
  13. import java.util.Stack;
  14. import java.util.Vector;
  15. import javax.swing.event.TableModelEvent;
  16. import javax.swing.event.TableModelListener;
  17. import javax.swing.table.TableModel;
  18. import javax.swing.tree.TreeModel;
  19. import org.jdesktop.swingx.JXFrame;
  20. import org.jdesktop.swingx.treetable.AbstractTreeTableModel;
  21. /**
  22.  * A static snapshot of a container hierarchy.
  23.  * 
  24.  * NOTE: does not listen to any property changes of
  25.  * contained components - cell updates are arbitrary on
  26.  * repaint only!
  27.  * 
  28.  * @author Jeanette Winzenburg
  29.  */
  30. public class ComponentTreeTableModel extends AbstractTreeTableModel {
  31.     public ComponentTreeTableModel(Container root) {
  32.         super(root);
  33.         setRoot(root);
  34.     }
  35.     public void setRoot(Container root) {
  36.         if (root == null) {
  37.             root = new JXFrame();
  38.         }
  39.         this.root = root;
  40.         fireTreeStructureChanged(this, new Object[]{ root }, null, null);
  41.     }
  42.     
  43.     //  ------------------TreeModel
  44.     
  45.     
  46.     public Object getChild(Object parent, int index) {
  47.         return ((Container) parent).getComponent(index);
  48.     }
  49.     
  50.     public int getChildCount(Object parent) {
  51.         return parent instanceof Container ? ((Container) parent).getComponentCount() : 0;
  52.     }
  53.     
  54.     public int getIndexOfChild(Object parent, Object child) {
  55.         Component[] children = ((Container) parent).getComponents();
  56.         for (int i = 0; i < children.length; i++) {
  57.             if (children[i].equals(child)) {
  58.                 return i;
  59.             }
  60.         }
  61.         return -1;
  62.     }
  63.     
  64.     public boolean isLeaf(Object node) {
  65.         return getChildCount(node) == 0;
  66.     }
  67.  
  68.     public String convertValueToText(Object node) {
  69.         String className = node.getClass().getName();
  70.         int lastDot = className.lastIndexOf(".");
  71.         String lastElement = className.substring(lastDot + 1);
  72.         return lastElement;
  73.     }
  74. //------------------ TreeTableModel    
  75.     public Class getColumnClass(int column) {
  76.         switch (column) {
  77.         case 0:
  78.             return hierarchicalColumnClass;
  79.         case 1:
  80.             return Point.class;
  81.         case 2:
  82.             return Dimension.class;
  83.         default:
  84.             return Object.class;
  85.         }
  86.     }
  87.     
  88.     public int getColumnCount() {
  89.         return 3;
  90.     }
  91.     public String getColumnName(int column) {
  92.         switch (column) {
  93.         case 0:
  94.             return "Type";
  95.         case 1:
  96.             return "Location";
  97.         case 2:
  98.             return "Size";
  99.         default:
  100.             return "Column " + column;
  101.         }
  102.     }
  103.     
  104.     public Object getValueAt(Object node, int column) {
  105.         Component comp = (Component) node;
  106.         switch (column) {
  107.         case 0:
  108.             return comp;
  109.         case 1:
  110.             return comp.getLocation();
  111.         case 2:
  112.             return comp.getSize();
  113.         default:
  114.             return null;
  115.         }
  116.     }
  117.     public void setValueAt(Object value, Object node, int column) {
  118.     }
  119.     
  120. }