[539996] Improve monitor steps on export all representations as images
Monitor steps are no longer based on a fixed value but on the number of
representations to export as images
Bug: 539996
Change-Id: I81e195b061f6147100cf25af36480e56dcab69e5
Signed-off-by: Steve Monnier <steve.monnier@obeo.fr>
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/actions/export/ExportAction.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/actions/export/ExportAction.java
index 64aeb1f..5d4e8fc 100644
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/actions/export/ExportAction.java
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/api/actions/export/ExportAction.java
@@ -134,7 +134,7 @@
@Override
protected void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
try {
- monitor.beginTask(ExportAction.EXPORT_DIAGRAMS_AS_IMAGES_ACTION_TITLE, 7);
+ monitor.beginTask(ExportAction.EXPORT_DIAGRAMS_AS_IMAGES_ACTION_TITLE, dRepresentationsToExportAsImage.size());
try {
createImageFiles(monitor);
} catch (final OutOfMemoryError | SizeTooLargeException e) {
@@ -212,7 +212,9 @@
}
if (DialectUIManager.INSTANCE.canHandle(representation)) {
try {
+ monitor.subTask("Export as image: " + representation.getName()); //$NON-NLS-1$
DialectUIManager.INSTANCE.export(representation, session, filePath, exportFormat, monitor, exportDecorations);
+ monitor.worked(1);
} catch (CoreException exception) {
if (exception instanceof SizeTooLargeException) {
errorDuringExport = true;
diff --git a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/export/ExportRepresentationsFromFileAction.java b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/export/ExportRepresentationsFromFileAction.java
index bb87fcc..97f4324 100644
--- a/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/export/ExportRepresentationsFromFileAction.java
+++ b/plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/export/ExportRepresentationsFromFileAction.java
@@ -144,22 +144,22 @@
@Override
protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
boolean isOpen = false;
- SubMonitor subMonitor = SubMonitor.convert(monitor, Messages.ExportRepresentationsFromFileAction_exportTask, 10);
try {
isOpen = session.isOpen();
if (!isOpen) {
- session = SessionManager.INSTANCE.openSession(sessionResourceURI, subMonitor.newChild(2), SiriusEditPlugin.getPlugin().getUiCallback());
+ session = SessionManager.INSTANCE.openSession(sessionResourceURI, monitor, SiriusEditPlugin.getPlugin().getUiCallback());
}
if (session != null) {
// Get explicitly all representations (with loading them)
final Collection<DRepresentation> dRepresentationsToExportAsImage = DialectManager.INSTANCE.getAllRepresentations(session);
+ SubMonitor subMonitor = SubMonitor.convert(monitor, Messages.ExportRepresentationsFromFileAction_exportTask, dRepresentationsToExportAsImage.size());
ExportAction exportAction = new ExportAction(session, dRepresentationsToExportAsImage, outputPath, imageFormat, exportToHtml, exportDecorations);
exportAction.setDiagramScaleLevel(scaleLevel);
- exportAction.run(subMonitor.newChild(7));
+ exportAction.run(subMonitor.newChild(dRepresentationsToExportAsImage.size()));
}
} finally {
if (!isOpen && session != null) {
- session.close(subMonitor.newChild(1));
+ session.close(monitor);
}
monitor.done();
}