1 14 package org.compiere.grid.ed; 15 16 import javax.swing.table.*; 17 import java.awt.*; 18 import java.text.*; 19 import javax.swing.*; 20 import java.util.*; 21 22 import org.compiere.util.*; 23 import org.compiere.model.*; 24 import org.compiere.apps.*; 25 import org.compiere.plaf.*; 26 27 33 public final class VCellRenderer extends DefaultTableCellRenderer 34 { 35 39 public VCellRenderer(MField mField) 40 { 41 this (mField.getDisplayType()); 42 m_columnName = mField.getColumnName(); 43 this.setName(m_columnName); 44 m_lookup = mField.getLookup(); 45 m_password = mField.isEncryptedField(); 46 } 48 52 public VCellRenderer (int displayType) 53 { 54 super(); 55 m_displayType = displayType; 56 if (DisplayType.isNumeric(m_displayType)) 58 { 59 m_numberFormat = DisplayType.getNumberFormat(m_displayType); 60 setHorizontalAlignment(JLabel.RIGHT); 61 } 62 else if (DisplayType.isDate(m_displayType)) 64 m_dateFormat = DisplayType.getDateFormat(m_displayType); 65 else if (m_displayType == DisplayType.YesNo) 67 { 68 m_check = new JCheckBox(); 69 m_check.setMargin(new Insets(0,0,0,0)); 70 m_check.setHorizontalAlignment(JLabel.CENTER); 71 m_check.setOpaque(true); 72 } 73 } 75 private int m_displayType; 76 private String m_columnName = null; 77 private Lookup m_lookup = null; 78 private boolean m_password = false; 79 private SimpleDateFormat m_dateFormat = null; 81 private DecimalFormat m_numberFormat = null; 82 private JCheckBox m_check = null; 83 84 95 public Component getTableCellRendererComponent (JTable table, Object value, 96 boolean isSelected, boolean hasFocus, int row, int col) 97 { 98 101 Component c = null; 102 if (m_displayType == DisplayType.YesNo) 103 c = m_check; 104 else 105 { 106 c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col); 107 c.setFont(CompierePLAF.getFont_Field()); 108 } 109 110 Color bg = CompierePLAF.getFieldBackground_Normal(); 112 Color fg = CompierePLAF.getTextColor_Normal(); 113 if (isSelected && !hasFocus) 115 { 116 bg = table.getSelectionBackground(); 117 fg = table.getSelectionForeground(); 118 } 119 else 121 { 122 int cCode = 0; 124 if (table instanceof org.compiere.grid.VTable) 126 cCode = ((org.compiere.grid.VTable)table).getColorCode (row); 127 else if (table instanceof org.compiere.minigrid.MiniTable) 129 cCode = ((org.compiere.minigrid.MiniTable)table).getColorCode (row); 130 if (cCode == 0) 132 ; 133 else if (cCode < 0) 134 fg = CompierePLAF.getTextColor_Issue(); 135 else 136 fg = CompierePLAF.getTextColor_OK(); 137 if (!table.isCellEditable(row, col)) 139 bg = CompierePLAF.getFieldBackground_Inactive(); 140 } 141 c.setBackground(bg); 143 c.setForeground(fg); 144 149 setValue(value); 151 return c; 152 } 154 155 159 protected void setValue (Object value) 160 { 161 String retValue = null; 162 try 163 { 164 if (m_displayType == DisplayType.YesNo) 166 { 167 m_check.setSelected("Y".equals(value)); 168 return; 169 } 170 else if (value == null) 171 ; 172 else if (DisplayType.isNumeric(m_displayType)) 174 retValue = m_numberFormat.format(value); 175 else if (DisplayType.isDate(m_displayType)) 177 retValue = m_dateFormat.format(value); 178 else if (m_displayType == DisplayType.RowID) 180 retValue = ""; 181 else if (m_lookup != null && (DisplayType.isLookup(m_displayType) 183 || m_displayType == DisplayType.Location 184 || m_displayType == DisplayType.Account 185 || m_displayType == DisplayType.Locator 186 || m_displayType == DisplayType.PAttribute )) 187 retValue = m_lookup.getDisplay(value); 188 else if (m_displayType == DisplayType.Button) 190 { 191 if ("Record_ID".equals(m_columnName)) 192 retValue = "#" + value + "#"; 193 else 194 retValue = null; 195 } 196 else if (m_password) 198 retValue = "**********"; 199 else 201 { 202 super.setValue(value); 203 return; 204 } 205 } 206 catch (Exception e) 207 { 208 Log.error("VCellRenderer - setValue (" + value + ") " + value.getClass().getName() , e); 209 retValue = value.toString(); 210 } 211 super.setValue(retValue); 212 } 214 218 public String toString() 219 { 220 return "VCellRenderer - DisplayType=" + m_displayType + " - " + m_lookup; 221 } 223 public void dispose() 224 { 225 if (m_lookup != null) 226 m_lookup.dispose(); 227 m_lookup = null; 228 } 230 } | Popular Tags |