IDEMPIERE-5064 Lookup Record Dialog on Reports is unusable / IDEMPIERE-4472 (#1022)

* IDEMPIERE-5064 Lookup Record Dialog on Reports is unusable / IDEMPIERE-4472

Window Advanced Search - Allow select column from window tabs - 2pack compatibility
Fixes for find dialog in report

* IDEMPIERE-5064 Lookup Record Dialog on Reports is unusable / IDEMPIERE-4472

Co-authored-by: hengsin <hengsin@gmail.com>
This commit is contained in:
Carlos Ruiz 2021-12-02 01:20:56 +01:00 committed by GitHub
parent 8617a74f53
commit f0404dad68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 61 additions and 51 deletions

View File

@ -1057,6 +1057,8 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
listTable.setSelectedIndex(0); listTable.setSelectedIndex(0);
} }
}); });
if (m_gridTab == null)
listTable.setDisabled(true);
Combobox listColumn = new Combobox(); Combobox listColumn = new Combobox();
listColumn.setId("listColumn"+listItem.getId()); listColumn.setId("listColumn"+listItem.getId());
@ -1212,7 +1214,7 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
// QueryFrom // QueryFrom
ValueNamePair selected = listColumn.getSelectedItem().getValue(); ValueNamePair selected = listColumn.getSelectedItem().getValue();
String columnName = selected.getValue(); String columnName = selected.getValue();
String tableName = listTable.getSelectedItem().getValue(); String tableName = listTable != null && listTable.getSelectedItem() != null ? listTable.getSelectedItem().getValue() : m_tableName;
if (columnName == null || columnName == "") if (columnName == null || columnName == "")
return; return;
String value = fields.length > INDEX_VALUE ? fields[INDEX_VALUE] : ""; String value = fields.length > INDEX_VALUE ? fields[INDEX_VALUE] : "";
@ -1317,33 +1319,33 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
operator = fields.length > INDEX_OPERATOR ? fields[INDEX_OPERATOR] : ""; operator = fields.length > INDEX_OPERATOR ? fields[INDEX_OPERATOR] : "";
//listTable.appendItem("","" ); if (m_windowPanel != null)
for (int i = 0; i < tabs.length; i++) {
{ for (int i = 0; i < tabs.length; i++)
ValueNamePair item = tabs[i]; {
listTable.appendItem(item.getName(), item.getValue()); ValueNamePair item = tabs[i];
listTable.appendItem(item.getName(), item.getValue());
if (item.getValue().equals(MAttribute.COLUMNNAME_M_Attribute_ID)) { if (item.getValue().equals(MAttribute.COLUMNNAME_M_Attribute_ID)) {
if(item.getValue().equals(tableName)) if(item.getValue().equals(tableName))
{ {
listTable.setSelectedIndex(listTable.getItemCount()-1); listTable.setSelectedIndex(listTable.getItemCount()-1);
selected = true; selected = true;
} }
} else { } else {
if (item.getValue().equals(tableName)) if (item.getValue().equals(tableName))
{ {
GridTab mtab = m_windowPanel.getGridWindow().getGridTab(tableName); GridTab mtab = m_windowPanel.getGridWindow().getGridTab(tableName);
listTable.setSelectedIndex(listTable.getItemCount()-1); listTable.setSelectedIndex(listTable.getItemCount()-1);
selected = true; selected = true;
findFields=m_windowPanel.getGridWindow().getGridTab(mtab.getAD_Tab_ID()).getFields(); findFields=m_windowPanel.getGridWindow().getGridTab(mtab.getAD_Tab_ID()).getFields();
m_gridTab=m_windowPanel.getGridWindow().getGridTab(mtab.getAD_Tab_ID()); m_gridTab=m_windowPanel.getGridWindow().getGridTab(mtab.getAD_Tab_ID());
} }
}
}
} if(!selected) listTable.setSelectedIndex(0);
} }
if(!selected) listTable.setSelectedIndex(0);
} }
// 0 = Columns // 0 = Columns
@ -1679,14 +1681,13 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
} }
} }
} else { } else {
if (table != null && table.getValue().toString().length() > 0) if (m_gridTab != null) {
{ if (table != null && table.getValue().toString().length() > 0) {
m_gridTab=m_windowPanel.getGridWindow().getGridTab(table.getValue()); m_gridTab=m_windowPanel.getGridWindow().getGridTab(table.getValue());
} } else {
else m_gridTab=m_windowPanel.getGridWindow().getGridTab(m_AD_Tab_ID);
{ }
m_gridTab=m_windowPanel.getGridWindow().getGridTab(m_AD_Tab_ID); }
}
if (listbox.getId().equals(listColumn.getId())) if (listbox.getId().equals(listColumn.getId()))
{ {
@ -2083,13 +2084,11 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
boolean isRightBracketCompositeExists = false; boolean isRightBracketCompositeExists = false;
if(table.getSelectedItem() != null && !table.getSelectedItem().getValue().toString().equals(MAttribute.COLUMNNAME_M_Attribute_ID)) { if(table.getSelectedItem() != null && !table.getSelectedItem().getValue().toString().equals(MAttribute.COLUMNNAME_M_Attribute_ID)) {
if (!table.getSelectedItem().getValue().toString().isEmpty()) if (m_windowPanel != null) {
{ if (!table.getSelectedItem().getValue().toString().isEmpty())
m_gridTab=m_windowPanel.getGridWindow().getGridTab(table.getSelectedItem().getValue()); m_gridTab=m_windowPanel.getGridWindow().getGridTab(table.getSelectedItem().getValue());
} else
else m_gridTab=m_windowPanel.getGridWindow().getGridTab(m_AD_Tab_ID);
{
m_gridTab=m_windowPanel.getGridWindow().getGridTab(m_AD_Tab_ID);
} }
} }
@ -2639,7 +2638,11 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
int referenceType = -1; int referenceType = -1;
boolean isEncrypted = false; boolean isEncrypted = false;
if (columnName != null) { if (columnName != null) {
MTable table = MTable.get(Env.getCtx(), m_gridTab.getTableName()); MTable table = null;
if (m_gridTab != null)
table = MTable.get(Env.getCtx(), m_gridTab.getTableName());
else
table = MTable.get(Env.getCtx(), m_tableName);
MColumn col = table.getColumn(columnName); MColumn col = table.getColumn(columnName);
referenceType = col.getAD_Reference_ID(); referenceType = col.getAD_Reference_ID();
GridField field = getTargetMField(columnName); GridField field = getTargetMField(columnName);
@ -2800,11 +2803,18 @@ public class FindWindow extends Window implements EventListener<Event>, ValueCha
{ {
if (columnName == null) if (columnName == null)
return null; return null;
for (int c = 0; c < m_gridTab.getFields().length; c++) if (m_gridTab == null) { // when filtering a report dialog
{ for (int c = 0; c < m_findFields.length; c++) {
GridField field = m_gridTab.getFields()[c]; GridField field = m_findFields[c];
if (field != null && columnName.equals(field.getColumnName())) if (field != null && columnName.equals(field.getColumnName()))
return field; return field;
}
} else {
for (int c = 0; c < m_gridTab.getFields().length; c++) {
GridField field = m_gridTab.getFields()[c];
if (field != null && columnName.equals(field.getColumnName()))
return field;
}
} }
return null; return null;