All pastes #915516 Raw Edit

Stuff

public java v1 · immutable
#915516 ·published 2008-02-23 21:21 UTC
rendered paste body
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package com.ownyx.list2;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;        initSorterIndex();        delegate.addListDataListener(delegateListener);    }    void insert(int index) {        int i = insertAsc(index);        fireIntervalAdded(this, i, i);    }    void remove(int index) {        /////////////////////////////////////////        // MARCHE PAS        System.out.println("=====================================");        System.out.println("value at "+index+" => "+sortIndex.get(index));                int v = sortIndex.get(index);        sortIndex.removeElementAt(index);        for (int i = 0; i < sortIndex.size(); i++) {            if (sortIndex.get(i) > v) {                System.out.println(sortIndex.get(i)+" decrement");                sortIndex.set(i, sortIndex.get(i) - 1);            }        }        System.out.println("=====================================");                fireIntervalRemoved(ListModelSorterer.this, index, index);    }    int insertAsc(int index) {        // l'element à insérer        Comparable e = (Comparable) delegate.getElementAt(index);        int i;        if (sortIndex.size() < 1) {            sortIndex.add(index);            i = 0;        } else {            for (i = 0; i < sortIndex.size(); i++) {                Comparable v = (Comparable) delegate.getElementAt(sortIndex.get(i));                if (e.compareTo(v) < 0) {                    sortIndex.insertElementAt(index, i);                    break;                } else if (i == sortIndex.size() - 1) {                    sortIndex.addElement(index);                    break;                }            }        }        return i;    }    int insertDesc(int index) {        throw new UnsupportedOperationException();    }    void initSorterIndex() {        sortIndex.removeAllElements();        for (int i = 0; i < delegate.getSize(); i++) {            insert(i);        }    }    public int getSize() {        return delegate.getSize();    }    public Object getElementAt(int index) {        //System.out.println(index + " " + sortIndex.get(index));        return delegate.getElementAt(sortIndex.get(index));    }    ////////////////////////////////////////////    // LISTEN DELEGATE ABSTRACTLISTMODEL    ListDataListener delegateListener = new ListDataListener() {        @Override        public void intervalAdded(ListDataEvent e) {            for (int i = e.getIndex0(); i <= e.getIndex1(); i++) {                insert(i);            }        }        @Override        public void intervalRemoved(ListDataEvent e) {            for (int i = e.getIndex0(); i <= e.getIndex1(); i++) {                remove(i);            }        }        @Override        public void contentsChanged(ListDataEvent e) {            initSorterIndex();        }    };}