001    /*
002     @license.text@
003      */
004    package biz.hammurapi.swing;
005    
006    import javax.swing.table.DefaultTableModel;
007    import javax.swing.table.TableModel;
008    import javax.swing.tree.DefaultMutableTreeNode;
009    import javax.swing.tree.MutableTreeNode;
010    
011    import biz.hammurapi.swing.CompositeVisualizer.Member;
012    
013    /**
014     * @author Pavel Vlasov
015     *
016     * @version $Revision: 1.1 $
017     */
018    public class ArrayVisualizer implements Member {
019    
020            private CompositeVisualizer owner;
021    
022            public Visualizable toVisualizable(final Object[] oa) {
023                    return new Visualizable() {
024    
025                            public MutableTreeNode toTree(final String title) {
026                                    DefaultMutableTreeNode ret=new DefaultMutableTreeNode(oa) {
027                                            public String toString() {
028                                                    return title;
029                                            }
030                                    }; 
031                                    
032                                for (int i=0; i<oa.length; i++) {                                        
033                                    Visualizable ev=owner.getStackHead().toVisualizable(oa[i]);
034                                    if (ev!=null) {
035                                            ret.add(ev.toTree("element["+i+"]"));
036                                    }
037                                }                   
038                                    
039                                    return ret;
040                            }
041    
042                            public TableModel toTable() {
043                                    DefaultTableModel tm=new DefaultTableModel(2,2);
044                                    tm.setColumnIdentifiers(new String[] {"Property", "Value"});
045                                    tm.setValueAt("type", 0, 0);
046                                    tm.setValueAt(oa.getClass().getName(), 0, 1);
047                                    tm.setValueAt("size", 1, 0);
048                                    tm.setValueAt(String.valueOf(oa.length), 1, 1);
049                                    
050                                    return tm;
051                            }
052                            
053                    };
054            }
055    
056            /**
057             * Callback method
058             */
059            public void setOwner(CompositeVisualizer owner) {
060                    this.owner=owner;
061            }
062    }