<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://dokuwiki.grogra.de/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://dokuwiki.grogra.de/feed.php">
        <title>GroIMP wiki - 05_developer_tutorials:dev-guide</title>
        <description></description>
        <link>https://dokuwiki.grogra.de/</link>
        <image rdf:resource="https://dokuwiki.grogra.de/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-05-16T08:16:12+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:add-content-registry-descriptor&amp;rev=1739976681&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:add-navigation&amp;rev=1739976681&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:automatic-conversion&amp;rev=1739976681&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:automatic-imports&amp;rev=1739976681&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:base-objects&amp;rev=1765541662&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:base-platform&amp;rev=1739976682&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:contributing&amp;rev=1739976681&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:disposable-node&amp;rev=1765541264&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:embedded-file-object&amp;rev=1765547806&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:interacting-groimp&amp;rev=1739976682&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:maven-commands&amp;rev=1739976681&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:plugins-repository&amp;rev=1765536651&amp;do=diff"/>
                <rdf:li rdf:resource="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:plugins&amp;rev=1765536712&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://dokuwiki.grogra.de/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>GroIMP wiki</title>
        <link>https://dokuwiki.grogra.de/</link>
        <url>https://dokuwiki.grogra.de/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:add-content-registry-descriptor&amp;rev=1739976681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Access Descriptor files in runtime</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:add-content-registry-descriptor&amp;rev=1739976681&amp;do=diff</link>
        <description>GroIMP load doclet.xml files on startup that contains description of methods and classes. 

Access Descriptor files in runtime

The loaded content is added in the runtime registry under /plugins/statics. This directory should have the three directories:</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:add-navigation&amp;rev=1739976681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title></title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:add-navigation&amp;rev=1739976681&amp;do=diff</link>
        <description>You can change navigation with view &gt; navigators &gt; select the one you want.

You can add a new navigator by creating a new plugin. See template navigator.

WIP</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:automatic-conversion&amp;rev=1739976681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Implicit conversion</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:automatic-conversion&amp;rev=1739976681&amp;do=diff</link>
        <description>Implicit conversion

GroIMP compiler can automatically perform implicit conversions. 
By default RGG files use this implicit conversions. A common example is the conversion from float to double (and vice versa).

Add a conversion

During compilation, if a type if forced onto another (and they are not compatible), the compiler try the Autoconversion, which includes widening conversions, boxing and unboxing, and allows to transform an object of type A into an object of type B by means of conversio…</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:automatic-imports&amp;rev=1739976681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Package imports</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:automatic-imports&amp;rev=1739976681&amp;do=diff</link>
        <description>Groimp enables to includes default imports in files when compiling them. These imports are defined in the registry under. /io/filter/xx where xx is the filter type to manage.

Currently only the rgg filter is modified, thus, all .rgg files are compiled with additional default imports.</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:base-objects&amp;rev=1765541662&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-12T12:14:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Nodes</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:base-objects&amp;rev=1765541662&amp;do=diff</link>
        <description>Create object from 

Nodes

-&gt; All objects that are supposed to be added in a groimp project should implement persistence management. 
(project graph &amp; registry)

-&gt; source enhancement

How to create a node class

Code enhancement

Includes object in production

Custom object persistence

Disposable Nodes/Fields

Implicit conversion

graph-listeners

user-pattern</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:base-platform&amp;rev=1739976682&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title></title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:base-platform&amp;rev=1739976682&amp;do=diff</link>
        <description>add-navigation

Add templates and examples

Create windows

Creating new mimeType and File type

Translating GroIMP into other languages</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:contributing&amp;rev=1739976681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Add to the Git repository</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:contributing&amp;rev=1739976681&amp;do=diff</link>
        <description>Add to the Git repository

Pushing to the remote repository

If you followed the wiki on setting up a git connection

This part consists of multiple steps. The plan is as follows:

	*  Add changed files to stage
	*  Create a commit
	*  Push to the forked (your own) project</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:disposable-node&amp;rev=1765541264&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-12T12:07:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Disposable Nodes/Fields</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:disposable-node&amp;rev=1765541264&amp;do=diff</link>
        <description>Disposable Nodes/Fields

A Node is considered deleted when it is removed from the graph. The Node is made “transient”, i.e. it is not handled by the persistence manager anymore. 

Once a Node is “transient” it will be automatically garbage collected by Java. 
However, a Node can have attributes (fields in java) that require a specific dispose method (e.g</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:embedded-file-object&amp;rev=1765547806&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-12T13:56:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Custom object persistence</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:embedded-file-object&amp;rev=1765547806&amp;do=diff</link>
        <description>Custom object persistence

GroIMP require Nodes, Node&#039;s attributes, and SCOs to be manageable by the persistence manager, to process the save/ load/ query operations.

GroIMP define its own persistence management. To be managed by the GroIMP persistence management, an object need to implements either</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:interacting-groimp&amp;rev=1739976682&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title></title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:interacting-groimp&amp;rev=1739976682&amp;do=diff</link>
        <description>Create new API functions

Add templates and examples

Access Descriptor files in runtime

Package imports</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:maven-commands&amp;rev=1739976681&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T14:51:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title></title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:maven-commands&amp;rev=1739976681&amp;do=diff</link>
        <description>mvn compile

mvn package: If the plugin have some java dependencies managed from Maven, the property &lt;maven.assembly.plugin.move-lib&gt;generate-resources&lt;/maven.assembly.plugin.move-lib&gt; needs to be added to the pom.xml.

mvn package -P app-with-doc: Add to the package command the compilation of the plugin&#039;s doc. Require</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:plugins-repository&amp;rev=1765536651&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-12T10:50:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Plugin repositories</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:plugins-repository&amp;rev=1765536651&amp;do=diff</link>
        <description>Plugin repositories

The Plugin Manager uses Plugin repositories to gather knowledge on the available plugins.
The repositories can be provided in three formats:

	*  Ordered List ItemAs a JSON file. Which contains the metadata of one or several plugins.The file need to follow the JSON format for plugin data (see bellow).</description>
    </item>
    <item rdf:about="https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:plugins&amp;rev=1765536712&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-12T10:51:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>GroIMP Plugin</title>
        <link>https://dokuwiki.grogra.de/doku.php?id=05_developer_tutorials:dev-guide:plugins&amp;rev=1765536712&amp;do=diff</link>
        <description>GroIMP is designed around plugins which can be added, modified or removed without modifying the GroIMP installation.

GroIMP Plugin

Any repository with a plugin.xml and plugin.properties files is considered as a plugin by GroIMP.
To be properly loadable though, the</description>
    </item>
</rdf:RDF>
