Hallo,
bisher habe ich das Databinding nie benutzt und habe mir mal mehrere Tutorials durchgelesen (Vogella etc.).
Die Daten (alles Strings) waren in 2D ArrayLists gespeichert, konkret: ArrayList<ArrayList<String>> aber das habe ich mal umgebaut zu ArrayList<Row>, wobei Row eine eigene Klasse ist die im Prinzip die innere ArrayList<String> speichert und getter und setter mit PropertyChangeSupport implementiert.
Zum Testen habe ich mal folgenden Code verwendet
Problem: der ganze content wird in einer spalte angezegt, erzeuge ich dynamisch viele standard-labels und setze sie entsprechend an die Stelle von "bla" ein, wird nichtsmehr angezeigt. Ein passender Label-Provider exstiert ausserdem
wobei manuell noch die erste Spalte gesetzt wird mit einem eigenem Label-Provider um eine Zeilennummerierung mitzuführen.
Gibt es beim Jface Databinding schon eine eingebaute Möglichkeit Elemente aus String-Arrays als eigenständige Properties zu betrachten und jeweils automatisch eine eigene Spalte zu bekommen, am besten unter Verwendung des eigenen Label-Providers?
Vielen Dank
bisher habe ich das Databinding nie benutzt und habe mir mal mehrere Tutorials durchgelesen (Vogella etc.).
Die Daten (alles Strings) waren in 2D ArrayLists gespeichert, konkret: ArrayList<ArrayList<String>> aber das habe ich mal umgebaut zu ArrayList<Row>, wobei Row eine eigene Klasse ist die im Prinzip die innere ArrayList<String> speichert und getter und setter mit PropertyChangeSupport implementiert.
Zum Testen habe ich mal folgenden Code verwendet
Java:
WritableList input = new WritableList(file.getLines(), Row.class);
ViewerSupport.bind(this.tableViewer, input,
BeanProperties.
values(new String[]{("bla")}));
Problem: der ganze content wird in einer spalte angezegt, erzeuge ich dynamisch viele standard-labels und setze sie entsprechend an die Stelle von "bla" ein, wird nichtsmehr angezeigt. Ein passender Label-Provider exstiert ausserdem
Java:
column.setLabelProvider(new ColumnLabelProvider() {
int index;
@SuppressWarnings("unchecked")
@Override
public String getText(Object element) {
return ((Row) element).getRow().get(index-1); //-1 because of the enumeration-column at position 0.
}
@Override
public void update(ViewerCell cell) {
Object element = cell.getElement();
index = cell.getColumnIndex();
cell.setText(getText(element));
Image image = getImage(element);
cell.setImage(image);
cell.setBackground(getBackground(element));
cell.setForeground(getForeground(element));
cell.setFont(getFont(element));
}
});
wobei manuell noch die erste Spalte gesetzt wird mit einem eigenem Label-Provider um eine Zeilennummerierung mitzuführen.
Gibt es beim Jface Databinding schon eine eingebaute Möglichkeit Elemente aus String-Arrays als eigenständige Properties zu betrachten und jeweils automatisch eine eigene Spalte zu bekommen, am besten unter Verwendung des eigenen Label-Providers?
Vielen Dank