1 19 20 package org.netbeans.modules.tasklist.core.table; 21 22 import java.util.ArrayList ; 23 import java.util.Comparator ; 24 import java.util.List ; 25 26 import javax.swing.event.ChangeEvent ; 27 import javax.swing.event.ChangeListener ; 28 import javax.swing.event.EventListenerList ; 29 30 33 public class SortingModel { 34 37 public static class DefaultComparator implements 38 Comparator <Comparable <Object >> { 39 public int compare(Comparable <Object > o1, Comparable <Object > o2) { 40 if (o1 == null && o2 == null) 41 return 0; 42 if (o1 == null) 43 return -1; 44 if (o2 == null) 45 return 1; 46 return o1.compareTo(o2); 47 } 48 } 49 50 public static Comparator DEFAULT_COMPARATOR = 51 new DefaultComparator(); 52 53 private EventListenerList listenerList = new EventListenerList (); 54 private List <Comparator > comparators = new ArrayList <Comparator >(); 55 private int sortedColumn = -1; 56 private boolean descending = true; 57 58 62 protected void fireChange() { 63 Object [] listeners = listenerList.getListenerList(); 65 ChangeEvent e = null; 66 for (int i = listeners.length-2; i>=0; i-=2) { 69 if (listeners[i]==ChangeListener .class) { 70 if (e == null) 72 e = new ChangeEvent (this); 73 ((ChangeListener )listeners[i+1]).stateChanged(e); 74 } 75 } 76 } 77 78 84 public Comparator getColumnComparator(int modelColumn) { 85 if (modelColumn >= comparators.size()) 86 return null; 87 return (Comparator ) comparators.get(modelColumn); 88 } 89 90 96 public void setColumnComparator(int modelColumn, Comparator c) { 97 while (modelColumn >= comparators.size()) 98 comparators.add(null); 99 comparators.set(modelColumn, c); 100 } 101 102 107 public boolean isSortOrderDescending() { 108 return descending; 109 } 110 111 116 public void setSortOrderDescending(boolean d) { 117 this.descending = d; 118 fireChange(); 119 } 120 121 126 public void setSortedColumn(int index) { 127 this.sortedColumn = index; 128 fireChange(); 129 } 130 131 136 public int getSortedColumn() { 137 return sortedColumn; 138 } 139 140 145 public void addChangeListener(ChangeListener l) { 146 this.listenerList.add(ChangeListener .class, l); 147 } 148 149 154 public void removeChangeListener(ChangeListener l) { 155 this.listenerList.remove(ChangeListener .class, l); 156 } 157 } 158 | Popular Tags |