📄 vtable.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.grid;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.beans.*;
import org.compiere.grid.ed.*;
import org.compiere.util.*;
import org.compiere.model.*;
import org.compiere.swing.*;
/**
* Table Grid based on MTable
*
* @author Jorg Janke
* @version $Id: VTable.java,v 1.8 2002/08/22 04:20:29 jjanke Exp $
*/
public final class VTable extends CTable implements PropertyChangeListener
{
/**
* Default Constructor
*/
public VTable()
{
super();
} // VTable
/**
* Property Change Listener for CurrentRow.
* - Selects the current row if not already selected
* - Required when navigating via Buttons
* @param evt event
*/
public void propertyChange(PropertyChangeEvent evt)
{
// Log.trace(Log.l3_Util, "VTable.propertyChange", evt);
if (evt.getPropertyName().equals(MTab.PROPERTY))
{
int row = ((Integer)evt.getNewValue()).intValue();
int selRow = getSelectedRow();
if (row == selRow)
return;
Log.trace(Log.l3_Util, "VTable.propertyChange", MTab.PROPERTY + "=" + row + " from " + selRow);
setRowSelectionInterval(row,row);
// Log.trace(Log.l3_Util, "VTable.propertyChange - fini", MTab.PROPERTY + "=" + row + " from " + selRow);
}
} // propertyChange
/**
* Get ColorCode for Row.
* <pre>
* If numerical value in compare column is
* negative = -1,
* positive = 1,
* otherwise = 0
* </pre>
* @param row row
* @return color code
*/
public int getColorCode (int row)
{
return ((MTable)getModel()).getColorCode(row);
} // getColorCode
/**
* Sort Table
* @param modelColumnIndex model column sort index
*/
protected void sort (int modelColumnIndex)
{
int rows = getRowCount();
if (rows == 0)
return;
//
TableModel model = getModel();
if (!(model instanceof MTable))
{
super.sort(modelColumnIndex);
return;
}
// other sort column
if (modelColumnIndex != p_lastSortIndex)
p_asc = true;
else
p_asc = !p_asc;
p_lastSortIndex = modelColumnIndex;
//
Log.trace(Log.l3_Util, "VTable.sort #" + modelColumnIndex,
"rows=" + rows + ", asc=" + p_asc);
((MTable)model).sort(modelColumnIndex, p_asc);
// table model fires "Sorted" DataStatus event which causes MTab to position to row 0
} // sort
/**
* Transfer focus explicitly to editor due to editors with multiple components
*
* @param row row
* @param column column
* @param e event
* @return true if cell is editing
*/
public boolean editCellAt (int row, int column, java.util.EventObject e)
{
if (!super.editCellAt(row, column, e))
return false;
// Log.trace(Log.l6_Database, "VTable.editCellAt", "r=" + row + ", c=" + column);
Object ed = getCellEditor();
if (ed instanceof VEditor)
((Component)ed).requestFocus();
else if (ed instanceof VCellEditor)
{
ed = ((VCellEditor)ed).getEditor();
((Component)ed).requestFocus();
}
return true;
} // editCellAt
/**
* toString
* @return String representation
*/
public String toString()
{
return new StringBuffer("VTable[").append(getModel()).append("]").toString();
} // toString
} // VTable
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -