Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Barbin2018-02-07 10:00:15 +0000
committerFlorian Barbin2018-02-13 14:59:16 +0000
commitcbe0d76108e5142c81e9f2ea8de2ce5a197c2a39 (patch)
treec881946112ea3d6bf1d64b8c05065dcdf6845e49
parentc07b653ced6294685d7f570a80d50bddb0b915d5 (diff)
downloadorg.eclipse.sirius-cbe0d76108e5142c81e9f2ea8de2ce5a197c2a39.tar.gz
org.eclipse.sirius-cbe0d76108e5142c81e9f2ea8de2ce5a197c2a39.tar.xz
org.eclipse.sirius-cbe0d76108e5142c81e9f2ea8de2ce5a197c2a39.zip
[530817] Extract WorkspaceModifyOperation in its own class
Bug: 530817 Bug: 497469 Cherry-picked-from: 85a7df28ad2e45c9ab2580fafe71a7ef8974b499 Change-Id: I32740b61069bfb73fdd569fffc0f6f44af6f5ac0 Signed-off-by: Florian Barbin <florian.barbin@obeo.fr>
-rw-r--r--plugins/org.eclipse.sirius.ui/src/org/eclipse/sirius/ui/tools/internal/actions/export/ExportRepresentationsFromFileAction.java90
1 files changed, 53 insertions, 37 deletions
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 38274028d6..f13f2275ba 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
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2007, 2017 THALES GLOBAL SERVICES and others.
+ * Copyright (c) 2007, 2018 THALES GLOBAL SERVICES and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -25,7 +25,6 @@ import org.eclipse.emf.common.util.URI;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
-import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.window.Window;
@@ -76,43 +75,9 @@ public class ExportRepresentationsFromFileAction implements IObjectActionDelegat
return;
}
- final IPath outputPath = dialog.getOutputPath();
- final ImageFileFormat imageFormat = dialog.getImageFormat();
- final boolean exportToHtml = dialog.isExportToHtml();
- final boolean exportDecorations = dialog.isExportDecorations();
- final boolean autoScale = dialog.isAutoScaleDiagram();
- final Integer scaleLevel = dialog.getDiagramScaleLevelInPercent();
-
- IRunnableWithProgress exportAllRepresentationsRunnable = new WorkspaceModifyOperation() {
-
- @Override
- protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
- Session session = null;
- boolean isOpen = false;
- try {
- monitor.beginTask(Messages.ExportRepresentationsFromFileAction_exportTask, 10);
- session = SessionManager.INSTANCE.openSession(sessionResourceURI, new SubProgressMonitor(monitor, 2), SiriusEditPlugin.getPlugin().getUiCallback());
-
- if (session != null) {
- // Get explicitly all representations (with loading them)
- final Collection<DRepresentation> dRepresentationsToExportAsImage = DialectManager.INSTANCE.getAllRepresentations(session);
- ExportAction exportAction = new ExportAction(session, dRepresentationsToExportAsImage, outputPath, imageFormat, exportToHtml, exportDecorations);
- exportAction.setAutoScaleDiagram(autoScale);
- exportAction.setDiagramScaleLevel(scaleLevel);
- exportAction.run(new SubProgressMonitor(monitor, 7));
- }
- } finally {
- if (!isOpen && session != null) {
- session.close(new SubProgressMonitor(monitor, 1));
- }
- monitor.done();
- }
- }
- };
-
final ProgressMonitorDialog pmd = new ProgressMonitorDialog(shell);
try {
- pmd.run(false, false, exportAllRepresentationsRunnable);
+ pmd.run(false, false, new ExportRepresentationsWorkspaceModifyOperation(dialog, sessionResourceURI));
} catch (final InvocationTargetException e) {
SiriusEditPlugin.getPlugin().getLog().log(new Status(IStatus.ERROR, SiriusEditPlugin.ID, e.getLocalizedMessage(), e));
MessageDialog.openError(shell, Messages.ExportRepresentationsFromFileAction_errorDialog_title, e.getTargetException().getMessage());
@@ -141,4 +106,55 @@ public class ExportRepresentationsFromFileAction implements IObjectActionDelegat
}
}
}
+
+ private class ExportRepresentationsWorkspaceModifyOperation extends WorkspaceModifyOperation {
+
+ private IPath outputPath;
+
+ private ImageFileFormat imageFormat;
+
+ private boolean exportToHtml;
+
+ private boolean exportDecorations;
+
+ private boolean autoScale;
+
+ private Integer scaleLevel;
+
+ private URI sessionResourceURI;
+
+ ExportRepresentationsWorkspaceModifyOperation(ExportSeveralRepresentationsAsImagesDialog dialog, URI sessionResourceURI) {
+ this.outputPath = dialog.getOutputPath();
+ this.imageFormat = dialog.getImageFormat();
+ this.exportToHtml = dialog.isExportToHtml();
+ this.exportDecorations = dialog.isExportDecorations();
+ this.autoScale = dialog.isAutoScaleDiagram();
+ this.scaleLevel = dialog.getDiagramScaleLevelInPercent();
+ this.sessionResourceURI = sessionResourceURI;
+ }
+
+ @Override
+ protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
+ Session session = null;
+ boolean isOpen = false;
+ try {
+ monitor.beginTask(Messages.ExportRepresentationsFromFileAction_exportTask, 10);
+ session = SessionManager.INSTANCE.openSession(sessionResourceURI, new SubProgressMonitor(monitor, 2), SiriusEditPlugin.getPlugin().getUiCallback());
+
+ if (session != null) {
+ // Get explicitly all representations (with loading them)
+ final Collection<DRepresentation> dRepresentationsToExportAsImage = DialectManager.INSTANCE.getAllRepresentations(session);
+ ExportAction exportAction = new ExportAction(session, dRepresentationsToExportAsImage, outputPath, imageFormat, exportToHtml, exportDecorations);
+ exportAction.setAutoScaleDiagram(autoScale);
+ exportAction.setDiagramScaleLevel(scaleLevel);
+ exportAction.run(new SubProgressMonitor(monitor, 7));
+ }
+ } finally {
+ if (!isOpen && session != null) {
+ session.close(new SubProgressMonitor(monitor, 1));
+ }
+ monitor.done();
+ }
+ }
+ };
}

Back to the top