[ 2348226 ] Implement auto complete for combobox.

ProcessParameterPanel - Updated SQL for 3.5 changes.
Improve Grid view layout, sizing and field alignment.
Advance find - fixed saving and loading of user define query, improve usability.
This commit is contained in:
Heng Sin Low 2008-11-27 03:48:18 +00:00
parent 5226a75872
commit a6032c60c4
15 changed files with 396 additions and 214 deletions

View File

@ -27,6 +27,13 @@ public interface IDesktop {
* @return windowNo * @return windowNo
*/ */
public int registerWindow(Object window); public int registerWindow(Object window);
/**
*
* @param WindowNo
* @return Object
*/
public Object findWindow(int WindowNo);
/** /**
* close active window * close active window

View File

@ -154,7 +154,8 @@ implements ValueChangeListener, IProcessParameter
+ "p.AD_Reference_ID, p.AD_Process_Para_ID, " + "p.AD_Reference_ID, p.AD_Process_Para_ID, "
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, " + "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, " + "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
+ "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode " + "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode, "
+ "p.ReadOnlyLogic, p.DisplayLogic "
+ "FROM AD_Process_Para p" + "FROM AD_Process_Para p"
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) " + " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
+ "WHERE p.AD_Process_ID=?" // 1 + "WHERE p.AD_Process_ID=?" // 1
@ -165,7 +166,8 @@ implements ValueChangeListener, IProcessParameter
+ "p.AD_Reference_ID, p.AD_Process_Para_ID, " + "p.AD_Reference_ID, p.AD_Process_Para_ID, "
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, " + "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, " + "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
+ "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode " + "p.SeqNo, p.AD_Reference_Value_ID, vr.Code AS ValidationCode, "
+ "p.ReadOnlyLogic, p.DisplayLogic "
+ "FROM AD_Process_Para p" + "FROM AD_Process_Para p"
+ " INNER JOIN AD_Process_Para_Trl t ON (p.AD_Process_Para_ID=t.AD_Process_Para_ID)" + " INNER JOIN AD_Process_Para_Trl t ON (p.AD_Process_Para_ID=t.AD_Process_Para_ID)"
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) " + " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "

View File

@ -24,6 +24,7 @@ import java.math.*;
import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Button;
import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Checkbox;
import org.adempiere.webui.component.Combobox;
import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.GridFactory; import org.adempiere.webui.component.GridFactory;
@ -158,7 +159,7 @@ public abstract class WCreateFrom extends Window
protected Label bankAccountLabel = new Label(); protected Label bankAccountLabel = new Label();
protected Panel parameterStdPanel = new Panel(); protected Panel parameterStdPanel = new Panel();
protected Label bPartnerLabel = new Label(); protected Label bPartnerLabel = new Label();
protected Listbox bankAccountField; protected Combobox bankAccountField;
//RF [1811114] //RF [1811114]
protected Label authorizationLabel = new Label(); protected Label authorizationLabel = new Label();
protected WStringEditor authorizationField = new WStringEditor(); protected WStringEditor authorizationField = new WStringEditor();

View File

@ -27,21 +27,14 @@ public class ComboItem extends org.zkoss.zul.Comboitem
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Object obj;
public ComboItem(String label) public ComboItem(String label)
{ {
super(label); super(label);
} }
public ComboItem(String label, String object) public ComboItem(String label, Object value)
{ {
super(label); super(label);
this.obj = object; this.setValue(value);
} }
public Object getObject()
{
return obj;
}
} }

View File

@ -17,6 +17,8 @@
package org.adempiere.webui.component; package org.adempiere.webui.component;
import java.util.List;
import org.zkoss.zul.Comboitem; import org.zkoss.zul.Comboitem;
/** /**
@ -28,7 +30,7 @@ import org.zkoss.zul.Comboitem;
public class Combobox extends org.zkoss.zul.Combobox public class Combobox extends org.zkoss.zul.Combobox
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public void setEnabled(boolean enabled) public void setEnabled(boolean enabled)
{ {
this.setDisabled(!enabled); this.setDisabled(!enabled);
@ -40,4 +42,66 @@ public class Combobox extends org.zkoss.zul.Combobox
item.setParent(this); item.setParent(this);
return item; return item;
} }
public boolean isEnabled() {
return !isDisabled();
}
/**
* remove all items, to ease porting of swing form
*/
public void removeAllItems() {
int cnt = getItemCount();
for (int i = cnt - 1; i >=0; i--) {
removeItemAt(i);
}
}
public void appendItem(String name, Object value) {
ComboItem item = new ComboItem(name, value);
this.appendChild(item);
}
/**
* Set selected item for the list box based on the value of list item
* set selected to none if no item found matching the value given or
* value is null
* @param value Value of ListItem to set as selected
*/
public void setValue(Object value)
{
setSelectedItem(null);
if (value == null)
{
return ;
}
List<Comboitem> items = getItems();
for (Comboitem item : items)
{
if (value.getClass() != item.getValue().getClass()) {
// if the classes of value and item are different convert both to String
String stringValue = value.toString();
String stringItem = item.getValue().toString();
if (stringValue.equals(stringItem))
{
setSelectedItem(item);
break;
}
} else {
if (value.equals(item.getValue()))
{
setSelectedItem(item);
break;
}
}
}
}
/** Returns RS_NO_WIDTH|RS_NO_HEIGHT.
*/
protected int getRealStyleFlags() {
return super.getRealStyleFlags() & 0x0006;
}
} }

View File

@ -24,6 +24,7 @@ import org.adempiere.webui.editor.WEditor;
import org.compiere.model.GridField; import org.compiere.model.GridField;
import org.compiere.model.GridTab; import org.compiere.model.GridTab;
import org.compiere.model.GridTable; import org.compiere.model.GridTable;
import org.compiere.util.DisplayType;
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;
@ -190,7 +191,10 @@ public class GridPanel extends Borderlayout implements EventListener
ListHeader colHeader = new ListHeader(); ListHeader colHeader = new ListHeader();
colHeader.setSort("auto"); colHeader.setSort("auto");
colHeader.setLabel(gridField[i].getHeader()); colHeader.setLabel(gridField[i].getHeader());
int l = gridField[i].getDisplayLength() * 10; int l = DisplayType.isNumeric(gridField[i].getDisplayType())
? 100 : gridField[i].getDisplayLength() * 9;
if (gridField[i].getHeader().length() * 9 > l)
l = gridField[i].getHeader().length() * 9;
if (l > MAX_COLUMN_WIDTH) if (l > MAX_COLUMN_WIDTH)
l = MAX_COLUMN_WIDTH; l = MAX_COLUMN_WIDTH;
else if ( l < MIN_COLUMN_WIDTH) else if ( l < MIN_COLUMN_WIDTH)
@ -331,4 +335,12 @@ public class GridPanel extends Borderlayout implements EventListener
} }
} // all components } // all components
} }
/**
*
* @param windowNo
*/
public void setWindowNo(int windowNo) {
this.windowNo = windowNo;
}
} }

View File

@ -20,11 +20,15 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import org.adempiere.webui.editor.WButtonEditor;
import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WEditor;
import org.adempiere.webui.editor.WEditorPopupMenu; import org.adempiere.webui.editor.WEditorPopupMenu;
import org.adempiere.webui.editor.WebEditorFactory; import org.adempiere.webui.editor.WebEditorFactory;
import org.adempiere.webui.event.ContextMenuListener; import org.adempiere.webui.event.ContextMenuListener;
import org.adempiere.webui.panel.AbstractADWindowPanel;
import org.adempiere.webui.session.SessionManager;
import org.adempiere.webui.util.GridTabDataBinder; import org.adempiere.webui.util.GridTabDataBinder;
import org.adempiere.webui.window.ADWindow;
import org.compiere.model.GridField; import org.compiere.model.GridField;
import org.compiere.model.GridTab; import org.compiere.model.GridTab;
import org.compiere.model.MAccountLookup; import org.compiere.model.MAccountLookup;
@ -33,6 +37,7 @@ import org.compiere.model.MLookupFactory;
import org.compiere.util.DisplayType; import org.compiere.util.DisplayType;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.NamePair; import org.compiere.util.NamePair;
import org.zkoss.zk.ui.HtmlBasedComponent;
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;
@ -95,6 +100,9 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender
} else { } else {
cell = new Listcell(getDisplayText(values[i], i), null); cell = new Listcell(getDisplayText(values[i], i), null);
cell.setParent(listitem); cell.setParent(listitem);
if (DisplayType.isNumeric(gridField[i].getDisplayType())) {
cell.setStyle("text-align:right");
}
} }
} }
CellListener listener = new CellListener((Listbox) listitem.getParent()); CellListener listener = new CellListener((Listbox) listitem.getParent());
@ -116,11 +124,26 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender
Listcell cell = new Listcell("", null); Listcell cell = new Listcell("", null);
WEditor editor = editors.get(gridField); WEditor editor = editors.get(gridField);
if (editor != null) { if (editor != null) {
editor.addValueChangeListener(dataBinder); 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);
}
}
else
{
editor.addValueChangeListener(dataBinder);
}
cell.appendChild(editor.getComponent()); cell.appendChild(editor.getComponent());
if (editor.getComponent() instanceof Checkbox) { if (editor.getComponent() instanceof Checkbox) {
cell.setStyle("text-align:center"); cell.setStyle("text-align:center");
} }
else if (DisplayType.isNumeric(gridField.getDisplayType())) {
cell.setStyle("text-align:right");
}
gridField.addPropertyChangeListener(editor); gridField.addPropertyChangeListener(editor);
editor.setValue(gridField.getValue()); editor.setValue(gridField.getValue());
WEditorPopupMenu popupMenu = editor.getPopupMenu(); WEditorPopupMenu popupMenu = editor.getPopupMenu();
@ -130,6 +153,24 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender
popupMenu.addMenuListener((ContextMenuListener)editor); popupMenu.addMenuListener((ContextMenuListener)editor);
cell.appendChild(popupMenu); cell.appendChild(popupMenu);
} }
//streach component to fill grid cell
if (editor.getComponent() instanceof HtmlBasedComponent) {
//can't stretch bandbox & datebox
if (!(editor.getComponent() instanceof Bandbox) &&
!(editor.getComponent() instanceof Datebox)) {
String width = "100%";
if (editor.getComponent() instanceof Button) {
Button btn = (Button) editor.getComponent();
String zclass = btn.getZclass();
if (!zclass.contains("form-button ")) {
btn.setZclass("form-button " + zclass);
}
} else {
((HtmlBasedComponent)editor.getComponent()).setWidth(width);
}
}
}
} }
return cell; return cell;
@ -201,37 +242,36 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender
return ""; return "";
GridField[] gridField = gridTab.getFields(); GridField[] gridField = gridTab.getFields();
if (gridTab.getTableModel().getColumnClass(columnIndex).equals(Integer.class)) if (gridField[columnIndex].isLookup())
{ {
if (gridField[columnIndex].isLookup()) NamePair namepair = null;
{ if (gridField[columnIndex].getDisplayType() == DisplayType.Account)
NamePair namepair = null; {
if (gridField[columnIndex].getDisplayType() == DisplayType.Account) MAccountLookup lookup = new MAccountLookup(Env.getCtx(), windowNo);
{ namepair = lookup.get(value);
MAccountLookup lookup = new MAccountLookup(Env.getCtx(), windowNo); }
namepair = lookup.get(value); else
} {
else MLookup lookup = MLookupFactory.get(
{ Env.getCtx(), windowNo, 0, gridField[columnIndex].getAD_Column_ID(),
MLookup lookup = MLookupFactory.get( gridField[columnIndex].getDisplayType());
Env.getCtx(), windowNo, 0, gridField[columnIndex].getAD_Column_ID(),
gridField[columnIndex].getDisplayType()); namepair = lookup.get(value);
}
namepair = lookup.get(value); if (namepair != null)
} return namepair.getName();
if (namepair != null) else
return namepair.getName(); return "";
else
return "";
}
else
return value.toString();
} }
else if (gridTab.getTableModel().getColumnClass(columnIndex).equals(Timestamp.class)) else if (gridTab.getTableModel().getColumnClass(columnIndex).equals(Timestamp.class))
{ {
SimpleDateFormat dateFormat = DisplayType.getDateFormat(DisplayType.Date); SimpleDateFormat dateFormat = DisplayType.getDateFormat(DisplayType.Date);
return dateFormat.format((Timestamp)value); return dateFormat.format((Timestamp)value);
} }
else if (DisplayType.isNumeric(gridField[columnIndex].getDisplayType()))
{
return DisplayType.getNumberFormat(gridField[columnIndex].getDisplayType()).format(value);
}
else else
return value.toString(); return value.toString();
} }

