1 package org.apache.log4j.chainsaw.xstream;
2
3 import javax.swing.table.TableColumn;
4
5 import com.thoughtworks.xstream.converters.Converter;
6 import com.thoughtworks.xstream.converters.MarshallingContext;
7 import com.thoughtworks.xstream.converters.UnmarshallingContext;
8 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
9 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
10
11 /***
12 * XStream Converter implementation that deals with TableColumns settings
13 *
14 * @see Converter
15 * @see XStream
16 * @see TableColumn
17 * @author psmith
18 *
19 */
20 public class TableColumnConverter implements Converter {
21
22 public boolean canConvert(Class type) {
23 return TableColumn.class.equals(type);
24 }
25
26 public void marshal(Object source, HierarchicalStreamWriter writer,
27 MarshallingContext context) {
28 TableColumn column = (TableColumn) source;
29 writer.addAttribute("width", column.getWidth() + "");
30 writer.addAttribute("modelIndex", column.getModelIndex() + "");
31 writer.addAttribute("headerValue", column.getHeaderValue().toString());
32 }
33
34 public Object unmarshal(HierarchicalStreamReader reader,
35 UnmarshallingContext context) {
36 TableColumn column = new TableColumn();
37 column.setWidth(Integer.parseInt(reader.getAttribute("width")));
38 column.setPreferredWidth(column.getWidth());
39 column.setModelIndex(Integer
40 .parseInt(reader.getAttribute("modelIndex")));
41 column.setHeaderValue(reader.getAttribute("headerValue"));
42 return column;
43 }
44
45 }