1 3 27 28 30 package de.qfs.apps.qflog; 31 32 34 import java.awt.Component ; 35 36 import javax.swing.Icon ; 37 import javax.swing.ImageIcon ; 38 import javax.swing.JLabel ; 39 import javax.swing.JTable ; 40 import javax.swing.ListSelectionModel ; 41 import javax.swing.event.TableModelEvent ; 42 import javax.swing.table.DefaultTableCellRenderer ; 43 44 import de.qfs.lib.gui.WholeRowFocusRenderer; 45 import de.qfs.lib.log.Log; 46 import de.qfs.lib.log.Logger; 47 48 import de.qfs.apps.qflog.logview.LogView; 49 50 52 59 public class ViewTable extends JTable 60 { 61 63 66 private final static Logger logger = new Logger (ViewTable.class); 67 68 71 private final static String iconNames[] = { 72 "logView.icon.file", 73 "logView.icon.connected", 74 "logView.icon.disconnected" 75 }; 76 77 80 private final static Icon [] icons = new Icon [iconNames.length]; 81 82 83 85 87 92 public ViewTable (Model model) 93 { 94 super (model); 95 if (logger.level >= Log.MTD) { 96 logger.log(Log.MTD, "ViewTable(Model)", 97 logger.level < Log.MTDDETAIL ? "" : 98 "model: " + model); 99 } 100 101 initIcons(); 102 103 getSelectionModel().setSelectionMode 104 (ListSelectionModel.SINGLE_SELECTION); 105 setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 106 setShowVerticalLines(false); 107 setShowHorizontalLines(false); 108 Renderer renderer = new Renderer (); 109 addFocusListener(renderer); 110 setDefaultRenderer(Object .class, renderer); 111 setDefaultRenderer(Integer .class, renderer); 112 setDefaultRenderer(String .class, renderer); 113 getColumnModel().setColumnMargin(0); 114 } 115 116 118 120 123 128 131 134 private void initIcons() 135 { 136 if (icons[0] == null) { 137 for (int i = 0; i < icons.length; i++) { 138 icons[i] = App.getResources().getIcon(iconNames[i], null); 139 } 140 } 141 } 142 143 146 151 public boolean isManagingFocus() 152 { 153 return false; 154 } 155 156 158 163 166 private class Renderer extends WholeRowFocusRenderer 167 { 168 171 public Renderer() 172 { 173 setStippleBorder(); 174 } 175 176 180 public Component getTableCellRendererComponent 181 (JTable table, Object value, boolean isSelected, 182 boolean hasFocus, int row, int column) { 183 JLabel label = (JLabel ) super.getTableCellRendererComponent 184 (table,value, isSelected, false, row, column); 185 if (table.convertColumnIndexToModel(column) == Model.COL_STATE) { 186 switch (((Integer ) value).intValue()) { 187 case LogView.STATE_FILE: 188 label.setIcon(icons[0]); 189 label.setText(null); 190 break; 191 case LogView.STATE_CONNECTED: 192 label.setIcon(icons[1]); 193 label.setText(null); 194 break; 195 case LogView.STATE_DISCONNECTED: 196 label.setIcon(icons[2]); 197 label.setText(null); 198 break; 199 } 200 } else { 201 label.setIcon(null); 202 } 203 return label; 204 } 205 } 206 207 } 209 | Popular Tags |