Comment créer des plugins pour Justinmind ?
Lancez l’application Eclipse dans votre dossier JustinmindSDK. Sélectionnez ensuite un dossier pour enregistrer votre espace de travail et cliquez sur « Use this as the default and do not ask again ».
Première installation
Ensuite, sélectionnez « Créer un nouveau projet Java… »
Choisissez un nom pour votre plugin et assurez-vous que l’environnement d’exécution JRE sélectionné est ‘JavaSE-11’. Cliquez ensuite sur Suivant.
Dans Java Settings, cliquez sur l’onglet Libraries. Sélectionnez « ModulePath » et ajoutez tous les modules JavaFX que vous trouverez dans le dossier « javafx » à l’intérieur du dossier « JustinmindPluginSDK » en utilisant l’option Add External JARS. Pour Windows : JustinmindPluginSDK/javafx/lib Pour MacOS : Applications/JustinmindPluginSDK/javafx/lib
Sélectionnez « Classpath » et ajoutez tous les jars contenus dans le dossier « api_plugins » que vous trouverez dans le dossier JustinmindSDK. Pour Windows : JustinmindPluginSDK/api_plugins/ Pour MacOS : /Applications/JustinmindPluginSDK/api_plugins/
Cliquez sur Terminer. Sélectionnez Don’t create module-info.java lorsque vous y êtes invité. Nous avons maintenant créé le projet Java principal qui contiendra le code de notre plugin.
Rédigez votre plugin
Structure
La structure d’un plugin Justinmind est très simple. Vous avez juste besoin d’un fichier de classe principal qui contiendra le code d’exécution de l’action de votre plugin. Cette classe doit implémenter l’interface API de Justinmind « IPlugin ». IPlugin définit deux méthodes : getName() – cette méthode définira le nom qui sera affiché dans l’UI de Justinmind une fois votre plugin installé. run() – ce que fait votre plugin. Créez le fichier de classe. Faites un clic droit sur le dossier ‘src’ de votre plugin et sélectionnez New>Class. Donnez un nom à votre classe principale et sélectionnez l’interface IPlugin du paquetage com.justinmind.prototyper.api.plugins. Cliquez sur Terminer.
Vous pouvez maintenant écrire votre code.
Exemple : exporter tous les textes vers un fichier CSV
import java.awt.Desktop; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.List; import com.justinmind.pcontrols.ControlUtils; import com.justinmind.prototyper.api.API; import com.justinmind.prototyper.api.IPrototype; import com.justinmind.prototyper.api.plugins.IPlugin; import com.justinmind.prototyper.api.ui.canvas.ICanvas; import com.justinmind.prototyper.api.ui.component.ICanvasComponent; import com.justinmind.prototyper.api.ui.component.IImage; import com.justinmind.prototyper.api.ui.component.IInput; import com.justinmind.prototyper.api.ui.component.IValuedComponent; import javafx.stage.FileChooser; public class TestPlugin implements IPlugin { @Override public void run() { try { IPrototype prototype = API.getPrototypeLoader().loadPrototype(); List canvas = prototype.getApiCanvases(); String content = "Word in prototype\n\n"; for (ICanvas current : canvas) { content += "Screen: " + current.getApiName() + "\n"; List components = current.getApiRoot().getApiChildren(); for (ICanvasComponent iComponent : components) { content += addTextsToContent(iComponent); } } FileChooser dialog = new FileChooser(); FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("CSV files (*.csv)", "*.csv"); dialog.getExtensionFilters().add(extFilter); File file = dialog.showSaveDialog(ControlUtils.getMainWindow()); if (file != null) { Writer output = null; FileWriter fw = null; try { fw = new FileWriter(file); output = new BufferedWriter(fw); output.write(content); output.close(); Desktop.getDesktop().open(file); } catch (IOException e) { Alert a = new Alert(AlertType.ERROR); a.setContentText(e.getLocalizedMessage()); a.show(); } } else { // show error } } catch (Exception e) { Alert a = new Alert(AlertType.ERROR); a.setContentText(e.getLocalizedMessage()); a.show(); } } private String addTextsToContent(ICanvasComponent iComponent) { String content = ""; if (iComponent instanceof IValuedComponent && !(iComponent instanceof IImage) && !(iComponent instanceof IInput)) { content += ((IValuedComponent) iComponent).getApiValue() + "\n"; } List components = iComponent.getApiChildren(); for (ICanvasComponent current_child : components) { content += addTextsToContent(current_child); } return content; } @Override public String getName() { return "Test Plugin"; } }
Déploiement
Une fois votre code terminé, vous devez l’exporter sous forme de fichier JAR afin de créer un plugin installable valide dans Justinmind. Faites un clic droit sur votre projet de plugin et sélectionnez Exporter. Sélectionnez JAR file sous Java et cliquez sur Next.
Sélectionnez une destination d’exportation en laissant toutes les autres options par défaut et cliquez sur Terminer.
Installez et exécutez
Une fois que notre plugin est emballé dans un fichier JAR, nous devons l’installer dans notre application Justinmind afin de le faire fonctionner. Ouvrez Justinmind et ouvrez le menu Plug-ins. Sélectionnez l’option Installer un plug-in… Sélectionnez le fichier JAR exporté contenant votre plugin et cliquez sur Ouvrir. Après cela, votre plug-in sera installé et une nouvelle option apparaîtra dans le menu Plug-ins avec le nom que vous avez choisi lors de l’implémentation de votre plug-in. Pour l’exécuter, il vous suffit de cliquer dessus.