In meinem TableViewer habe ich einen OwnerDrawLabelProvider, wo ich für eine bestimmte Spalte in meiner Tabelle eine ProgressBar zu einer TableEditor-Instanz hinzufüge.Wie aktualisiert ProgressBar in TableViewer?
Mein Problem ist folgendes:
Ich bin in der Lage, die Auswahl der ProgressBar zu setzen, sondern, wenn man versucht, sie zu aktualisieren auf dem gleichen Wert bleibt.
Code:
@Override
public void update(ViewerCell cell) {
if(columnIndex == 4){
Table table = tableViewer.getTable();
TableItem item;
TableItem[] items;
TableEditor editor;
items = table.getItems();
ProgressBar bar = new ProgressBar(table, SWT.NONE);
bar.setMinimum(0);
bar.setMaximum(100);
bar.setState(SWT.NORMAL);
bar.setSelection(0);
bar.setLayoutData(new GridData(SWT.FILL,SWT.CENTER,true,true));
if(mediator.isSent()){
List<Item> itemsSendToSubmit = mediator.getItemsSendToSubmit();
if(!itemsSendToSubmit.isEmpty()){
for(Iterator<Item> itemIterator = itemsSendToSubmit.iterator(); itemIterator.hasNext();)
{
Item itemSubmited = itemIterator.next();
for(TableItem tableItem: items)
{ if(tableItem.getText(0).contains(itemSubmited.getId()))
{
bar.setSelection(PluginUtility.getBuildProgress(itemSubmited.getPlan()));
editor = new TableEditor(table);
editor.grabHorizontal = true;
editor.grabVertical = true;
editor.setEditor(bar, tableItem, 4);
}
}
}
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
ich ein Problem gelesen, dass setSelection Methode für ProgressBar einige Probleme hat. Ich habe meine eigene ProgressBar erstellt, indem ich die Basisklasse erweitert habe und die setSelection-Methode mit dem Fixcode übersteuert habe, aber immer noch nicht funktioniert.
In einer normalen Hauptfunktion funktioniert das.
Kann ich einige Vorschläge bekommen, was das Problem sein kann oder wie das Hinzufügen dieses ProgressBar in einem TableViewer sein Verhalten beeinflusst?
EDIT: Wenn ich eine einzelne Instanz von Fortschrittsbalken beim Erstellen des Label - Providers erstellt und dann an den Tableeditor übergebe, wird der Fortschrittsbalken für das letzte Element, auf dem ich sage, editor.setEditor (bar, tableItem, 4); aber ich muss eine Fortschrittsanzeige für jeden Artikel anzeigen und für jeden Artikel aktualisieren!
Aktualisieren Sie die gleiche ProgressBar-Instanz? Oder Sie erstellen bei jedem Update ein neues. Wenn Sie die gleiche Instanz verwenden, sollten Sie ihren Zustand nur aktualisieren, indem Sie setSelection (...) aufrufen; – stan
Eine neue Instanz für jedes Update. In der Tat spielt es keine Rolle, da ich immer den Editor erstelle und die neue Instanz darauf setze. –
Können Sie sagen, wie viele Artikel die Tabelle haben wird? Bei einer großen Anzahl von Items empfehle ich, den Fortschrittsbalken _zuziehen_, um Ressourcen zu sparen. –