From c02dde975b476c4f9ad8aca298ce1bb3c3f3f80e Mon Sep 17 00:00:00 2001 From: hengsin Date: Sun, 1 Nov 2020 00:07:11 +0800 Subject: [PATCH] IDEMPIERE-2902 UX: Implement Radio buttons (#337) Fix zoom --- .../src/org/adempiere/webui/apps/AEnv.java | 16 ++++++++++++---- .../webui/editor/WRadioGroupEditor.java | 19 ++++++++++++++++++- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java index d1d0693b41..65ec4213ea 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java @@ -53,6 +53,7 @@ import org.compiere.model.MLanguage; import org.compiere.model.MLookup; import org.compiere.model.MLookupFactory; import org.compiere.model.MQuery; +import org.compiere.model.MReference; import org.compiere.model.MSession; import org.compiere.model.MSysConfig; import org.compiere.model.MTable; @@ -398,12 +399,19 @@ public final class AEnv { zoomQuery = new MQuery(); // ColumnName might be changed in MTab.validateQuery String column = lookup.getColumnName(); - // Check if it is a Table Reference - if (lookup instanceof MLookup && DisplayType.List == lookup.getDisplayType()) + // Check if it is a List Reference + if (lookup instanceof MLookup) { int AD_Reference_ID = ((MLookup)lookup).getAD_Reference_Value_ID(); - column = "AD_Ref_List_ID"; - value = DB.getSQLValue(null, "SELECT AD_Ref_List_ID FROM AD_Ref_List WHERE AD_Reference_ID=? AND Value=?", AD_Reference_ID, value); + if (AD_Reference_ID > 0) + { + MReference reference = MReference.get(AD_Reference_ID); + if (reference.getValidationType().equals(MReference.VALIDATIONTYPE_ListValidation)) + { + column = "AD_Ref_List_ID"; + value = DB.getSQLValue(null, "SELECT AD_Ref_List_ID FROM AD_Ref_List WHERE AD_Reference_ID=? AND Value=?", AD_Reference_ID, value); + } + } } //strip off table name, fully qualify name doesn't work when zoom into detail tab if (column.indexOf(".") > 0) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WRadioGroupEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WRadioGroupEditor.java index ced94e23e3..193032ce4f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WRadioGroupEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WRadioGroupEditor.java @@ -29,7 +29,9 @@ import java.util.Properties; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; +import org.adempiere.webui.ClientInfo; import org.adempiere.webui.ValuePreference; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuListener; import org.adempiere.webui.event.ValueChangeEvent; @@ -448,6 +450,10 @@ public class WRadioGroupEditor extends WEditor implements ContextMenuListener, L { WFieldRecordInfo.start(gridField); } + else if (WEditorPopupMenu.ZOOM_EVENT.equals(evt.getContextEvent())) + { + actionZoom(); + } } public void propertyChange(PropertyChangeEvent evt) @@ -475,6 +481,9 @@ public class WRadioGroupEditor extends WEditor implements ContextMenuListener, L this.actionRefresh(); super.dynamicDisplay(ctx); + + if (!ClientInfo.isMobile() && getPopupMenu().getParent() != null && getComponent().radioGroup.getContext() == null) + getPopupMenu().addContextElement(getComponent().radioGroup); } private static class RadioGroupEditor extends Hlayout { @@ -612,5 +621,13 @@ public class WRadioGroupEditor extends WEditor implements ContextMenuListener, L @Override public void contentsChanged(ListDataEvent e) { refreshList(); - } + } + + /* (non-Javadoc) + * @see org.adempiere.webui.editor.IZoomableEditor#actionZoom() + */ + public void actionZoom() + { + AEnv.actionZoom(lookup, getValue()); + } }