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.lang.reflect.Array;
9   
10  import javax.swing.JLabel;
11  import javax.swing.JTable;
12  import javax.swing.table.DefaultTableCellRenderer;
13  
14  /***
15   * Renders array values in a human-readable manner.
16   * 
17   * @author <a
18   *         href="http://web.eur.nl/fbk/dep/dep1/Introduction/Staff/People/Lang">Niels
19   *         Lang </a><a
20   * @since 1.5
21   */
22  public class ArrayRenderer extends DefaultTableCellRenderer
23  {
24      /***
25       * A LABEL is returned, preventing users from editing the array contents
26       * directly.
27       * 
28       * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,
29       *      java.lang.Object, boolean, boolean, int, int)
30       */
31      @Override
32      public Component getTableCellRendererComponent(JTable table, Object value,
33              boolean isSelected, boolean hasFocus, int row, int column)
34      {
35          Class clasz = value.getClass().getComponentType();
36          String text = "[] of " + getShortName(clasz) + ": ";
37          try
38          {
39              for (int i = 0; i < Array.getLength(value); i++)
40                  text += Array.get(value, i) + "; ";
41          } catch (Exception e)
42          {
43              // Unfortunately, we now have nothing more than:
44              text += "?";
45          }
46          return new JLabel(text);
47      }
48  
49      private static String getShortName(Class clasz)
50      {
51          String name = clasz.getName();
52          return name.substring(name.lastIndexOf('.') + 1);
53      }
54  }