001 /* 002 @license.text@ 003 */ 004 package biz.hammurapi.swing; 005 006 import java.util.Iterator; 007 import java.util.Map; 008 009 import javax.swing.table.DefaultTableModel; 010 import javax.swing.table.TableModel; 011 import javax.swing.tree.DefaultMutableTreeNode; 012 import javax.swing.tree.MutableTreeNode; 013 014 import biz.hammurapi.swing.CompositeVisualizer.Member; 015 016 /** 017 * @author Pavel Vlasov 018 * 019 * @version $Revision: 1.1 $ 020 */ 021 public class MapVisualizer implements Member { 022 023 private CompositeVisualizer owner; 024 025 public Visualizable toVisualizable(final Map map) { 026 return new Visualizable() { 027 028 public MutableTreeNode toTree(final String title) { 029 DefaultMutableTreeNode ret=new DefaultMutableTreeNode(map) { 030 public String toString() { 031 return title+" ["+map.getClass().getName()+"] size="+map.size(); 032 } 033 }; 034 035 Iterator it=map.entrySet().iterator(); 036 while (it.hasNext()) { 037 Visualizable ev=owner.getStackHead().toVisualizable(it.next()); 038 if (ev!=null) { 039 ret.add(ev.toTree("entry")); 040 } 041 } 042 043 return ret; 044 } 045 046 public TableModel toTable() { 047 DefaultTableModel tm=new DefaultTableModel(2,2); 048 tm.setColumnIdentifiers(new String[] {"Property", "Value"}); 049 tm.setValueAt("type", 0, 0); 050 tm.setValueAt(map.getClass().getName(), 0, 1); 051 tm.setValueAt("size", 1, 0); 052 tm.setValueAt(String.valueOf(map.size()), 1, 1); 053 054 return tm; 055 } 056 }; 057 } 058 059 public Visualizable toVisualizable(final Map.Entry entry) { 060 return new Visualizable() { 061 062 public MutableTreeNode toTree(final String title) { 063 DefaultMutableTreeNode ret=new DefaultMutableTreeNode(entry) { 064 public String toString() { 065 return title; 066 } 067 }; 068 069 Visualizable kv=owner.getStackHead().toVisualizable(entry.getKey()); 070 ret.add(kv.toTree("key")); 071 072 Visualizable vv=owner.getStackHead().toVisualizable(entry.getValue()); 073 ret.add(vv.toTree("value")); 074 075 return ret; 076 } 077 078 public TableModel toTable() { 079 DefaultTableModel tm=new DefaultTableModel(2,3); 080 tm.setColumnIdentifiers(new String[] {"Member", "Type", "Value"}); 081 tm.setValueAt("key", 0, 0); 082 tm.setValueAt(entry.getKey()==null ? "(null)" : entry.getKey().getClass().getName(), 0, 1); 083 tm.setValueAt(entry.getKey()==null ? "(null)" : entry.getKey(), 0, 2); 084 085 tm.setValueAt("value", 1, 0); 086 tm.setValueAt(entry.getValue()==null ? "(null)" : entry.getValue().getClass().getName(), 1, 1); 087 tm.setValueAt(entry.getValue()==null ? "(null)" : entry.getValue(), 1, 2); 088 089 return tm; 090 } 091 }; 092 } 093 094 /** 095 * Callback method 096 */ 097 public void setOwner(CompositeVisualizer owner) { 098 this.owner=owner; 099 } 100 }