IDEMPIERE-325 Complete AD based info window ( AD_InfoWindow ) implementation / Several fixes:
- Fix problem when the window doesn't have info columns (i.e. info window for Sales Order Line) - Fix swing problem rendering the total line - Add search to text fields additionally to string fields (allows to search also for Sales Order Line)
This commit is contained in:
parent
388d87e2dd
commit
964c2cdaf5
|
@ -120,10 +120,15 @@ public class DefaultInfoFactory implements IInfoFactory {
|
||||||
else if (tableName.equals("S_ResourceAssigment"))
|
else if (tableName.equals("S_ResourceAssigment"))
|
||||||
info = new InfoAssignment (frame, modal, WindowNo, value,
|
info = new InfoAssignment (frame, modal, WindowNo, value,
|
||||||
multiSelection, whereClause, lookup);
|
multiSelection, whereClause, lookup);
|
||||||
else
|
else {
|
||||||
info = new InfoGeneral (frame, modal, WindowNo, value,
|
info = new InfoGeneral (frame, modal, WindowNo, value,
|
||||||
tableName, keyColumn,
|
tableName, keyColumn,
|
||||||
multiSelection, whereClause, lookup);
|
multiSelection, whereClause, lookup);
|
||||||
|
if (!info.loadedOK()) {
|
||||||
|
info.dispose(false);
|
||||||
|
info = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
//
|
//
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,6 +100,8 @@ public class InfoGeneral extends Info
|
||||||
//
|
//
|
||||||
statInit();
|
statInit();
|
||||||
p_loadedOK = initInfo ();
|
p_loadedOK = initInfo ();
|
||||||
|
if (!p_loadedOK)
|
||||||
|
return;
|
||||||
//
|
//
|
||||||
int no = p_table.getRowCount();
|
int no = p_table.getRowCount();
|
||||||
setStatusLine(Integer.toString(no) + " "
|
setStatusLine(Integer.toString(no) + " "
|
||||||
|
@ -233,14 +235,14 @@ public class InfoGeneral extends Info
|
||||||
String sql = "SELECT c.ColumnName, t.AD_Table_ID, t.TableName, c.ColumnSql "
|
String sql = "SELECT c.ColumnName, t.AD_Table_ID, t.TableName, c.ColumnSql "
|
||||||
+ "FROM AD_Table t"
|
+ "FROM AD_Table t"
|
||||||
+ " INNER JOIN AD_Column c ON (t.AD_Table_ID=c.AD_Table_ID)"
|
+ " INNER JOIN AD_Column c ON (t.AD_Table_ID=c.AD_Table_ID)"
|
||||||
+ "WHERE c.AD_Reference_ID=10"
|
+ "WHERE c.AD_Reference_ID IN (10,14)"
|
||||||
+ " AND t.TableName=?" // #1
|
+ " AND t.TableName=?" // #1
|
||||||
// Displayed in Window
|
// Displayed in Window
|
||||||
+ " AND EXISTS (SELECT * FROM AD_Field f "
|
+ " AND EXISTS (SELECT * FROM AD_Field f "
|
||||||
+ "WHERE f.AD_Column_ID=c.AD_Column_ID"
|
+ "WHERE f.AD_Column_ID=c.AD_Column_ID"
|
||||||
+ " AND f.IsDisplayed='Y' AND f.IsEncrypted='N' AND f.ObscureType IS NULL) "
|
+ " AND f.IsDisplayed='Y' AND f.IsEncrypted='N' AND f.ObscureType IS NULL) "
|
||||||
//
|
//
|
||||||
+ "ORDER BY c.IsIdentifier DESC, c.SeqNo";
|
+ "ORDER BY c.IsIdentifier DESC, c.AD_Reference_ID, c.SeqNo";
|
||||||
int AD_Table_ID = 0;
|
int AD_Table_ID = 0;
|
||||||
String tableName = null;
|
String tableName = null;
|
||||||
PreparedStatement pstmt = null;
|
PreparedStatement pstmt = null;
|
||||||
|
@ -278,6 +280,7 @@ public class InfoGeneral extends Info
|
||||||
// Miminum check
|
// Miminum check
|
||||||
if (m_queryColumns.size() == 0)
|
if (m_queryColumns.size() == 0)
|
||||||
{
|
{
|
||||||
|
ADialog.error(p_WindowNo, this, "Error", "No query columns found");
|
||||||
log.log(Level.SEVERE, "No query columns found");
|
log.log(Level.SEVERE, "No query columns found");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.awt.Component;
|
||||||
import java.awt.Insets;
|
import java.awt.Insets;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import javax.swing.JCheckBox;
|
import javax.swing.JCheckBox;
|
||||||
|
@ -204,10 +205,16 @@ public final class VCellRenderer extends DefaultTableCellRenderer
|
||||||
;
|
;
|
||||||
// Number
|
// Number
|
||||||
else if (DisplayType.isNumeric(m_displayType))
|
else if (DisplayType.isNumeric(m_displayType))
|
||||||
retValue = m_numberFormat.format(value);
|
if (value instanceof Number)
|
||||||
|
retValue = m_numberFormat.format(value);
|
||||||
|
else
|
||||||
|
retValue = value.toString();
|
||||||
// Date
|
// Date
|
||||||
else if (DisplayType.isDate(m_displayType))
|
else if (DisplayType.isDate(m_displayType))
|
||||||
retValue = m_dateFormat.format(value);
|
if (value instanceof Date)
|
||||||
|
retValue = m_dateFormat.format(value);
|
||||||
|
else
|
||||||
|
retValue = value.toString();
|
||||||
// Row ID
|
// Row ID
|
||||||
else if (m_displayType == DisplayType.RowID)
|
else if (m_displayType == DisplayType.RowID)
|
||||||
retValue = "";
|
retValue = "";
|
||||||
|
|
|
@ -549,7 +549,8 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value
|
||||||
getDirectAccessSQL("*");
|
getDirectAccessSQL("*");
|
||||||
|
|
||||||
final InfoPanel ip = InfoManager.create(lookup, gridField, m_tableName, m_keyColumnName, queryValue, false, whereClause);
|
final InfoPanel ip = InfoManager.create(lookup, gridField, m_tableName, m_keyColumnName, queryValue, false, whereClause);
|
||||||
showInfoPanel(ip);
|
if (ip != null)
|
||||||
|
showInfoPanel(ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -108,6 +108,10 @@ public class DefaultInfoFactory implements IInfoFactory {
|
||||||
info = new InfoGeneralPanel (value, WindowNo,
|
info = new InfoGeneralPanel (value, WindowNo,
|
||||||
tableName, keyColumn,
|
tableName, keyColumn,
|
||||||
multiSelection, whereClause, lookup);
|
multiSelection, whereClause, lookup);
|
||||||
|
if (!info.loadedOK()) {
|
||||||
|
info.dispose(false);
|
||||||
|
info = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|
|
@ -259,13 +259,13 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener<Event>
|
||||||
String sql = "SELECT c.ColumnName, t.AD_Table_ID, t.TableName, c.ColumnSql "
|
String sql = "SELECT c.ColumnName, t.AD_Table_ID, t.TableName, c.ColumnSql "
|
||||||
+ "FROM AD_Table t"
|
+ "FROM AD_Table t"
|
||||||
+ " INNER JOIN AD_Column c ON (t.AD_Table_ID=c.AD_Table_ID)"
|
+ " INNER JOIN AD_Column c ON (t.AD_Table_ID=c.AD_Table_ID)"
|
||||||
+ "WHERE c.AD_Reference_ID=10"
|
+ "WHERE c.AD_Reference_ID IN (10,14)"
|
||||||
+ " AND t.TableName=?" // #1
|
+ " AND t.TableName=?" // #1
|
||||||
// Displayed in Window
|
// Displayed in Window
|
||||||
+ " AND EXISTS (SELECT * FROM AD_Field f "
|
+ " AND EXISTS (SELECT * FROM AD_Field f "
|
||||||
+ "WHERE f.AD_Column_ID=c.AD_Column_ID"
|
+ "WHERE f.AD_Column_ID=c.AD_Column_ID"
|
||||||
+ " AND f.IsDisplayed='Y' AND f.IsEncrypted='N' AND f.ObscureType IS NULL) "
|
+ " AND f.IsDisplayed='Y' AND f.IsEncrypted='N' AND f.ObscureType IS NULL) "
|
||||||
+ "ORDER BY c.IsIdentifier DESC, c.SeqNo";
|
+ "ORDER BY c.IsIdentifier DESC, c.AD_Reference_ID, c.SeqNo";
|
||||||
|
|
||||||
int AD_Table_ID = 0;
|
int AD_Table_ID = 0;
|
||||||
String tableName = null;
|
String tableName = null;
|
||||||
|
@ -310,6 +310,7 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener<Event>
|
||||||
// Miminum check
|
// Miminum check
|
||||||
if (m_queryColumns.size() == 0)
|
if (m_queryColumns.size() == 0)
|
||||||
{
|
{
|
||||||
|
FDialog.error(p_WindowNo, this, "Error", "No query columns found");
|
||||||
log.log(Level.SEVERE, "No query columns found");
|
log.log(Level.SEVERE, "No query columns found");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue