L'objectif initial du projet était de produire une bibliothèque que les gens pourraient utiliser pour créer leurs propres applications. Bien que certaines personnes l'aient fait, beaucoup utilisent les applications existantes telles que DecoderPro, PanelPro et SoundPro. Nous voulons rendre ceci plus souple en fournissant un moyen d'étendre ces programmes sans avoir à les reconstruire à partir de zéro. Cette note décrit le mécanismes de ce qui sera inclus dans JMRI 2.4 et ultérieures.
DecoderPro et les autres sont gérés via une commande java qui fixe le CLASSPATH et diverses options. Comment c'est fait réellement, ça varie en fonction de la plate-forme: csh ,scripts sur Unix, un lanceur d'applications sous Windows, des kits d'applications sous Mac OS X, etc
Pour rendre facile l'ajout des plug-ins, ils englobent tous les fichiers.jar dans le répertoire de l'application, et dans son sous-répertoire "lib/", dans le CLASSPATH.
Si vous créez un fichier jar, y compris votre code, il sera automatiquement trouvé. Vous pouvez aussi mettre vos classes dans le répertoire "classes" du répertoire de démarrage, ce qui est recherché en premier.
Pour plus d'informations, voir la page sur les scripts de démarrage.
Notez que vous pouvez remplacer directement l'un des fichiers dans la distribution jmri.jar avec vos propres versions en les mettant dans un fichier jar c'est la première recherche. Par exemple, inclure une version modifiée d'un fichier .properties vous permet d'inclure des versions personnalisées de menu chaines. Cela peut aussi être fait avec un fichier .class, par exemple en changeant l'ordre des items du menu en remplaçant la classe DecoderPro.
Les scripts peuvent localiser et accéder à n'importe quelle fenêtre ouverte, par exemple. L'exemple de script AddButton.py est un exemple de l'ajout d'un bouton de script sur la fenêtre principale. Le DisableOpsMode.py montre un exemple de script pour comment faire pour modifier la fenêtre principale et supprimer le bouton de programmation voie principale. L'exemple de script ReporterFontControl.py est un exemple encore plus avancés qui modifie l'apparence des éléments sur les écrans du panneau.