home *** CD-ROM | disk | FTP | other *** search
- import com.sun.java.swing.JTable;
- import com.sun.java.swing.event.TableModelEvent;
- import com.sun.java.swing.table.JTableHeader;
- import com.sun.java.swing.table.TableModel;
- import java.awt.Component;
- import java.util.Date;
- import java.util.Vector;
-
- public class TableSorter extends TableMap {
- int[] indexes;
- Vector sortingColumns = new Vector();
- boolean ascending = true;
- int compares;
- // $FF: synthetic field
- static Class class$java$lang$Number;
- // $FF: synthetic field
- static Class class$java$util$Date;
- // $FF: synthetic field
- static Class class$java$lang$String;
- // $FF: synthetic field
- static Class class$java$lang$Boolean;
-
- public TableSorter() {
- this.indexes = new int[0];
- }
-
- public TableSorter(TableModel var1) {
- this.setModel(var1);
- }
-
- public void setModel(TableModel var1) {
- super.setModel(var1);
- this.reallocateIndexes();
- }
-
- public int compareRowsByColumn(int var1, int var2, int var3) {
- Class var4 = super.model.getColumnClass(var3);
- TableModel var5 = super.model;
- Object var6 = var5.getValueAt(var1, var3);
- Object var7 = var5.getValueAt(var2, var3);
- if (var6 == null && var7 == null) {
- return 0;
- } else if (var6 == null) {
- return -1;
- } else if (var7 == null) {
- return 1;
- } else if (var4.getSuperclass() == (class$java$lang$Number != null ? class$java$lang$Number : (class$java$lang$Number = class$("java.lang.Number")))) {
- Number var17 = (Number)var5.getValueAt(var1, var3);
- double var21 = var17.doubleValue();
- Number var26 = (Number)var5.getValueAt(var2, var3);
- double var28 = var26.doubleValue();
- if (var21 < var28) {
- return -1;
- } else {
- return var21 > var28 ? 1 : 0;
- }
- } else if (var4 == (class$java$util$Date != null ? class$java$util$Date : (class$java$util$Date = class$("java.util.Date")))) {
- Date var16 = (Date)var5.getValueAt(var1, var3);
- long var20 = var16.getTime();
- Date var25 = (Date)var5.getValueAt(var2, var3);
- long var27 = var25.getTime();
- if (var20 < var27) {
- return -1;
- } else {
- return var20 > var27 ? 1 : 0;
- }
- } else if (var4 == (class$java$lang$String != null ? class$java$lang$String : (class$java$lang$String = class$("java.lang.String")))) {
- String var15 = (String)var5.getValueAt(var1, var3);
- String var19 = (String)var5.getValueAt(var2, var3);
- int var23 = var15.compareTo(var19);
- if (var23 < 0) {
- return -1;
- } else {
- return var23 > 0 ? 1 : 0;
- }
- } else if (var4 == (class$java$lang$Boolean != null ? class$java$lang$Boolean : (class$java$lang$Boolean = class$("java.lang.Boolean")))) {
- Boolean var14 = (Boolean)var5.getValueAt(var1, var3);
- boolean var18 = var14;
- Boolean var22 = (Boolean)var5.getValueAt(var2, var3);
- boolean var24 = var22;
- if (var18 == var24) {
- return 0;
- } else {
- return var18 ? 1 : -1;
- }
- } else {
- Object var8 = var5.getValueAt(var1, var3);
- String var9 = var8.toString();
- Object var10 = var5.getValueAt(var2, var3);
- String var11 = var10.toString();
- int var12 = var9.compareTo(var11);
- if (var12 < 0) {
- return -1;
- } else {
- return var12 > 0 ? 1 : 0;
- }
- }
- }
-
- public int compare(int var1, int var2) {
- ++this.compares;
-
- for(int var3 = 0; var3 < this.sortingColumns.size(); ++var3) {
- Integer var4 = (Integer)this.sortingColumns.elementAt(var3);
- int var5 = this.compareRowsByColumn(var1, var2, var4);
- if (var5 != 0) {
- if (this.ascending) {
- return var5;
- }
-
- return -var5;
- }
- }
-
- return 0;
- }
-
- public void reallocateIndexes() {
- int var1 = super.model.getRowCount();
- this.indexes = new int[var1];
-
- for(int var2 = 0; var2 < var1; this.indexes[var2] = var2++) {
- }
-
- }
-
- public void tableChanged(TableModelEvent var1) {
- System.out.println("Sorter: tableChanged");
- this.reallocateIndexes();
- super.tableChanged(var1);
- }
-
- public void checkModel() {
- if (this.indexes.length != super.model.getRowCount()) {
- System.err.println("Sorter not informed of a change in model.");
- }
-
- }
-
- public void sort(Object var1) {
- this.checkModel();
- this.compares = 0;
- this.shuttlesort((int[])this.indexes.clone(), this.indexes, 0, this.indexes.length);
- System.out.println("Compares: " + this.compares);
- }
-
- public void n2sort() {
- for(int var1 = 0; var1 < ((TableMap)this).getRowCount(); ++var1) {
- for(int var2 = var1 + 1; var2 < ((TableMap)this).getRowCount(); ++var2) {
- if (this.compare(this.indexes[var1], this.indexes[var2]) == -1) {
- this.swap(var1, var2);
- }
- }
- }
-
- }
-
- public void shuttlesort(int[] var1, int[] var2, int var3, int var4) {
- if (var4 - var3 >= 2) {
- int var5 = (var3 + var4) / 2;
- this.shuttlesort(var2, var1, var3, var5);
- this.shuttlesort(var2, var1, var5, var4);
- int var6 = var3;
- int var7 = var5;
- if (var4 - var3 >= 4 && this.compare(var1[var5 - 1], var1[var5]) <= 0) {
- for(int var9 = var3; var9 < var4; ++var9) {
- var2[var9] = var1[var9];
- }
-
- } else {
- for(int var8 = var3; var8 < var4; ++var8) {
- if (var7 < var4 && (var6 >= var5 || this.compare(var1[var6], var1[var7]) > 0)) {
- var2[var8] = var1[var7++];
- } else {
- var2[var8] = var1[var6++];
- }
- }
-
- }
- }
- }
-
- public void swap(int var1, int var2) {
- int var3 = this.indexes[var1];
- this.indexes[var1] = this.indexes[var2];
- this.indexes[var2] = var3;
- }
-
- public Object getValueAt(int var1, int var2) {
- this.checkModel();
- return super.model.getValueAt(this.indexes[var1], var2);
- }
-
- public void setValueAt(Object var1, int var2, int var3) {
- this.checkModel();
- super.model.setValueAt(var1, this.indexes[var2], var3);
- }
-
- public void sortByColumn(int var1) {
- this.sortByColumn(var1, true);
- }
-
- public void sortByColumn(int var1, boolean var2) {
- this.ascending = var2;
- this.sortingColumns.removeAllElements();
- this.sortingColumns.addElement(new Integer(var1));
- this.sort(this);
- super.tableChanged(new TableModelEvent(this));
- }
-
- public void addMouseListenerToHeaderInTable(JTable var1) {
- var1.setColumnSelectionAllowed(false);
- TableSorter$1 var4 = new TableSorter$1(this, var1);
- JTableHeader var5 = var1.getTableHeader();
- ((Component)var5).addMouseListener(var4);
- }
-
- // $FF: synthetic method
- static Class class$(String var0) {
- try {
- return Class.forName(var0);
- } catch (ClassNotFoundException var2) {
- throw new NoClassDefFoundError(((Throwable)var2).getMessage());
- }
- }
- }
-