Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/cdo/bundles/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/handlers/ExportModelHandler.java')
-rwxr-xr-xplugins/cdo/bundles/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/handlers/ExportModelHandler.java97
1 files changed, 97 insertions, 0 deletions
diff --git a/plugins/cdo/bundles/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/handlers/ExportModelHandler.java b/plugins/cdo/bundles/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/handlers/ExportModelHandler.java
new file mode 100755
index 00000000..486334a8
--- /dev/null
+++ b/plugins/cdo/bundles/org.eclipse.papyrus.cdo.ui/src/org/eclipse/papyrus/cdo/internal/ui/handlers/ExportModelHandler.java
@@ -0,0 +1,97 @@
+/*****************************************************************************
+ * Copyright (c) 2013, 2017 CEA LIST 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ * Eike Stepper (CEA) - bug 466520
+ *****************************************************************************/
+package org.eclipse.papyrus.cdo.internal.ui.handlers;
+
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.emf.cdo.eresource.CDOResource;
+import org.eclipse.emf.cdo.eresource.CDOResourceNode;
+import org.eclipse.emf.cdo.explorer.CDOExplorerUtil;
+import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout;
+import org.eclipse.emf.cdo.util.CDOURIUtil;
+import org.eclipse.emf.cdo.view.CDOView;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.papyrus.cdo.internal.ui.views.DIModel;
+import org.eclipse.papyrus.cdo.internal.ui.views.DIResourceQuery;
+import org.eclipse.papyrus.cdo.internal.ui.wizards.ModelExportWizard;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+import com.google.common.collect.Lists;
+
+/**
+ * This is the ExportModelHandler type. Enjoy.
+ */
+public class ExportModelHandler extends AbstractHandler {
+
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ ISelection selection = HandlerUtil.getCurrentSelection(event);
+ if (selection instanceof IStructuredSelection) {
+ IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event);
+
+ if (window != null) {
+ exportModels(window, null, (IStructuredSelection) selection);
+ }
+ }
+
+ return null;
+ }
+
+ public static void exportModels(IWorkbenchWindow window, IContainer destination, IStructuredSelection selection) {
+ ModelExportWizard wizard = new ModelExportWizard();
+ wizard.init(window.getWorkbench(), selection);
+ wizard.setInitialDestination(destination);
+
+ new WizardDialog(window.getShell(), wizard).open();
+ }
+
+ public static void exportModels(IContainer destination, Iterable<URI> resourceURIs) {
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+
+ List<DIModel> models = Lists.newArrayList();
+ for (URI next : resourceURIs) {
+ CDOCheckout checkout = CDOExplorerUtil.getCheckout(next);
+ if (checkout != null) {
+ CDOView view = checkout.getView();
+ if (view != null) { // the repository could be disconnected by now
+ try {
+ CDOResourceNode resource = view.getResourceNode(CDOURIUtil.extractResourcePath(next));
+ if (resource instanceof CDOResource) {
+ // only export DI models!
+ if (DIResourceQuery.getDIResources(view).contains(resource)) {
+ models.add(DIModel.getInstance((CDOResource) resource, true));
+ }
+ }
+ } catch (Exception e) {
+ // normal consequence of the repository path not being found
+ }
+ }
+ }
+ }
+
+ if ((window != null) && !models.isEmpty()) {
+ exportModels(window, destination, new StructuredSelection(models));
+ }
+ }
+}

Back to the top