| /**
|
| * Copyright (c) 2013, 2019 Mia-Software and others.
|
| *
|
| * All rights reserved. This program and the accompanying materials
|
| * are made available under the terms of the Eclipse Public License v2.0
|
| * which accompanies this distribution, and is available at
|
| * http://www.eclipse.org/legal/epl-v20.html
|
| *
|
| * Contributors:
|
| * Gregoire Dupe (Mia-Software) - Bug 406570 - Handlers to Save and SaveAs EMF resources
|
| */ |
| package org.eclipse.modisco.facet.util.emf.ui.internal;
|
|
|
| import java.io.IOException;
|
| import java.net.MalformedURLException;
|
| import java.util.Collections;
|
|
|
| import org.eclipse.emf.common.util.URI;
|
| import org.eclipse.emf.ecore.resource.Resource;
|
| import org.eclipse.modisco.facet.util.core.Logger;
|
| import org.eclipse.modisco.facet.util.emf.ui.internal.dialogs.SaveAsDialog;
|
| import org.eclipse.modisco.facet.util.ui.internal.exported.dialog.IDialogCallback;
|
| import org.eclipse.modisco.facet.util.ui.internal.exported.dialog.IOkDialog;
|
| import org.eclipse.modisco.facet.util.ui.internal.exported.dialog.IOkDialogFactory;
|
| import org.eclipse.modisco.facet.util.ui.internal.exported.dialog.IWithResultDialogCallback;
|
| import org.eclipse.osgi.util.NLS;
|
| import org.eclipse.swt.widgets.Shell;
|
|
|
| public final class ResourceUiUtils {
|
|
|
| private ResourceUiUtils() {
|
| // Must no be used
|
| }
|
|
|
| public static IOkDialog save(final Resource resource, final Shell shell) {
|
| IOkDialog dialog = null;
|
| try {
|
| resource.save(Collections.EMPTY_MAP);
|
| } catch (MalformedURLException e) {
|
| ResourceUiUtils.openSaveAsDialog(resource, shell);
|
| } catch (IOException e) {
|
| final IDialogCallback<Void> callBack = new IDialogCallback<Void>() {
|
| public void committed(final Void result2) {
|
| // Nothing to do.
|
| }
|
| };
|
| dialog = savingFailed(e, shell, callBack);
|
| }
|
| return dialog;
|
| }
|
|
|
| private static IOkDialog savingFailed(final IOException exception,
|
| final Shell shell, final IDialogCallback<Void> callBack) {
|
| Logger.logError(exception, Activator.getDefault());
|
| final String errorMessage = NLS.bind(
|
| Messages.ResourceUiUtils_TheResourceSavingFailed,
|
| exception.getMessage());
|
| return IOkDialogFactory.DEFAULT.openErrorDialog(shell,
|
| Messages.ResourceUiUtils_SavingFailed, errorMessage, callBack);
|
| }
|
|
|
| public static SaveAsDialog openSaveAsDialog(final Resource resource,
|
| final Shell shell) {
|
| final IWithResultDialogCallback<String> callBack = new IWithResultDialogCallback<String>() {
|
|
|
| public void commited(final String result) {
|
| ResourceUiUtils.saveAs(resource, result, shell);
|
| }
|
|
|
| public void canceled(final String result) {
|
| // Nothing to do
|
| }
|
| };
|
| final SaveAsDialog dialog = new SaveAsDialog(shell, resource.getURI()
|
| .toString(), callBack);
|
| dialog.open();
|
| return dialog;
|
| }
|
|
|
| protected static IOkDialog saveAs(final Resource resource,
|
| final String result, final Shell shell) {
|
| IOkDialog dialog = null;
|
| try {
|
| resource.setURI(URI.createURI(result));
|
| resource.save(Collections.EMPTY_MAP);
|
| } catch (IOException e) {
|
| final IDialogCallback<Void> callBack = new IDialogCallback<Void>() {
|
| public void committed(final Void result2) {
|
| ResourceUiUtils.openSaveAsDialog(resource, shell);
|
| }
|
| };
|
| dialog = savingFailed(e, shell, callBack);
|
| }
|
| return dialog;
|
| }
|
|
|
| }
|