* Merge branches/adempiere341 revision 6095 bug fixes for zkwebui

This commit is contained in:
Heng Sin Low 2008-08-13 03:32:02 +00:00
parent cd7097d6ab
commit 2e27910d9b
24 changed files with 340 additions and 161 deletions

View File

@ -626,7 +626,7 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
if(dragged instanceof Treerow) if(dragged instanceof Treerow)
{ {
Treerow treerow = (Treerow) dragged; Treerow treerow = (Treerow) dragged;
Treeitem treeitem = treerow.getTreeitem(); Treeitem treeitem = (Treeitem) treerow.getParent();
Object value = treeitem.getValue(); Object value = treeitem.getValue();
if(value != null) if(value != null)
@ -717,7 +717,6 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl
if(menu.getAction().equals(MMenu.ACTION_Window)) if(menu.getAction().equals(MMenu.ACTION_Window))
{ {
Integer wMenuId = Integer.valueOf(menu.getAD_Window_ID());
ADWindow adWindow = new ADWindow(Env.getCtx(), menu.getAD_Window_ID()); ADWindow adWindow = new ADWindow(Env.getCtx(), menu.getAD_Window_ID());
Tabpanel tabPanel = new Tabpanel(); Tabpanel tabPanel = new Tabpanel();

View File

@ -526,6 +526,7 @@ public class WAcctViewer extends Window implements EventListener
paging.addEventListener("onPaging", this); paging.addEventListener("onPaging", this);
paging.setAutohide(true); paging.setAutohide(true);
paging.setDetailed(true);
// Query Tab // Query Tab

View File

@ -87,12 +87,12 @@ public abstract class WCreateFrom extends Window implements EventListener, WTabl
protected Button btnOk = new Button(); protected Button btnOk = new Button();
protected Button btnSelectAll = new Button(); protected Button btnSelectAll = new Button();
private Label bankAccountLabel = new Label(); protected Label bankAccountLabel = new Label();
private Label bPartnerLabel = new Label(); protected Label bPartnerLabel = new Label();
private Label shipmentLabel = new Label(); protected Label shipmentLabel = new Label();
private Label orderLabel = new Label(); protected Label orderLabel = new Label();
private Label invoiceLabel = new Label(); protected Label invoiceLabel = new Label();
private Label locatorLabel = new Label(); protected Label locatorLabel = new Label();
protected Label lblStatus = new Label(); protected Label lblStatus = new Label();
protected WListbox dataTable = new WListbox(); protected WListbox dataTable = new WListbox();
@ -227,7 +227,7 @@ public abstract class WCreateFrom extends Window implements EventListener, WTabl
// Window // Window
this.setWidth("700px"); // this.setWidth("700px");
this.setClosable(true); this.setClosable(true);
this.setBorder("normal"); this.setBorder("normal");

View File

@ -35,6 +35,7 @@ import org.adempiere.webui.editor.WLocatorEditor;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
import org.adempiere.webui.event.ValueChangeListener; import org.adempiere.webui.event.ValueChangeListener;
import org.adempiere.webui.event.WTableModelListener; import org.adempiere.webui.event.WTableModelListener;
import org.adempiere.webui.window.FDialog;
import org.compiere.model.GridTab; import org.compiere.model.GridTab;
import org.compiere.model.MInOut; import org.compiere.model.MInOut;
import org.compiere.model.MInOutLine; import org.compiere.model.MInOutLine;
@ -97,6 +98,8 @@ public class WCreateFromShipment extends WCreateFrom implements EventListener, V
initBPartner(false); initBPartner(false);
bPartnerField.addValueChangeListner(this); bPartnerField.addValueChangeListner(this);
locatorLabel.setMandatory(true);
return true; return true;
} }
@ -343,7 +346,7 @@ public class WCreateFromShipment extends WCreateFrom implements EventListener, V
if (mlocator == null || mlocator.getM_Locator_ID()/*.intValue()*/ == 0) if (mlocator == null || mlocator.getM_Locator_ID()/*.intValue()*/ == 0)
{ {
/* locatorField.setBackground(AdempierePLAF.getFieldBackground_Error());*/ FDialog.error(p_WindowNo, Msg.getMsg(Env.getCtx(), "FillMandatory", new Object[]{locatorField.getLabel().getValue()}));
return false; return false;
} }

View File

@ -30,38 +30,40 @@ import org.compiere.model.GridTable;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Div; import org.zkoss.zkex.zul.Borderlayout;
import org.zkoss.zul.Hbox; import org.zkoss.zkex.zul.Center;
import org.zkoss.zkex.zul.South;
import org.zkoss.zul.ListitemRenderer; import org.zkoss.zul.ListitemRenderer;
import org.zkoss.zul.Paging;
import org.zkoss.zul.event.ZulEvents;
public class GridPanel extends Div implements EventListener public class GridPanel extends Borderlayout implements EventListener
{ {
private static final int MIN_COLUMN_WIDTH = 100;
private static final int MAX_COLUMN_WIDTH = 300;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Listbox listbox = null; private Listbox listbox = null;
private int pageSize = 10; private int pageSize = 1000;
private long numPages;
private GridField[] gridField; private GridField[] gridField;
private AbstractTableModel tableModel; private AbstractTableModel tableModel;
private int numColumns = 5; private int numColumns = 5;
private int numRows;
private Button[] buttons;
private Hbox boxButtons = new Hbox();
private int windowNo; private int windowNo;
private GridTab gridTab; private GridTab gridTab;
private int pageId = 0;
private ListHead listHead;
private boolean init; private boolean init;
private GridTableListModel listModel;
private Paging paging;
public GridPanel() public GridPanel()
{ {
super(); super();
@ -82,14 +84,13 @@ public class GridPanel extends Div implements EventListener
tableModel = gridTab.getTableModel(); tableModel = gridTab.getTableModel();
numColumns = tableModel.getColumnCount(); numColumns = tableModel.getColumnCount();
numRows = tableModel.getRowCount();
gridField = ((GridTable)tableModel).getFields(); gridField = ((GridTable)tableModel).getFields();
setupColumns(); setupColumns();
render(); render();
listbox.setSelectedIndex(gridTab.getCurrentRow()); updateListIndex();
this.init = true; this.init = true;
} }
@ -108,12 +109,34 @@ public class GridPanel extends Div implements EventListener
public void refresh(GridTab gridTab) { public void refresh(GridTab gridTab) {
this.gridTab = gridTab; this.gridTab = gridTab;
tableModel = gridTab.getTableModel(); tableModel = gridTab.getTableModel();
numRows = tableModel.getRowCount();
gridField = ((GridTable)tableModel).getFields(); gridField = ((GridTable)tableModel).getFields();
updateModel(); updateModel();
listbox.setSelectedIndex(gridTab.getCurrentRow()); updateListIndex();
}
/**
* Update listbox index to sync with grid current row pointer changes
*/
public void updateListIndex() {
int rowIndex = gridTab.getCurrentRow();
if (pageSize > 0) {
if (paging.getTotalSize() != gridTab.getRowCount())
paging.setTotalSize(gridTab.getRowCount());
int pgIndex = rowIndex % pageSize;
int pgNo = (rowIndex - pgIndex) / pageSize;
if (listModel.getPage() != pgNo) {
listModel.setPage(pgNo);
}
if (paging.getActivePage() != pgNo)
paging.setActivePage(pgNo);
if (listbox.getSelectedIndex() != pgIndex)
listbox.setSelectedIndex(pgIndex);
} else {
if (listbox.getSelectedIndex() != rowIndex)
listbox.setSelectedIndex(rowIndex);
}
} }
public void setPageSize(int pageSize) public void setPageSize(int pageSize)
@ -141,7 +164,7 @@ public class GridPanel extends Div implements EventListener
ListHead header = new ListHead(); ListHead header = new ListHead();
header.setSizable(true); header.setSizable(true);
Map colnames = new HashMap<Integer, String>(); Map<Integer, String> colnames = new HashMap<Integer, String>();
int index = 0; int index = 0;
for (int i = 0; i < numColumns; i++) for (int i = 0; i < numColumns; i++)
{ {
@ -153,10 +176,10 @@ public class GridPanel extends Div implements EventListener
colHeader.setSort("auto"); colHeader.setSort("auto");
colHeader.setLabel(gridField[i].getHeader()); colHeader.setLabel(gridField[i].getHeader());
int l = gridField[i].getDisplayLength() * 10; int l = gridField[i].getDisplayLength() * 10;
if (l > 300) if (l > MAX_COLUMN_WIDTH)
l = 300; l = MAX_COLUMN_WIDTH;
else if ( l < 100) else if ( l < MIN_COLUMN_WIDTH)
l = 100; l = MIN_COLUMN_WIDTH;
colHeader.setWidth(Integer.toString(l) + "px"); colHeader.setWidth(Integer.toString(l) + "px");
header.appendChild(colHeader); header.appendChild(colHeader);
} }
@ -175,11 +198,25 @@ public class GridPanel extends Div implements EventListener
updateModel(); updateModel();
this.appendChild(listbox); Center center = new Center();
center.appendChild(listbox);
this.appendChild(center);
if (pageSize > 0) {
paging = new Paging();
paging.setPageSize(pageSize);
paging.setTotalSize(tableModel.getRowCount());
paging.setDetailed(true);
South south = new South();
south.appendChild(paging);
this.appendChild(south);
paging.addEventListener(ZulEvents.ON_PAGING, this);
}
} }
private void updateModel() { private void updateModel() {
GridTableListModel listModel = new GridTableListModel((GridTable)tableModel, windowNo); listModel = new GridTableListModel((GridTable)tableModel, windowNo);
listModel.setPageSize(pageSize);
listbox.setItemRenderer(listModel); listbox.setItemRenderer(listModel);
listbox.setModel(listModel); listbox.setModel(listModel);
} }
@ -196,8 +233,30 @@ public class GridPanel extends Div implements EventListener
return; return;
else if (event.getTarget() == listbox) else if (event.getTarget() == listbox)
{ {
gridTab.navigate(listbox.getSelectedIndex()); updateModelIndex();
} }
else if (event.getTarget() == paging)
{
int pgNo = paging.getActivePage();
if (pgNo != listModel.getPage())
{
listbox.clearSelection();
listModel.setPage(pgNo);
listbox.setSelectedIndex(0);
updateModelIndex();
}
}
}
private void updateModelIndex() {
int rowIndex = listbox.getSelectedIndex();
if (pageSize > 0) {
int start = listModel.getPage() * listModel.getPageSize();
rowIndex = start + rowIndex;
}
if (gridTab.getCurrentRow() != rowIndex)
gridTab.navigate(rowIndex);
} }
public Listbox getListbox() { public Listbox getListbox() {

View File

@ -30,6 +30,9 @@ public class GridTableListModel extends AbstractListModel implements ListitemRen
private GridField[] gridField; private GridField[] gridField;
private int windowNo; private int windowNo;
private int pageSize = -1;
private int pageNo = 0;
public GridTableListModel(GridTable tableModel, int windowNo) { public GridTableListModel(GridTable tableModel, int windowNo) {
this.tableModel = tableModel; this.tableModel = tableModel;
this.windowNo = windowNo; this.windowNo = windowNo;
@ -40,6 +43,9 @@ public class GridTableListModel extends AbstractListModel implements ListitemRen
public Object getElementAt(int rowIndex) { public Object getElementAt(int rowIndex) {
int columnCount = tableModel.getColumnCount(); int columnCount = tableModel.getColumnCount();
Object[] values = new Object[columnCount]; Object[] values = new Object[columnCount];
if (pageSize > 0) {
rowIndex = (pageNo * pageSize) + rowIndex;
}
if (rowIndex < tableModel.getRowCount()) { if (rowIndex < tableModel.getRowCount()) {
for (int i = 0; i < columnCount; i++) { for (int i = 0; i < columnCount; i++) {
values[i] = tableModel.getValueAt(rowIndex, i); values[i] = tableModel.getValueAt(rowIndex, i);
@ -49,8 +55,52 @@ public class GridTableListModel extends AbstractListModel implements ListitemRen
return values; return values;
} }
/**
* set current page no ( starting from 0 )
* @param pg
*/
public void setPage(int pg) {
if (pageNo != pg) {
if (pg > 0) {
int start = pg * pageSize;
if (start >= tableModel.getRowCount()) {
return;
}
}
pageNo = pg;
fireEvent(ListDataEvent.CONTENTS_CHANGED, -1, -1);
}
}
/**
* @return current page no ( starting from 0 )
*/
public int getPage() {
return pageNo;
}
public void setPageSize(int pgSize) {
pageSize = pgSize;
}
public int getPageSize() {
return pageSize;
}
public int getSize() { public int getSize() {
return tableModel.getRowCount(); int total = tableModel.getRowCount();
if (pageSize < 0)
return total;
else if ((total - ( pageNo * pageSize)) < 0) {
pageNo = 0;
return pageSize > total ? total : pageSize;
} else {
int end = (pageNo + 1) * pageSize;
if (end > total)
return total - ( pageNo * pageSize);
else
return pageSize;
}
} }
public void render(Listitem listitem, Object data) throws Exception { public void render(Listitem listitem, Object data) throws Exception {
@ -135,7 +185,10 @@ public class GridTableListModel extends AbstractListModel implements ListitemRen
} }
public Listcell newListcell(Listitem item) { public Listcell newListcell(Listitem item) {
return null; ListCell listCell = new ListCell();
listCell.applyProperties();
listCell.setParent(item);
return listCell;
} }
public Listitem newListitem(Listbox listbox) { public Listitem newListitem(Listbox listbox) {

View File

@ -407,27 +407,34 @@ public class WListItemRenderer implements ListitemRenderer, EventListener, Listi
{ {
ListHeader header = null; ListHeader header = null;
String headerText = headerValue.toString();
if (m_headers.size() <= headerIndex) if (m_headers.size() <= headerIndex)
{ {
Comparator ascComparator = getColumnComparator(true, headerIndex); Comparator ascComparator = getColumnComparator(true, headerIndex);
Comparator dscComparator = getColumnComparator(false, headerIndex); Comparator dscComparator = getColumnComparator(false, headerIndex);
header = new ListHeader(headerValue.toString()); header = new ListHeader(headerText);
header.setSort("auto"); header.setSort("auto");
header.setSortAscending(ascComparator); header.setSortAscending(ascComparator);
header.setSortDescending(dscComparator); header.setSortDescending(dscComparator);
header.setWidth("auto"); int width = headerText.trim().length() * 9;
if (width > 300)
width = 300;
else if (width > 0 && width < 100)
width = 100;
header.setWidth(width + "px");
m_headers.add(header); m_headers.add(header);
} }
else else
{ {
header = m_headers.get(headerIndex); header = m_headers.get(headerIndex);
if (!header.getLabel().equals(headerValue.toString())) if (!header.getLabel().equals(headerText))
{ {
header.setLabel(headerValue.toString()); header.setLabel(headerText);
} }
} }
@ -480,7 +487,6 @@ public class WListItemRenderer implements ListitemRenderer, EventListener, Listi
head.appendChild(header); head.appendChild(header);
} }
head.setSizable(true); head.setSizable(true);
head.setWidth("auto");
return; return;
} }
@ -671,7 +677,9 @@ public class WListItemRenderer implements ListitemRenderer, EventListener, Listi
*/ */
public Listcell newListcell(Listitem item) public Listcell newListcell(Listitem item)
{ {
return null; ListCell cell = new ListCell();
cell.applyProperties();
return cell;
} }
/* (non-Javadoc) /* (non-Javadoc)
@ -679,7 +687,10 @@ public class WListItemRenderer implements ListitemRenderer, EventListener, Listi
*/ */
public Listitem newListitem(Listbox listbox) public Listitem newListitem(Listbox listbox)
{ {
return new ListItem(); ListItem item = new ListItem();
item.applyProperties();
return item;
} }
} }

View File

@ -140,10 +140,10 @@ public class WListbox extends Listbox implements TableValueChangeListener, WTabl
head = super.getListHead(); head = super.getListHead();
//detach the old header //init only once
if (head != null) if (head != null)
{ {
head.detach(); return;
} }
head = new ListHead(); head = new ListHead();
@ -160,7 +160,7 @@ public class WListbox extends Listbox implements TableValueChangeListener, WTabl
+ this.getItemRenderer().getClass().getSimpleName()); + this.getItemRenderer().getClass().getSimpleName());
} }
//reattach the listhead //attach the listhead
head.setParent(this); head.setParent(this);
return; return;

View File

@ -69,7 +69,7 @@ public class WStatusBar extends Grid implements EventListener
// this.setBorder("normal"); // this.setBorder("normal");
rows.appendChild(statusBar); rows.appendChild(statusBar);
this.appendChild(rows); this.appendChild(rows);
this.setWidth("98%"); this.setWidth("99%");
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -152,6 +152,12 @@ public abstract class WEditor implements EventListener, PropertyChangeListener
((HtmlBasedComponent)component).setTooltiptext(description); ((HtmlBasedComponent)component).setTooltiptext(description);
label.setTooltiptext(description); label.setTooltiptext(description);
//init listeners
for (String event : this.getEvents())
{
component.addEventListener(event, this);
}
} }
public GridField getGridField() public GridField getGridField()
@ -225,13 +231,6 @@ public abstract class WEditor implements EventListener, PropertyChangeListener
return; return;
} }
if (listeners.size() == 0)
{
for (String event : this.getEvents())
{
component.addEventListener(event, this);
}
}
listeners.add(listener); listeners.add(listener);
} }

