diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java index d1eabaa193..2466fedcfd 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java @@ -66,6 +66,10 @@ public class WListItemRenderer implements ListitemRenderer, EventListener, Listi /** Array of {@link ListHeader}s for the list head. */ private ArrayList m_headers = new ArrayList(); + private Listbox listBox; + + private EventListener cellListener; + /** * Default constructor. * @@ -148,10 +152,20 @@ public class WListItemRenderer implements ListitemRenderer, EventListener, Listi throw new IllegalArgumentException("A model element was not a list"); } + if (listBox == null || listBox != item.getListbox()) + { + listBox = item.getListbox(); + } + if (cellListener == null) + { + cellListener = new CellListener(); + } + for (Object field : (List)data) { listcell = getCellComponent(table, field, rowIndex, colIndex); listcell.setParent(item); + listcell.addEventListener(Events.ON_DOUBLE_CLICK, cellListener); colIndex++; } @@ -768,6 +782,19 @@ public class WListItemRenderer implements ListitemRenderer, EventListener, Listi } } + class CellListener implements EventListener { + + public CellListener() { + } + + public void onEvent(Event event) throws Exception { + if (listBox != null && Events.ON_DOUBLE_CLICK.equals(event.getName())) { + Event evt = new Event(Events.ON_DOUBLE_CLICK, listBox); + Events.sendEvent(listBox, evt); + } + } + + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java index 5a929c00e5..8fa89f34b1 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java @@ -23,6 +23,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Vector; import java.util.logging.Level; @@ -64,6 +65,10 @@ import org.zkoss.zul.event.ZulEvents; public abstract class InfoPanel extends Window implements EventListener, WTableModelListener { + /** + * default serial version id + */ + private static final long serialVersionUID = 1L; private final static int PAGE_SIZE = 100; public static InfoPanel create (int WindowNo, @@ -264,7 +269,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM confirmPanel.getButton(ConfirmPanel.A_ZOOM).setVisible(hasZoom()); // - this.setSizable(true); + this.setSizable(true); + this.setMaximizable(true); this.addEventListener(Events.ON_OK, this); } // init @@ -404,7 +410,7 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM for (int col = 0; col < p_layout.length; col++) { Object value = null; - Class c = p_layout[col].getColClass(); + Class c = p_layout[col].getColClass(); int colIndex = col + colOffset; if (c == IDColumn.class) { @@ -506,10 +512,20 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); setStatusDB(Integer.toString(no)); + addDoubleClickListener(); //workaround for scrollbar position problem contentPanel.renderAll(); } + private void addDoubleClickListener() { + Iterator i = contentPanel.getListenerIterator(Events.ON_DOUBLE_CLICK); + while (i.hasNext()) { + if (i.next() == this) + return; + } + contentPanel.addEventListener(Events.ON_DOUBLE_CLICK, this); + } + protected void insertPagingComponent() { contentPanel.getParent().insertBefore(paging, contentPanel.getNextSibling()); }