SWT Tabellen sortieren

Hallo zusammen,

Ich hab mir einen eigene TableSpalte gebastelt, die ich sortieren lassen möchte.
Ich möchte/kann kein ViewSorter benutzen weil ich dort in der compare methode die Objekte bekomme die ich im TableViewer int setInput reinschmeiße… Diese Objekte können bei jedem TableViewer anders sein. Ich wollte eine sort methode(Spalte) die für alle Tabellen gülitig ist, darum dachte ich ich geh über die TableItems und deren Inhalte und lass danach sortieren. Was auch wunderbar klappt, bis auf das anzeigen. Weiß jemand wie ich dieses Vorhaben umsetzen könnte oder wie ich die neuen Items anzeigen kann (ohne sie zu disposen weil es kein clone gibt)?

public class TableSortColumn
{
  private TableColumn controlColumn;
  private int columnNumber;
  private String sortIdentifier;

  public TableSortColumn(Table parent, int style, String sortIdentifier)
  {
    sortIdentifier = sortIdentifier;
    sontrolColumn = new TableColumn(parent, style);
    solumnNumber = parent.getColumnCount() - 1;
    controlColumn.addListener(SWT.Selection, new SortLisener(parent));
  }

  private class SortLisener implements Listener
  {
    private final Table table;


    public SortLisener(Table table)
    {
      this.table = table;
    }


    public void handleEvent(Event e)
    {
      sort(e, table);
    }
  }


  private void sort(Event e, Table table)
  {
    final TableColumn sortColumn = table.getSortColumn();
    final TableColumn currentColumn = (TableColumn) e.widget;
    int dir = table.getSortDirection();
    if (sortColumn == currentColumn)
    {
      dir = dir == SWT.UP ? SWT.DOWN : SWT.UP;
    }
    else
    {
      table.setSortColumn(currentColumn);
      dir = SWT.UP;
    }
    final TableItem[] items = table.getItems();
    Arrays.sort(items, new TableSorter(mSortIdentifier, dir, mColumnNumber));
    table.setSortDirection(dir);
  }
  }

hier im tablesorter die entsprechende compare methode…

  public int compare(Object o1, Object o2)
  {
    int returnValue = 0;
    final TableItem item1 = (TableItem) o1;
    final TableItem item2 = (TableItem) o2;

    if (sortIdentifier.equals(STRING_SORT))
    {
      returnValue = sortString(item1, item2);
    }

    if (sortIdentifier.equals(LONG_SORT))
    {
      returnValue = sortLong(item1, item2);
    }

    if (sortIdentifier.equals(DOUBLE_SORT))
    {
      returnValue = sortDouble(item1, item2);
    }

    if (sortIdentifier.equals(DATE_SORT))
    {
      returnValue = sortDate(item1, item2);
    }

    if (dir == SWT.DOWN)
    {
      returnValue *= -1;
    }

    return returnValue;
  }

  private int sortString(final TableItem item1, final TableItem item2)
  {
    final String s1 = item1.getText(col);
    final String s2 = item2.getText(col);
    return s1.compareTo(s2);
  }

Wie gesagt wenn es eine bessere Methode gibt wie man Zeilen sortieren lassen, bin ich gerne für jedenTip offen!!
Das Problem ist die Zeilen werden in der Arrays.sort methode richtig sortiert, aber nicht angezeigt.

Du sagst also, dass sich dein Model sortieren lässt?
Wenn das geht, musst du noch ein TableModelEvent feuern. Zumindest kenne ich das von Swing her.

Ja von Swing kenn ich es auch daher, aber bei SWT gibt es kein Model… da hast du TableItems und da kannst du die ganze Zeile holen mit getText(int col) oder halt ein Bild mit getImage()… aber wie gesagt meine TableItems sortieren lassen ist kein Ding nur sie anzuzeigen ist ein problem ich will sie nicht disposen und neu anlegen, weil ich den items mit setData(key, value) ziemlich viel hinzufügen kann und dies nicht mehr holen kann ohne den key nicht zu wissen, au0er vielleicht mit reflection aber das ist bischen unschön… es gitb leider keine clone methode die würde alles lösen…

Keine einer eine Idee??? Bin ich der einzigste Mensch der SWT Tabellen sortieren lassen will :wink:

Auf Tutorials.de wurde dieses Thema ebenfalls besprochen:
http://www.tutorials.de/forum/swing-java2d-3d-swt-jface/251592-swt-table-sortieren.html

Vielleicht hilft dir das weiter.

ja schon gesehen aber leider hilft das nichts =)