0

ZK 5.0.10 ListBox Issues

asked 2012-01-11 03:40:59 +0800

Fujitsu gravatar image Fujitsu
117 2

Hi All,

I have just updated from 5.0.9 to 5.0.10 and I have noticed that the ListBox looks broken, I have tested it both in IE 8 and FireFox 9.

The scroll bars are now missing and the paging is also gone. When running on 5.0.8/5.0.9 the paging and the scroll bars work fine.

Our Zul:

<fwlistbox id="list" model="@{results}" multiple="true" checkmark="true" width="100%" height="100%">

And Java:

public class FWListbox extends Listbox
{
  public FWListbox( )
  {
    setMold("paging");
    setPagingPosition("bottom");
    setPageSize(20);
    setVflex(true);
    getPagingChild().setMold("os");
    setSizedByContent(true);
    setSpan(true);
    addEventListener(Events.ON_SELECT, new EventListener()
    {
      public void onEvent( Event event ) throws Exception
      {
        DataArrayModel<?> model = getDataArrayModel();
        if (model != null)
        {
          model.setSelectedListitems(getSelectedItems());
        }
      }
    });

    addEventListener(Events.ON_CHANGE, new EventListener()
    {
      public void onEvent( Event event ) throws Exception
      {
        Event ev = event;
        while (ev instanceof ForwardEvent)
          ev = ((ForwardEvent)ev).getOrigin();
        DataArrayModel<?> model = getDataArrayModel();
        if (model != null)
        {
          Component c = ev.getTarget();
          while (!(c instanceof Listitem))
            c = c.getParent();
          if (c instanceof Listitem)
            model.addDirtyListitem((Listitem)c);
        }
      }
    });
  }

Is this a new bug in ZK?

delete flag offensive retag edit

7 Replies

Sort by ยป oldest newest

answered 2012-01-11 06:41:04 +0800

hawk gravatar image hawk
3250 1 5
http://hawkphoenix.blogsp... ZK Team

Hi,

I try to simulate your case but I can't see the same issue. Do you have simpler case to reproduce the issue?

Here is the source and demo I made:

ZKFiddle-Link

FWListbox.java
package j3imkpfl$v5;


import java.util.LinkedList;
import java.util.List;

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.event.ForwardEvent;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;

public class FWListbox extends Listbox
{
public FWListbox( )
{
setMold("paging");
setPagingPosition("bottom");
setPageSize(20);
setVflex(true);
getPagingChild().setMold("os");
setSizedByContent(true);
setSpan(true);
addEventListener(Events.ON_SELECT, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();

if (model != null)
{
// model.setSelectedListitems(getSelectedItems());
}
}
});

addEventListener(Events.ON_CHANGE, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
Event ev = event;
while (ev instanceof ForwardEvent)
ev = ((ForwardEvent)ev).getOrigin();
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();
if (model != null)
{
Component c = ev.getTarget();
while (!(c instanceof Listitem))
c = c.getParent();
// if (c instanceof Listitem)
// model.addDirtyListitem((Listitem)c);
}
}
});
}
}


TestComposer.java
package j3imkpfl$v5;

import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;

public class TestComposer extends GenericForwardComposer{

public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);

}

public void onClick$btn(Event e) throws InterruptedException{
Messagebox.show("Hi btn");
}
}


index.zul
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<zk>
<zscript><![CDATA[
String[] data = new String[100];
for (int i=0 ; i<100 ; i++){
data[i] = Integer.toString(i);
}
List results = Arrays.asList(data);
]]></zscript>
<listbox model="@{results}" use="j3imkpfl$v5.FWListbox" multiple="true" checkmark="true" width="100%" height="100%">
<listhead sizable="true">
<listheader>test</listheader>
</listhead>
<listitem self="@{each=d}">
<listcell label="@{d}" />
</listitem>
</listbox>
</zk>

link publish delete flag offensive edit

answered 2012-01-11 20:23:55 +0800

stephenb gravatar image stephenb
54 1

Here is a reproducible symptom: http://www.zkoss.org/forum/listComment/18404-scrolling-listbox-in-bandbox-breaks-in-5-0-10

link publish delete flag offensive edit

answered 2012-01-11 23:29:11 +0800

Fujitsu gravatar image Fujitsu
117 2

I've altered your example hawk:

ZKFiddle-Link

FWListbox.java
package j3imkpfl$v7;


