KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > apps > search > FindValueRenderer


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.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 /**
27  * Renderer for Find 'Value' Column.
28  * The value is how it would be used in a query, i.e. with '' for strings
29  *
30  * @author Jorg Janke
31  * @version $Id: FindValueRenderer.java,v 1.2 2002/09/14 05:28:18 jjanke Exp $
32  */

33 public final class FindValueRenderer extends DefaultTableCellRenderer
34 {
35     /**
36      * Constructor
37      * @param find find
38      * @param value2 true if it is the "to" value column
39      */

40     public FindValueRenderer(Find find, boolean value2)
41     {
42         super();
43         m_find = find;
44         m_value2 = value2;
45         //
46
m_check.setMargin(new Insets(0,0,0,0));
47         m_check.setHorizontalAlignment(JLabel.CENTER);
48     } // FindValueRenderer
49

50     /** Find Window */
51     private Find m_find;
52     /** Value 2(to) */
53     private boolean m_value2;
54
55     /** Current Row */
56     private volatile String JavaDoc m_columnName = null;
57     /** CheckBox */
58     private JCheckBox m_check = new JCheckBox();
59
60     /*************************************************************************/
61
62     /**
63      * Get TableCell RendererComponent
64      * @param table table
65      * @param value value
66      * @param isSelected selected
67      * @param hasFocus focus
68      * @param row row
69      * @param col col
70      * @return renderer component (Label or CheckBox)
71      */

72     public Component getTableCellRendererComponent(JTable table, Object JavaDoc value,
73         boolean isSelected, boolean hasFocus, int row, int col)
74     {
75     // Log.trace(Log.l4_Data, "FindValueRenderer.getTableCellRendererComponent (" + value + ")", "r=" + row + ", c=" + col );
76
// Column
77
m_columnName = null;
78         Object JavaDoc column = table.getModel().getValueAt(row, Find.INDEX_COLUMNNAME);
79         if (column != null)
80             m_columnName = ((ValueNamePair)column).getValue();
81
82         // Between - enables value2
83
boolean between = false;
84         Object JavaDoc 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         // set Background
89
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         //
98
MField field = getMField();
99         if (field != null && field.getDisplayType() == DisplayType.YesNo)
100         {
101             m_check.setSelected(((String JavaDoc)value).indexOf('Y') != -1);
102             return m_check;
103         }
104         return c;
105     } // getTableCellRendererComponent
106

107     /*************************************************************************/
108
109     /**
110      * Format Display Value
111      * @param value value
112      */

113     protected void setValue(Object JavaDoc value)
114     {
115     // Log.trace(Log.l4_Data, "FindValueRenderer.setValue (" + value + ")");
116
if (value == null)
117         {
118             super.setValue(value);
119             return;
120         }
121
122         String JavaDoc retValue = null;
123
124         // Strip ' '
125
if (value != null)
126         {
127             String JavaDoc str = (String JavaDoc)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         // Number
144
if (DisplayType.isNumeric(displayType))
145         {
146             setHorizontalAlignment(JLabel.RIGHT);
147             retValue = DisplayType.getNumberFormat(displayType).format(value);
148         }
149         // Date
150
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         // Row ID
158
else if (displayType == DisplayType.RowID)
159             retValue = "";
160         // Lookup
161
else if (DisplayType.isLookup(displayType) && field != null)
162         {
163             Lookup lookup = field.getLookup();
164             if (lookup != null)
165                 retValue = lookup.getDisplay(value);
166         }
167         // other
168
else
169         {
170             super.setValue(value);
171             return;
172         }
173         super.setValue(retValue);
174     } // setValue
175

176     /**
177      * Get MField
178      * @return field
179      */

180     private MField getMField ()
181     {
182         return m_find.getTargetMField(m_columnName);
183     } // getMField
184

185
186 } // FindValueRenderer
187
Popular Tags