
de.tsl2.nano.logictable.LogicForm Maven / Gradle / Ivy
/*
* File: $HeadURL$
* Id : $Id$
*
* created by: Thomas Schneider, Thomas Schneider
* created on: Dec 14, 2012
*
* Copyright: (c) Thomas Schneider 2012, all rights reserved
*/
package de.tsl2.nano.logictable;
import java.text.Format;
import de.tsl2.nano.core.util.CollectionUtil;
import de.tsl2.nano.core.util.FormatUtil;
/**
* Adds direct cell formatting to the {@link LogicTable}.
*
* TODO: implement cell formatting
*
* TODO: implement import/export html
*
* @author Thomas Schneider, Thomas Schneider
* @version $Revision$
*/
public class LogicForm, ID> extends LogicTable {
static final String CONFIG_EXPRESSION = ">>";
/**
* constructor
* @param header
*/
public LogicForm(H... header) {
super(header);
}
public LogicForm(Object... header) {
super((H[]) CollectionUtil.copyOfRange(header, 0, header.length, DefaultHeader[].class));
}
/**
* constructor
*
* @param columnCount
*/
public LogicForm(String name, int columnCount) {
super(name, columnCount);
}
/**
* constructor
* @param cols
* @param rows
*/
public LogicForm(String name, int cols, int rows) {
super(name, cols, rows);
}
protected static Object createDefaultHeader(Object source) {
return new DefaultHeader((String)source);
}
/**
* {@inheritDoc}
*/
@Override
public Object get(int row, int column) {
Object e = super.get(row, column);
if (e instanceof String) {
String expression = (String) e;
if (expression.contains(CONFIG_EXPRESSION)) {
try {
String[] c = expression.split(CONFIG_EXPRESSION);
createFormat(c[1]);
return header[column].format(c[0]);
} catch (Exception ex) {
return e;
}
}
}
return e;
}
@SuppressWarnings("unchecked")
private H createFormat(String string) {
return (H) FormatUtil.getDefaultFormat(string, true);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy