1 14 package org.compiere.apps.search; 15 16 import java.awt.*; 17 import javax.swing.*; 18 import javax.swing.table.*; 19 import java.sql.*; 20 21 import org.compiere.util.*; 22 import org.compiere.apps.*; 23 import org.compiere.model.*; 24 import org.compiere.plaf.*; 25 26 33 public final class FindValueRenderer extends DefaultTableCellRenderer 34 { 35 40 public FindValueRenderer(Find find, boolean value2) 41 { 42 super(); 43 m_find = find; 44 m_value2 = value2; 45 m_check.setMargin(new Insets(0,0,0,0)); 47 m_check.setHorizontalAlignment(JLabel.CENTER); 48 } 50 51 private Find m_find; 52 53 private boolean m_value2; 54 55 56 private volatile String m_columnName = null; 57 58 private JCheckBox m_check = new JCheckBox(); 59 60 61 62 72 public Component getTableCellRendererComponent(JTable table, Object value, 73 boolean isSelected, boolean hasFocus, int row, int col) 74 { 75 m_columnName = null; 78 Object column = table.getModel().getValueAt(row, Find.INDEX_COLUMNNAME); 79 if (column != null) 80 m_columnName = ((ValueNamePair)column).getValue(); 81 82 boolean between = false; 84 Object betw = table.getModel().getValueAt(row, Find.INDEX_OPERATOR); 85 if (betw != null && betw.toString().equals(MQuery.OPERATORS[MQuery.BETWEEN_INDEX].toString())) 86 between = true; 87 88 if (table.isCellEditable(row, col) && (!m_value2 || (m_value2 && between))) 90 setBackground(CompierePLAF.getFieldBackground_Normal()); 91 else 92 setBackground(CompierePLAF.getFieldBackground_Inactive()); 93 94 Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col); 95 if (value == null || (m_value2 && !between)) 96 return c; 97 MField field = getMField(); 99 if (field != null && field.getDisplayType() == DisplayType.YesNo) 100 { 101 m_check.setSelected(((String )value).indexOf('Y') != -1); 102 return m_check; 103 } 104 return c; 105 } 107 108 109 113 protected void setValue(Object value) 114 { 115 if (value == null) 117 { 118 super.setValue(value); 119 return; 120 } 121 122 String retValue = null; 123 124 if (value != null) 126 { 127 String str = (String )value; 128 if (str.startsWith("'") && str.endsWith("'")) 129 { 130 str = str.substring(1, str.length()-1); 131 value = str; 132 } 133 } 134 135 int displayType = 0; 136 MField field = getMField(); 137 if (field != null) 138 displayType = field.getDisplayType(); 139 else 140 Log.error("FindValueRenderer.setValue (" + value + ") ColumnName=" + m_columnName + " No Target Column"); 141 142 setHorizontalAlignment(JLabel.LEFT); 143 if (DisplayType.isNumeric(displayType)) 145 { 146 setHorizontalAlignment(JLabel.RIGHT); 147 retValue = DisplayType.getNumberFormat(displayType).format(value); 148 } 149 else if (DisplayType.isDate(displayType)) 151 { 152 if (value instanceof Timestamp) 153 retValue = DisplayType.getDateFormat(displayType).format(value); 154 else 155 retValue = value.toString(); 156 } 157 else if (displayType == DisplayType.RowID) 159 retValue = ""; 160 else if (DisplayType.isLookup(displayType) && field != null) 162 { 163 Lookup lookup = field.getLookup(); 164 if (lookup != null) 165 retValue = lookup.getDisplay(value); 166 } 167 else 169 { 170 super.setValue(value); 171 return; 172 } 173 super.setValue(retValue); 174 } 176 180 private MField getMField () 181 { 182 return m_find.getTargetMField(m_columnName); 183 } 185 186 } | Popular Tags |