zircon icon indicating copy to clipboard operation
zircon copied to clipboard

IntelliJ plugin for Zircon

Open coldwarrl opened this issue 6 years ago • 2 comments

Integrate Zircon as an IntelliJ plugin

It would be nice to integrate Zircon (runtime) as an IntelliJ plugin. Use IntelliJ since it probably the most used IDE in context of Zircon, for instance since it has the best Kotlin support.

Rationale

Raise developer productivity

Suggested way of implementing

  • during game development you often have lengthy debug sessions, thus switching the context between the Zircon window (running game) and the IDE. Providing the capability to run the game as a IntelliJ view would help to raise developer productivity
  • the plugin view could provide a run/pause/stop functionality, similar to the editor of Unity3D. There is currently the Application interface in Zircon, which provides already the needed hook functions, although the semantics include not the game loop.
  • maybe it would make sense to integrate microline also ? (e.g. clicking on a saved microline file in the project view opens microline in an Intellij view and so forth).

coldwarrl avatar Feb 02 '19 18:02 coldwarrl

I did some really rough research on that topic. It turns out the InteliJ's UI framework is based on Swing. This is a big pro. The basic ingredient from IntelliJ's plugin framework will be ToolWindows (https://www.jetbrains.org/intellij/sdk/docs/user_interface_components/tool_windows.html) that can embed any JComponent. To enable this all, Zircons API has to be opened to create just the Canvas used from the SwingCanvasRenderer that can be added a component to the ToolWindows content pane.

Another plus to this would be to enable others to embed a Zircon view in any Swing based application, like https://github.com/mabe02/lanterna allows.

klaushauschild1984 avatar Apr 12 '20 12:04 klaushauschild1984

This is great. We already accept a Canvas as a parameter so this only needs to be added to the API. 👍

adam-arold avatar Apr 12 '20 14:04 adam-arold