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 }