⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findvaluerenderer.java

📁 Java写的ERP系统
💻 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 + -