import java.util.LinkedList;
import java.util.List;

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.event.ForwardEvent;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listitem;

public class FWListbox extends Listbox
{
public FWListbox( )
{
setMold("paging");
setPagingPosition("bottom");
setPageSize(20);
setVflex(true);
getPagingChild().setMold("os");
setSizedByContent(true);
setSpan(true);
addEventListener(Events.ON_SELECT, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();

if (model != null)
{
// model.setSelectedListitems(getSelectedItems());
}
}
});

addEventListener(Events.ON_CHANGE, new EventListener()
{
public void onEvent( Event event ) throws Exception
{
Event ev = event;
while (ev instanceof ForwardEvent)
ev = ((ForwardEvent)ev).getOrigin();
// DataArrayModel<?> model = getDataArrayModel();
List<String> model =new LinkedList<String>();
if (model != null)
{
Component c = ev.getTarget();
while (!(c instanceof Listitem))
c = c.getParent();
// if (c instanceof Listitem)
// model.addDirtyListitem((Listitem)c);
}
}
});
}
}


TestComposer.java
package j3imkpfl$v7;

import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;

public class TestComposer extends GenericForwardComposer{

public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);

}

public void onClick$btn(Event e) throws InterruptedException{
Messagebox.show("Hi btn");
}
}


index.zul
<?page title="new page title" contentType="text/html;charset=UTF-8"?>
<?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit"?>
<zk>

<zscript><![CDATA[
String[] data = new String[100];
for (int i=0 ; i<100 ; i++){
data[i] = Integer.toString(i);
}
List results = Arrays.asList(data);
]]>
</zscript>
<borderlayout>
<north title="Criteria" >
<grid>
<rows>
<row>
<label value="test" />
<label value="test" />
</row>
<row>
<label value="test" />
<label value="test" />
</row>
<row>
<label value="test" />
<label value="test" />
</row>
<row>
<label value="test" />
<label value="test" />
</row>
</rows>
</grid>
</north>
<center title="Results">
<borderlayout>
<center>
<listbox model="@{results}" use="j3imkpfl$v7.FWListbox" multiple="true" checkmark="true" width="100%" height="100%">
<listhead sizable="true">
<listheader>test</listheader>
</listhead>
<listitem self="@{each=d}">
<listcell label="@{d}" />
</listitem>
</listbox>
</center>
</borderlayout>
</center>
<south>
<borderlayout>
<west>
<hbox>
<label value="buton" />
</hbox>
</west>
</borderlayout>
</south>
</borderlayout>

</zk>

When you run this under ZK 5.0.9 it works fine, but when you run it in 5.0.10 you can see the error.

(BTW ZK Fiddle is cool!!)

link publish delete flag offensive edit

answered 2012-01-11 23:37:02 +0800

Fujitsu gravatar image Fujitsu
117 2

Just been messing with the code and it looks like the issue is with setSizedByContent(true), which works for v5.0.5, v5.0.8 and v5.0.9 but not with the new v5.0.10...

link publish delete flag offensive edit

answered 2012-01-12 13:20:48 +0800

stephenb gravatar image stephenb
54 1

Reported bug: http://tracker.zkoss.org/browse/ZK-773

link publish delete flag offensive edit

answered 2012-01-13 03:05:14 +0800

benbai gravatar image benbai
2228 6
http://www.zkoss.org

updated 2012-01-14 06:36:31 +0800

A quick work around, add the fragment below into zul page:

<style>
 .z-center-body {
 	overflow: auto !important;
 }
</style>

Regards,
ben

link publish delete flag offensive edit

answered 2012-01-14 06:54:17 +0800

benbai gravatar image benbai
2228 6
http://www.zkoss.org

updated 2012-01-14 07:02:24 +0800

In this case,
remove the 'height="100%"' and 'setVflex(true)' if you want it sized by content,
then it works well with the work-around above.
The height/vflex are conflict with sizedByContent, it means fixed height, not sized by content.

This actually will cause unexpected result in any version,
and maybe show the expected result in some version with luck.

Regards,
ben

link publish delete flag offensive edit
Your reply
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

[hide preview]

Question tools

Follow

RSS

Stats

Asked: 2012-01-11 03:40:59 +0800

Seen: 613 times

Last updated: Jan 14 '12

Support Options
  • Email Support
  • Training
  • Consulting
  • Outsourcing
Learn More