Home » Eclipse Projects » Remote Application Platform (RAP) » PlatformUI.getWorkbench().getProgressService()(PlatformUI.getWorkbench().getProgressService() does not show progress while loading)
PlatformUI.getWorkbench().getProgressService() [message #659490] |
Mon, 14 March 2011 09:27 |
Sudesh Bulathsinhala Messages: 193 Registered: October 2010 |
Senior Member |
|
|
hello,
we're developing single-source RCP/RAP enterprise product. the following code snippet is intended to notify user that long running operation is in progress. this is due to time consuming method called CreatePartControl in the EditorPart. this method is responsible for constructing UI elements in the composite.we're delegating this UI building logic to a DatasetCompositeFactory, which is responsible for rendering the UI elements of the EditorPart. (we're not using static UI's, ie, the UI of the editor's are dynamic and hence customizable by end users).
this is working as expected under RCP, i.e when an Editor is invoked, it pops up the Progress Dialog Monitor and notify the user that long operation is running in the background. however the same code which we utilize in RAP does not notify the user while constructing the UI that the long operation is running in the background. it does not show the Progress Monitor Dialog at all and neither you find error message.
our requirement is to visually notify users, when Editor loading is consuming time, with a progress monitor or something similar.
@Override
public void createPartControl(final Composite parent) {
final FormLayout layout = new FormLayout();
layout.marginWidth = 0;
layout.marginHeight = 0;
parent.setLayout(layout);
/*
* ProgressService will notify the user that the loading of the
* workbench element, i.e EditorPart is already in progress using
* ProgressMonitorDialog
*/
try {
PlatformUI
.getWorkbench()
.getProgressService()
.runInUI(PlatformUI.getWorkbench().getProgressService(),
new IRunnableWithProgress() {
@Override
public void run(final IProgressMonitor monitor) {
monitor.beginTask(
"Opening Editor in progress, please wait..",
IProgressMonitor.UNKNOWN);
final long eventOne = System
.currentTimeMillis();
DatasetCompositeFactory
.getInstance()
.buildComposite(
parent,
_userInterfaceRender
.getCompositePanelModel(),
_datasetControllerArray);
final long diff = eventOne
- System.currentTimeMillis();
System.out.println("diff - " + diff);
monitor.done();
}
}, null);
} catch (final InvocationTargetException e) {
e.printStackTrace();
} catch (final InterruptedException e) {
e.printStackTrace();
}
}
kindly advise us if this is the correct/preferred approach to implement this feature on RAP, or alternative approach if any exist.
regards,
sudesh
|
|
|
Re: PlatformUI.getWorkbench().getProgressService() [message #659511 is a reply to message #659490] |
Mon, 14 March 2011 11:38 |
Ivan Furnadjiev Messages: 2426 Registered: July 2009 Location: Sofia, Bulgaria |
Senior Member |
|
|
Hi Sudesh,
could you try to enable the UICallBack manually. Does it make any
change? Witch version of RAP are you using - 1.4M5 (with workbench 3.7
update) or an old one (based on workbench 3.4)? If your code works in
RCP, but not in RAP it's probably a bug. Please file a bugzilla with a
complete self-running snippet to reproduce it.
Thanks,
Ivan
On 3/14/2011 11:27 AM, Sudesh Bulathsinhala wrote:
> hello,
>
> we're developing single-source RCP/RAP enterprise product. the
> following code snippet is intended to notify user that long running
> operation is in progress. this is due to time consuming method called
> CreatePartControl in the EditorPart. this method is responsible for
> constructing UI elements in the composite.we're delegating this UI
> building logic to a DatasetCompositeFactory, which is responsible for
> rendering the UI elements of the EditorPart. (we're not using static
> UI's, ie, the UI of the editor's are dynamic and hence customizable by
> end users).
>
> this is working as expected under RCP, i.e when an Editor is invoked,
> it pops up the Progress Dialog Monitor and notify the user that long
> operation is running in the background. however the same code which we
> utilize in RAP does not notify the user while constructing the UI that
> the long operation is running in the background. it does not show the
> Progress Monitor Dialog at all and neither you find error message.
>
> our requirement is to visually notify users, when Editor loading is
> consuming time, with a progress monitor or something similar.
>
>
> @Override
> public void createPartControl(final Composite parent) {
> final FormLayout layout = new FormLayout();
> layout.marginWidth = 0;
> layout.marginHeight = 0;
> parent.setLayout(layout);
> /*
> * ProgressService will notify the user that the loading of the
> * workbench element, i.e EditorPart is already in progress using
> * ProgressMonitorDialog
> */
> try {
> PlatformUI
> .getWorkbench()
> .getProgressService()
>
> .runInUI(PlatformUI.getWorkbench().getProgressService(),
> new IRunnableWithProgress() {
> @Override
> public void run(final IProgressMonitor
> monitor) {
> monitor.beginTask(
> "Opening Editor in
> progress, please wait..",
> IProgressMonitor.UNKNOWN);
> final long eventOne = System
> .currentTimeMillis();
> DatasetCompositeFactory
> .getInstance()
> .buildComposite(
> parent,
> _userInterfaceRender
>
> .getCompositePanelModel(),
>
> _datasetControllerArray);
> final long diff = eventOne
> - System.currentTimeMillis();
> System.out.println("diff - " + diff);
> monitor.done();
> }
> }, null);
> } catch (final InvocationTargetException e) {
> e.printStackTrace();
> } catch (final InterruptedException e) {
> e.printStackTrace();
> }
> }
>
>
> kindly advise us if this is the correct/preferred approach to
> implement this feature on RAP, or alternative approach if any exist.
>
> regards,
> sudesh
>
|
|
| | | |
Goto Forum:
Current Time: Thu Apr 25 22:18:47 GMT 2024
Powered by FUDForum. Page generated in 0.03537 seconds
|