Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Sirius » Open diagram programmatically with custom input (no file)
Open diagram programmatically with custom input (no file) [message #1741004] Mon, 22 August 2016 10:39 Go to next message
Martin Jedlicka is currently offline Martin JedlickaFriend
Messages: 122
Registered: January 2016
Senior Member
Hello,

I have a question to open a diagram with custom input (not file). I have class MyEditorInput that implements the interface IEditorInput. MyEditorInput contains a variable InputStream that contains a graphic representation (content file representation.aird). This file, but there is no local disk. The thing that file representation.aird is stored in the database, read its contents and the need to open the diagram without saving the file to disk.

Can this be done? And if so, how?

Currently I have to open a diagram class that implements the interface IEditorLauncher and is defined as the launcher in org.eclipse.ui.editors. This class opens a diagram of an external editor using DialectUIManager.INSTANCE.openEditor (*).

Thanks for any advice. Any example, any code.

Martin
Re: Open diagram programmatically with custom input (no file) [message #1741024 is a reply to message #1741004] Mon, 22 August 2016 12:11 Go to previous messageGo to next message
Maxime Porhel is currently offline Maxime PorhelFriend
Messages: 516
Registered: July 2009
Location: Nantes, France
Senior Member
Hi Martin,

You might take a look to org.eclipse.sirius.tools.internal.resource.InMemoryResourceImpl/InMemoryResourceFactoryImpl/InMemoryURIConverterImpl/InMemoryURIHandlerImpl.
Note that this is not API.

To work correctly in Sirius/EMF your representation file contents (which are EObjects) must be in a Resource and in the ResourceSet. So you should have you InputStream wrapped in a Resource and give this "InMemory" resource to Sirius like a standard aird file.

This also used to be done in EcoreTools with a specific one-shot Diagram editors with no aird file. The corresponding declaration is currently disabled (look for org.eclipse.emf.ecoretools.design.editor.EcoreEntitiesReadOnlyEditor in org.eclipse.emf.ecoretools.design.ui/plugin.xml).

Regards

Regards,

--
Maxime - Obeo

Need training or professional services for Sirius?
http://www.obeodesigner.com/sirius
Re: Open diagram programmatically with custom input (no file) [message #1741589 is a reply to message #1741024] Fri, 26 August 2016 07:49 Go to previous messageGo to next message
Martin Jedlicka is currently offline Martin JedlickaFriend
Messages: 122
Registered: January 2016
Senior Member
Hi Maxime,

thanks for reply.

I implemented custom editor with AbstractSpecificDDiagramEditor for open diagram with representation file (*.aird).
Now I want to open the diagram without representation file, but I can not load a resource.
I InputStream that contains the representation file and code:

final URI representationURI = URI.createGenericURI(URIQuery.INMEMORY_URI_SCHEME, "file.aird", null);

// custom representation file in input stream
InputStream inputStream = ((ComponentEditorInput) input).getInputStream();

ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(representationURI);
try {
   resource.load(inputStream, Collections.EMPTY_MAP);
} catch (IOException e) {
   e.printStackTrace();
}


...but show exception:

java.io.IOException: Unexpected end of stream
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl$EObjectInputStream.fill(BinaryResourceImpl.java:2695)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl$EObjectInputStream.readByte(BinaryResourceImpl.java:2685)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl$EObjectInputStream.readSignature(BinaryResourceImpl.java:1987)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl$EObjectInputStream.<init>(BinaryResourceImpl.java:1959)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl.createEObjectInputStream(BinaryResourceImpl.java:274)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl.doLoad(BinaryResourceImpl.java:263)
	at org.eclipse.sirius.tools.internal.resource.InMemoryResourceImpl.doLoad(InMemoryResourceImpl.java:53)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
	at com.ge.eufo.processDesigner.design.editor.GraphicalProcessEditorInputTranformer.transformInput(GraphicalProcessEditorInputTranformer.java:201)
	at com.ge.eufo.processDesigner.design.editor.GraphicalProcessEditor.init(GraphicalProcessEditor.java:38)
	at org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:361)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:319)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:898)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:879)
	at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:121)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:345)
	at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:264)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:104)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:73)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:55)
	at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:971)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:640)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:746)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:717)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:711)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$1.handleEvent(PartServiceImpl.java:99)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:186)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:211)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
	at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
	at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
	at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
	at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:85)
	at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
	at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:494)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:458)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:724)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:396)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1166)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3234)
	at org.eclipse.ui.internal.WorkbenchPage.access$25(WorkbenchPage.java:3149)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:3131)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3126)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3090)
	at com.ge.eufo.ui.utils.UiUtils.openEditor(UiUtils.java:153)
	at com.ge.eufo.workspace.managers.ComponentTypeManager.openEditorInternal(ComponentTypeManager.java:132)
	at com.ge.eufo.workspace.managers.ComponentTypeManager.openEditor(ComponentTypeManager.java:122)
	at com.ge.eufo.workspace.managers.ComponentTypeManager.openEditor(ComponentTypeManager.java:87)
	at com.ge.eufo.navigationpanel.navigator.ComponentNavigator$3.run(ComponentNavigator.java:149)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at com.ge.eufo.navigationpanel.navigator.ComponentNavigator.openEditor(ComponentNavigator.java:145)
	at com.ge.eufo.navigationpanel.navigator.ComponentNavigator.handleDoubleClick(ComponentNavigator.java:139)
	at com.ge.eufo.ui.navigator.AbstractNavigatorView$1.doubleClick(AbstractNavigatorView.java:83)
	at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:832)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
	at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:829)
	at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1470)
	at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1263)
	at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:252)
	at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:249)
	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:311)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at com.ness.eufo.starter.intro.Application.start(Application.java:251)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)


