1 14 package org.compiere.grid.ed; 15 16 import javax.swing.*; 17 import java.awt.*; 18 import java.awt.event.*; 19 import java.util.*; 20 import java.sql.*; 21 import java.beans.*; 22 23 import org.compiere.util.*; 24 import org.compiere.apps.*; 25 import org.compiere.plaf.*; 26 import org.compiere.swing.*; 27 import org.compiere.model.MField; 28 import org.compiere.model.MLookup; 29 import org.compiere.model.*; 30 31 46 public final class VButton extends CButton 47 implements VEditor 48 { 49 60 public VButton (String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable, 61 String text, String description, String help, int AD_Process_ID) 62 { 63 super (text); 64 super.setName(columnName); 65 super.setActionCommand(columnName); 66 m_text = text; 67 m_columnName = columnName; 68 setMandatory (mandatory); 70 if (isReadOnly || !isUpdateable) 71 setReadWrite(false); 72 else 73 setReadWrite(true); 74 75 if (columnName.equals("PaymentRule")) 77 { 78 readReference(195); 79 this.setForeground(Color.blue); 80 setIcon(Env.getImageIcon("Payment16.gif")); } 82 else if (columnName.equals("DocAction")) 83 { 84 readReference(135); 85 this.setForeground(Color.blue); 86 setIcon(Env.getImageIcon("Process16.gif")); } 88 else if (columnName.equals("CreateFrom")) 89 { 90 setIcon(Env.getImageIcon("Copy16.gif")); } 92 else if (columnName.equals("Record_ID")) 93 { 94 setIcon(Env.getImageIcon("Zoom16.gif")); this.setText(Msg.getMsg(Env.getCtx(), "ZoomDocument")); 96 } 97 else if (columnName.equals("Posted")) 98 { 99 readReference(234); 100 this.setForeground(Color.magenta); 101 setIcon(Env.getImageIcon("InfoAccount16.gif")); } 103 104 m_description = description; 106 if (description == null || description.length() == 0) 107 m_description = ""; 108 else 109 setToolTipText(m_description); 110 m_help = help; 112 if (help == null) 113 m_help = ""; 114 m_AD_Process_ID = AD_Process_ID; 115 } 117 120 public void dispose() 121 { 122 m_actionListener = null; 123 if (m_values != null) 124 m_values.clear(); 125 m_values = null; 126 } 128 private String m_columnName; 129 private String m_text; 130 private boolean m_mandatory; 131 private Object m_value; 132 private ActionListener m_actionListener; 133 134 private HashMap m_values = null; 135 136 private String m_description = ""; 137 private String m_help; 138 private int m_AD_Process_ID; 139 private MLookup m_lookup; 140 141 145 public void setValue(Object value) 146 { 147 m_value = value; 148 String text = m_text; 149 150 if (value == null || m_columnName.equals("Record_ID")) 152 ; 153 else if (m_values != null) 154 text = (String )m_values.get(value); 155 else if (m_lookup != null) 156 { 157 NamePair pp = m_lookup.get (value); 158 if (pp != null) 159 text = pp.getName(); 160 } 161 setText (text != null ? text : ""); 163 } 165 169 public void propertyChange (PropertyChangeEvent evt) 170 { 171 if (evt.getPropertyName().equals(org.compiere.model.MField.PROPERTY)) 172 setValue(evt.getNewValue()); 173 } 175 179 public Object getValue() 180 { 181 return m_value; 182 } 184 188 public String getDisplay() 189 { 190 return m_value.toString(); 191 } 193 197 public void setMandatory (boolean mandatory) 198 { 199 m_mandatory = mandatory; 200 } 202 206 public boolean isMandatory() 207 { 208 return m_mandatory; 209 } 211 215 public void setBackground(boolean error) 216 { 217 } 219 223 public String getColumnName() 224 { 225 return m_columnName; 226 } 228 232 public String getDescription() 233 { 234 return m_description; 235 } 237 241 public String getHelp() 242 { 243 return m_help; 244 } 246 250 public int getProcess_ID() 251 { 252 return m_AD_Process_ID; 253 } 255 259 public void addActionListener(ActionListener actionListener) 260 { 261 m_actionListener = actionListener; 262 super.addActionListener(actionListener); 263 } 265 269 public String toString() 270 { 271 StringBuffer sb = new StringBuffer ("VButton["); 272 sb.append(m_columnName); 273 sb.append("=").append(m_value).append("]"); 274 return sb.toString(); 275 } 277 281 private void readReference( int AD_Reference_ID) 282 { 283 m_values = new HashMap(); 284 String SQL; 285 if (Env.isBaseLanguage(Env.getCtx(), "AD_Ref_List")) 286 SQL = "SELECT Value, Name FROM AD_Ref_List WHERE AD_Reference_ID=?"; 287 else 288 SQL = "SELECT l.Value, t.Name FROM AD_Ref_List l, AD_Ref_List_Trl t " 289 + "WHERE l.AD_Ref_List_ID=t.AD_Ref_List_ID" 290 + " AND t.AD_Language='" + Env.getAD_Language(Env.getCtx()) + "'" 291 + " AND l.AD_Reference_ID=?"; 292 293 try 294 { 295 PreparedStatement pstmt = DB.prepareStatement(SQL); 296 pstmt.setInt(1, AD_Reference_ID); 297 ResultSet rs = pstmt.executeQuery(); 298 while (rs.next()) 299 { 300 String value = rs.getString(1); 301 String name = rs.getString(2); 302 m_values.put(value, name); 303 } 304 rs.close(); 305 pstmt.close(); 306 } 307 catch (SQLException e) 308 { 309 Log.error("VButton.readReference", e); 310 } 311 } 313 317 public HashMap getValues() 318 { 319 return m_values; 320 } 322 326 public void setField (MField mField) 327 { 328 if (mField.getColumnName().endsWith("_ID") && !mField.getColumnName().equals("Record_ID")) 329 { 330 m_lookup = MLookupFactory.get(Env.getCtx(), mField.getWindowNo(), 0, 331 mField.getAD_Column_ID(), DisplayType.Search); 332 } 333 } 335 } | Popular Tags |