1 19 package org.netbeans.modules.refactoring.java.ui; 20 21 import java.awt.Component ; 22 import java.util.Iterator ; 23 import javax.swing.DefaultListCellRenderer ; 24 import javax.swing.ImageIcon ; 25 import javax.swing.JCheckBox ; 26 import javax.swing.JComponent ; 27 import javax.swing.JLabel ; 28 import javax.swing.JList ; 29 import javax.swing.JTable ; 30 import javax.swing.UIManager ; 31 import javax.swing.border.Border ; 32 import javax.swing.border.EmptyBorder ; 33 import javax.swing.table.DefaultTableCellRenderer ; 34 import javax.swing.table.TableCellRenderer ; 35 import javax.swing.table.TableColumn ; 36 import org.netbeans.api.java.source.TreePathHandle; 37 import org.netbeans.api.java.source.UiUtils; 38 import org.openide.util.NbBundle; 39 40 41 46 public final class UIUtilities { 47 private UIUtilities() { 49 } 50 51 61 public static String getDisplayText(TreePathHandle element) { 62 return null; 63 } 64 65 70 public static String getIconBase(TreePathHandle element) { 71 return null; 72 } 73 74 79 public static String getColumnName(String name) { 80 return name == null || name.length() == 0 ? " " : name; } 82 83 90 public static void initColumnWidth(JTable table, int index, Object longValue, int padding) { 91 TableColumn column = table.getColumnModel().getColumn(index); 92 93 TableCellRenderer headerRenderer = column.getHeaderRenderer(); 95 if (headerRenderer == null) { 96 headerRenderer = table.getTableHeader().getDefaultRenderer(); 97 } 98 Component comp = headerRenderer.getTableCellRendererComponent( 99 null, column.getHeaderValue(), false, false, 0, 0); 100 int width = comp.getPreferredSize().width; 101 102 comp = table.getDefaultRenderer(table.getModel().getColumnClass(index)).getTableCellRendererComponent( 104 table, longValue, false, false, 0, index); 105 width = Math.max(width, comp.getPreferredSize().width) + 2 * padding; 106 107 column.setPreferredWidth(width); 109 if (longValue instanceof Boolean ) { 112 column.setMaxWidth(width); 113 } 114 } 115 116 119 public static class JavaElementTableCellRenderer extends DefaultTableCellRenderer { 120 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 121 super.getTableCellRendererComponent(table, extractText(value), isSelected, hasFocus, row, column); 122 String iconBase = extractIconBase(value); 123 setIcon(iconBase == null ? null : new ImageIcon (org.openide.util.Utilities.loadImage(iconBase + ".gif"))); return this; 125 } 126 127 132 protected String extractIconBase(Object value) { 133 if (value instanceof TreePathHandle) { 134 return getIconBase((TreePathHandle) value); 135 } else { 136 return null; 137 } 138 } 139 140 144 protected String extractText(Object value) { 145 if (value==null) 146 return null; 147 if (value instanceof TreePathHandle) { 148 return getDisplayText((TreePathHandle) value); 149 } else { 150 return value.toString(); 151 } 152 } 153 } 154 155 158 public static class JavaElementListCellRenderer extends DefaultListCellRenderer { 159 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { 160 super.getListCellRendererComponent(list, extractText(value), index, isSelected, cellHasFocus); 161 String iconBase = extractIconBase(value); 162 if (iconBase != null) { 163 setIcon(new ImageIcon (org.openide.util.Utilities.loadImage(iconBase + ".gif"))); } 165 return this; 166 } 167 168 173 protected String extractIconBase(Object value) { 174 if (value instanceof TreePathHandle) { 175 return getIconBase((TreePathHandle) value); 176 } else { 177 return null; 178 } 179 } 180 181 185 protected String extractText(Object value) { 186 if (value instanceof TreePathHandle) { 187 return getDisplayText((TreePathHandle) value); 188 } else { 189 return value.toString(); 190 } 191 } 192 } 193 194 200 public static class BooleanTableCellRenderer extends JCheckBox implements TableCellRenderer { 201 private static final Border noFocusBorder = new EmptyBorder (1, 1, 1, 1); 202 private final JLabel emptyLabel = new JLabel (); 203 204 public BooleanTableCellRenderer() { 205 super(); 206 setHorizontalAlignment(JLabel.CENTER); 207 setBorderPainted(true); 208 emptyLabel.setBorder(noFocusBorder); 209 emptyLabel.setOpaque(true); 210 } 211 212 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { 213 JComponent result; 214 if (value == null) { 215 result = emptyLabel; 216 } else { 217 setSelected(((Boolean )value).booleanValue()); 218 setEnabled(table.getModel().isCellEditable(row, column)); 219 result = this; 220 } 221 222 result.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground()); 223 result.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground()); 224 result.setBorder(hasFocus ? UIManager.getBorder("Table.focusCellHighlightBorder") : noFocusBorder); 226 return result; 227 } 228 } 229 } 230 | Popular Tags |