PlatformUI.getWorkbench().getProgressService() [message #648605] |
Thu, 13 January 2011 16:20 |
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
|
|
|
Powered by
FUDForum. Page generated in 0.02527 seconds