| /***************************************************************************** |
| * 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)); |
| } |
| } |
| } |