View Javadoc

1   /*
2    * Created on Aug 26, 2004 @ Erasmus University Rotterdam Copyright (c) Delft
3    * University of Technology
4    */
5   package nl.tudelft.simulation.introspection.mapping;
6   
7   import java.awt.Component;
8   import java.util.ArrayList;
9   import java.util.Collection;
10  import java.util.List;
11  
12  import javax.swing.JLabel;
13  import javax.swing.JTable;
14  import javax.swing.table.DefaultTableCellRenderer;
15  
16  /***
17   * Renders Collection values in a human-readable manner.
18   * 
19   * @author <a
20   *         href="http://web.eur.nl/fbk/dep/dep1/Introduction/Staff/People/Lang">Niels
21   *         Lang </a><a
22   * @since 1.5
23   */
24  public class CollectionRenderer extends DefaultTableCellRenderer
25  {
26      /***
27       * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,
28       *      java.lang.Object, boolean, boolean, int, int)
29       */
30      @Override
31      public Component getTableCellRendererComponent(JTable table, Object value,
32              boolean isSelected, boolean hasFocus, int row, int column)
33      {
34          List<Object> coll = new ArrayList<Object>((Collection< ? >) value);
35          String content = "Collection of ";
36          if (coll.size() > 0)
37              content += getShortName(coll.get(0).getClass());
38          else
39              content += "?";
40          content += ": ";
41          for (int i = 0; i < coll.size(); i++)
42              content += coll.get(i).toString() + "; ";
43          return new JLabel(content);
44      }
45  
46      /***
47       * Returns the short name of a class
48       * 
49       * @param clasz the class
50       * @return the short name
51       */
52      private static String getShortName(Class clasz)
53      {
54          String name = clasz.getName();
55          return name.substring(name.lastIndexOf('.') + 1);
56      }
57  }