diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java index 8d33783dc2..c3aff88489 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java @@ -20,6 +20,7 @@ import javax.swing.table.AbstractTableModel; import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.editor.WEditor; +import org.adempiere.webui.panel.AbstractADWindowPanel; import org.adempiere.webui.util.SortComparator; import org.compiere.model.GridField; import org.compiere.model.GridTab; @@ -52,9 +53,9 @@ import org.zkoss.zul.event.ZulEvents; public class GridPanel extends Borderlayout implements EventListener { /** - * + * generated serial version ID */ - private static final long serialVersionUID = -8735897196875342427L; + private static final long serialVersionUID = -7151423393713654553L; private static final int MIN_COLUMN_WIDTH = 100; @@ -91,6 +92,8 @@ public class GridPanel extends Borderlayout implements EventListener private String columnOnClick; + private AbstractADWindowPanel windowPanel; + public static final String PAGE_SIZE_KEY = "ZK_PAGING_SIZE"; public static final String MODE_LESS_KEY = "ZK_GRID_EDIT_MODELESS"; @@ -328,6 +331,7 @@ public class GridPanel extends Borderlayout implements EventListener renderer.stopEditing(false); renderer = new GridTabRowRenderer(gridTab, windowNo); renderer.setGridPanel(this); + renderer.setADWindowPanel(windowPanel); listbox.setRowRenderer(renderer); listbox.setModel(listModel); @@ -608,6 +612,9 @@ public class GridPanel extends Borderlayout implements EventListener return false; } + /** + * @param columnName + */ public void setFocusToField(String columnName) { boolean found = false; for (WEditor editor : renderer.getEditors()) { @@ -620,4 +627,13 @@ public class GridPanel extends Borderlayout implements EventListener } } } + + /** + * @param winPanel + */ + public void setADWindowPanel(AbstractADWindowPanel winPanel) { + windowPanel = winPanel; + if (renderer != null) + renderer.setADWindowPanel(windowPanel); + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java index 70e3fded47..ce8ac71a1f 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabRowRenderer.java @@ -79,6 +79,7 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt, Renderer private Object[] currentValues; private boolean editing = false; private int currentRowIndex = -1; + private AbstractADWindowPanel m_windowPanel; /** * @@ -96,12 +97,19 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt, Renderer if (editor != null) { if (editor instanceof WButtonEditor) { - Object window = SessionManager.getAppDesktop().findWindow(windowNo); - if (window != null && window instanceof ADWindow) - { - AbstractADWindowPanel windowPanel = ((ADWindow)window).getADWindowPanel(); - ((WButtonEditor)editor).addActionListener(windowPanel); - } + if (m_windowPanel != null) + { + ((WButtonEditor)editor).addActionListener(m_windowPanel); + } + else + { + Object window = SessionManager.getAppDesktop().findWindow(windowNo); + if (window != null && window instanceof ADWindow) + { + AbstractADWindowPanel windowPanel = ((ADWindow)window).getADWindowPanel(); + ((WButtonEditor)editor).addActionListener(windowPanel); + } + } } else { @@ -150,8 +158,6 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt, Renderer } else if (gridField.isLookup()) { - if (value == null) return ""; - if (lookupCache != null) { Map cache = lookupCache.get(gridField.getColumnName()); @@ -583,7 +589,17 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt, Renderer } } + /** + * @return boolean + */ public boolean isEditing() { return editing; } + + /** + * @param windowPanel + */ + public void setADWindowPanel(AbstractADWindowPanel windowPanel) { + this.m_windowPanel = windowPanel; + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java index 6e18c2f15e..10243f37a5 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java @@ -228,6 +228,7 @@ DataStatusListener, IADTabpanel, VetoableChangeListener this.appendChild(listPanel); listPanel.setVisible(false); listPanel.setWindowNo(windowNo); + listPanel.setADWindowPanel(winPanel); gridTab.getTableModel().addVetoableChangeListener(this); }