IDEMPIERE-231 Zk6: Improve the tablet experience. Fixed tree search broken by earlier revision for this ticket. Added support to show image in the combo items.

This commit is contained in:
Heng Sin Low 2012-04-19 02:11:35 +08:00
parent aab1a1c4d8
commit ed3021b966
2 changed files with 78 additions and 6 deletions

View File

@ -43,6 +43,8 @@ public class AutoComplete extends Combobox
/** strDescription Description of menu items */
private String[] strDescription;
private String[] images;
/**
* Set menu labels
@ -71,6 +73,11 @@ public class AutoComplete extends Combobox
strDescription = vals;
}
public void setImages(String[] images)
{
this.images = images;
}
/**
* Constructor
*/
@ -143,7 +150,11 @@ public class AutoComplete extends Combobox
}
comboitem.setLabel(comboItems[i]);
comboitem.setDescription(strDescription[i]);
comboitem.setDescription(strDescription[i]);
if (images != null && i < images.length && images[i] != null && images[i].trim().length() > 0)
{
comboitem.setImage(images[i]);
}
}
}
while (it != null && it.hasNext()) {

View File

@ -17,6 +17,7 @@
package org.adempiere.webui.panel;
import java.util.List;
import java.util.TreeMap;
import org.adempiere.webui.AdempiereIdGenerator;
@ -31,17 +32,21 @@ import org.adempiere.webui.util.TreeUtils;
import org.compiere.model.MTreeNode;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.util.Clients;
import org.zkoss.zul.Div;
import org.zkoss.zul.A;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.Hlayout;
import org.zkoss.zul.Tree;
import org.zkoss.zul.Treechildren;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.event.TreeDataEvent;
import org.zkoss.zul.event.TreeDataListener;
import org.zkoss.zul.impl.LabelElement;
import org.zkoss.zul.impl.LabelImageElement;
/**
*
@ -49,7 +54,7 @@ import org.zkoss.zul.event.TreeDataListener;
* @date Mar 3, 2007
* @version $Revision: 0.10 $
*/
public class TreeSearchPanel extends Panel implements EventListener, TreeDataListener
public class TreeSearchPanel extends Panel implements EventListener<Event>, TreeDataListener
{
/**
*
@ -58,6 +63,7 @@ public class TreeSearchPanel extends Panel implements EventListener, TreeDataLis
private TreeMap<String, Object> treeNodeItemMap = new TreeMap<String, Object>();
private String[] treeValues;
private String[] treeDescription;
private String[] treeImages;
private Label lblSearch;
private AutoComplete cmbSearch;
@ -130,7 +136,7 @@ public class TreeSearchPanel extends Panel implements EventListener, TreeDataLis
private void addTreeItem(Treeitem treeItem)
{
String key = treeItem.getLabel();
String key = getLabel(treeItem);
treeNodeItemMap.put(key, treeItem);
}
@ -174,6 +180,7 @@ public class TreeSearchPanel extends Panel implements EventListener, TreeDataLis
treeValues = new String[treeNodeItemMap.size()];
treeDescription = new String[treeNodeItemMap.size()];
treeImages = new String[treeNodeItemMap.size()];
int i = -1;
@ -183,8 +190,13 @@ public class TreeSearchPanel extends Panel implements EventListener, TreeDataLis
if (value instanceof Treeitem)
{
Treeitem treeItem = (Treeitem) value;
treeValues[i] = treeItem.getLabel();
treeValues[i] = getLabel(treeItem);
treeDescription[i] = treeItem.getTooltiptext();
treeImages[i] = getImage(treeItem);
if ((treeImages[i] == null || treeImages[i].trim().length() == 0) && isFolder(treeItem))
{
treeImages[i] = "/images/Folder16.png";
}
}
else if (value instanceof DefaultTreeNode)
{
@ -192,11 +204,51 @@ public class TreeSearchPanel extends Panel implements EventListener, TreeDataLis
MTreeNode mNode = (MTreeNode) sNode.getData();
treeValues[i] = mNode.getName();
treeDescription[i] = mNode.getDescription();
treeImages[i] = mNode.getImageIndiactor();
}
}
cmbSearch.setDescription(treeDescription);
cmbSearch.setDict(treeValues);
cmbSearch.setImages(treeImages);
}
private boolean isFolder(Treeitem treeItem) {
List<Component> list = treeItem.getChildren();
for (Component c : list) {
if (c instanceof Treechildren && ((Treechildren)c).getChildren().size() > 1) {
return true;
}
}
return false;
}
private String getLabel(Treeitem treeItem) {
String label = treeItem.getLabel();
if (label == null || label.trim().length() == 0)
{
if (treeItem.getTreerow().getFirstChild().getFirstChild() != null &&
treeItem.getTreerow().getFirstChild().getFirstChild() instanceof LabelElement)
{
LabelElement element = (LabelElement) treeItem.getTreerow().getFirstChild().getFirstChild();
label = element.getLabel();
}
}
return label;
}
private String getImage(Treeitem treeItem) {
String image = treeItem.getImage();
if (image == null || image.trim().length() == 0)
{
if (treeItem.getTreerow().getFirstChild().getFirstChild() != null &&
treeItem.getTreerow().getFirstChild().getFirstChild() instanceof LabelImageElement)
{
LabelImageElement element = (LabelImageElement) treeItem.getTreerow().getFirstChild().getFirstChild();
image = element.getImage();
}
}
return image;
}
/**
@ -246,7 +298,16 @@ public class TreeSearchPanel extends Panel implements EventListener, TreeDataLis
Clients.clearBusy();
Event event = null;
if (eventToFire.equals(Events.ON_CLICK))
event = new Event(Events.ON_CLICK, tree.getSelectedItem().getTreerow());
{
if (tree.getSelectedItem().getTreerow().getFirstChild().getFirstChild() instanceof A)
{
event = new Event(Events.ON_CLICK, tree.getSelectedItem().getTreerow().getFirstChild().getFirstChild());
}
else
{
event = new Event(Events.ON_CLICK, tree.getSelectedItem().getTreerow());
}
}
else
event = new Event(eventToFire, tree);
Events.postEvent(event);