IDEMPIERE-2143 Combobox should auto scroll to first matching item.
This commit is contained in:
parent
ec2ad9af8b
commit
a177bd8c6e
|
@ -48,6 +48,7 @@ import org.compiere.util.Env;
|
||||||
import org.compiere.util.KeyNamePair;
|
import org.compiere.util.KeyNamePair;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.compiere.util.NamePair;
|
import org.compiere.util.NamePair;
|
||||||
|
import org.compiere.util.Util;
|
||||||
import org.compiere.util.ValueNamePair;
|
import org.compiere.util.ValueNamePair;
|
||||||
import org.zkoss.zk.ui.Desktop;
|
import org.zkoss.zk.ui.Desktop;
|
||||||
import org.zkoss.zk.ui.Executions;
|
import org.zkoss.zk.ui.Executions;
|
||||||
|
@ -55,6 +56,8 @@ import org.zkoss.zk.ui.Page;
|
||||||
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.zk.ui.event.InputEvent;
|
||||||
|
import org.zkoss.zk.ui.util.Clients;
|
||||||
import org.zkoss.zk.ui.util.DesktopCleanup;
|
import org.zkoss.zk.ui.util.DesktopCleanup;
|
||||||
import org.zkoss.zul.Comboitem;
|
import org.zkoss.zul.Comboitem;
|
||||||
import org.zkoss.zul.Menuitem;
|
import org.zkoss.zul.Menuitem;
|
||||||
|
@ -148,6 +151,7 @@ ContextMenuListener, IZoomableEditor
|
||||||
getComponent().setAutocomplete(true);
|
getComponent().setAutocomplete(true);
|
||||||
getComponent().setAutodrop(true);
|
getComponent().setAutodrop(true);
|
||||||
getComponent().addEventListener(Events.ON_BLUR, this);
|
getComponent().addEventListener(Events.ON_BLUR, this);
|
||||||
|
getComponent().addEventListener(Events.ON_CHANGING, this);
|
||||||
|
|
||||||
boolean zoom= false;
|
boolean zoom= false;
|
||||||
if (lookup != null)
|
if (lookup != null)
|
||||||
|
@ -438,10 +442,30 @@ ContextMenuListener, IZoomableEditor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (event.getName().equals(Events.ON_CHANGING)) {
|
||||||
|
onChanging((InputEvent) event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isValueChange(Object newValue) {
|
private void onChanging(InputEvent event) {
|
||||||
|
String v = event.getValue();
|
||||||
|
if (!Util.isEmpty(v)) {
|
||||||
|
v = v.toLowerCase();
|
||||||
|
int count = getComponent().getItemCount();
|
||||||
|
for(int i = 0; i < count; i++) {
|
||||||
|
Comboitem item = getComponent().getItemAtIndex(i);
|
||||||
|
if(item.getLabel() != null && item.getLabel().toLowerCase().startsWith(v)) {
|
||||||
|
Clients.scrollIntoView(item);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (getComponent().getItemCount() > 0) {
|
||||||
|
Comboitem item = getComponent().getItemAtIndex(0);
|
||||||
|
Clients.scrollIntoView(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isValueChange(Object newValue) {
|
||||||
return (oldValue == null && newValue != null) || (oldValue != null && newValue == null)
|
return (oldValue == null && newValue != null) || (oldValue != null && newValue == null)
|
||||||
|| ((oldValue != null && newValue != null) && !oldValue.equals(newValue));
|
|| ((oldValue != null && newValue != null) && !oldValue.equals(newValue));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue