All pastes #915201 Raw Edit

Anonymous

public java v1 · immutable
#915201 ·published 2008-02-23 16:51 UTC
rendered paste body
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.ownyx.list2;import com.ownyx.orreport.filter.ListDataAdapter;import java.util.Iterator;import java.util.Vector;import javax.swing.AbstractListModel;import javax.swing.event.ListDataEvent;import javax.swing.event.ListDataListener;/** * * @author mr */public class ListModelSorterer extends AbstractListModel {    AbstractListModel delegate;    Vector<Integer> sortIndex = new Vector<Integer>();    public ListModelSorterer(AbstractListModel delegate) {        this.delegate = delegate;        initSortererIndex();        delegate.addListDataListener(delegateListener);    }    void insert(int index) {        // l'element à insérer        Comparable e = (Comparable) delegate.getElementAt(index);        Iterator iter = sortIndex.iterator();        Integer i = 0;        if (!iter.hasNext()) {            sortIndex.add(index);        } else {            while (iter.hasNext()) {                i = (Integer) iter.next();                Comparable v = (Comparable) delegate.getElementAt(i);                if (e.compareTo(v) < 0) {                    sortIndex.insertElementAt(index, i);                    break;                } else if (!iter.hasNext()) {                    sortIndex.add(index);                    break;                }            }        }        fireIntervalAdded(this, i, i);    }    void initSortererIndex() {        for (int i = 0; i < delegate.getSize(); i++) {            insert(i);        }    }    public int getSize() {        return delegate.getSize();    }    public Object getElementAt(int index) {        return delegate.getElementAt(sortIndex.get(index));    }    ////////////////////////////////////////////    // LISTEN DELEGATE ABSTRACTLISTMODEL    ListDataListener delegateListener = new ListDataAdapter() {        @Override        public void intervalAdded(ListDataEvent e) {            insert(delegate.getSize() - 1);        }        @Override        public void contentsChanged(ListDataEvent e) {            initSortererIndex();        }    };}