embedding sirius in a pure e4 application · embedding sirius in a pure e4 application lessons...
TRANSCRIPT
![Page 1: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/1.jpg)
Innovative Solutions For Mission Critical Systems
Embedding Sirius in a Pure E4 Application
Lessons Learned and Future Plans
![Page 2: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/2.jpg)
Innovative Solutions For Mission Critical Systems
J. Langley -
Chief Technical Officer at CohesionForce and co-founder of the Huntsville Eclipse Framework Developers Group.
Developing applications and frameworks based on Eclipse technology since 2009.
Specialize in “Horizontal Integration” - combining existing technology to provide new capabilities.
Find me online:
Email – [email protected] – @jperiodlangley
About me:
![Page 3: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/3.jpg)
Innovative Solutions For Mission Critical Systems
Since its founding in 1998, CohesionForce has been providing innovative solutions to our customers’ most complex modeling & simulation, systems engineering, and software engineering challenges.
About CohesionForce:
Core Values: Disciplined engineering should be easy Systems should be fulfilling to use Better tools are needed to solve the problems of tomorrow
![Page 4: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/4.jpg)
Innovative Solutions For Mission Critical Systems
Ever wonder what it would take to get an Eclipse Sirius diagram editor to work in an Eclipse 4 Application? I took an expedition through Sirius and it's dependencies on a mission to find out!
After a few days of ripping things apart, putting them together, making wild guesses, and more than a few "git reset --hard" commands - I made it to my final destination.
Summary:
![Page 5: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/5.jpg)
Innovative Solutions For Mission Critical Systems
Eclipse 4 Application: An Eclipse application using the Application.e4xmi and E4 services. There is no Eclipse Workbench, no compatibility layer, etc.
Sirius Diagram Editor: This talk involves a “mostly working” diagram editor.
Definitions & Constraints:
![Page 6: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/6.jpg)
Innovative Solutions For Mission Critical Systems
Architecture (As I Understand It):
SWT
GEF
GMF
Sirius
Eclipse W
orkbench
![Page 7: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/7.jpg)
Innovative Solutions For Mission Critical Systems
Breaking the PlatformUI dependency:
SWT
GEF
GMF
Sirius
Eclipse W
orkbench
![Page 8: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/8.jpg)
Innovative Solutions For Mission Critical Systems
First Idea:
After reading some of the news about GEF vs GEF 4, I decided to try switching the GEF dependency used by GMF to GEF 4. I have a small bit of experience with JavaFX, so no worries - right?
GEF 4 !!!
![Page 9: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/9.jpg)
Innovative Solutions For Mission Critical Systems
First Failure:
I could not find any tutorials or good documentation on migrating from GEF to GEF 4.
It appears that there were was an interface used by GMF that was split into two separate interfaces. I did not know enough about how GEF and GMF work to decide which interface to use in which context.
I may try this again in the future after learning more...
![Page 10: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/10.jpg)
Innovative Solutions For Mission Critical Systems
First Failure:
?>git reset --hard
![Page 11: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/11.jpg)
Innovative Solutions For Mission Critical Systems
Progress Step 1:
1. Cloned the gef-legacy repository.2. Grep for PlatformUI - You will see this step a LOT!3. Remove anything that uses PlatformUI
Good news - I only had to modify 12 files to get GEF to run without PlatformUI!
PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
We should update this article on shared images!
![Page 12: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/12.jpg)
Innovative Solutions For Mission Critical Systems
Progress Feels Great!
![Page 13: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/13.jpg)
Innovative Solutions For Mission Critical Systems
And then comes GMF:
ImagesHelpDisplay
I almost gave up after searching for PlatformUI in the GMF codebase.
After spending an hour or two, I realized that most of the code using PlatformUI fell into common categories.
We’ll spend a bit of time on each of these:
PartServiceSelectionServiceShell
Logging
![Page 14: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/14.jpg)
Innovative Solutions For Mission Critical Systems
Progress Step 2:
Images, Help, & Display
I commented out anything using the Workbench Shared Images, or changed to use the JFace Image Registry.
Help! PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, helpContextId);– I commented out all references to Help
Display - changed to Display.getDefault()
![Page 15: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/15.jpg)
Innovative Solutions For Mission Critical Systems
Progress Step 3:
Selection, Parts, & Shell
I commented out anything using the Part or Selection Service.
I am amazed that things still “work” after removing some of this code.
The Shell was easier - just followed what I had done with Display.
Logging - getDefault().getLog().log(...) - I simply removed these
![Page 16: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/16.jpg)
Innovative Solutions For Mission Critical Systems
Almost there...
![Page 17: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/17.jpg)
Innovative Solutions For Mission Critical Systems
Getting Sirius:
The Sirius baseline was much cleaner with regard to the PlatformUI references. There were only 11 files that had to be modified to get a running application.
The problems that I encountered were mostly due to behavior to find the active page, context menu, editor, etc. Most of these calls were made through the IEditorSite held by the DDiagramView.
![Page 18: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/18.jpg)
Innovative Solutions For Mission Critical Systems
Getting More Sirius:
To provide enough functionality to get this off the ground, I created a class that implements IEditorSite and uses E4 services to provide the needed capability for things like selection listener. This is currently a giant hack, but may prove to be a useful way to get an editor to work without a workbench available.
![Page 19: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/19.jpg)
Innovative Solutions For Mission Critical Systems
Now we need an Application:
For the end application, I decided to start with the Arduino Designer from Melanie Bats at Obeo. It’s a cool project with a great goal behind it so you should check it out!
I used the model, edit, editor, and design projects from the Arduino Designer repository. I used the ProjectServices class in the ui project as a guide to create the aird file and semantic model—using file paths instead of relying on the PlatformResource package to create the URIs.
![Page 20: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/20.jpg)
Innovative Solutions For Mission Critical Systems
I really hope this works!
Demo!
![Page 21: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/21.jpg)
Innovative Solutions For Mission Critical Systems
Thoughts for Future Work:
We now have a Sirius diagram running in an E4 Application!
We also have modified versions of GEF, GMF, & Sirius that will be problematic to maintain as they are modified in the future.
I am looking for ideas for a more reasonable approach to solve this issue - please forward any suggestions that you may have!
![Page 22: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/22.jpg)
Innovative Solutions For Mission Critical Systems
Option #1:
One approach would be to split the platform bundle and move the PlatformUI class to a fragment. Then we could create an E4 variant of the fragment that provides an E4 Add-On PlatformUI.
CohesionForce has already migrated some views present in the workbench for use in E4:
https://github.com/CohesionForce/eclipse4-parts
![Page 23: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/23.jpg)
Innovative Solutions For Mission Critical Systems
Your Option Here:
![Page 24: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/24.jpg)
Innovative Solutions For Mission Critical Systems
Questions?
![Page 25: Embedding Sirius in a Pure E4 Application · Embedding Sirius in a Pure E4 Application Lessons Learned and Future Plans. Innovative Solutions For Mission Critical Systems ... and](https://reader030.vdocument.in/reader030/viewer/2022041102/5edb92dfad6a402d6665dc01/html5/thumbnails/25.jpg)
Innovative Solutions For Mission Critical Systems