# TableView einstellungen speichern



## SegFault (22. Dez 2009)

Ich möchte für diverse Datenbankeinträge per TableView die Einträge anzeigen. Ich würde das aber soweit customable machen das der Nutzer selbst auswählen kann welche Spalten der Nutzer anzeigt bzw an welcher Position diese Spalten sind. Gibts dafür vorgefertigtes oder muss ich das von hand implementieren und die einstellungen (Welche Spalte ist sichtbar, welche breite hat die Spalte und an welcher Position ist diese Spalte) aus einer config file laden?


----------



## SegFault (22. Dez 2009)

Direkt was vorimplementiertes scheint es nicht zu geben. Aber ich habs zumindest über die IMementos selbst hinbekommen.


----------



## Koringar (23. Dez 2009)

Hi,

also was vorimplementiert gibt es nichts, aber es ist sehr gut über die Provider zuregeln (den TableHeader musste aber selber machen).


----------



## SegFault (23. Dez 2009)

Hmm kannst du ein kurzes Beispiel mit den Providern geben? 

Aktuell mache ich das so das ich im View mit saveState und init arbeite und in den Memento's die einstellungen der Table speichere. Aber ich bin immer wieder für neue Ideen offen.


----------



## Koringar (23. Dez 2009)

Der LabelProvider den man bei einer TableView setzen kann regelt grundsätzlich den Inhalt.

Diese Klasse die vom 'ITableLabelProvider' abgeleitet wird, hat die Methode 'public String getColumnText(Object arg0, int arg1)'. Arg0 gibt dabei denn kompletten Inhalt für die Zeile an (den Inhalt zieht er sich aus dem was du über 'setInput' übergeben hast und mit den ContentProvider ausgewählt hast) und arg1 gibt die Spalte an die gefüllt werden will.

Wenn du die Reihenfolge der Spalten hast kann man die abprüfen und dem entsprechen den Inhalt aus dem arg0 wieder geben. Mal ein Beispiel aus meinen Sachen:

```
public String getColumnText(Object arg0, int arg1) {
		String text = "";
		if(arg0.getClass().equals(MonitorEingangEntry.class)){		
			MonitorEingangEntry _monitorEintrag = (MonitorEingangEntry) arg0;
			String _name = COLUMNS.get(arg1).getId();				
		    if(_name.equals("erste_spalte")){
		    	text = Long.toString(_monitorEintrag.getSpalteEins());
		    }else if(_name.equals("zweite_spalte")){
		    	text = _monitorEintrag.getSpalteZwei();
		    }else if(_name.equals("dritte_spalte")){
		    	text = _monitorEintrag.getSpalteDrei();
                    }
		}else if(arg0.getClass().equals(String.class) && arg1 == 0){
			text = arg0.toString();
		}
	    return text;
	}
```

Wenn du mehr über den TableViewer wissen willst kann ich dir DemonstratesTableViewers empfehlen.


----------



## SegFault (23. Dez 2009)

Hmm grundsätzlich anwendbar. Aber das kommt mit den Überschriften durcheinander. Da speicher ich mir doch lieber beim schließen des workbenches die reihenfolge und breite der Spalten über einen Memento. Damit ist der content auf jeden fall einheitlich.


----------

