/**
* Copyright (c) 2015 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.editor;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.xtext.ui.editor.IURIEditorOpener;
/**
* Opens <code>.sct</code> files in corresponding statechart diagramm editor.
*
* @author thomas kutz - Initial contribution and API
*
*/
public class SCTFileEditorOpener implements IURIEditorOpener {
@Override
public IEditorPart open(URI uri, boolean select) {
try {
IFile fileToOpen = toFile(uri);
if (fileToOpen != null) {
return PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
.openEditor(new FileEditorInput(fileToOpen), StatechartDiagramEditor.ID);
}
} catch (PartInitException e) {
e.printStackTrace();
}
return null;
}
@Override
public IEditorPart open(URI referenceOwnerURI, EReference reference, int indexInList, boolean select) {
return open(referenceOwnerURI, select);
}
public IFile toFile(URI uri) {
if (uri.isPlatformResource()) {
String platformString = uri.toPlatformString(true);
return (IFile) ResourcesPlugin.getWorkspace().getRoot().findMember(platformString);
}
return null;
}
}