View File

@ -37,7 +37,7 @@ import org.zkoss.zk.ui.event.Events;
*/ */
public class WNumberEditor extends WEditor public class WNumberEditor extends WEditor
{ {
public final String[] LISTENER_EVENTS = {Events.ON_CHANGE}; public static final String[] LISTENER_EVENTS = {Events.ON_CHANGE};
public static final int MAX_DISPLAY_LENGTH = 20; public static final int MAX_DISPLAY_LENGTH = 20;

View File

@ -218,8 +218,8 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value
private void actionRefresh(Object value) private void actionRefresh(Object value)
{ {
boolean mandatory = isMandatory(); // boolean mandatory = isMandatory();
AEnv.actionRefresh(lookup, value, mandatory); // AEnv.actionRefresh(lookup, value, mandatory);
setValue(value); setValue(value);
} }

View File

@ -49,7 +49,7 @@ import org.zkoss.zk.ui.event.Events;
public class WTableDirEditor extends WEditor implements ListDataListener, public class WTableDirEditor extends WEditor implements ListDataListener,
ContextMenuListener, IZoomableEditor ContextMenuListener, IZoomableEditor
{ {
public final String[] LISTENER_EVENTS = {Events.ON_SELECT}; public final static String[] LISTENER_EVENTS = {Events.ON_SELECT};
private static final CLogger logger; private static final CLogger logger;

View File

@ -37,7 +37,7 @@ import org.zkoss.zk.ui.event.Events;
*/ */
public class WYesNoEditor extends WEditor public class WYesNoEditor extends WEditor
{ {
public final String[] LISTENER_EVENTS = {Events.ON_CHECK}; public static final String[] LISTENER_EVENTS = {Events.ON_CHECK};
private static final CLogger logger; private static final CLogger logger;
static static

View File

@ -738,6 +738,10 @@ DataStatusListener, ValueChangeListener, IADTabpanel
else else
setSelectedNode(gridTab.getRecord_ID()); setSelectedNode(gridTab.getRecord_ID());
} }
if (listPanel.isVisible()) {
listPanel.updateListIndex();
}
} }
private void deleteNode(int recordId) { private void deleteNode(int recordId) {

View File

@ -39,6 +39,7 @@ import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Hbox; import org.zkoss.zul.Hbox;
import org.zkoss.zul.Intbox; import org.zkoss.zul.Intbox;
import org.zkoss.zul.Separator;
import org.zkoss.zul.Vbox; import org.zkoss.zul.Vbox;
/** /**
@ -171,8 +172,7 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl
contentPanel = new WListbox(); contentPanel = new WListbox();
contentPanel.setWidth("99%"); contentPanel.setWidth("99%");
contentPanel.setHeight("400px"); contentPanel.setHeight("400px");
contentPanel.setStyle("overflow:auto"); contentPanel.setVflex(true);
} }
private void init() private void init()
@ -259,18 +259,15 @@ public class InfoBPartnerPanel extends InfoPanel implements EventListener, WTabl
parameterPanel.appendChild(vbox3); parameterPanel.appendChild(vbox3);
parameterPanel.appendChild(vbox4); parameterPanel.appendChild(vbox4);
Vbox mainPanel = new Vbox(); Panel mainPanel = new Panel();
mainPanel.appendChild(parameterPanel); mainPanel.appendChild(parameterPanel);
/* Div div = new Div();
div.setStyle("overflow:hidden");
div.setWidth("1000px");
div.appendChild(contentPanel);
mainPanel.appendChild(div);*/
mainPanel.setWidth("100%"); mainPanel.setWidth("100%");
mainPanel.appendChild(new Separator());
mainPanel.appendChild(contentPanel); mainPanel.appendChild(contentPanel);
mainPanel.appendChild(new Separator());
mainPanel.appendChild(confirmPanel); mainPanel.appendChild(confirmPanel);
mainPanel.appendChild(new Separator());
mainPanel.appendChild(statusBar); mainPanel.appendChild(statusBar);
this.appendChild(mainPanel); this.appendChild(mainPanel);

View File

@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.logging.Level; import java.util.logging.Level;
import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.Panel;
import org.adempiere.webui.component.Textbox; import org.adempiere.webui.component.Textbox;
import org.adempiere.webui.component.WListbox; import org.adempiere.webui.component.WListbox;
import org.adempiere.webui.event.WTableModelEvent; import org.adempiere.webui.event.WTableModelEvent;
@ -38,7 +39,7 @@ import org.compiere.util.Env;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Hbox; import org.zkoss.zul.Hbox;
import org.zkoss.zul.Vbox; import org.zkoss.zul.Separator;
public class InfoGeneralPanel extends InfoPanel implements EventListener public class InfoGeneralPanel extends InfoPanel implements EventListener
{ {
@ -98,14 +99,17 @@ public class InfoGeneralPanel extends InfoPanel implements EventListener
parameterPanel.appendChild(lbl4); parameterPanel.appendChild(lbl4);
parameterPanel.appendChild(txt4); parameterPanel.appendChild(txt4);
Vbox mainPanel = new Vbox(); Panel mainPanel = new Panel();
mainPanel.setWidth("100%"); mainPanel.setWidth("100%");
mainPanel.appendChild(parameterPanel); mainPanel.appendChild(parameterPanel);
contentPanel.setWidth("99%"); contentPanel.setWidth("99%");
contentPanel.setHeight("400px"); contentPanel.setHeight("400px");
contentPanel.setStyle("overflow:auto"); contentPanel.setVflex(true);
mainPanel.appendChild(new Separator());
mainPanel.appendChild(contentPanel); mainPanel.appendChild(contentPanel);
mainPanel.appendChild(new Separator());
mainPanel.appendChild(confirmPanel); mainPanel.appendChild(confirmPanel);
this.appendChild(mainPanel); this.appendChild(mainPanel);

View File

@ -45,6 +45,7 @@ import org.compiere.util.Msg;
import org.compiere.util.Util; import org.compiere.util.Util;
import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zul.Hbox; import org.zkoss.zul.Hbox;
import org.zkoss.zul.Separator;
import org.zkoss.zul.Vbox; import org.zkoss.zul.Vbox;
/** /**
@ -175,7 +176,7 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener
contentPanel = new WListbox(); contentPanel = new WListbox();
contentPanel.setWidth("99%"); contentPanel.setWidth("99%");
contentPanel.setHeight("400px"); contentPanel.setHeight("400px");
contentPanel.setStyle("overflow:auto"); contentPanel.setVflex(true);
} }
private void init() private void init()
@ -265,14 +266,14 @@ public class InfoInvoicePanel extends InfoPanel implements ValueChangeListener
parameterPanel.appendChild(vbox3); parameterPanel.appendChild(vbox3);
parameterPanel.setWidth("100%"); parameterPanel.setWidth("100%");
Vbox mainPanel = new Vbox(); Panel mainPanel = new Panel();
mainPanel.setWidth("100%"); mainPanel.setWidth("100%");
mainPanel.appendChild(parameterPanel); mainPanel.appendChild(parameterPanel);
contentPanel.setWidth("99%"); mainPanel.appendChild(new Separator());
contentPanel.setHeight("400px");
contentPanel.setStyle("overflow:auto");
mainPanel.appendChild(contentPanel); mainPanel.appendChild(contentPanel);
mainPanel.appendChild(new Separator());
mainPanel.appendChild(confirmPanel); mainPanel.appendChild(confirmPanel);
mainPanel.appendChild(new Separator());
mainPanel.appendChild(statusBar); mainPanel.appendChild(statusBar);
this.appendChild(mainPanel); this.appendChild(mainPanel);

View File

@ -45,6 +45,7 @@ import org.compiere.util.Util;
import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zul.Div; import org.zkoss.zul.Div;
import org.zkoss.zul.Hbox; import org.zkoss.zul.Hbox;
import org.zkoss.zul.Separator;
import org.zkoss.zul.Vbox; import org.zkoss.zul.Vbox;
/** /**
@ -153,7 +154,7 @@ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener
contentPanel = new WListbox(); contentPanel = new WListbox();
contentPanel.setWidth("99%"); contentPanel.setWidth("99%");
contentPanel.setHeight("400px"); contentPanel.setHeight("400px");
contentPanel.setStyle("overflow:auto"); contentPanel.setVflex(true);
} }
public void init() public void init()
@ -231,15 +232,14 @@ public class InfoOrderPanel extends InfoPanel implements ValueChangeListener
parameterPanel.appendChild(vbox3); parameterPanel.appendChild(vbox3);
parameterPanel.setWidth("100%"); parameterPanel.setWidth("100%");
Vbox mainPanel = new Vbox(); Panel mainPanel = new Panel();
mainPanel.setWidth("100%"); mainPanel.setWidth("100%");
mainPanel.appendChild(parameterPanel); mainPanel.appendChild(parameterPanel);
Div div = new Div(); mainPanel.appendChild(new Separator());
div.setStyle("overflow:auto"); mainPanel.appendChild(contentPanel);
div.setWidth("100%"); mainPanel.appendChild(new Separator());
div.appendChild(contentPanel);
mainPanel.appendChild(div);
mainPanel.appendChild(confirmPanel); mainPanel.appendChild(confirmPanel);
mainPanel.appendChild(new Separator());
mainPanel.appendChild(statusBar); mainPanel.appendChild(statusBar);
this.appendChild(mainPanel); this.appendChild(mainPanel);

View File

@ -23,6 +23,7 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import java.util.Vector; import java.util.Vector;
import java.util.logging.Level; import java.util.logging.Level;
@ -46,6 +47,8 @@ import org.compiere.util.Msg;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Paging;
import org.zkoss.zul.event.ZulEvents;
/** /**
* Search Information and return selection - Base Class. * Search Information and return selection - Base Class.
@ -56,6 +59,8 @@ import org.zkoss.zk.ui.event.Events;
public abstract class InfoPanel extends Window implements EventListener, WTableModelListener public abstract class InfoPanel extends Window implements EventListener, WTableModelListener
{ {
private final static int PAGE_SIZE = 100;
public static InfoPanel create (int WindowNo, public static InfoPanel create (int WindowNo,
String tableName, String keyColumn, String value, String tableName, String keyColumn, String value,
boolean multiSelection, String whereClause) boolean multiSelection, String whereClause)
@ -292,6 +297,8 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
protected CLogger log = CLogger.getCLogger(getClass()); protected CLogger log = CLogger.getCLogger(getClass());
protected WListbox contentPanel = new WListbox(); protected WListbox contentPanel = new WListbox();
private Paging paging;
private int pageNo;
private static final String[] lISTENER_EVENTS = {}; private static final String[] lISTENER_EVENTS = {};
@ -445,16 +452,48 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
protected void renderItems() protected void renderItems()
{ {
Vector<String> columnHeader = getColumnHeader(p_layout); Vector<String> columnHeader = getColumnHeader(p_layout);
if (line != null) if (line != null)
{ {
model = new ListModelTable(line); if (line.size() > PAGE_SIZE)
model.addTableModelListener(this); {
contentPanel.setData(model, columnHeader); if (paging == null)
{
paging = new Paging();
paging.setPageSize(PAGE_SIZE);
paging.setTotalSize(line.size());
paging.setDetailed(true);
paging.addEventListener(ZulEvents.ON_PAGING, this);
contentPanel.getParent().insertBefore(paging, contentPanel.getNextSibling());
}
List<Object> subList = line.subList(0, PAGE_SIZE);
model = new ListModelTable(subList);
model.addTableModelListener(this);
contentPanel.setData(model, columnHeader);
pageNo = 0;
}
else
{
if (paging != null)
{
paging.setTotalSize(line.size());
pageNo = 0;
}
model = new ListModelTable(line);
model.addTableModelListener(this);
contentPanel.setData(model, columnHeader);
}
} }
int no = contentPanel.getRowCount(); int no = line.size();
setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false); setStatusLine(Integer.toString(no) + " " + Msg.getMsg(Env.getCtx(), "SearchRows_EnterQuery"), false);
setStatusDB(Integer.toString(no)); setStatusDB(Integer.toString(no));
//better performance
// contentPanel.setFixedLayout(true);
//workaround for scrollbar position problem
contentPanel.renderAll();
} }
@ -789,6 +828,29 @@ public abstract class InfoPanel extends Window implements EventListener, WTableM
this.detach(); this.detach();
} }
} }
else if (event.getTarget() == paging)
{
int pgNo = paging.getActivePage();
if (pageNo != pgNo)
{
contentPanel.clearSelection();
pageNo = pgNo;
int start = pageNo * PAGE_SIZE;
int end = start + PAGE_SIZE;
if (end > line.size())
end = line.size();
List<Object> subList = line.subList(start, end);
model = new ListModelTable(subList);
model.addTableModelListener(this);
contentPanel.setData(model, getColumnHeader(p_layout));
//workaround for scrollbar position problem
contentPanel.renderAll();
contentPanel.setSelectedIndex(0);
}
}
} }
} // onEvent } // onEvent

View File

@ -60,8 +60,8 @@ import org.compiere.util.Msg;
import org.compiere.util.Util; import org.compiere.util.Util;
import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Div;
import org.zkoss.zul.Hbox; import org.zkoss.zul.Hbox;
import org.zkoss.zul.Separator;
import org.zkoss.zul.Vbox; import org.zkoss.zul.Vbox;
/** /**
@ -204,7 +204,7 @@ public final class InfoProductPanel extends InfoPanel implements EventListener
contentPanel = new WListbox(); contentPanel = new WListbox();
contentPanel.setWidth("99%"); contentPanel.setWidth("99%");
contentPanel.setHeight("400px"); contentPanel.setHeight("400px");
contentPanel.setStyle("overflow:auto"); contentPanel.setVflex(true);
} // initComponents } // initComponents
private void init() private void init()
@ -272,14 +272,12 @@ public final class InfoProductPanel extends InfoPanel implements EventListener
parameterPanel.appendChild(vbox3); parameterPanel.appendChild(vbox3);
parameterPanel.appendChild(vbox4); parameterPanel.appendChild(vbox4);
Vbox mainPanel = new Vbox(); Panel mainPanel = new Panel();
mainPanel.setWidth("100%"); mainPanel.setWidth("100%");
mainPanel.appendChild(parameterPanel); mainPanel.appendChild(parameterPanel);
Div div = new Div(); mainPanel.appendChild(new Separator());
div.setStyle("overflow:auto"); mainPanel.appendChild(contentPanel);
div.setWidth("100%"); mainPanel.appendChild(new Separator());
div.appendChild(contentPanel);
mainPanel.appendChild(div);
mainPanel.appendChild(confirmPanel); mainPanel.appendChild(confirmPanel);
this.appendChild(mainPanel); this.appendChild(mainPanel);

View File

@ -42,6 +42,7 @@ import org.zkoss.zul.Treechildren;
import org.zkoss.zul.Treecol; import org.zkoss.zul.Treecol;
import org.zkoss.zul.Treecols; import org.zkoss.zul.Treecols;
import org.zkoss.zul.Treeitem; import org.zkoss.zul.Treeitem;
import org.zkoss.zul.Treerow;
/** /**
* *
@ -85,7 +86,6 @@ public class MenuPanel extends Panel implements EventListener
menuTree = new Tree(); menuTree = new Tree();
menuTree.setMultiple(false); menuTree.setMultiple(false);
menuTree.setId("mnuMain"); menuTree.setId("mnuMain");
menuTree.addEventListener(Events.ON_SELECT, this);
menuTree.setWidth("100%"); menuTree.setWidth("100%");
menuTree.setHeight("100%"); menuTree.setHeight("100%");
menuTree.setVflex(false); menuTree.setVflex(false);
@ -175,17 +175,12 @@ public class MenuPanel extends Panel implements EventListener
treeitem.getTreerow().setDraggable("favourite"); // Elaine 2008/07/24 treeitem.getTreerow().setDraggable("favourite"); // Elaine 2008/07/24
pnlSearch.addTreeItem(treeitem); pnlSearch.addTreeItem(treeitem);
treeitem.getTreerow().addEventListener(Events.ON_CLICK, this);
} }
} }
} }
public ArrayList getMenuItems()
{
ArrayList ret = new ArrayList();
return ret;
}
public void addMenuListener(MenuListener menuListener) public void addMenuListener(MenuListener menuListener)
{ {
menuListeners.add(menuListener); menuListeners.add(menuListener);
@ -201,16 +196,16 @@ public class MenuPanel extends Panel implements EventListener
Component comp = event.getTarget(); Component comp = event.getTarget();
String eventName = event.getName(); String eventName = event.getName();
if(eventName.equals(Events.ON_SELECT)) if (eventName.equals(Events.ON_CLICK))
{ {
if(comp.equals(menuTree)) if (comp instanceof Treerow)
{ {
Treeitem selectedItem = menuTree.getSelectedItem(); Treeitem selectedItem = (Treeitem) comp.getParent();
if(selectedItem.getValue() != null) if(selectedItem.getValue() != null)
{ {
fireMenuSelectedEvent(selectedItem); fireMenuSelectedEvent(selectedItem);
} }
} }
} }
} }

View File

@ -121,7 +121,7 @@ public class MenuSearchPanel extends Panel implements EventListener
public void onPostSelect() { public void onPostSelect() {
Clients.showBusy(null, false); Clients.showBusy(null, false);
Event event = new Event(Events.ON_SELECT, menuPanel.getMenuTree()); Event event = new Event(Events.ON_CLICK, menuPanel.getMenuTree().getSelectedItem().getTreerow());
Events.postEvent(event); Events.postEvent(event);
} }

View File

@ -32,8 +32,10 @@ import java.util.Vector;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.adempiere.webui.LayoutUtils;
import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Combobox; import org.adempiere.webui.component.Combobox;
import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Label;
import org.adempiere.webui.component.ListCell; import org.adempiere.webui.component.ListCell;
import org.adempiere.webui.component.ListHead; import org.adempiere.webui.component.ListHead;
@ -41,6 +43,8 @@ import org.adempiere.webui.component.ListHeader;
import org.adempiere.webui.component.ListItem; import org.adempiere.webui.component.ListItem;
import org.adempiere.webui.component.Listbox; import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.component.Panel; import org.adempiere.webui.component.Panel;
import org.adempiere.webui.component.Row;
import org.adempiere.webui.component.Rows;
import org.adempiere.webui.component.Textbox; import org.adempiere.webui.component.Textbox;
import org.adempiere.webui.component.ToolBar; import org.adempiere.webui.component.ToolBar;
import org.adempiere.webui.component.ToolBarButton; import org.adempiere.webui.component.ToolBarButton;
@ -73,6 +77,7 @@ import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Comboitem; import org.zkoss.zul.Comboitem;
import org.zkoss.zul.Hbox; import org.zkoss.zul.Hbox;
import org.zkoss.zul.Separator;
import org.zkoss.zul.Vbox; import org.zkoss.zul.Vbox;
/** /**
@ -106,7 +111,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
// //
private Listbox advancedPanel; private Listbox advancedPanel;
/** container of Simple Window contents */ /** container of Simple Window contents */
private Vbox contentSimple; private Grid contentSimple;
/** Target Window No */ /** Target Window No */
private int m_targetWindowNo; private int m_targetWindowNo;
/** Table ID */ /** Table ID */
@ -150,6 +155,11 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
private int m_AD_Tab_ID = 1; private int m_AD_Tab_ID = 1;
private MUserQuery[] userQueries; private MUserQuery[] userQueries;
private Rows contentSimpleRows;
private Row pnlDocument;
private Row pnlDescription;
private Row pnlValue;
private Row pnlName;
/** Index ColumnName = 0 */ /** Index ColumnName = 0 */
public static final int INDEX_COLUMNNAME = 0; public static final int INDEX_COLUMNNAME = 0;
@ -267,42 +277,38 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
hboxButton.appendChild(pnlButtonRight); hboxButton.appendChild(pnlButtonRight);
hboxButton.setWidth("100%"); hboxButton.setWidth("100%");
Panel pnlDocument = new Panel(); pnlDocument = new Row();
pnlDocument.setId("pnlDocument"); pnlDocument.setId("pnlDocument");
pnlDocument.appendChild(lblDocumentNo); pnlDocument.appendChild(LayoutUtils.makeRightAlign(lblDocumentNo));
pnlDocument.appendChild(fieldDocumentNo); pnlDocument.appendChild(fieldDocumentNo);
pnlDocument.setWidth("70%");
pnlDocument.setAlign("right");
Panel pnlDescription = new Panel(); pnlDescription = new Row();
pnlDescription.appendChild(lblDescription); pnlDescription.appendChild(LayoutUtils.makeRightAlign(lblDescription));
pnlDescription.appendChild(fieldDescription); pnlDescription.appendChild(fieldDescription);
pnlDescription.setWidth("70%");
pnlDescription.setAlign("right");
Panel pnlValue = new Panel(); pnlValue = new Row();
pnlValue.appendChild(lblValue); pnlValue.appendChild(LayoutUtils.makeRightAlign(lblValue));
pnlValue.appendChild(fieldValue); pnlValue.appendChild(fieldValue);
pnlValue.setWidth("70%");
pnlValue.setAlign("right");
Panel pnlName = new Panel(); pnlName = new Row();
pnlName.appendChild(lblName); pnlName.appendChild(LayoutUtils.makeRightAlign(lblName));
pnlName.appendChild(fieldName); pnlName.appendChild(fieldName);
pnlName.setWidth("70%");
pnlName.setAlign("right");
contentSimple = new Vbox(); contentSimple = new Grid();
contentSimple.setId("contentSimple"); contentSimple.setId("contentSimple");
contentSimple.setWidth("100%"); contentSimple.setWidth("100%");
contentSimple.setStyle("padding:10px; text-align:left"); contentSimple.makeNoStrip();
contentSimple.appendChild(pnlValue); contentSimpleRows = new Rows();
contentSimple.appendChild(pnlName); contentSimple.appendChild(contentSimpleRows);
contentSimple.appendChild(pnlDocument);
contentSimple.appendChild(pnlDescription); contentSimpleRows.appendChild(pnlValue);
contentSimpleRows.appendChild(pnlName);
contentSimpleRows.appendChild(pnlDocument);
contentSimpleRows.appendChild(pnlDescription);
winLookupRecord.appendChild(contentSimple); winLookupRecord.appendChild(contentSimple);
winLookupRecord.appendChild(new Separator());
winLookupRecord.appendChild(hboxButton); winLookupRecord.appendChild(hboxButton);
winLookupRecord.setWidth("100%"); winLookupRecord.setWidth("100%");
winLookupRecord.addEventListener(Events.ON_OK, this); winLookupRecord.addEventListener(Events.ON_OK, this);
@ -452,20 +458,16 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
} // for all target tab fields } // for all target tab fields
// Disable simple query fields // Disable simple query fields
lblValue.setVisible(hasValue); pnlValue.setVisible(hasValue);
fieldValue.setVisible(hasValue);
if (hasValue) if (hasValue)
fieldValue.addEventListener(Events.ON_CHANGE,this); fieldValue.addEventListener(Events.ON_CHANGE,this);
lblDocumentNo.setVisible(hasDocNo); pnlDocument.setVisible(hasDocNo);
fieldDocumentNo.setVisible(hasDocNo);
if (hasDocNo) if (hasDocNo)
fieldDocumentNo.addEventListener(Events.ON_CHANGE,this); fieldDocumentNo.addEventListener(Events.ON_CHANGE,this);
lblName.setVisible(hasName); pnlName.setVisible(hasName);
fieldName.setVisible(hasName);
if (hasName) if (hasName)
fieldName.addEventListener(Events.ON_CHANGE,this); fieldName.addEventListener(Events.ON_CHANGE,this);
lblDescription.setVisible(hasDescription); pnlDescription.setVisible(hasDescription);
fieldDescription.setVisible(hasDescription);
if (hasDescription) if (hasDescription)
fieldDescription.addEventListener(Events.ON_CHANGE,this); fieldDescription.addEventListener(Events.ON_CHANGE,this);
@ -627,17 +629,9 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
// Editor // Editor
WEditor editor = null; WEditor editor = null;
if (mField.isLookup()) editor = WebEditorFactory.getEditor(mField, false);
{ editor.setMandatory(false);
WTableDirEditor wd = new WTableDirEditor(mField); editor.setReadWrite(true);
editor = wd;
}
else
{
editor = WebEditorFactory.getEditor(mField, false);
editor.setMandatory(false);
editor.setReadWrite(true);
}
Label label = editor.getLabel(); Label label = editor.getLabel();
Component fieldLabel = editor.getComponent(); Component fieldLabel = editor.getComponent();
@ -645,13 +639,12 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
if (displayLength > 0) // set it back if (displayLength > 0) // set it back
mField.setDisplayLength(displayLength); mField.setDisplayLength(displayLength);
// //
Panel panel = new Panel();
panel.setWidth("70%"); Row panel = new Row();
panel.setAlign("right"); panel.appendChild(LayoutUtils.makeRightAlign(label));
panel.appendChild(label);
panel.appendChild(fieldLabel); panel.appendChild(fieldLabel);
contentSimple.appendChild(panel); contentSimpleRows.appendChild(panel);
m_sEditors.add(editor); m_sEditors.add(editor);
} // addSelectionColumn } // addSelectionColumn
@ -1684,8 +1677,8 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
if(evt.getSource() instanceof WSearchEditor) if(evt.getSource() instanceof WSearchEditor)
{ {
WSearchEditor se = (WSearchEditor) evt.getSource(); WSearchEditor se = (WSearchEditor) evt.getSource();
String display = se.getGridField().getLookup().getDisplay(evt.getNewValue().toString()); se.setValue(evt.getNewValue());
label.setValue(display); label.setValue(se.getDisplay());
} }
else else
{ {