EquoIDE and Solstice Developer's Guide
February 28, 2023 ยท View on GitHub
We use EquoIDE to develop EquoIDE and Solstice. Clone this repo, cd into its root directory, and run gradlew equoIde.
The first time you launch it, watch the status bar at the bottom as the Gradle project gets imported. Once it's done you're ready to develop!
A good place to start is running the Solstice tests by right-clicking the solstice project and doing Run As -> JUnit Test.
Troubleshooting
If you can't run the tests, the first thing to try is Project -> Clean. If that doesn't work, you can clear all IDE state by closing the IDE and relaunching with gradlew equoIde --clean.
Table of Contents
- Use EquoIDE in my own project
- for Gradle, see the Gradle README.md.
- for Maven, see the Maven README.md.
- Add a new feature to the catalog DSL (e.g.
jdt,gradleBuildship,m2e, etc.) - Create an Eclipse plugin without learning any OSGi (
IdeHook)
Catalog DSL
- Add entry in
dev.equo.ide.Catalog(e.g.) - Use that entry in
dev.equo.ide.gradle.P2ModelDslWithFeatures(e.g.) - Use that entry in
dev.equo.ide.maven.AbstractP2MojoWithFeatures(e.g.)- Run
./gradlew :plugin-maven:testto update test snapshots (e.g.) - If the snapshot doesn't change, do
rm -rf .gradleand run it again.
- Run
- Update
CATALOG.mdso people can find it. (e.g.) - Open up a PR against this repository to share your contribution!
IdeHook
The IdeHook mechanism lets you write a plugin for the Eclipse IDE without knowing anything about OSGi. It works like this:
- setup a build where you can compile against the Eclipse jars (
dev.equo.p2depsfor Gradle, issue #54 for Maven) - define a subclass of
IdeHookwhich stores anything you want to pass from the Gradle or Maven launcher into the IDE- https://github.com/equodev/equo-ide/blob/main/solstice/src/main/java/dev/equo/ide/IdeHookBranding.java
- https://github.com/equodev/equo-ide/blob/main/solstice/src/main/java/dev/equo/ide/IdeHookWelcome.java
- https://github.com/equodev/equo-ide/blob/main/solstice/src/main/java/dev/equo/ide/IdeHookBuildship.java
- define a subclass of
IdeHookInstantiatedwhich has methods that get called throughout the application lifecycle - you can use any methods you want to implement your plugin, but there are helpers in the
dev.equo.ide.uipackage