How to Update the Status Message Using Worker Thread in Eclipse Rcp
Objective: -To create an eclipse application that will dynamically update the action bar's status message from a worker thread. Updatin...
https://www.czetsuyatech.com/2009/11/java-eclipse-rcp-update-status-message-using-worker-thread.html
Objective:
-To create an eclipse application that will dynamically update the action bar's status message from a worker thread. Updating a part of the screen in another thread is a good practice, since it will not make your screen blink, also the screen will not look like it hanged.
Requirements:
-eclipse-rcp (eclipse.org)
1.) create a new eclipse-rcp project with a view
2.) create a new class which will implement a Runnable interface (worker thread), name it StatusUpdater
-the constructor has a ViewPart1 parameter (which will be the only view that we defined)
-view.updateStatus is a method in the ViewPart1
Going back into the ViewPart1 class
1.) in the createPartControl method, we will instantiate our StatusUpdater class
And finally the updateStatus method
-To create an eclipse application that will dynamically update the action bar's status message from a worker thread. Updating a part of the screen in another thread is a good practice, since it will not make your screen blink, also the screen will not look like it hanged.
Requirements:
-eclipse-rcp (eclipse.org)
1.) create a new eclipse-rcp project with a view
2.) create a new class which will implement a Runnable interface (worker thread), name it StatusUpdater
public class StatusUpdater implements Runnable { private ViewPart1 view; public StatusUpdater(ViewPart1 view) { this.view = view; } @Override public void run() { int i = 0; while(true) { view.updateStatus("Counter: "+i); i++; try { Thread.sleep(1000); } catch(InterruptedException e) { } } } }What you should notice:
-the constructor has a ViewPart1 parameter (which will be the only view that we defined)
-view.updateStatus is a method in the ViewPart1
Going back into the ViewPart1 class
1.) in the createPartControl method, we will instantiate our StatusUpdater class
public void createPartControl(Composite parent) { Thread t = new Thread(new StatusUpdater(this)); t.start(); }
And finally the updateStatus method
public void updateStatus(final String s) { final IActionBars bars = getViewSite().getActionBars(); //not Display.getCurrent() and new Display(), both will throw exception Display.getDefault().asyncExec(new Runnable() { @Override public void run() { bars.getStatusLineManager().setMessage(s); } }); }
Post a Comment