/**
*
*/
package org.javabuilders.swing.handler.type;
import java.util.Map;
import java.util.Set;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import org.javabuilders.BuildException;
import org.javabuilders.BuildProcess;
import org.javabuilders.Builder;
import org.javabuilders.BuilderConfig;
import org.javabuilders.Node;
import org.javabuilders.handler.ITypeHandlerFinishProcessor;
/**
* Handles property creating a JTable
*
* @author Jacek Furmankiewicz
*
*/
public class JTableFinishProcessor implements ITypeHandlerFinishProcessor {
private static final JTableFinishProcessor singleton = new JTableFinishProcessor();
/**
* @return Singleton
*/
public static JTableFinishProcessor getInstance() {
return singleton;
}
private JTableFinishProcessor() {
}
/* (non-Javadoc)
* @see org.javabuilders.handler.ITypeHandlerFinishProcessor#finish(org.javabuilders.BuilderConfig, org.javabuilders.BuildProcess, org.javabuilders.Node, java.lang.String, java.util.Map)
*/
public void finish(BuilderConfig config, BuildProcess process, Node current, String key, Map<String, Object> typeDefinition)
throws BuildException {
Node content = current.getChildNode(Builder.CONTENT);
if (content != null) {
JTable table = (JTable) current.getMainObject();
Set<TableColumn> columns = current.getContentObjects(TableColumn.class);
// some columns could be existing, some new, add only new ones
for (TableColumn column : columns) {
Object identifier = column.getIdentifier();
boolean existing = false;
if (identifier != null) {
for (int i = 0; i < table.getColumnCount(); i++) {
TableColumn temp = table.getColumnModel().getColumn(i);
if (identifier.equals(temp.getIdentifier())) {
existing = true;
break;
}
}
}
if (!existing) {
table.addColumn(column);
}
}
}
}
}