...or...

java.io.IOException: Invalid signature for a binary EMF serialization
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl$EObjectInputStream.readSignature(BinaryResourceImpl.java:1996)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl$EObjectInputStream.<init>(BinaryResourceImpl.java:1959)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl.createEObjectInputStream(BinaryResourceImpl.java:274)
	at org.eclipse.emf.ecore.resource.impl.BinaryResourceImpl.doLoad(BinaryResourceImpl.java:263)
	at org.eclipse.sirius.tools.internal.resource.InMemoryResourceImpl.doLoad(InMemoryResourceImpl.java:53)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
	at com.ge.eufo.processDesigner.design.editor.GraphicalProcessEditorInputTranformer.transformInput(GraphicalProcessEditorInputTranformer.java:201)
	at com.ge.eufo.processDesigner.design.editor.GraphicalProcessEditor.init(GraphicalProcessEditor.java:38)
	at org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:361)
	at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:319)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:898)
	at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:879)
	at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:121)
	at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:345)
	at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:264)
	at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:104)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:73)
	at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:55)
	at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:971)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:640)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:746)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:717)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:711)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:695)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$1.handleEvent(PartServiceImpl.java:99)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
	at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:186)
	at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
	at org.eclipse.swt.widgets.Display.syncExec(Display.java:4761)
	at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:211)
	at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
	at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
	at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
	at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
	at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
	at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
	at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
	at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
	at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:85)
	at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:59)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
	at org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:171)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:494)
	at org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:458)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:724)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:396)
	at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1166)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3234)
	at org.eclipse.ui.internal.WorkbenchPage.access$25(WorkbenchPage.java:3149)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:3131)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3126)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3090)
	at com.ge.eufo.ui.utils.UiUtils.openEditor(UiUtils.java:153)
	at com.ge.eufo.workspace.managers.ComponentTypeManager.openEditorInternal(ComponentTypeManager.java:132)
	at com.ge.eufo.workspace.managers.ComponentTypeManager.openEditor(ComponentTypeManager.java:122)
	at com.ge.eufo.workspace.managers.ComponentTypeManager.openEditor(ComponentTypeManager.java:87)
	at com.ge.eufo.navigationpanel.navigator.ComponentNavigator$3.run(ComponentNavigator.java:149)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at com.ge.eufo.navigationpanel.navigator.ComponentNavigator.openEditor(ComponentNavigator.java:145)
	at com.ge.eufo.navigationpanel.navigator.ComponentNavigator.handleDoubleClick(ComponentNavigator.java:139)
	at com.ge.eufo.ui.navigator.AbstractNavigatorView$1.doubleClick(AbstractNavigatorView.java:83)
	at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:832)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
	at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:829)
	at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1470)
	at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1263)
	at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:252)
	at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:249)
	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:311)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4362)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1113)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4180)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3769)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at com.ness.eufo.starter.intro.Application.start(Application.java:251)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1515)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1488)


Thanks for any advice.

Martin

[Updated on: Fri, 26 August 2016 08:05]

Report message to a moderator

Re: Open diagram programmatically with custom input (no file) [message #1741610 is a reply to message #1741589] Fri, 26 August 2016 09:48 Go to previous messageGo to next message
Maxime Porhel is currently offline Maxime PorhelFriend
Messages: 516
Registered: July 2009
Location: Nantes, France
Senior Member
Hi Martin,

Another lead might be to create the InMemoryResource, add it to the resource and do a res.getContents().add(yourContent) with your content transformed from your own stream from your database.

You might also create your own resource factory and emf resource with no serialization but your own implementations of doSave/doLoad to deal with your db.

Regards
Re: Open diagram programmatically with custom input (no file) [message #1741742 is a reply to message #1741610] Mon, 29 August 2016 08:59 Go to previous message
Martin Jedlicka is currently offline Martin JedlickaFriend
Messages: 122
Registered: January 2016
Senior Member
Hi Maxime,

thanks for reply.

I understand this and it works. Thanks.
But ... somehow I do not understand how to create a session and representation for the resource in memory.

I have the code (alternatively, I can send my entire code):

final IPath filePath = ((ComponentEditorInput) input).getResource().getLocation();
final URI modelURI = URI.createGenericURI(URIQuery.INMEMORY_URI_SCHEME, "file.process", null);
final URI representationURI = URI.createGenericURI(URIQuery.INMEMORY_URI_SCHEME, "temp.aird", null);

// create session
final SessionCreationOperation creationOperation = new DefaultLocalSessionCreationOperation(representationURI, monitor);
try {
   creationOperation.execute();
} catch (CoreException e) {
   e.printStackTrace();
}
session = creationOperation.getCreatedSession();

findAndSetViepoint(monitor);

InputStream inputStream = ((ComponentEditorInput) input).getInputStream();

ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(URI.createFileURI("temp.viewpoint"));

try {
   resource.load(inputStream, Collections.EMPTY_MAP);
} catch (IOException e) {
   e.printStackTrace();
}

// create representation
final DRepresentation representation = createRepresentation(modelURI, monitor);

return createNewEditorInput(representation, filePath);


but it still shows that the file was not found "temp.viewpoint". Perhaps I do not understand how the editor referring to the resource in memory and not from the file.

Thanks a lot.

Martin
Previous Topic:NPE when creating DRepresentation
Next Topic:Change layout on Creation via ModelChangeTrigger
Goto Forum:
  


Current Time: Thu Mar 28 11:25:05 GMT 2024

Powered by FUDForum. Page generated in 0.05028 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top