Hallo,
habe eine tabelle, in der ich ein set von objekten darstelle. solange ich ein set verwende funktioniert das refresh.
jetzt habe ich mir gedacht, es ist übersichtlicher, wenn ich die werte sortiere - ich übergebe jetzt eine liste mit den objekten nach einem kriterium sortiert.
wenn ich die tabelle aufmache sieht alles schön aus - aber wenn ich werte aus der tabelle entferne (funktion bei mir bei einem button hinterlegt) aktualisiert sich die tabelle nicht mehr:
hier meine relevanten codeteile:
bei der auskommentierten zeile uebergebe ich die liste mit den sortierten werten
in dieser methode wird das refresh aufgerufen...
irgendwie sehe ich den fehler einfach nicht - bitte um hilfe!
danke!
habe eine tabelle, in der ich ein set von objekten darstelle. solange ich ein set verwende funktioniert das refresh.
jetzt habe ich mir gedacht, es ist übersichtlicher, wenn ich die werte sortiere - ich übergebe jetzt eine liste mit den objekten nach einem kriterium sortiert.
wenn ich die tabelle aufmache sieht alles schön aus - aber wenn ich werte aus der tabelle entferne (funktion bei mir bei einem button hinterlegt) aktualisiert sich die tabelle nicht mehr:
hier meine relevanten codeteile:
Java:
public void createTablePlaetze(Composite shell) {
tableViewerPlaetze = new TableViewer(shell, SWT.BORDER
| SWT.FULL_SELECTION);
tableViewerPlaetze.getTable().setLayoutData(
new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
TableLayout layout = new TableLayout();
layout.addColumnData(new ColumnWeightData(25, 100, true));
layout.addColumnData(new ColumnWeightData(25, 100, true));
layout.addColumnData(new ColumnWeightData(25, 100, true));
layout.addColumnData(new ColumnWeightData(25, 100, true));
tableViewerPlaetze.getTable().setLayout(layout);
tableViewerPlaetze.getTable().setLinesVisible(true);
tableViewerPlaetze.getTable().setHeaderVisible(true);
tableViewerPlaetze.setContentProvider(new ArrayContentProvider());
tableViewerPlaetze.setLabelProvider(new ITableLabelProvider() {
@Override
public Image getColumnImage(Object arg0, int arg1) {
return null;
}
@Override
public String getColumnText(Object element, int index) {
Platz platz = (Platz) element;
switch (index) {
case 0:
return platz.getReihe().getBezeichnung().toString();
case 1:
return platz.getNummer().toString();
case 2:
return platz.getKategorie().getBezeichnung().toString();
case 3:
int price = KundeEditor.this.calculateSinglePrice(platz);
String singlePrice = "";
singlePrice += price;
return singlePrice;
}
return null;
}
@Override
public void addListener(ILabelProviderListener listener) {
// nothing to do
}
@Override
public void dispose() {
// nothing to do
}
@Override
public boolean isLabelProperty(Object arg0, String arg1) {
return true;
}
@Override
public void removeListener(ILabelProviderListener arg0) {
// nothing to do
}
});
TableColumn colReihe = new TableColumn(tableViewerPlaetze.getTable(),
SWT.LEFT);
colReihe.setText("Reihe");
TableColumn colNummer = new TableColumn(tableViewerPlaetze.getTable(),
SWT.LEFT);
colNummer.setText("Nummer");
TableColumn colKategorie = new TableColumn(tableViewerPlaetze.getTable(),
SWT.LEFT);
colKategorie.setText("Kategorie");
TableColumn colPreis = new TableColumn(tableViewerPlaetze.getTable(),
SWT.LEFT);
colPreis.setText("Preis");
this.createSetTransaktionBackButton(shell);
this.createDeletePlatzButton(shell);
Label lblEmpty = new Label(shell,SWT.LEFT);
lblEmpty.setText("");
lblEmpty = new Label(shell,SWT.LEFT);
lblEmpty.setText("");
lblEmpty = new Label(shell,SWT.LEFT);
lblEmpty.setText("");
this.createSellReservierungButton(shell);
Java:
this.createTablePlaetze(shell);
IPlatzService ips = new PlatzService();
//this.tableViewerPlaetze.setInput(ips.sortSetPlatz(tmpTransaktion.getPlaetze()));
this.tableViewerPlaetze.setInput(tmpTransaktion.getPlaetze());
shell.open();
bei der auskommentierten zeile uebergebe ich die liste mit den sortierten werten
Java:
public void deletePlatzfromTrasaction(){
ISelection selectionTransaktion = this.tableViewerPlaetze.getSelection();
Platz platz = (Platz) ((IStructuredSelection) selectionTransaktion).getFirstElement();
log.debug("Chosen Platz: "+platz.toString());
boolean delete = MessageDialog.openQuestion(KundeEditor.this.getSite()
.getWorkbenchWindow().getShell(),
"Entfernen best�tigen", "Wollen Sie den Platz " + platz.getNummer().toString()
+ " wirklich entfernen?");
if(delete == true){
tmpPlaetze.add(platz);
Set<Platz> plaetze = tmpTransaktion.getPlaetze();
plaetze.remove(platz);
tmpTransaktion.setPlaetze(plaetze);
tableViewerPlaetze.refresh(true);
lblGesamtpreis.setText("Gesamtpreis der Reservierung: "+this.updatePreis(tmpTransaktion));
}
}
in dieser methode wird das refresh aufgerufen...
irgendwie sehe ich den fehler einfach nicht - bitte um hilfe!
danke!