📄 findvaluerenderer.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Business Solution
* The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
* Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
* created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.apps.search;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;
import org.compiere.util.*;
import org.compiere.apps.*;
import org.compiere.model.*;
import org.compiere.plaf.*;
/**
* Renderer for Find 'Value' Column.
* The value is how it would be used in a query, i.e. with '' for strings
*
* @author Jorg Janke
* @version $Id: FindValueRenderer.java,v 1.2 2002/09/14 05:28:18 jjanke Exp $
*/
public final class FindValueRenderer extends DefaultTableCellRenderer
{
/**
* Constructor
* @param find find
* @param value2 true if it is the "to" value column
*/
public FindValueRenderer(Find find, boolean value2)
{
super();
m_find = find;
m_value2 = value2;
//
m_check.setMargin(new Insets(0,0,0,0));
m_check.setHorizontalAlignment(JLabel.CENTER);
} // FindValueRenderer
/** Find Window */
private Find m_find;
/** Value 2(to) */
private boolean m_value2;
/** Current Row */
private volatile String m_columnName = null;
/** CheckBox */
private JCheckBox m_check = new JCheckBox();
/*************************************************************************/
/**
* Get TableCell RendererComponent
* @param table table
* @param value value
* @param isSelected selected
* @param hasFocus focus
* @param row row
* @param col col
* @return renderer component (Label or CheckBox)
*/
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int col)
{
// Log.trace(Log.l4_Data, "FindValueRenderer.getTableCellRendererComponent (" + value + ")", "r=" + row + ", c=" + col );
// Column
m_columnName = null;
Object column = table.getModel().getValueAt(row, Find.INDEX_COLUMNNAME);
if (column != null)
m_columnName = ((ValueNamePair)column).getValue();
// Between - enables value2
boolean between = false;
Object betw = table.getModel().getValueAt(row, Find.INDEX_OPERATOR);
if (betw != null && betw.toString().equals(MQuery.OPERATORS[MQuery.BETWEEN_INDEX].toString()))
between = true;
// set Background
if (table.isCellEditable(row, col) && (!m_value2 || (m_value2 && between)))
setBackground(CompierePLAF.getFieldBackground_Normal());
else
setBackground(CompierePLAF.getFieldBackground_Inactive());
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
if (value == null || (m_value2 && !between))
return c;
//
MField field = getMField();
if (field != null && field.getDisplayType() == DisplayType.YesNo)
{
m_check.setSelected(((String)value).indexOf('Y') != -1);
return m_check;
}
return c;
} // getTableCellRendererComponent
/*************************************************************************/
/**
* Format Display Value
* @param value value
*/
protected void setValue(Object value)
{
// Log.trace(Log.l4_Data, "FindValueRenderer.setValue (" + value + ")");
if (value == null)
{
super.setValue(value);
return;
}
String retValue = null;
// Strip ' '
if (value != null)
{
String str = (String)value;
if (str.startsWith("'") && str.endsWith("'"))
{
str = str.substring(1, str.length()-1);
value = str;
}
}
int displayType = 0;
MField field = getMField();
if (field != null)
displayType = field.getDisplayType();
else
Log.error("FindValueRenderer.setValue (" + value + ") ColumnName=" + m_columnName + " No Target Column");
setHorizontalAlignment(JLabel.LEFT);
// Number
if (DisplayType.isNumeric(displayType))
{
setHorizontalAlignment(JLabel.RIGHT);
retValue = DisplayType.getNumberFormat(displayType).format(value);
}
// Date
else if (DisplayType.isDate(displayType))
{
if (value instanceof Timestamp)
retValue = DisplayType.getDateFormat(displayType).format(value);
else
retValue = value.toString();
}
// Row ID
else if (displayType == DisplayType.RowID)
retValue = "";
// Lookup
else if (DisplayType.isLookup(displayType) && field != null)
{
Lookup lookup = field.getLookup();
if (lookup != null)
retValue = lookup.getDisplay(value);
}
// other
else
{
super.setValue(value);
return;
}
super.setValue(retValue);
} // setValue
/**
* Get MField
* @return field
*/
private MField getMField ()
{
return m_find.getTargetMField(m_columnName);
} // getMField
} // FindValueRenderer
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -