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    }