View File

@ -17,8 +17,6 @@
package org.adempiere.webui.component; package org.adempiere.webui.component;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -40,7 +38,6 @@ import org.zkoss.zul.Listitem;
public class Listbox extends org.zkoss.zul.Listbox implements EventListener public class Listbox extends org.zkoss.zul.Listbox implements EventListener
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private PropertyChangeSupport m_propertyChangeListeners = new PropertyChangeSupport(this);
private List<EventListener> doubleClickListeners = new ArrayList<EventListener>(); private List<EventListener> doubleClickListeners = new ArrayList<EventListener>();
private List<EventListener> onDropListeners = new ArrayList<EventListener>(); private List<EventListener> onDropListeners = new ArrayList<EventListener>();
@ -99,11 +96,6 @@ public class Listbox extends org.zkoss.zul.Listbox implements EventListener
return (List<ListItem>)super.getItems(); return (List<ListItem>)super.getItems();
} }
public synchronized void addPropertyChangeListener(PropertyChangeListener l)
{
m_propertyChangeListeners.addPropertyChangeListener(l);
}
/** /**
* Set selected item for the list box based on the value of list item * Set selected item for the list box based on the value of list item
* set selected to none if no item found matching the value given or * set selected to none if no item found matching the value given or

View File

@ -24,8 +24,7 @@ import javax.swing.event.ListDataListener;
import org.adempiere.webui.ValuePreference; import org.adempiere.webui.ValuePreference;
import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.ListItem; import org.adempiere.webui.component.Combobox;
import org.adempiere.webui.component.Listbox;
import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuEvent;
import org.adempiere.webui.event.ContextMenuListener; import org.adempiere.webui.event.ContextMenuListener;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
@ -40,6 +39,7 @@ import org.compiere.util.NamePair;
import org.compiere.util.ValueNamePair; import org.compiere.util.ValueNamePair;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Comboitem;
/** /**
* *
@ -52,7 +52,8 @@ ContextMenuListener, IZoomableEditor
{ {
public final static String[] LISTENER_EVENTS = {Events.ON_SELECT}; public final static String[] LISTENER_EVENTS = {Events.ON_SELECT};
private static final CLogger logger; @SuppressWarnings("unused")
private static final CLogger logger;
static static
{ {
@ -65,7 +66,7 @@ ContextMenuListener, IZoomableEditor
public WTableDirEditor(GridField gridField) public WTableDirEditor(GridField gridField)
{ {
super(new Listbox(), gridField); super(new Combobox(), gridField);
lookup = gridField.getLookup(); lookup = gridField.getLookup();
init(); init();
} }
@ -82,7 +83,7 @@ ContextMenuListener, IZoomableEditor
*/ */
public WTableDirEditor(Lookup lookup, String label, String description, boolean mandatory, boolean readonly, boolean updateable) public WTableDirEditor(Lookup lookup, String label, String description, boolean mandatory, boolean readonly, boolean updateable)
{ {
super(new Listbox(), label, description, mandatory, readonly, updateable); super(new Combobox(), label, description, mandatory, readonly, updateable);
if (lookup == null) if (lookup == null)
{ {
@ -105,7 +106,7 @@ ContextMenuListener, IZoomableEditor
public WTableDirEditor(String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable, public WTableDirEditor(String columnName, boolean mandatory, boolean isReadOnly, boolean isUpdateable,
Lookup lookup) Lookup lookup)
{ {
super(new Listbox(), columnName, null, null, mandatory, isReadOnly, isUpdateable); super(new Combobox(), columnName, null, null, mandatory, isReadOnly, isUpdateable);
if (lookup == null) if (lookup == null)
{ {
throw new IllegalArgumentException("Lookup cannot be null"); throw new IllegalArgumentException("Lookup cannot be null");
@ -116,11 +117,10 @@ ContextMenuListener, IZoomableEditor
private void init() private void init()
{ {
getComponent().setRows(0);
getComponent().setMultiple(false);
getComponent().setMold("select");
getComponent().setWidth("200px"); getComponent().setWidth("200px");
getComponent().addPropertyChangeListener(this); getComponent().setAutocomplete(true);
getComponent().setAutodrop(true);
getComponent().addEventListener(Events.ON_BLUR, this);
boolean zoom= false; boolean zoom= false;
if (lookup != null) if (lookup != null)
@ -153,7 +153,7 @@ ContextMenuListener, IZoomableEditor
{ {
String display = null; String display = null;
ListItem selItem = getComponent().getSelectedItem(); Comboitem selItem = getComponent().getSelectedItem();
if (selItem != null) if (selItem != null)
{ {
display = selItem.getLabel(); display = selItem.getLabel();
@ -165,7 +165,7 @@ ContextMenuListener, IZoomableEditor
public Object getValue() public Object getValue()
{ {
Object retVal = null; Object retVal = null;
ListItem selItem = getComponent().getSelectedItem(); Comboitem selItem = getComponent().getSelectedItem();
if (selItem != null) if (selItem != null)
{ {
retVal = selItem.getValue(); retVal = selItem.getValue();
@ -198,8 +198,8 @@ ContextMenuListener, IZoomableEditor
} }
@Override @Override
public Listbox getComponent() { public Combobox getComponent() {
return (Listbox) component; return (Combobox) component;
} }
@Override @Override
@ -266,6 +266,13 @@ ContextMenuListener, IZoomableEditor
super.fireValueChange(changeEvent); super.fireValueChange(changeEvent);
oldValue = newValue; oldValue = newValue;
} }
else if (Events.ON_BLUR.equalsIgnoreCase(event.getName()))
{
if (getComponent().getSelectedItem() == null)
{
setValue(null);
}
}
} }
public String[] getEvents() public String[] getEvents()

View File

@ -72,8 +72,6 @@ import org.zkoss.zkex.zul.Center;
import org.zkoss.zkex.zul.West; import org.zkoss.zkex.zul.West;
import org.zkoss.zul.Div; import org.zkoss.zul.Div;
import org.zkoss.zul.Group; import org.zkoss.zul.Group;
import org.zkoss.zul.Groupfoot;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Separator; import org.zkoss.zul.Separator;
import org.zkoss.zul.SimpleTreeNode; import org.zkoss.zul.SimpleTreeNode;
import org.zkoss.zul.Space; import org.zkoss.zul.Space;
@ -97,7 +95,9 @@ public class ADTabpanel extends Div implements Evaluatee, EventListener,
DataStatusListener, IADTabpanel DataStatusListener, IADTabpanel
{ {
private static final CLogger logger; private static final long serialVersionUID = 212250368715189455L;
private static final CLogger logger;
static static
{ {
@ -215,6 +215,7 @@ DataStatusListener, IADTabpanel
} }
this.appendChild(listPanel); this.appendChild(listPanel);
listPanel.setVisible(false); listPanel.setVisible(false);
listPanel.setWindowNo(windowNo);
} }
public void createUI() public void createUI()

View File

@ -415,7 +415,7 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To
GridField[] findFields = mTab.getFields(); GridField[] findFields = mTab.getFields();
FindWindow find = new FindWindow(curWindowNo, FindWindow find = new FindWindow(curWindowNo,
mTab.getName(), mTab.getAD_Table_ID(), mTab.getTableName(), mTab.getName(), mTab.getAD_Table_ID(), mTab.getTableName(),
where.toString(), findFields, 10); // no query below 10 where.toString(), findFields, 10, mTab.getAD_Tab_ID()); // no query below 10
if (find.getTitle() != null && find.getTitle().length() > 0) { if (find.getTitle() != null && find.getTitle().length() > 0) {
// Title is not set when the number of rows is below the minRecords parameter (10) // Title is not set when the number of rows is below the minRecords parameter (10)
find.setVisible(true); find.setVisible(true);
@ -952,7 +952,7 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To
GridField[] findFields = GridField.createFields(ctx, curTab.getWindowNo(), 0,curTab.getAD_Tab_ID()); GridField[] findFields = GridField.createFields(ctx, curTab.getWindowNo(), 0,curTab.getAD_Tab_ID());
FindWindow find = new FindWindow (curTab.getWindowNo(), curTab.getName(), FindWindow find = new FindWindow (curTab.getWindowNo(), curTab.getName(),
curTab.getAD_Table_ID(), curTab.getTableName(), curTab.getAD_Table_ID(), curTab.getTableName(),
curTab.getWhereExtended(), findFields, 1); curTab.getWhereExtended(), findFields, 1, curTab.getAD_Tab_ID());
AEnv.showWindow(find); AEnv.showWindow(find);
MQuery query = find.getQuery(); MQuery query = find.getQuery();

View File

@ -23,27 +23,70 @@ import org.zkoss.zk.ui.Component;
*/ */
public interface IADTabpanel extends Component, Evaluatee { public interface IADTabpanel extends Component, Evaluatee {
/**
* @return display logic
*/
public String getDisplayLogic(); public String getDisplayLogic();
/**
* @return tab level
*/
public int getTabLevel(); public int getTabLevel();
/**
* @return true if refresh is not needed
*/
public boolean isCurrent(); public boolean isCurrent();
/**
*
* @return title
*/
public String getTitle(); public String getTitle();
/**
* Render the panel
*/
public void createUI(); public void createUI();
/**
*
* @return GridTab
*/
public GridTab getGridTab(); public GridTab getGridTab();
/**
* activate/deactivate the panel
* @param b
*/
public void activate(boolean b); public void activate(boolean b);
/**
* retrieve data from db
*/
public void query(); public void query();
/**
* Refresh from db
*/
public void refresh(); public void refresh();
public void query(boolean currentRows, int currentDays, int i); /**
* retrieve data from db
* @param currentRows
* @param currentDays
* @param maxRows
*/
public void query(boolean currentRows, int currentDays, int maxRows);
/**
* Toggle between grid and form view
*/
public void switchRowPresentation(); public void switchRowPresentation();
/**
* Dynamic update of field properties ( visibility, filter and mandatory )
* @param i
*/
public void dynamicDisplay(int i); public void dynamicDisplay(int i);
} }

View File

@ -51,7 +51,6 @@ import org.adempiere.webui.component.ToolBarButton;
import org.adempiere.webui.component.Window; import org.adempiere.webui.component.Window;
import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WEditor;
import org.adempiere.webui.editor.WNumberEditor; import org.adempiere.webui.editor.WNumberEditor;
import org.adempiere.webui.editor.WSearchEditor;
import org.adempiere.webui.editor.WStringEditor; import org.adempiere.webui.editor.WStringEditor;
import org.adempiere.webui.editor.WebEditorFactory; import org.adempiere.webui.editor.WebEditorFactory;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
@ -138,14 +137,6 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
private boolean hasDocNo = false; private boolean hasDocNo = false;
private boolean hasName = false; private boolean hasName = false;
private boolean hasDescription = false; private boolean hasDescription = false;
/** Line in Simple Content */
// private int sLine = 6;
/** Value 2(to) */
private boolean m_valueToColumn;
/** Between selected */
private boolean m_between = false;
/** Editor */
private WEditor m_editor = null;
/** List of WEditors */ /** List of WEditors */
private ArrayList<WEditor> m_sEditors = new ArrayList<WEditor>(); private ArrayList<WEditor> m_sEditors = new ArrayList<WEditor>();
/** Target Fields with AD_Column_ID as key */ /** Target Fields with AD_Column_ID as key */
@ -155,7 +146,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
/** Length of Fields on first tab */ /** Length of Fields on first tab */
public static final int FIELDLENGTH = 20; public static final int FIELDLENGTH = 20;
private int m_AD_Tab_ID = 1; private int m_AD_Tab_ID = 0;
private MUserQuery[] userQueries; private MUserQuery[] userQueries;
private Rows contentSimpleRows; private Rows contentSimpleRows;
private Row pnlDocument; private Row pnlDocument;
@ -184,16 +175,18 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
* @param whereExtended whereExtended * @param whereExtended whereExtended
* @param findFields findFields * @param findFields findFields
* @param minRecords minRecords * @param minRecords minRecords
* @param adTabId
**/ **/
public FindWindow (int targetWindowNo, String title, public FindWindow (int targetWindowNo, String title,
int AD_Table_ID, String tableName, String whereExtended, int AD_Table_ID, String tableName, String whereExtended,
GridField[] findFields, int minRecords) GridField[] findFields, int minRecords, int adTabId)
{ {
m_targetWindowNo = targetWindowNo; m_targetWindowNo = targetWindowNo;
m_AD_Table_ID = AD_Table_ID; m_AD_Table_ID = AD_Table_ID;
m_tableName = tableName; m_tableName = tableName;
m_whereExtended = whereExtended; m_whereExtended = whereExtended;
m_findFields = findFields; m_findFields = findFields;
m_AD_Tab_ID = adTabId;
// //
m_query = new MQuery (m_tableName); m_query = new MQuery (m_tableName);
m_query.addRestriction(m_whereExtended); m_query.addRestriction(m_whereExtended);
@ -213,8 +206,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
this.setBorder("normal"); this.setBorder("normal");
this.setWidth("700px"); this.setWidth("700px");
this.setTitle(Msg.getMsg(Env.getCtx(), "Find").replaceAll("&", "") + ": " + title); this.setTitle(Msg.getMsg(Env.getCtx(), "Find").replaceAll("&", "") + ": " + title);
this.setAttribute("modal", Boolean.TRUE); this.setAttribute(Window.MODE_KEY, Window.MODE_MODAL);
// this.setAttribute("mode", "modal");
this.setClosable(true); this.setClosable(true);
this.setSizable(true); this.setSizable(true);
} }
@ -252,19 +244,19 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
Button btnNew = new Button(); Button btnNew = new Button();
btnNew.setName("btnNew"); btnNew.setName("btnNew");
btnNew.setSrc("/images/New24.png"); btnNew.setImage("/images/New24.png");
btnNew.addEventListener(Events.ON_CLICK,this); btnNew.addEventListener(Events.ON_CLICK,this);
LayoutUtils.addSclass("action-button", btnNew); LayoutUtils.addSclass("action-button", btnNew);
Button btnOk = new Button(); Button btnOk = new Button();
btnOk.setName("btnOkSimple"); btnOk.setName("btnOkSimple");
btnOk.setSrc("/images/Ok24.png"); btnOk.setImage("/images/Ok24.png");
btnOk.addEventListener(Events.ON_CLICK,this); btnOk.addEventListener(Events.ON_CLICK,this);
LayoutUtils.addSclass("action-button", btnOk); LayoutUtils.addSclass("action-button", btnOk);
Button btnCancel = new Button(); Button btnCancel = new Button();
btnCancel.setName("btnCancel"); btnCancel.setName("btnCancel");
btnCancel.setSrc("/images/Cancel24.png"); btnCancel.setImage("/images/Cancel24.png");
btnCancel.addEventListener(Events.ON_CLICK,this); btnCancel.addEventListener(Events.ON_CLICK,this);
LayoutUtils.addSclass("action-button", btnCancel); LayoutUtils.addSclass("action-button", btnCancel);
@ -327,18 +319,18 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
private void initAdvanced() private void initAdvanced()
{ {
ToolBarButton btnNew = new ToolBarButton(); ToolBarButton btnNew = new ToolBarButton();
btnNew.setSrc("/images/New24.png"); btnNew.setImage("/images/New24.png");
btnNew.setAttribute("name", "btnNewAdv"); btnNew.setAttribute("name", "btnNewAdv");
btnNew.addEventListener(Events.ON_CLICK, this); btnNew.addEventListener(Events.ON_CLICK, this);
ToolBarButton btnDelete = new ToolBarButton(); ToolBarButton btnDelete = new ToolBarButton();
btnDelete.setAttribute("name","btnDeleteAdv"); btnDelete.setAttribute("name","btnDeleteAdv");
btnDelete.setSrc("/images/Delete24.png"); btnDelete.setImage("/images/Delete24.png");
btnDelete.addEventListener(Events.ON_CLICK, this); btnDelete.addEventListener(Events.ON_CLICK, this);
ToolBarButton btnSave = new ToolBarButton(); ToolBarButton btnSave = new ToolBarButton();
btnSave.setAttribute("name","btnSaveAdv"); btnSave.setAttribute("name","btnSaveAdv");
btnSave.setSrc("/images/Save24.png"); btnSave.setImage("/images/Save24.png");
btnSave.addEventListener(Events.ON_CLICK, this); btnSave.addEventListener(Events.ON_CLICK, this);
fQueryName = new Combobox(); fQueryName = new Combobox();
@ -355,13 +347,15 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
Button btnOk = new Button(); Button btnOk = new Button();
btnOk.setName("btnOkAdv"); btnOk.setName("btnOkAdv");
btnOk.setSrc("/images/Ok24.png"); btnOk.setImage("/images/Ok24.png");
btnOk.addEventListener(Events.ON_CLICK, this); btnOk.addEventListener(Events.ON_CLICK, this);
LayoutUtils.addSclass("action-button", btnOk);
Button btnCancel = new Button(); Button btnCancel = new Button();
btnCancel.setName("btnCancel"); btnCancel.setName("btnCancel");
btnCancel.setSrc("/images/Cancel24.png"); btnCancel.setImage("/images/Cancel24.png");
btnCancel.addEventListener(Events.ON_CLICK, this); btnCancel.addEventListener(Events.ON_CLICK, this);
LayoutUtils.addSclass("action-button", btnCancel);
Panel pnlButtonRight = new Panel(); Panel pnlButtonRight = new Panel();
pnlButtonRight.appendChild(btnOk); pnlButtonRight.appendChild(btnOk);
@ -370,10 +364,13 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
ToolBar toolBar = new ToolBar(); ToolBar toolBar = new ToolBar();
toolBar.appendChild(btnNew); toolBar.appendChild(btnNew);
toolBar.appendChild(btnDelete); toolBar.appendChild(btnDelete);
toolBar.appendChild(fQueryName); toolBar.appendChild(fQueryName);
toolBar.appendChild(btnSave); toolBar.appendChild(btnSave);
toolBar.setWidth("100%"); toolBar.setWidth("100%");
fQueryName.setStyle("margin-left: 3px; margin-right: 3px; position: relative; top: 5px;");
btnSave.setDisabled(m_AD_Tab_ID <= 0);
Hbox confirmPanel = new Hbox(); Hbox confirmPanel = new Hbox();
confirmPanel.appendChild(pnlButtonRight); confirmPanel.appendChild(pnlButtonRight);
@ -739,27 +736,6 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
dispose(); dispose();
} }
} }
else if (event.getTarget() instanceof Label)
{
Label label = (Label)event.getTarget();
String value = label.getValue();
ListCell listcell = (ListCell)label.getParent();
ListItem row = (ListItem)listcell.getParent();
advancedPanel.setSelectedItem(row);
if (listcell.getId().equals("cellQueryFrom"+row.getId()))
{
Component component = getEditorCompQueryFrom(row);
addRowEditor(component, listcell);
m_editor.setValue(value);
}
else if (listcell.getId().equals("cellQueryTo"+row.getId()))
{
Component component = getEditorCompQueryTo(row);
addRowEditor(component,listcell);
m_editor.setValue(value);
}
}
} }
else if (Events.ON_OK.equals(event.getName())) else if (Events.ON_OK.equals(event.getName()))
{ {
@ -782,7 +758,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
String code = userQuery.getCode(); String code = userQuery.getCode();
String[] segments = code.split(Pattern.quote(SEGMENT_SEPARATOR)); String[] segments = code.split(Pattern.quote(SEGMENT_SEPARATOR));
List rowList = advancedPanel.getChildren(); List<?> rowList = advancedPanel.getChildren();
for (int rowIndex = rowList.size() - 1; rowIndex >= 1; rowIndex--) for (int rowIndex = rowList.size() - 1; rowIndex >= 1; rowIndex--)
rowList.remove(rowIndex); rowList.remove(rowIndex);
@ -792,6 +768,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
ListItem listItem = new ListItem(); ListItem listItem = new ListItem();
listItem.setWidth("100%"); listItem.setWidth("100%");
advancedPanel.appendChild(listItem);
Listbox listColumn = new Listbox(); Listbox listColumn = new Listbox();
listColumn.setId("listColumn"+listItem.getId()); listColumn.setId("listColumn"+listItem.getId());
@ -832,17 +809,14 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
String value = fields.length > INDEX_VALUE ? fields[INDEX_VALUE] : ""; String value = fields.length > INDEX_VALUE ? fields[INDEX_VALUE] : "";
if(value.length() > 0) if(value.length() > 0)
{ {
cellQueryFrom.appendChild(parseString(getTargetMField(columnName), value)); cellQueryFrom.appendChild(parseString(getTargetMField(columnName), value, listItem, false));
} }
String value2 = fields.length > INDEX_VALUE2 ? fields[INDEX_VALUE2] : ""; String value2 = fields.length > INDEX_VALUE2 ? fields[INDEX_VALUE2] : "";
if(value2.length() > 0) if(value2.length() > 0)
{ {
cellQueryTo.appendChild(parseString(getTargetMField(columnName), value2)); cellQueryTo.appendChild(parseString(getTargetMField(columnName), value2, listItem, true));
} }
advancedPanel.appendChild(listItem);
// advancedPanel.setSelectedItem(listItem);
} }
advancedPanel.invalidate(); advancedPanel.invalidate();
@ -852,33 +826,36 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
* Parse String * Parse String
* @param field column * @param field column
* @param in value * @param in value
* @param to
* @param listItem
* @return data type corected value * @return data type corected value
*/ */
private Label parseString(GridField field, String in) private Component parseString(GridField field, String in, ListItem listItem, boolean to)
{ {
if (in == null) if (in == null)
return null; return null;
int dt = field.getDisplayType(); int dt = field.getDisplayType();
try try
{ {
WEditor editor = null;
if (field.isKey()) if (field.isKey())
m_editor = new WNumberEditor(field); editor = new WNumberEditor(field);
else else
m_editor = WebEditorFactory.getEditor(field, true); editor = WebEditorFactory.getEditor(field, true);
if (m_editor == null) if (editor == null)
m_editor = new WStringEditor(field); editor = new WStringEditor(field);
// Return Integer // Return Integer
if (dt == DisplayType.Integer if (dt == DisplayType.Integer
|| (DisplayType.isID(dt) && field.getColumnName().endsWith("_ID"))) || (DisplayType.isID(dt) && field.getColumnName().endsWith("_ID")))
{ {
int i = Integer.parseInt(in); int i = Integer.parseInt(in);
m_editor.setValue(new Integer(i)); editor.setValue(new Integer(i));
} }
// Return BigDecimal // Return BigDecimal
else if (DisplayType.isNumeric(dt)) else if (DisplayType.isNumeric(dt))
{ {
m_editor.setValue(DisplayType.getNumberFormat(dt).parse(in)); editor.setValue(DisplayType.getNumberFormat(dt).parse(in));
} }
// Return Timestamp // Return Timestamp
else if (DisplayType.isDate(dt)) else if (DisplayType.isDate(dt))
@ -887,7 +864,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
try try
{ {
time = DisplayType.getDateFormat_JDBC().parse(in).getTime(); time = DisplayType.getDateFormat_JDBC().parse(in).getTime();
m_editor.setValue(new Timestamp(time)); editor.setValue(new Timestamp(time));
} }
catch (Exception e) catch (Exception e)
{ {
@ -895,26 +872,30 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
time = DisplayType.getDateFormat(dt).parse(in).getTime(); time = DisplayType.getDateFormat(dt).parse(in).getTime();
} }
m_editor.setValue(new Timestamp(time)); editor.setValue(new Timestamp(time));
} }
else if (dt == DisplayType.YesNo) else if (dt == DisplayType.YesNo)
m_editor.setValue(Boolean.valueOf(in)); editor.setValue(Boolean.valueOf(in));
else else
m_editor.setValue(in); editor.setValue(in);
Label label = new Label(); editor.addValueChangeListener(this);
if(m_editor instanceof WSearchEditor)
{ boolean between = false;
WSearchEditor se = (WSearchEditor) m_editor; Listbox listOp = (Listbox) listItem.getFellow("listOperator"+listItem.getId());
String display = se.getGridField().getLookup().getDisplay(m_editor.getValue().toString()); String betweenValue = listOp.getSelectedItem().getValue().toString();
label.setValue(display); String opValue = MQuery.OPERATORS[MQuery.BETWEEN_INDEX].getValue();
} if (to && betweenValue != null
else && betweenValue.equals(opValue))
{ between = true;
label.setValue(m_editor.getDisplay());
} boolean enabled = !to || (to && between);
label.setAttribute("value", m_editor.getValue());
return label; editor.setReadWrite(enabled);
editor.setVisible(enabled);
editor.dynamicDisplay();
return editor.getComponent();
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -926,12 +907,11 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
private void cmd_save(boolean saveQuery) private void cmd_save(boolean saveQuery)
{ {
// advancedTable.stopEditor(true);
// //
m_query = new MQuery(m_tableName); m_query = new MQuery(m_tableName);
StringBuffer code = new StringBuffer(); StringBuffer code = new StringBuffer();
List rowList = advancedPanel.getChildren(); List<?> rowList = advancedPanel.getChildren();
for (int rowIndex = 1; rowIndex < rowList.size() ; rowIndex++) for (int rowIndex = 1; rowIndex < rowList.size() ; rowIndex++)
{ {
@ -955,12 +935,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
// Value ****** // Value ******
ListCell cellQueryFrom = (ListCell)row.getFellow("cellQueryFrom"+row.getId()); ListCell cellQueryFrom = (ListCell)row.getFellow("cellQueryFrom"+row.getId());
// Elaine 2008/07/29 Object value = cellQueryFrom.getAttribute("value");
if(!(cellQueryFrom.getChildren().get(0) instanceof Label))
continue;
//
Label labelFrom = (Label)(cellQueryFrom.getChildren().get(0));
Object value = labelFrom.getAttribute("value");
if (value == null) if (value == null)
continue; continue;
Object parsedValue = parseValue(field, value); Object parsedValue = parseValue(field, value);
@ -976,12 +951,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
if (MQuery.OPERATORS[MQuery.BETWEEN_INDEX].equals(op)) if (MQuery.OPERATORS[MQuery.BETWEEN_INDEX].equals(op))
{ {
ListCell cellQueryTo = (ListCell)row.getFellow("cellQueryTo"+row.getId()); ListCell cellQueryTo = (ListCell)row.getFellow("cellQueryTo"+row.getId());
// Elaine 2008/07/29 value2 = cellQueryTo.getAttribute("value");
if(!(cellQueryTo.getChildren().get(0) instanceof Label))
continue;
//
Label labelTo = (Label)(cellQueryTo.getChildren().get(0));
value2 = labelTo.getAttribute("value");
if (value2 == null) if (value2 == null)
continue; continue;
Object parsedValue2 = parseValue(field, value2); Object parsedValue2 = parseValue(field, value2);
@ -1075,9 +1045,6 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
**/ **/
private String getColumnName(ListItem row) private String getColumnName(ListItem row)
{ {
/*List list = row.getChildren();
Panel pnlColumn = (Panel)list.get(0);
List lstColumn = pnlColumn.getChildren();*/
Listbox listColumn = (Listbox)row.getFellow("listColumn"+row.getId()); Listbox listColumn = (Listbox)row.getFellow("listColumn"+row.getId());
String columnName = listColumn.getSelectedItem().getValue().toString(); String columnName = listColumn.getSelectedItem().getValue().toString();
@ -1092,8 +1059,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
**/ **/
private Component getEditorCompQueryFrom(ListItem row) private Component getEditorCompQueryFrom(ListItem row)
{ {
m_valueToColumn = false; return getEditorComponent(row, false);
return getEditorComponent(row);
} }
/** /**
@ -1103,8 +1069,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
**/ **/
private Component getEditorCompQueryTo(ListItem row) private Component getEditorCompQueryTo(ListItem row)
{ {
m_valueToColumn = true; return getEditorComponent(row, true);
return getEditorComponent(row);
} }
/** /**
@ -1149,7 +1114,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
**/ **/
private void addOperators(ValueNamePair[] op, Listbox listOperator) private void addOperators(ValueNamePair[] op, Listbox listOperator)
{ {
List itemList = listOperator.getChildren(); List<?> itemList = listOperator.getChildren();
itemList.clear(); itemList.clear();
for (ValueNamePair item: op) for (ValueNamePair item: op)
{ {
@ -1163,39 +1128,39 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
* @param row row * @param row row
* @return Editor component * @return Editor component
**/ **/
public Component getEditorComponent(ListItem row) public Component getEditorComponent(ListItem row, boolean to)
{ {
String columnName = getColumnName(row); String columnName = getColumnName(row);
m_between = false; boolean between = false;
Listbox listOp = (Listbox) row.getFellow("listOperator"+row.getId()); Listbox listOp = (Listbox) row.getFellow("listOperator"+row.getId());
String betweenValue = listOp.getSelectedItem().getValue().toString(); String betweenValue = listOp.getSelectedItem().getValue().toString();
String opValue = MQuery.OPERATORS[MQuery.BETWEEN_INDEX].getValue(); String opValue = MQuery.OPERATORS[MQuery.BETWEEN_INDEX].getValue();
if (m_valueToColumn && betweenValue != null if (to && betweenValue != null
&& betweenValue.equals(opValue)) && betweenValue.equals(opValue))
m_between = true; between = true;
boolean enabled = !m_valueToColumn || (m_valueToColumn && m_between); boolean enabled = !to || (to && between);
// Create Editor // Create Editor
GridField field = getTargetMField(columnName); GridField field = getTargetMField(columnName);
// log.fine( "Field=" + field.toStringX());
if(field == null) return new Label(""); if(field == null) return new Label("");
WEditor editor = null;
if (field.isKey()) if (field.isKey())
m_editor = new WNumberEditor(field); editor = new WNumberEditor(field);
else else
m_editor = WebEditorFactory.getEditor(field, true); editor = WebEditorFactory.getEditor(field, true);
if (m_editor == null) if (editor == null)
m_editor = new WStringEditor(field); editor = new WStringEditor(field);
field.addPropertyChangeListener(m_editor); field.addPropertyChangeListener(editor);
m_editor.addValueChangeListener(this); editor.addValueChangeListener(this);
m_editor.setValue(null); editor.setValue(null);
m_editor.setReadWrite(enabled); editor.setReadWrite(enabled);
m_editor.setVisible(enabled); editor.setVisible(enabled);
m_editor.dynamicDisplay(); editor.dynamicDisplay();
// //
return m_editor.getComponent(); return editor.getComponent();
} // getTableCellEditorComponent } // getTableCellEditorComponent
@ -1339,7 +1304,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
log.info(""); log.info("");
// //
m_query = new MQuery(m_tableName); m_query = new MQuery(m_tableName);
List rowList = advancedPanel.getChildren(); List<?> rowList = advancedPanel.getChildren();
for (int rowIndex = 1; rowIndex < rowList.size() ; rowIndex++) for (int rowIndex = 1; rowIndex < rowList.size() ; rowIndex++)
{ {
@ -1363,12 +1328,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
// Value ****** // Value ******
ListCell cellQueryFrom = (ListCell)row.getFellow("cellQueryFrom"+row.getId()); ListCell cellQueryFrom = (ListCell)row.getFellow("cellQueryFrom"+row.getId());
// Elaine 2008/07/29 Object value = cellQueryFrom.getAttribute("value");
if(!(cellQueryFrom.getChildren().get(0) instanceof Label))
continue;
//
Label labelFrom = (Label)(cellQueryFrom.getChildren().get(0));
Object value = labelFrom.getAttribute("value");
if (value == null) if (value == null)
continue; continue;
Object parsedValue = parseValue(field, value); Object parsedValue = parseValue(field, value);
@ -1383,12 +1343,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
if (MQuery.OPERATORS[MQuery.BETWEEN_INDEX].equals(op)) if (MQuery.OPERATORS[MQuery.BETWEEN_INDEX].equals(op))
{ {
ListCell cellQueryTo = (ListCell)row.getFellow("cellQueryTo"+row.getId()); ListCell cellQueryTo = (ListCell)row.getFellow("cellQueryTo"+row.getId());
// Elaine 2008/07/29 Object value2 = cellQueryTo.getAttribute("value");
if(!(cellQueryTo.getChildren().get(0) instanceof Label))
continue;
//
Label labelTo = (Label)(cellQueryTo.getChildren().get(0));
Object value2 = labelTo.getAttribute("value");
if (value2 == null) if (value2 == null)
continue; continue;
Object parsedValue2 = parseValue(field, value2); Object parsedValue2 = parseValue(field, value2);
@ -1539,7 +1494,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
**/ **/
private String getSubCategoriesString(int productCategoryId, Vector<SimpleTreeNode> categories, int loopIndicatorId) throws AdempiereSystemError { private String getSubCategoriesString(int productCategoryId, Vector<SimpleTreeNode> categories, int loopIndicatorId) throws AdempiereSystemError {
String ret = ""; String ret = "";
final Iterator iter = categories.iterator(); final Iterator<SimpleTreeNode> iter = categories.iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
SimpleTreeNode node = (SimpleTreeNode) iter.next(); SimpleTreeNode node = (SimpleTreeNode) iter.next();
if (node.getParentId() == productCategoryId) { if (node.getParentId() == productCategoryId) {
@ -1682,25 +1637,7 @@ public class FindWindow extends Window implements EventListener,ValueChangeListe
// Editor component // Editor component
Component component = editor.getComponent(); Component component = editor.getComponent();
ListCell listcell = (ListCell)component.getParent(); ListCell listcell = (ListCell)component.getParent();
listcell.setAttribute("value", evt.getNewValue());
// Elaine 2008/07/29
Label label = new Label();
if(evt.getSource() instanceof WSearchEditor)
{
WSearchEditor se = (WSearchEditor) evt.getSource();
se.setValue(evt.getNewValue());
label.setValue(se.getDisplay());
}
else
{
label.setValue(editor.getDisplay());
}
label.setAttribute("value", evt.getNewValue());
//
listcell.appendChild(label);
listcell.removeChild(component);
label.addEventListener(Events.ON_CLICK,this);
} }
} }

View File

@ -858,7 +858,7 @@ public class ZkReportViewer extends Window implements EventListener {
bFind.setVisible(false); bFind.setVisible(false);
else else
{ {
FindWindow find = new FindWindow(m_WindowNo, title, AD_Table_ID, tableName,"", findFields, 1); FindWindow find = new FindWindow(m_WindowNo, title, AD_Table_ID, tableName,"", findFields, 1, AD_Tab_ID);
find.setVisible(true); find.setVisible(true);
AEnv.showWindow(find); AEnv.showWindow(find);
m_reportEngine.setQuery(find.getQuery()); m_reportEngine.setQuery(find.getQuery());

View File

@ -0,0 +1,83 @@
/* Combobox2Default.java
{{IS_NOTE
Purpose:
Description:
History:
Jun 6, 2008 8:57:53 AM , Created by jumperchen
}}IS_NOTE
Copyright (C) 2008 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under GPL Version 2.0 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.zkmax.zul.render;
import java.io.IOException;
import java.io.Writer;
import javax.servlet.ServletRequest;
import org.zkoss.util.Utils;
import org.zkoss.web.servlet.Servlets;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Execution;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.render.ComponentRenderer;
import org.zkoss.zk.ui.render.SmartWriter;
import org.zkoss.zul.Combobox;
/**
* {@link Combobox}'s default mold.
*
* @author jumperchen
*
* @since 3.5.0
*
* @author hengsin
* modify default zk layout for combobox
*/
public class Combobox2Default implements ComponentRenderer {
public void render(Component comp, Writer out) throws IOException {
final SmartWriter wh = new SmartWriter(out);
final Combobox self = (Combobox) comp;
final String uuid = self.getUuid();
final String zcls = self.getZclass();
final Execution exec = Executions.getCurrent();
String tableStyle = "display:inline-block";
String inputAttrs = self.getInnerAttrs();
if (inputAttrs.indexOf("style") >= 0) {
inputAttrs = inputAttrs.substring(0, inputAttrs.indexOf("style"));
}
inputAttrs = inputAttrs.trim() + " style='width: 100%'";
wh.write("<span id=\"").write(uuid).write("\"")
.write(self.getOuterAttrs())
.write(" z.type=\"zul.cb.Cmbox\" z.combo=\"true\">")
.write("<table border='0' cellspacing='0' cellpadding='0'")
.write(" width='").write(self.getWidth()).write("'")
.write(" style='"). write(tableStyle).write("'>")
.write("<tr style='width:100%; white-space:nowrap;'><td style='width: 100%'><input id=\"")
.write(uuid).write("!real\" autocomplete=\"off\"")
.write(" class=\"").write(zcls).write("-inp\" ")
.write(inputAttrs).write("/></td><td style='width: 17px'><span id=\"")
.write(uuid).write("!btn\" class=\"").write(zcls).write("-btn\"");
if (!self.isButtonVisible())
wh.write(" style=\"display:none\"");
wh.write("><img class=\"").write(zcls).write("-img\" onmousedown=\"return false;\"");
wh.write(" src=\"").write(exec.encodeURL("~./img/spacer.gif")).write("\"")
.write("\"/></span></td></tr></table><div id=\"").write(uuid).write("!pp\" class=\"")
.write(zcls).write("-pp\" style=\"display:none\" tabindex=\"-1\">")
.write("<table id=\"").write(uuid)
.write("!cave\" cellpadding=\"0\" cellspacing=\"0\">")
.writeChildren(self)
.write("</table></div></span>");
}
}