package au.com.acpfg.misc.StringMatcher;
import org.knime.core.data.DataCell;
import org.knime.core.data.def.StringCell;
import org.knime.core.data.vector.bitvector.DenseBitVector;
/**
* Highlights matched regions in red, otherwise black. TODO: colour should really be a KNIME pref....
*
* @author andrew.cassin
*
*/
public class HighlightMatchReporter implements MatchReporter {
private boolean m_single_colour;
public HighlightMatchReporter(boolean use_single_colour) {
m_single_colour = use_single_colour;
}
@Override
public DataCell report(StringMatcherNodeModel m, String str)
throws Exception {
StringBuffer sb = new StringBuffer(str.length());
sb.append("<html><pre>"); // KNIME Table will display HTML (partial standards compliance)
DenseBitVector bv = m.getResultsBitVector();
assert(str.length() == bv.length());
for (int i=0; i<bv.length(); i++) {
if (bv.get(i)) {
sb.append("<font color=\"red\">");
sb.append(str.charAt(i));
sb.append("</font>");
} else {
sb.append(str.charAt(i));
}
}
return new StringCell(sb.toString());
}
}