From 10da24b5a377c498390ce026914be48c35b9794f Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 19 Jun 2013 17:33:53 +0800 Subject: [PATCH] IDEMPIERE-1060 Tree : selection of a record doesn't select the node. --- .../org/adempiere/webui/adwindow/ADTabpanel.java | 16 ++++++++++------ .../adempiere/webui/adwindow/ADTreePanel.java | 13 ++++++++++--- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 19a74340d2..ec2fdae1ea 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -606,10 +606,10 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer if (gridTab.getRecord_ID() >= 0) { if (AD_Tree_ID != 0) { treePanel.initTree(AD_Tree_ID, windowNo); - setSelectedNode(gridTab.getRecord_ID()); + Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); } else if (AD_Tree_ID_Default != 0) { treePanel.initTree(AD_Tree_ID_Default, windowNo); - setSelectedNode(gridTab.getRecord_ID()); + Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); } } else { treePanel.getTree().clear(); @@ -794,6 +794,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer } Events.sendEvent(this, new Event(ON_DYNAMIC_DISPLAY_EVENT, this)); + Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); if (logger.isLoggable(Level.CONFIG)) logger.config(gridTab.toString() + " - fini - " + (col<=0 ? "complete" : "seletive")); } // dynamicDisplay @@ -954,7 +955,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer } if (gridTab.getRecord_ID() > 0 && gridTab.isTreeTab() && treePanel != null) { - setSelectedNode(gridTab.getRecord_ID()); + Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); } Event event = new Event(ON_ACTIVATE_EVENT, this, activate); @@ -1003,7 +1004,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer navigateTo((DefaultTreeNode)item.getValue()); } else if (ON_DEFER_SET_SELECTED_NODE.equals(event.getName())) { - if (gridTab.getRecord_ID() > 0 && gridTab.isTreeTab() && treePanel != null) { + if (gridTab.getRecord_ID() >= 0 && gridTab.isTreeTab() && treePanel != null) { setSelectedNode(gridTab.getRecord_ID()); } } @@ -1196,8 +1197,11 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer { if (AD_Tree_ID != 0) { - treePanel.initTree(AD_Tree_ID, windowNo); - setSelectedNode(gridTab.getRecord_ID()); + if (treePanel.initTree(AD_Tree_ID, windowNo)) + Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); + else + setSelectedNode(gridTab.getRecord_ID()); + } else { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java index 2cd1df0ea6..afccfd5cc8 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTreePanel.java @@ -49,6 +49,7 @@ public class ADTreePanel extends Panel implements EventListener private ToolBarButton expandToggle; // Elaine 2009/02/27 - expand tree private int m_windowno = -1; private int m_tabno = -1; + private int AD_Tree_ID = -1; public ADTreePanel() { @@ -66,10 +67,16 @@ public class ADTreePanel extends Panel implements EventListener * @param AD_Tree_ID * @param windowNo */ - public void initTree(int AD_Tree_ID, int windowNo) + public boolean initTree(int AD_Tree_ID, int windowNo) { - SimpleTreeModel.initADTree(tree, AD_Tree_ID, windowNo); - pnlSearch.initialise(); + if (this.AD_Tree_ID != AD_Tree_ID) + { + this.AD_Tree_ID = AD_Tree_ID; + SimpleTreeModel.initADTree(tree, AD_Tree_ID, windowNo); + pnlSearch.initialise(); + return true; + } + return false; } private void init()