|
|
|
|
Re: Linking in external file [message #1784363 is a reply to message #1784353] |
Tue, 27 March 2018 09:14 |
|
yes you need to customize the opener
import org.apache.log4j.Logger;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.FileStoreEditorInput;
import org.eclipse.ui.ide.IDE;
import org.eclipse.xtext.ui.editor.LanguageSpecificURIEditorOpener;
import org.eclipse.xtext.ui.editor.utils.EditorUtils;
import com.google.inject.Inject;
public class MyDslLanguageSpecificURIEditorOpener extends LanguageSpecificURIEditorOpener {
private static final Logger logger = Logger.getLogger(MyDslLanguageSpecificURIEditorOpener.class);
@Inject(optional = true)
private IWorkbench workbench;
@Override
public IEditorPart open(URI uri, EReference crossReference, int indexInList, boolean select) {
IEditorPart result = super.open(uri, crossReference, indexInList, select);
if (result == null && uri.isFile()) {
try {
IFileStore fileStore = EFS.getLocalFileSystem().getStore(new Path(uri.toFileString()));
FileStoreEditorInput editorInput = new FileStoreEditorInput(fileStore);
IWorkbenchPage activePage = workbench.getActiveWorkbenchWindow().getActivePage();
final IEditorPart editor = IDE.openEditor(activePage, editorInput, getEditorId());
selectAndReveal(editor, uri, crossReference, indexInList, select);
return EditorUtils.getXtextEditor(editor);
} catch (WrappedException e) {
logger.error("Error while opening editor part for EMF URI '" + uri + "'", e.getCause());
} catch (PartInitException partInitException) {
logger.error("Error while opening editor part for EMF URI '" + uri + "'", partInitException);
}
}
return result;
}
}
class MyDslUiModule extends AbstractMyDslUiModule {
override void configureLanguageSpecificURIEditorOpener(com.google.inject.Binder binder) {
if(PlatformUI.isWorkbenchRunning()) binder.bind(IURIEditorOpener).annotatedWith(LanguageSpecific).to(
MyDslLanguageSpecificURIEditorOpener)
}
}
Twitter : @chrdietrich
Blog : https://www.dietrich-it.de
|
|
|
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.63994 seconds