/** Constructor. */ CellRenderer() { label = new BaseXLabel() { @Override public void paintComponent(final Graphics g) { super.paintComponent(g); BaseXLayout.hints(g); if (fm == null) fm = g.getFontMetrics(label.getFont()); final int y = Math.min(fm.getHeight(), (int) label.getPreferredSize().getHeight()) - 2; int x = (int) label.getPreferredSize().getWidth() + 2; final String s = file.name(); g.setColor(GUIConstants.TEXT); g.drawString(s, x, y); x += fm.stringWidth(s); final String[] names = file.file().getParent().split("/|\\\\"); final StringBuilder sb = new StringBuilder(" "); for (int n = names.length - 1; n >= 0; n--) sb.append('/').append(names[n]); g.setColor(GUIConstants.gray); g.drawString(sb.toString(), x, y); } }; label.setOpaque(true); }