From 3d1c1aea15efa6bba38e8b301d94f95ab0f5fcd8 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 26 Jul 2016 17:29:16 +0800 Subject: [PATCH] 1006181 Speed-up windows - Field to show read-only grid. Fixed selected label bug. Added clear selection context menu. (IDEMPIERE-3269) --- .../oracle/201607261600_Ticket_1006181.sql | 16 ++++++++++++ .../201607261600_Ticket_1006181.sql | 12 +++++++++ .../selection/GridTabSelectionListView.java | 14 +---------- .../WGridTabMultiSelectionEditor.java | 25 +++++++++++++++++-- .../WGridTabSingleSelectionEditor.java | 25 +++++++++++++++++-- 5 files changed, 75 insertions(+), 17 deletions(-) create mode 100644 migration/i3.1/oracle/201607261600_Ticket_1006181.sql create mode 100644 migration/i3.1/postgresql/201607261600_Ticket_1006181.sql diff --git a/migration/i3.1/oracle/201607261600_Ticket_1006181.sql b/migration/i3.1/oracle/201607261600_Ticket_1006181.sql new file mode 100644 index 0000000000..b16d68bf37 --- /dev/null +++ b/migration/i3.1/oracle/201607261600_Ticket_1006181.sql @@ -0,0 +1,16 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Jul 26, 2016 4:43:35 PM MYT +-- 1006181 Speed-up windows - Field to show read-only grid +UPDATE AD_Field SET DisplayLogic='@AD_Column_ID.AD_Reference_ID@=200127|@AD_Column_ID.AD_Reference_ID@=200128|@AD_Reference_ID@=200127|@AD_Reference_ID@=200128',Updated=TO_DATE('2016-07-26 16:43:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6432 +; + +-- Jul 26, 2016 4:45:34 PM MYT +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,MsgTip,AD_Message_UU,Updated,Value,IsActive,CreatedBy,AD_Org_ID,AD_Client_ID,Created,UpdatedBy,EntityType) VALUES ('I','Clear Selection',200404,'Clear current selections','af2f6c7a-7f24-46e2-8ae7-0b67ca44890f',TO_DATE('2016-07-26 16:45:27','YYYY-MM-DD HH24:MI:SS'),'ClearSelection','Y',100,0,0,TO_DATE('2016-07-26 16:45:27','YYYY-MM-DD HH24:MI:SS'),100,'D') +; + +SELECT register_migration_script('201607261600_Ticket_1006181.sql') FROM dual +; + + diff --git a/migration/i3.1/postgresql/201607261600_Ticket_1006181.sql b/migration/i3.1/postgresql/201607261600_Ticket_1006181.sql new file mode 100644 index 0000000000..0b85d42c39 --- /dev/null +++ b/migration/i3.1/postgresql/201607261600_Ticket_1006181.sql @@ -0,0 +1,12 @@ +-- Jul 26, 2016 4:43:35 PM MYT +-- 1006181 Speed-up windows - Field to show read-only grid +UPDATE AD_Field SET DisplayLogic='@AD_Column_ID.AD_Reference_ID@=200127|@AD_Column_ID.AD_Reference_ID@=200128|@AD_Reference_ID@=200127|@AD_Reference_ID@=200128',Updated=TO_TIMESTAMP('2016-07-26 16:43:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=6432 +; + +-- Jul 26, 2016 4:45:34 PM MYT +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,MsgTip,AD_Message_UU,Updated,Value,IsActive,CreatedBy,AD_Org_ID,AD_Client_ID,Created,UpdatedBy,EntityType) VALUES ('I','Clear Selection',200404,'Clear current selections','af2f6c7a-7f24-46e2-8ae7-0b67ca44890f',TO_TIMESTAMP('2016-07-26 16:45:27','YYYY-MM-DD HH24:MI:SS'),'ClearSelection','Y',100,0,0,TO_TIMESTAMP('2016-07-26 16:45:27','YYYY-MM-DD HH24:MI:SS'),100,'D') +; + +SELECT register_migration_script('201607261600_Ticket_1006181.sql') FROM dual +; + diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/GridTabSelectionListView.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/GridTabSelectionListView.java index 431e9f42c6..10acb8888a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/GridTabSelectionListView.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/GridTabSelectionListView.java @@ -48,7 +48,7 @@ import org.zkoss.zul.ext.Selectable; * @author Low Heng Sin * */ -public class GridTabSelectionListView extends Borderlayout implements EventListener +public class GridTabSelectionListView extends Borderlayout { /** * @@ -262,7 +262,6 @@ public class GridTabSelectionListView extends Borderlayout implements EventListe listbox.setVflex(true); listbox.setHflex("1"); listbox.setSizedByContent(true); - listbox.addEventListener(Events.ON_SELECT, this); updateModel(); @@ -290,17 +289,6 @@ public class GridTabSelectionListView extends Borderlayout implements EventListe public void deactivate() { } - public void onEvent(Event event) throws Exception - { - if (event == null) - return; - else if (event.getTarget() == listbox) - { - int count = listbox.getSelectedCount(); - selectedLabel.setValue(Msg.getMsg(Env.getCtx(), "Selected") + " : " + count); - } - } - /** * * @return Listbox diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabMultiSelectionEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabMultiSelectionEditor.java index 89e983d258..91d873c04c 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabMultiSelectionEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabMultiSelectionEditor.java @@ -31,10 +31,12 @@ import org.compiere.model.GridTab; import org.compiere.model.GridTabVO; import org.compiere.model.GridWindow; import org.compiere.util.Env; +import org.compiere.util.Msg; import org.compiere.util.Util; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; import org.zkoss.zul.ListModel; +import org.zkoss.zul.Menuitem; import org.zkoss.zul.ext.Selectable; /** @@ -84,7 +86,7 @@ public class WGridTabMultiSelectionEditor extends WEditor implements ContextMenu { if (tableEditor) setVisible(false); - else if (gridField != null) + else if (gridField != null && gridField.getGridTab() != null) { int AD_Tab_ID = gridField.getIncluded_Tab_ID(); GridWindow gridWindow = gridField.getGridTab().getGridWindow(); @@ -96,11 +98,24 @@ public class WGridTabMultiSelectionEditor extends WEditor implements ContextMenu { GridTabVO vo = t.getVO(); listViewGridTab = new GridTab(vo, gridWindow); - listViewGridTab.setLinkColumnName(t.getLinkColumnName()); + String lcn = t.getLinkColumnName(); + if (Util.isEmpty(lcn)) { + t.setLinkColumnName(null); + lcn = t.getLinkColumnName(); + } + listViewGridTab.setLinkColumnName(lcn); getComponent().init(listViewGridTab); break; } } + + popupMenu = new WEditorPopupMenu(false, false, isShowPreference()); + Menuitem clear = new Menuitem(Msg.getMsg(Env.getCtx(), "ClearSelection"), null); + clear.setAttribute("EVENT", "onClearSelection"); + clear.addEventListener(Events.ON_CLICK, popupMenu); + popupMenu.appendChild(clear); + + getComponent().getListbox().setContext(popupMenu); } } @@ -223,6 +238,12 @@ public class WGridTabMultiSelectionEditor extends WEditor implements ContextMenu { WFieldRecordInfo.start(gridField); } + else if ("onClearSelection".equals(evt.getContextEvent())) + { + ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, null); + super.fireValueChange(changeEvent); + oldValue = null; + } } @Override diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabSingleSelectionEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabSingleSelectionEditor.java index ed963cf48f..e88f77032b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabSingleSelectionEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/grid/selection/WGridTabSingleSelectionEditor.java @@ -26,9 +26,11 @@ import org.compiere.model.GridTab; import org.compiere.model.GridTabVO; import org.compiere.model.GridWindow; import org.compiere.util.Env; +import org.compiere.util.Msg; import org.compiere.util.Util; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zul.Menuitem; /** * @@ -77,7 +79,7 @@ public class WGridTabSingleSelectionEditor extends WEditor implements ContextMen { if (tableEditor) setVisible(false); - else if (gridField != null) + else if (gridField != null && gridField.getGridTab() != null) { int AD_Tab_ID = gridField.getIncluded_Tab_ID(); GridWindow gridWindow = gridField.getGridTab().getGridWindow(); @@ -89,11 +91,24 @@ public class WGridTabSingleSelectionEditor extends WEditor implements ContextMen { GridTabVO vo = t.getVO(); listViewGridTab = new GridTab(vo, gridWindow); - listViewGridTab.setLinkColumnName(t.getLinkColumnName()); + String lcn = t.getLinkColumnName(); + if (Util.isEmpty(lcn)) { + t.setLinkColumnName(null); + lcn = t.getLinkColumnName(); + } + listViewGridTab.setLinkColumnName(lcn); getComponent().init(listViewGridTab); break; } } + + popupMenu = new WEditorPopupMenu(false, false, isShowPreference()); + Menuitem clear = new Menuitem(Msg.getMsg(Env.getCtx(), "ClearSelection"), null); + clear.setAttribute("EVENT", "onClearSelection"); + clear.addEventListener(Events.ON_CLICK, popupMenu); + popupMenu.appendChild(clear); + + getComponent().getListbox().setContext(popupMenu); } } @@ -174,6 +189,12 @@ public class WGridTabSingleSelectionEditor extends WEditor implements ContextMen { WFieldRecordInfo.start(gridField); } + else if ("onClearSelection".equals(evt.getContextEvent())) + { + ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, null); + super.fireValueChange(changeEvent); + oldValue = null; + } } @Override