001 /*
002 @license.text@
003 */
004 package biz.hammurapi.swing;
005
006 import java.util.Collection;
007 import java.util.Iterator;
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 CollectionVisualizer implements Member {
022
023 private CompositeVisualizer owner;
024
025 public Visualizable toVisualizable(final Collection col) {
026 return new Visualizable() {
027
028 public MutableTreeNode toTree(final String title) {
029 DefaultMutableTreeNode ret=new DefaultMutableTreeNode(col) {
030 public String toString() {
031 if (title!=null && title.trim().length()>0) {
032 return title;
033 }
034 return col.getClass().getName()+"["+col.size()+"]";
035 }
036 };
037
038 Iterator it=col.iterator();
039 while (it.hasNext()) {
040 Visualizable ev=owner.getStackHead().toVisualizable(it.next());
041 if (ev!=null) {
042 ret.add(ev.toTree(""));
043 }
044 }
045
046 return ret;
047 }
048
049 public TableModel toTable() {
050 DefaultTableModel tm=new DefaultTableModel(2,2);
051 tm.setColumnIdentifiers(new String[] {"Property", "Value"});
052 tm.setValueAt("type", 0, 0);
053 tm.setValueAt(col.getClass().getName(), 0, 1);
054 tm.setValueAt("size", 1, 0);
055 tm.setValueAt(String.valueOf(col.size()), 1, 1);
056
057 return tm;
058 }
059
060 };
061 }
062
063 /**
064 * Callback method
065 */
066 public void setOwner(CompositeVisualizer owner) {
067 this.owner=owner;
068 }
069 }