001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.swing; 005 006 import java.util.ArrayList; 007 import java.util.Iterator; 008 import java.util.List; 009 import java.util.Map; 010 011 import javax.swing.table.DefaultTableModel; 012 import javax.swing.table.TableModel; 013 import javax.swing.tree.TreeNode; 014 015 import biz.hammurapi.convert.Converter; 016 017 /** 018 * @author Pavel Vlasov 019 * 020 * @version $Revision: 1.1 $ 021 */ 022 public class MapVisualizer { 023 024 public Visualizable convert(final Map map, final Converter master) { 025 return new Visualizable() { 026 027 public TreeNode toTreeNode(TreeNode parent, String title) { 028 return new LazyTreeNodeTableVisualizable(parent, title) { 029 030 protected List loadChildren() { 031 ArrayList ret = new ArrayList(); 032 Iterator it = map.entrySet().iterator(); 033 for (int i=0; it.hasNext(); ++i) { 034 Visualizable vs = (Visualizable) master.convert(it.next(), Visualizable.class, null); 035 ret.add(vs.toTreeNode(this, "entry "+i)); 036 } 037 return ret; 038 } 039 040 public TableModel toTable() { 041 DefaultTableModel tm=new DefaultTableModel(2,2); 042 tm.setColumnIdentifiers(new String[] {"Property", "Value"}); 043 tm.setValueAt("type", 0, 0); 044 tm.setValueAt(map.getClass().getName(), 0, 1); 045 tm.setValueAt("size", 1, 0); 046 tm.setValueAt(String.valueOf(map.size()), 1, 1); 047 048 return tm; 049 } 050 051 }; 052 } 053 054 }; 055 } 056 057 public Visualizable convert(final Map.Entry entry, final Converter master) { 058 return new Visualizable() { 059 060 public TreeNode toTreeNode(TreeNode parent, String title) { 061 return new LazyTreeNodeTableVisualizable(parent, title) { 062 063 protected List loadChildren() { 064 List ret = new ArrayList(); 065 Visualizable kvs = (Visualizable) master.convert(entry.getKey(), Visualizable.class, null); 066 ret.add(kvs.toTreeNode(this, "key")); 067 Visualizable vvs = (Visualizable) master.convert(entry.getKey(), Visualizable.class, null); 068 ret.add(vvs.toTreeNode(this, "value")); 069 return ret; 070 } 071 072 public TableModel toTable() { 073 DefaultTableModel tm=new DefaultTableModel(2,3); 074 tm.setColumnIdentifiers(new String[] {"Member", "Type", "Value"}); 075 tm.setValueAt("key", 0, 0); 076 tm.setValueAt(entry.getKey()==null ? "(null)" : entry.getKey().getClass().getName(), 0, 1); 077 tm.setValueAt(entry.getKey()==null ? "(null)" : entry.getKey(), 0, 2); 078 079 tm.setValueAt("value", 1, 0); 080 tm.setValueAt(entry.getValue()==null ? "(null)" : entry.getValue().getClass().getName(), 1, 1); 081 tm.setValueAt(entry.getValue()==null ? "(null)" : entry.getValue(), 1, 2); 082 083 return tm; 084 } 085 086 087 }; 088 } 089 }; 090 } 091 }