KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > grid > ed > VButton


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

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 /**
32  * General Button.
33  * <pre>
34  * Special Buttons:
35  * Payment,
36  * Processing,
37  * CreateFrom,
38  * Record_ID - Zoom
39  * </pre>
40  * Maintains all values for display in m_values
41  * @see APanel#actionButton(VButton) for process start
42  *
43  * @author Jorg Janke
44  * @version $Id: VButton.java,v 1.18 2003/10/10 20:54:14 jjanke Exp $
45  */

46 public final class VButton extends CButton
47     implements VEditor
48 {
49     /**
50      * Constructor
51      * @param columnName column
52      * @param mandatory mandatory
53      * @param isReadOnly read only
54      * @param isUpdateable updateable
55      * @param text text
56      * @param description description
57      * @param help help
58      * @param AD_Process_ID process to start
59      */

60     public VButton (String JavaDoc columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable,
61         String JavaDoc text, String JavaDoc description, String JavaDoc 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         //
69
setMandatory (mandatory);
70         if (isReadOnly || !isUpdateable)
71             setReadWrite(false);
72         else
73             setReadWrite(true);
74
75         // Special Buttons
76
if (columnName.equals("PaymentRule"))
77         {
78             readReference(195);
79             this.setForeground(Color.blue);
80             setIcon(Env.getImageIcon("Payment16.gif")); // 29*14
81
}
82         else if (columnName.equals("DocAction"))
83         {
84             readReference(135);
85             this.setForeground(Color.blue);
86             setIcon(Env.getImageIcon("Process16.gif")); // 16*16
87
}
88         else if (columnName.equals("CreateFrom"))
89         {
90             setIcon(Env.getImageIcon("Copy16.gif")); // 16*16
91
}
92         else if (columnName.equals("Record_ID"))
93         {
94             setIcon(Env.getImageIcon("Zoom16.gif")); // 16*16
95
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")); // 16*16
102
}
103
104         // Deescription & Help
105
m_description = description;
106         if (description == null || description.length() == 0)
107             m_description = "";
108         else
109             setToolTipText(m_description);
110         //
111
m_help = help;
112         if (help == null)
113             m_help = "";
114         m_AD_Process_ID = AD_Process_ID;
115     } // VButton
116

117     /**
118      * Dispose
119      */

120     public void dispose()
121     {
122         m_actionListener = null;
123         if (m_values != null)
124             m_values.clear();
125         m_values = null;
126     } // dispose
127

128     private String JavaDoc m_columnName;
129     private String JavaDoc m_text;
130     private boolean m_mandatory;
131     private Object JavaDoc m_value;
132     private ActionListener m_actionListener;
133     /** List of Key/Name */
134     private HashMap m_values = null;
135     /** Description as ToolTip */
136     private String JavaDoc m_description = "";
137     private String JavaDoc m_help;
138     private int m_AD_Process_ID;
139     private MLookup m_lookup;
140
141     /**
142      * Set Value
143      * @param value value
144      */

145     public void setValue(Object JavaDoc value)
146     {
147         m_value = value;
148         String JavaDoc text = m_text;
149
150         // Nothing to show or Record_ID
151
if (value == null || m_columnName.equals("Record_ID"))
152             ;
153         else if (m_values != null)
154             text = (String JavaDoc)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         // Display it
162
setText (text != null ? text : "");
163     } // setValue
164

165     /**
166      * Property Change Listener
167      * @param evt event
168      */

169     public void propertyChange (PropertyChangeEvent evt)
170     {
171         if (evt.getPropertyName().equals(org.compiere.model.MField.PROPERTY))
172             setValue(evt.getNewValue());
173     } // propertyChange
174

175     /**
176      * Return Value
177      * @return value
178      */

179     public Object JavaDoc getValue()
180     {
181         return m_value;
182     } // getValue
183

184     /**
185      * Return Display Value
186      * @return String value
187      */

188     public String JavaDoc getDisplay()
189     {
190         return m_value.toString();
191     } // getDisplay
192

193     /**
194      * Set Mandatory - NOP
195      * @param mandatory mandatory
196      */

197     public void setMandatory (boolean mandatory)
198     {
199         m_mandatory = mandatory;
200     } // setMandatory
201

202     /**
203      * Mandatory?
204      * @return true if mandatory
205      */

206     public boolean isMandatory()
207     {
208         return m_mandatory;
209     } // isMandatory
210

211     /**
212      * Set Background - NOP
213      * @param error error
214      */

215     public void setBackground(boolean error)
216     {
217     } // setBackground
218

219     /**
220      * Get ColumnName
221      * @return column name
222      */

223     public String JavaDoc getColumnName()
224     {
225         return m_columnName;
226     } // getColumnName
227

228     /**
229      * Get Description
230      * @return description string
231      */

232     public String JavaDoc getDescription()
233     {
234         return m_description;
235     } // getDescription
236

237     /**
238      * Get Help
239      * @return help string
240      */

241     public String JavaDoc getHelp()
242     {
243         return m_help;
244     } // getHelp
245

246     /**
247      * Get AD_Process_ID
248      * @return AD_Process_ID or 0
249      */

250     public int getProcess_ID()
251     {
252         return m_AD_Process_ID;
253     } // getProcess_ID
254

255     /**
256      * Add ActionListener
257      * @param actionListener listener
258      */

259     public void addActionListener(ActionListener actionListener)
260     {
261         m_actionListener = actionListener;
262         super.addActionListener(actionListener);
263     } // addActionListener
264

265     /**
266      * String representation
267      * @return String representation
268      */

269     public String JavaDoc toString()
270     {
271         StringBuffer JavaDoc sb = new StringBuffer JavaDoc ("VButton[");
272         sb.append(m_columnName);
273         sb.append("=").append(m_value).append("]");
274         return sb.toString();
275     } // toString
276

277     /**
278      * Fill m_Values with Ref_List values
279      * @param AD_Reference_ID reference
280      */

281     private void readReference( int AD_Reference_ID)
282     {
283         m_values = new HashMap();
284         String JavaDoc 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 JavaDoc value = rs.getString(1);
301                 String JavaDoc 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     } // readReference
312

313     /**
314      * Return value/name
315      * @return HashMap with Value/Names
316      */

317     public HashMap getValues()
318     {
319         return m_values;
320     } // getValues
321

322     /**
323      * Set Field/WindowNo for ValuePreference (NOP)
324      * @param mField field model
325      */

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     } // setField
334

335 } // VButton
336
Popular Tags