diff --git a/client/src/org/compiere/minigrid/MiniTable.java b/client/src/org/compiere/minigrid/MiniTable.java
index 9d8c24f2a3..4141baf9f7 100644
--- a/client/src/org/compiere/minigrid/MiniTable.java
+++ b/client/src/org/compiere/minigrid/MiniTable.java
@@ -16,19 +16,36 @@
*****************************************************************************/
package org.compiere.minigrid;
-import java.awt.*;
-import java.math.*;
-import java.sql.*;
-import java.util.*;
-import java.util.logging.*;
-import javax.swing.*;
-import javax.swing.table.*;
+import java.awt.Component;
+import java.awt.Insets;
+import java.math.BigDecimal;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.logging.Level;
+
+import javax.swing.DefaultCellEditor;
+import javax.swing.SwingConstants;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableModel;
import org.compiere.apps.search.Info_Column;
-import org.compiere.grid.ed.*;
-import org.compiere.model.*;
-import org.compiere.swing.*;
-import org.compiere.util.*;
+import org.compiere.grid.ed.VCellRenderer;
+import org.compiere.grid.ed.VHeaderRenderer;
+import org.compiere.model.MRole;
+import org.compiere.model.PO;
+import org.compiere.swing.CCheckBox;
+import org.compiere.swing.CTable;
+import org.compiere.util.CLogger;
+import org.compiere.util.DisplayType;
+import org.compiere.util.Env;
+import org.compiere.util.KeyNamePair;
+import org.compiere.util.Util;
/**
* Mini Table.
@@ -49,9 +66,12 @@ import org.compiere.util.*;
*
* @author Teo Sarca, SC ARHIPAC SERVICE SRL
*
BF [ 1891082 ] NPE on MiniTable when you hide some columns
+ * FR [ 1974299 ] Add MiniTable.getSelectedKeys method
*/
public class MiniTable extends CTable
{
+ private static final long serialVersionUID = 1L;
+
/**
* Default Constructor
*/
@@ -268,7 +288,7 @@ public class MiniTable extends CTable
* @param c class of column - determines renderere
* @param readOnly read only flag
*/
- public void setColumnClass (int index, Class c, boolean readOnly)
+ public void setColumnClass (int index, Class> c, boolean readOnly)
{
setColumnClass(index, c, readOnly, null);
} // setColumnClass
@@ -283,7 +303,7 @@ public class MiniTable extends CTable
* @param readOnly read only flag
* @param header optional header value
*/
- public void setColumnClass (int index, Class c, boolean readOnly, String header)
+ public void setColumnClass (int index, Class> c, boolean readOnly, String header)
{
// log.config( "MiniTable.setColumnClass - " + index, c.getName() + ", r/o=" + readOnly);
TableColumn tc = getColumnModel().getColumn(index);
@@ -441,7 +461,7 @@ public class MiniTable extends CTable
for (int col = 0; col < m_layout.length; col++)
{
Object data = null;
- Class c = m_layout[col].getColClass();
+ Class> c = m_layout[col].getColClass();
int colIndex = col + colOffset;
if (c == IDColumn.class)
data = new IDColumn(rs.getInt(colIndex));
@@ -513,7 +533,7 @@ public class MiniTable extends CTable
Object data = myPO.get_Value(columnName);
if (data != null)
{
- Class c = m_layout[col].getColClass();
+ Class> c = m_layout[col].getColClass();
if (c == IDColumn.class)
data = new IDColumn(((Integer)data).intValue());
else if (c == Double.class)
@@ -551,7 +571,36 @@ public class MiniTable extends CTable
return null;
} // getSelectedRowKey
-
+ /**
+ * @return collection of selected IDs
+ */
+ public Collection getSelectedKeys()
+ {
+ if (m_layout == null)
+ {
+ throw new UnsupportedOperationException("Layout not defined");
+ }
+ if (p_keyColumnIndex < 0)
+ {
+ throw new UnsupportedOperationException("Key Column is not defined");
+ }
+ //
+ ArrayList list = new ArrayList();
+ for (int row = 0; row < getRowCount(); row++)
+ {
+ Object data = getModel().getValueAt(row, p_keyColumnIndex);
+ if (data instanceof IDColumn)
+ {
+ IDColumn record = (IDColumn)data;
+ if (record.isSelected())
+ {
+ list.add(record.getRecord_ID());
+ }
+ }
+ }
+ return list;
+ }
+
/**************************************************************************
* Get Layout
* @return Array of ColumnInfo
@@ -683,7 +732,7 @@ public class MiniTable extends CTable
for (int col = 0; col < layout.length; col++)
{
Object data = getModel().getValueAt(row, col);
- Class c = layout[col].getColClass();
+ Class> c = layout[col].getColClass();
int colIndex = col + colOffset;
if (c == BigDecimal.class)
{
@@ -722,7 +771,7 @@ public class MiniTable extends CTable
int colOffset = 1; // columns start with 1
for (int col = 0; col < layout.length; col++)
{
- Class c = layout[col].getColClass();
+ Class> c = layout[col].getColClass();
int colIndex = col + colOffset;
if (c == BigDecimal.class)
{
@@ -762,7 +811,7 @@ public class MiniTable extends CTable
for (int col = 0; col < layout.length; col++)
{
Object data = getModel().getValueAt(row, col);
- Class c = layout[col].getColClass();
+ Class> c = layout[col].getColClass();
int colIndex = col + colOffset;
if (c == BigDecimal.class)
{
@@ -801,7 +850,7 @@ public class MiniTable extends CTable
int colOffset = 1; // columns start with 1
for (int col = 0; col < layout.length; col++)
{
- Class c = layout[col].getColClass();
+ Class> c = layout[col].getColClass();
int colIndex = col + colOffset;
if (c == BigDecimal.class)
{