1
2
3
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
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 }