/** * Creates new form OutputIntermedTable. * * @param intermed DOCUMENT ME! * @param enclosingChars DOCUMENT ME! */ public OutputIntermedTable(final TableModel intermed, final String[] enclosingChars) { initComponents(); deduplicate = new boolean[intermed.getColumnCount()]; if ((enclosingChars != null) && (enclosingChars.length == intermed.getColumnCount())) { for (int i = 0; i < intermed.getColumnCount(); ++i) { deduplicate[i] = "'".equals(enclosingChars[i]); } } else { Arrays.fill(deduplicate, false); } tblIntermed.setFont(new java.awt.Font("Dialog", 0, 12)); this.tblIntermed.setModel(intermed); this.tblIntermed .getSelectionModel() .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); this.tblIntermed.setCellSelectionEnabled(true); setName(intermed.toString()); lblRowCount.setText("Rows: " + intermed.getRowCount()); TableSortDecorator.decorate(tblIntermed); final DefaultTableCellRenderer r = new DefaultTableCellRenderer() { @Override public final Component getTableCellRendererComponent( final JTable table, final Object value, final boolean isSelected, final boolean hasFocus, final int row, final int column) { final Component c; if (value != null) { // hardcoded unescaping for performance final char[] chars = value.toString().toCharArray(); final char[] res; if ((chars.length > 1) && deduplicate[column]) { res = new char[chars.length]; int ptr = -1; char cur = chars[0]; char next; for (int j = 0; j < (chars.length - 1); ++j) { next = chars[j + 1]; if ((cur == '\'') && (next == '\'')) { ++j; } res[++ptr] = cur; cur = next; } res[++ptr] = chars[chars.length - 1]; c = super.getTableCellRendererComponent( table, new String(res, 0, ++ptr), isSelected, hasFocus, row, column); } else { c = super.getTableCellRendererComponent( table, new String(chars, 0, chars.length), isSelected, hasFocus, row, column); } c.setForeground(Color.BLACK); } else { c = super.getTableCellRendererComponent( table, NULL, isSelected, hasFocus, row, column); // c.setBackground(Color.WHITE); c.setForeground(Color.LIGHT_GRAY); } return c; } }; // tblIntermed.setDefaultRenderer(String.class, r); tblIntermed.setDefaultRenderer(Object.class, r); }