/** * Copyright (c) 2013 committers of YAKINDU 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: * committers of YAKINDU - initial API and implementation * */ package org.yakindu.sct.ui.editor.partitioning; import java.io.IOException; import java.util.Collections; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.ui.IElementFactory; import org.eclipse.ui.IMemento; /** * * @author andreas muelder - Initial contribution and API * */ public class DiagramEditorInputFactory implements IElementFactory { private static final String EMF_URI = "uri"; public static final String ID = "org.yakindu.sct.ui.editor.DiagramEditorInputFactory"; public IAdaptable createElement(IMemento memento) { String uriStr = memento.getString(EMF_URI); if (uriStr == null) { return null; } URI uri = URI.createURI(uriStr); ResourceSet resourceSet = DiagramPartitioningUtil.getSharedDomain().getResourceSet(); Resource resource = resourceSet.getResource(uri, false); if (resource == null) resource = resourceSet.createResource(uri); try { resource.load(Collections.emptyMap()); } catch (IOException e) { e.printStackTrace(); } Diagram diagram = (Diagram) resource.getEObject(uri.fragment()); return new DiagramEditorInput(diagram); } public static void saveState(IMemento memento, DiagramEditorInput input) { URI uri = EcoreUtil.getURI(input.getDiagram()); String fileString = uri.toString(); memento.putString(EMF_URI, fileString); } }