/** * */ package org.korsakow.ide.ui.resourceexplorer; import java.awt.Component; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.table.DefaultTableCellRenderer; import org.korsakow.ide.resources.MediaProperty; import org.korsakow.ide.resources.ResourceProperty; import org.korsakow.ide.resources.SnuProperty; import org.korsakow.ide.ui.resources.MediaResourceListColumns; public class ResourceTreeTableHeaderCellRenderer extends AggregateCellRenderer { public ResourceTreeTableHeaderCellRenderer() { addRenderer(ResourceBrowser.Column.class, new ResourceBrowserColumnRenderer()); addRenderer(ResourceProperty.class, new ResourcePropertyRenderer()); addRenderer(MediaResourceListColumns.Column.class, new MediaColumnRenderer()); addRenderer(MediaProperty.class, new MediaPropertyRenderer()); addRenderer(SnuProperty.class, new SnuPropertyRenderer()); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component comp = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (comp instanceof JLabel) { JLabel renderer = (JLabel)comp; renderer.setHorizontalTextPosition(SwingConstants.LEFT); renderer.setHorizontalAlignment(SwingConstants.CENTER); renderer.setVerticalAlignment(SwingConstants.CENTER); // not sure why we have to do this every time, but the JTableHeader source does it this way, and it doesn't work otherwise renderer.setBorder(UIManager.getBorder("TableHeader.cellBorder")); } return comp; } private static class ResourceBrowserColumnRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent( JTable table, // the list Object value, // value to display boolean isSelected, // is the cell selected boolean cellHasFocus, // is the cell selected int row, // column index int column) // column index { super.getTableCellRendererComponent(table, value, isSelected, cellHasFocus, row, column); setIcon(null); ResourceBrowser.Column property = (ResourceBrowser.Column)AggregateCellRenderer.getColumnIdentifier(table, column); switch (property) { default: setToolTipText(null); setText(value.toString()); break; case ISSNU: setToolTipText(null); setText(value.toString()); setIcon(null); break; case PREVIEW: setToolTipText(null); setText(value.toString()); setIcon(null); break; case BACKGROUNDSOUND: setToolTipText(null); setText(value.toString()); setIcon(null); break; case CLICKSOUND: setToolTipText(null); setText(value.toString()); setIcon(null); break; } return this; } } private static class ResourcePropertyRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent( JTable table, // the list Object value, // value to display boolean isSelected, // is the cell selected boolean cellHasFocus, // is the cell selected int row, // column index int column) // column index { super.getTableCellRendererComponent(table, value, isSelected, cellHasFocus, row, column); setIcon(null); ResourceProperty property = (ResourceProperty)AggregateCellRenderer.getColumnIdentifier(table, column); switch (property) { case TYPE: // Text should not be set manually, this overrides the properties file // setText("type"); break; default: setToolTipText(null); setText(value.toString()); break; } return this; } } private static class ResourceColumnRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent( JTable table, // the list Object value, // value to display boolean isSelected, // is the cell selected boolean cellHasFocus, // is the cell selected int row, // column index int column) // column index { super.getTableCellRendererComponent(table, value, isSelected, cellHasFocus, row, column); setIcon(null); return this; } } private static class MediaPropertyRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent( JTable table, // the list Object value, // value to display boolean isSelected, // is the cell selected boolean cellHasFocus, // is the cell selected int row, // column index int column) // column index { super.getTableCellRendererComponent(table, value, isSelected, cellHasFocus, row, column); setIcon(null); MediaProperty property = (MediaProperty)AggregateCellRenderer.getColumnIdentifier(table, column); switch (property) { default: break; } return this; } } private static class MediaColumnRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent( JTable table, // the list Object value, // value to display boolean isSelected, // is the cell selected boolean cellHasFocus, // is the cell selected int row, // column index int column) // column index { super.getTableCellRendererComponent(table, value, isSelected, cellHasFocus, row, column); setIcon(null); MediaResourceListColumns.Column property = (MediaResourceListColumns.Column)AggregateCellRenderer.getColumnIdentifier(table, column); switch (property) { default: setToolTipText(null); setText(value.toString()); setIcon(null); break; case PREVIEW: setToolTipText(null); setText(value.toString()); setIcon(null); break; case BACKGROUND: setToolTipText(null); setText(value.toString()); setIcon(null); break; case CLICKSOUND: setToolTipText(null); setText(value.toString()); setIcon(null); break; } return this; } } private static class SnuPropertyRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent( JTable table, // the list Object value, // value to display boolean isSelected, // is the cell selected boolean cellHasFocus, // is the cell selected int row, // column index int column) // column index { super.getTableCellRendererComponent(table, value, isSelected, cellHasFocus, row, column); setIcon(null); SnuProperty property = (SnuProperty)AggregateCellRenderer.getColumnIdentifier(table, column); switch (property) { default: setToolTipText(null); setText(value.toString()); break; case ENDER: setToolTipText(null); setText(value.toString()); setIcon(null); break; case STARTER: setToolTipText(null); setText(value.toString()); setIcon(null); break; case BACKGROUNDSOUND: setToolTipText(null); setText(value.toString()); setIcon(null); break; case PREVIEWMEDIA: setToolTipText(null); setText(value.toString()); setIcon(null); break; } return this; } } }