Hallo arbeite mit eclipse und bin gerade dabei in einer action eine tabelle zu aktualisieren.
Aber während des aufrufs bleibt die gui gesperrt und auch in der statusliste wird weder die progressbar noch der Text angezeigt. Was habe ich falsch gemacht? :cry:
Hier mein Code
Da das später über netzwerkgeht und die verbindung aber noch nicht geht habe ich in dem Thread in sleep eingebaut.
Aber während des aufrufs bleibt die gui gesperrt und auch in der statusliste wird weder die progressbar noch der Text angezeigt. Was habe ich falsch gemacht? :cry:
Hier mein Code
Code:
public class ActionAttachRefresh extends Action implements IWorkbenchAction{
private final IWorkbenchWindow window;
public final static String ID = "de.fullfillment.client.druckmanager.actions.ActionAttachRefresh";
public ActionAttachRefresh(IWorkbenchWindow window) {
this.window = window;
setId(ID);
setActionDefinitionId(ID);
setText("&Aktualisieren");
setToolTipText("Aktualisieren der Liste.");
}
public void dispose() {
// TODO Auto-generated method stub
}
@Override
public void run() {
System.out.println("Aktualisieren Beilagen");
if (window != null)
{
try
{
final ViewAttach view = (ViewAttach)window.getActivePage().showView(ViewAttach.ID);
IActionBars bars = view.getViewSite().getActionBars();
IStatusLineManager statusLine = bars.getStatusLineManager();
statusLine.setMessage("Aktualisiert");
statusLine.update(true);
IProgressMonitor pm = statusLine.getProgressMonitor();
pm.beginTask("Aktualisieren", 1);
pm.worked(1);
new Thread(new Runnable(){
@Override
public void run()
{
try{ Thread.sleep(5000);} catch (Exception e) {}
DruckManagerClient client = new DruckManagerClient();
final AttachOverviewResponse attachOverviewResponse = client.attachOverview();
System.out.println("in thread");
if (attachOverviewResponse != null)
{
Display.getCurrent().asyncExec (new Runnable () {
public void run () {
TableViewer viewer = view.getTableViewer();
viewer.setInput(attachOverviewResponse);
viewer.getTable().setBounds(20, 30, 950, 300);
viewer.refresh();
view.setFocus();
System.out.println("danach");
}
});
}else
{
MessageDialog.openError(window.getShell(), "Datenfehler", "Fehler bei der Datenabfrage");
}
}
}).run();
pm.done();
} catch (PartInitException e)
{
e.printStackTrace();
}
}
}
}
Da das später über netzwerkgeht und die verbindung aber noch nicht geht habe ich in dem Thread in sleep eingebaut.