On Fri, 12 Aug 2005 11:40:02 -0700, Igor Vaynberg <[EMAIL PROTECTED]> wrote:

-----Original Message-----

The optmized-item-removal in the context of the dataview is not really an
optimization. It is a way for you to keep state in your dataitems and all
attached items across requests. So for example you can set a row to be
highlited (store the highlight flag in the dataitem), and that will last
across requests, if we do a removeall() every time than that wont be
possible w/out some outside model keeping track of highlited rows.

Thanks for the explanation and I realy did not want to start this over again however: wouldn't it also be good for plain IDataProviders? Just one answer I'll stop immideately.

I was thinking of a helper:

class EqualsModel extends Model{
   private Serializable uniqueKey;
   EqualsModel(Serializable object, Serializable uniqueKey){
     super(object;

     uniqueKey = uniqueKey;
   }

   boolean equals(Object ob){
     if(uniqueKey == null) return super.equals(ob);
     if(ob instanceof EqualsModel)
        return uniqueKey.equals(((EqualsModel)ob).uniqueKey);
     return false;
   }

   int hashCode(){
     return uniqueKey == null ? super.hashCode() : uniqueKey.hashCode();
   }
}

//IDataProvider
IModel model(Object ob){
  return new EqualsModel(ob,((MyBean)ob).getId());
}


BTW, something just hit me, since we removed primarykey() from idataprovider
we can now do this:

public class ListAdapter implements IDataProvider
{
        private List list;
        
        public ListAdapter(List list) {
                this.list=list;
        }
        
        public Iterator iterator(int first, int count)
        {
                return list.listIterator(first);
        }

        public int size()
        {
                return list.size();
        }

        public IModel model(Object object)
        {
                return new Model((Serializable)object);
        }

}

That's very good maybe we could also do it for a Collection?

public Iterator iterator(int first, int count){
    Iterator ret = collection.iterator();
    for(int i=0;i<first;i++){
      if(ret.hasNext()) ret.next();
    }
    return ret;
}

        

        
                
___________________________________________________________ Gesendet von Yahoo! Mail - Jetzt mit 1GB Speicher kostenlos - Hier anmelden: http://mail.yahoo.de



-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to